# ---------------------------------------------------------------------------- #

# Script that generates a summary from the output of the tests series
benchabinit = $(BOURNE_SHELL) ../../Scripts/benchabinit.sh

# Test input files using the chkinabi script
tests_input:
	$(MAKE) tests_fast dirname=chkinabi
	$(MAKE) tests_v1 dirname=chkinabi
	$(MAKE) tests_v2 dirname=chkinabi
	$(MAKE) tests_v3 dirname=chkinabi
	$(MAKE) tests_v4 dirname=chkinabi
	$(MAKE) tests_v5 dirname=chkinabi
	$(MAKE) tests_tutorial dirname=chkinabi
	$(MAKE) tests_physics dirname=chkinabi

# Perform all sequential tests, except cpu (test accuracy)
tests_acc:
	$(MAKE) tests_fast dirname=test
	$(MAKE) tests_v1 dirname=test start=01 stop=make
	$(MAKE) tests_v2 dirname=test
	$(MAKE) tests_v3 dirname=test
	$(MAKE) tests_v4 dirname=test start=01 stop=make
	$(MAKE) tests_v5 dirname=test
	$(MAKE) tests_tutorial dirname=test
	$(MAKE) tests_paral paral_host=test paral_mode=seq

# Perform all sequential tests, except cpu (test accuracy)
# 4 threads at once. Start with the longest of test series.
tests_acc4:
	$(MAKE) tests_tutorial dirname=test1 start=11 stop=gw_9 &
	$(MAKE) tests_tutorial dirname=test2 start=nlo_1 stop=tddft_1 &
	$(MAKE) tests_v4 dirname=test start=01 stop=make   &
	$(MAKE) tests_fast dirname=test
	$(MAKE) tests_v1 dirname=test start=01 stop=make
	$(MAKE) tests_v2 dirname=test
	$(MAKE) tests_v3 dirname=test  
	$(MAKE) tests_v5 dirname=test 
	$(MAKE) tests_paral paral_host=test paral_mode=seq

# Perform all sequential tests, for benchmarks
tests_bench: tests_acc
	$(MAKE) tests_cpu dirname=test
	cd cpu/,,test* && $(benchabinit) > summary
	rm -rf summary_tests.tar.gz
	tar cvf summary_tests.tar \
	 fast/,,test*/fl* fast/,,test*/*out* \
	 v*/,,test*/fl* v*/,,test*/*out* \
	 tutorial/,,test*/fl* tutorial/,,test*/*out* \
	 paral/,,test*/fl* paral/,,test*/*out* \
	 cpu/,,test*/*/*diff* cpu/,,test*/*/*report* cpu/,,test*/summary
	gzip --best summary_tests.tar

# Minimal set of tests
tests_min:
	$(MAKE) tests_v1 dirname=test start=01 stop=make
	$(MAKE) tests_v2 dirname=test  
	$(MAKE) tests_v3 dirname=test  
	$(MAKE) tests_v4 dirname=test start=01 stop=make
	$(MAKE) tests_v5 dirname=test
	$(MAKE) tests_fast dirname=test
	$(MAKE) tests_paral paral_host=test paral_mode=seq

# Minimal set of tests, 4 threads at once
tests_min4:
	$(MAKE) tests_v2 dirname=test &
	$(MAKE) tests_v3 dirname=test &
	$(MAKE) tests_v4 dirname=test start=01 stop=make &
	$(MAKE) tests_v1 dirname=test start=01 stop=make
	$(MAKE) tests_v5 dirname=test
	$(MAKE) tests_fast dirname=test
	$(MAKE) tests_paral paral_host=test paral_mode=seq

# All sequential tests, except cpu and paral, using abinip
# The proper command line has to be defined before
# (FIXME: will definitively not work with the following coding)
tests_abinip:
	$(MAKE) tests_fast dirname=paral
	$(MAKE) tests_v1 dirname=paral start=01 stop=make
	$(MAKE) tests_v2 dirname=paral
	$(MAKE) tests_v3 dirname=paral
	$(MAKE) tests_v4 dirname=paral start=01 stop=make
	$(MAKE) tests_v5 dirname=paral 
	$(MAKE) tests_tutorial dirname=paral

# Minimal set of sequential tests, guaranteeing that a version runs correctly
# Produces a summary file as well
# Suitable for developers
tests_dev:
	$(MAKE) tests_fast dirname=test
	$(MAKE) tests_v1 dirname=test start=01 stop=make
	$(MAKE) tests_v2 dirname=test
	$(MAKE) tests_v3 dirname=test
	$(MAKE) tests_v4 dirname=test start=01 stop=make
	$(MAKE) tests_v5 dirname=test 
	$(MAKE) tests_paral paral_host=test paral_mode=seq
	rm -rf summary_tests.tar.gz
	tar cvf summary_tests.tar \
	 fast/,,test*/*report* fast/,,test*/*out* \
	 v*/,,test*/*report* v*/,,test*/*out* \
	 paral/,,test*/*report* paral/,,test*/*out*
	gzip --best summary_tests.tar

# Test the speed
tests_speed: $(tests_cpu_inps) $(psps_for_tests)
	@if test ! -e cpu; then mkdir -p cpu; fi
	$(run_standard_tests) test $(abinit_builddir)/src/main $(abinit_srcdir)/tests cpu A3 A3
	$(run_standard_tests) test $(abinit_builddir)/src/main $(abinit_srcdir)/tests cpu B3 B3
	cd cpu/,,test* && $(benchabinit) > ../../,summary_speed

# ---------------------------------------------------------------------------- #

dev help_dev:
	@cat $(top_srcdir)/doc/help_make/help_make_tests_dev

# ---------------------------------------------------------------------------- #



syntax highlighted by Code2HTML, v. 0.9.1