#
# Makefile for ABINIT                                      -*- Automake -*-
# Generated by make-makefiles-top on 2008/01/11 16:51:27 +0000

#
# IMPORTANT NOTE
#
# Any manual change to this file will systematically be overwritten.
# Please modify the make-makefiles-top script or its config file instead.
#

ACLOCAL_AMFLAGS = -I @abinit_srcdir@/config/m4

SUBDIRS = bin lib src vms doc tests

CLEANFILES = abilint.out abilint.log

EXTRA_DIST = \
	config/gnu/missing \
	config/gnu/install-sh \
	config/gnu/config.sub \
	config/gnu/depcomp \
	config/gnu/config.guess \
	config/optflags/gnu_cxx/all/opteron \
	config/optflags/gnu_cxx/all/powerpc64 \
	config/optflags/gnu_cxx/all/pentium3 \
	config/optflags/gnu_cxx/all/alphaev67 \
	config/optflags/gnu_cxx/all/alphaev56 \
	config/optflags/gnu_cxx/all/powerpc \
	config/optflags/gnu_cxx/all/pentium4 \
	config/optflags/gnu_cxx/all/itanium2 \
	config/optflags/gnu_cxx/all/itanium1 \
	config/optflags/pgi_fc/all/all \
	config/optflags/gnu_cc/all/opteron \
	config/optflags/gnu_cc/all/powerpc64 \
	config/optflags/gnu_cc/all/pentium3 \
	config/optflags/gnu_cc/all/alphaev67 \
	config/optflags/gnu_cc/all/alphaev56 \
	config/optflags/gnu_cc/all/powerpc \
	config/optflags/gnu_cc/all/pentium4 \
	config/optflags/gnu_cc/all/itanium2 \
	config/optflags/gnu_cc/all/itanium1 \
	config/optflags/intel_cc/9.1/pentium3 \
	config/optflags/intel_cc/9.1/pentium4 \
	config/optflags/intel_cc/9.1/itanium2 \
	config/optflags/intel_cc/9.1/itanium1 \
	config/optflags/intel_cc/9.0/pentium3 \
	config/optflags/intel_cc/9.0/pentium4 \
	config/optflags/intel_cc/9.0/itanium2 \
	config/optflags/intel_cc/9.0/itanium1 \
	config/optflags/ibm_fc/all/powerpc64 \
	config/optflags/ibm_fc/all/powerpc \
	config/optflags/compaq_cxx/all/alphaev67 \
	config/optflags/compaq_cxx/all/alphaev56 \
	config/optflags/pathscale_cxx/all/opteron \
	config/optflags/pathscale_cxx/all/pentium4 \
	config/optflags/intel_fc/9.1/opteron \
	config/optflags/intel_fc/9.1/pentium3 \
	config/optflags/intel_fc/9.1/pentium4 \
	config/optflags/intel_fc/9.1/itanium2 \
	config/optflags/intel_fc/9.1/itanium1 \
	config/optflags/intel_fc/8.1/pentium3 \
	config/optflags/intel_fc/8.1/pentium4 \
	config/optflags/intel_fc/8.1/itanium2 \
	config/optflags/intel_fc/8.1/itanium1 \
	config/optflags/intel_fc/7.1/pentium3 \
	config/optflags/intel_fc/7.1/pentium4 \
	config/optflags/intel_fc/9.0/opteron \
	config/optflags/intel_fc/9.0/pentium3 \
	config/optflags/intel_fc/9.0/pentium4 \
	config/optflags/intel_fc/9.0/itanium2 \
	config/optflags/intel_fc/9.0/itanium1 \
	config/optflags/pathscale_fc/all/opteron \
	config/optflags/pathscale_fc/all/all \
	config/optflags/pathscale_fc/all/pentium4 \
	config/optflags/ibm_cxx/all/powerpc64 \
	config/optflags/ibm_cxx/all/powerpc \
	config/optflags/pgi_cxx/all/all \
	config/optflags/g95_fc/all/powerpc64 \
	config/optflags/g95_fc/all/pentium3 \
	config/optflags/g95_fc/all/all \
	config/optflags/g95_fc/all/alphaev67 \
	config/optflags/g95_fc/all/alphaev56 \
	config/optflags/g95_fc/all/powerpc \
	config/optflags/g95_fc/all/pentium4 \
	config/optflags/g95_fc/all/itanium2 \
	config/optflags/g95_fc/all/itanium1 \
	config/optflags/compaq_fc/all/all \
	config/optflags/compaq_fc/all/alphaev67 \
	config/optflags/compaq_fc/all/alphaev56 \
	config/optflags/intel_cxx/9.1/pentium3 \
	config/optflags/intel_cxx/9.1/pentium4 \
	config/optflags/intel_cxx/9.1/itanium2 \
	config/optflags/intel_cxx/9.1/itanium1 \
	config/optflags/intel_cxx/9.0/pentium3 \
	config/optflags/intel_cxx/9.0/pentium4 \
	config/optflags/intel_cxx/9.0/itanium2 \
	config/optflags/intel_cxx/9.0/itanium1 \
	config/optflags/mipspro_fc/all/all \
	config/optflags/pathscale_cc/all/opteron \
	config/optflags/pathscale_cc/all/pentium4 \
	config/optflags/pgi_cc/all/all \
	config/optflags/ibm_cc/all/powerpc64 \
	config/optflags/ibm_cc/all/powerpc \
	config/optflags/compaq_cc/all/alphaev67 \
	config/optflags/compaq_cc/all/alphaev56 \
	config/optflags/fujitsu_fc/all/all \
	config/optflags/gnu_fc/all/opteron \
	config/optflags/gnu_fc/all/powerpc64 \
	config/optflags/gnu_fc/all/pentium3 \
	config/optflags/gnu_fc/all/alphaev67 \
	config/optflags/gnu_fc/all/alphaev56 \
	config/optflags/gnu_fc/all/powerpc \
	config/optflags/gnu_fc/all/pentium4 \
	config/optflags/gnu_fc/all/itanium2 \
	config/optflags/gnu_fc/all/itanium1 \
	config/detect/README \
	config/detect/detect_fc.F90 \
	config/detect/detect_cc.c \
	config/m4/octopus.m4 \
	config/m4/native.m4 \
	config/m4/do-not-edit-env.m4 \
	config/m4/timing.m4 \
	config/m4/tricks.m4 \
	config/m4/do-not-edit-linalg.m4 \
	config/m4/init.m4 \
	config/m4/packages.m4 \
	config/m4/c.m4 \
	config/m4/do-not-edit-extlibs.m4 \
	config/m4/do-not-edit-debug.m4 \
	config/m4/fortran.m4 \
	config/m4/files.m4 \
	config/m4/c++.m4 \
	config/m4/misc.m4 \
	config/m4/mpi.m4 \
	config/m4/do-not-edit-output.m4 \
	config/m4/do-not-edit-options.m4 \
	config/m4/do-not-edit-optflags.m4 \
	config/scripts/make-makefiles-utils \
	config/scripts/make-makefiles-doc \
	config/scripts/make-macros-optflags \
	config/scripts/etsf-make-subprograms \
	config/scripts/build-autotools-framework \
	config/scripts/make-scripts \
	config/scripts/make-makefiles-vms \
	config/scripts/make-makefiles-binaries \
	config/scripts/make-macros-options \
	config/scripts/make-makefiles-tests \
	config/scripts/make-makefiles-top \
	config/scripts/etsf-make-module \
	config/scripts/make-macros-linalg \
	config/scripts/make-macros-extlibs \
	config/scripts/makemake \
	config/scripts/add-targets-binaries \
	config/scripts/make-build-examples \
	config/scripts/clean-source-tree \
	config/scripts/make-macros-debug \
	config/scripts/make-macros-output \
	config/scripts/add-header-typed \
	config/scripts/make-makefiles-libraries \
	config/scripts/make-macros-env \
	config/scripts/make-makefiles-inter \
	config/robodoc/robodoc-html.rc \
	config/makefiles/top.am \
	config/makefiles/autotest.am \
	config/makefiles/doc.am \
	config/makefiles/src.am \
	config/makefiles/tests.am \
	config/makefiles/vms.am \
	config/specs/autoconf.cf \
	config/specs/binaries.cf \
	config/specs/extlibs.cf \
	config/specs/env.cf \
	config/specs/linalg.cf \
	config/specs/other.cf \
	config/specs/documents.cf \
	config/specs/libraries.cf \
	config/specs/options.cf \
	config/specs/tests.cf \
	config/build-examples/tux-compaq.cf \
	config/build-examples/lemaitre-intel9.1.cf \
	config/build-examples/spinoza-mipspro.cf \
	config/build-examples/sleepy-pathscale.cf \
	config/build-examples/sleepy-intel8.1.cf \
	config/build-examples/antarion-intel7.1.cf \
	config/build-examples/dirac-ibm.cf \
	config/build-examples/generic-ibm.cf \
	config/build-examples/fock-ibm.cf \
	config/build-examples/max-ibm.cf \
	config/build-examples/antarion-intel9.0.cf \
	config/build-examples/deccint-compaq.cf \
	config/build-examples/sleepy-pgi4.0.cf \
	config/build-examples/chpit-intel8.1.cf \
	config/build-examples/dummy-pgi4.0.cf \
	config/build-examples/eliza-fujitsu.cf \
	config/build-examples/sirius-intel9.0.cf \
	config/build-examples/sleepy-g95.cf \
	config/build-examples/dummy-intel9.0.cf \
	config/build-examples/antarion-intel8.1.cf \
	config/etsf/template.data \
	config/etsf/template.module \
	config/etsf/template.standard \
	config/etsf/abinit.cf \
	config/etsf/specs.cf \
	config/etsf/template.low_level \
	config/etsf/library.cf \
	extras/4to5/upgrade-source.sed \
	extras/4to5/include-config-h.awk \
	extras/4to5/convert-source-tree \
	extras/arch_hooks/precommit/10check-tree \
	extras/arch_hooks/commit/10report \
	extras/arch_hooks/abinit-baz-hook \
	extras/arch_hooks/ask \
	extras/arch_hooks/arch-tree-hook \
	extras/arch_hooks/echon \
	extras/arch_hooks/install-arch-hooks \
	extras/interfaces/10-improve-spacing.perl \
	extras/interfaces/README \
	extras/interfaces/30-tokenize-intagm.perl \
	extras/interfaces/apply-fixes \
	extras/interfaces/unfix-token \
	extras/interfaces/check-cpp-options \
	extras/interfaces/20-include-config-h.perl \
	extras/new_archive/update-archive-location \
	extras/build/build-abinit.sh \
	extras/matlab_data_analysis/mexData.c \
	extras/matlab_data_analysis/data_analysis.help \
	extras/matlab_data_analysis/EffMass.m \
	extras/post_processing/abinitRun.dtd \
	extras/post_processing/get_irreps.py \
	extras/post_processing/ebands.f90 \
	extras/post_processing/dynamic_pol.f \
	util/misc/abchk.pl \
	util/misc/tokenize_file.py \
	util/misc/change_perl.sh \
	util/misc/var-file-index.py \
	util/misc/fixed_to_free \
	util/maintainers/FT77to90.pl \
	util/maintainers/abilint.py \
	util/maintainers/change.sh \
	util/maintainers/abirules.pl \
	util/maintainers/make-splitted-dist.sh \
	util/maintainers/parents.pl \
	util/maintainers/Makefile_topdir_binarypack \
	util/maintainers/dos_to_unix \
	util/maintainers/Makefile_testdir_binarypack \
	util/maintainers/abirulesT.pl \
	util/maintainers/tests.env_bin \
	util/subs/netcdf/make-sub-netcdf_get_dtset.pl \
	util/subs/netcdf/make-sub-netcdf_def_dtset.pl \
	util/subs/netcdf/make-sub-netcdf_get_dims_dtset.pl \
	util/subs/netcdf/make-sub-netcdf_put_dtset.pl \
	util/subs/common/abinit_variables.pm \
	util/subs/iovars/make-sub-is_input_variable.pl \
	util/users/class_ScrolledWidgetList.pyc \
	util/users/AbinitInputMaker.py \
	util/users/Calculation_tag.xml \
	util/users/abi2xsf \
	util/users/AbinitBandStructureMaker.py \
	util/users/Relaxation_tag.xml \
	util/users/xmlTagger.py \
	util/users/Calculation.xml \
	util/users/class_ScrolledWidgetList.py \
	util/users/KptGrid.xml \
	util/users/Relaxation.xml \
	util/users/chkinabi.pl \
	util/users/AbinitStructureViewer.py \
	util/users/Sections.xml \
	util/users/Structure.xml \
	util/users/Cell2Abinit.py \
	util/users/Structure_tag.xml \
	util/users/KptGrid_tag.xml \
	util/wrappers/abinit.py.in \
	util/README \
	util/source/build-abinit-calltree.pl \
	util/source/check-openmp.sh \
	util/source/check-orphans.sh \
	util/source/check-subs.pl \
	util/build/wrap-fc.in \
	util/developers/markdown.pl \
	util/developers/mkroutine.sh

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

EXTRA_DIST += \
	KNOWN_PROBLEMS \
	README.ChangeLog \
	RELNOTES \
	descrip.mms

# Tests
basic_tests:
	cd $(top_builddir)/tests && $(MAKE) tests_in

# Let Automake know how to perform basic tests
check-local tests_in:
	$(MAKE) basic_tests

test1 :
	echo "Running built-in test 1"
	cd tests ; $(PERL) ../$(top_srcdir)/tests/Scripts/run-basic-tests.pl built-in 1 $(abinit_srcdir)

test2 :
	echo "Running built-in test 2"
	cd tests ; $(PERL) ../$(top_srcdir)/tests/Scripts/run-basic-tests.pl built-in 2 $(abinit_srcdir)

test3 :
	echo "Running built-in test 3"
	cd tests ; $(PERL) ../$(top_srcdir)/tests/Scripts/run-basic-tests.pl built-in 3 $(abinit_srcdir)

test4 :
	echo "Running built-in test 4"
	cd tests ; $(PERL) ../$(top_srcdir)/tests/Scripts/run-basic-tests.pl built-in 4 $(abinit_srcdir)

test5 :
	echo "Running built-in test 5"
	cd tests ; $(PERL) ../$(top_srcdir)/tests/Scripts/run-basic-tests.pl built-in 5 $(abinit_srcdir)

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

# Help
help:
	@more $(top_srcdir)/doc/help_make/help_make_top

help_dev dev_help dev:
	@more $(top_srcdir)/doc/help_make/help_make_top_dev

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

# Install Arch hooks for selected developers
arch_hooks:
	@$(top_srcdir)/extras/arch_hooks/install-arch-hooks $(top_srcdir)

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

# robodoc-html-x.x.x.tar contains all html files produced by ROBODOC
robodoc:
	rm -rf ,,robodoc robodoc-html && mkdir ,,robodoc
	cp -rf src/defs src/[0-9]* src/main ,,robodoc
	cp config/robodoc/robodoc-html.rc ,,robodoc/robodoc.rc
	rm -fr ,,robodoc/*/.arch-ids
	cd ,,robodoc && robodoc > robodoc.log
	mv -f ,,robodoc/www/robodoc robodoc-html
	tardir=robodoc-html && \
	 $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >robodoc-html-$(VERSION).tar.gz
	rm -rf robodoc-html ,,robodoc

# infos_html-x.x.x.tar contains all html files needed for the Web site
infos_html:
	-rm -fr infos_htm* ,infos*
	cp -fr doc ,infos-$(VERSION)
	cp util/misc/var-file-index.py ,infos-$(VERSION)
	cp -fr KNOWN_PROBLEMS ,infos-$(VERSION)/known_problems
	mkdir ,infos-$(VERSION)/Tests
	mkdir ,infos-$(VERSION)/Tests/Test_fast ,infos-$(VERSION)/Tests/Test_v1 ,infos-$(VERSION)/Tests/Test_v2 
	mkdir ,infos-$(VERSION)/Tests/Test_v3 ,infos-$(VERSION)/Tests/Test_v4 ,infos-$(VERSION)/Tests/Test_v5 
	cp -fr tests/fast/Input ,infos-$(VERSION)/Tests/Test_fast
	cp -fr tests/v1/Input ,infos-$(VERSION)/Tests/Test_v1
	cp -fr tests/v2/Input ,infos-$(VERSION)/Tests/Test_v2
	cp -fr tests/v3/Input ,infos-$(VERSION)/Tests/Test_v3
	cp -fr tests/v4/Input ,infos-$(VERSION)/Tests/Test_v4
	cp -fr tests/v5/Input ,infos-$(VERSION)/Tests/Test_v5	
	cd ,infos-$(VERSION) ; python var-file-index.py
	cp ,infos-$(VERSION)/developers/contributing.html ,infos-$(VERSION)
	-rm -f ,infos-$(VERSION)/features/features.html ,infos-$(VERSION)/release_notes/release_notes.html ,infos-$(VERSION)/installation_notes/install.html
	cp -fr ,infos-$(VERSION)/features/features_v$(ABINIT_VERSION_MAJOR).$(ABINIT_VERSION_MINOR).html ,infos-$(VERSION)/features/features.html
	cp -fr ,infos-$(VERSION)/release_notes/rel*_v$(ABINIT_VERSION_MAJOR).$(ABINIT_VERSION_MINOR).html ,infos-$(VERSION)/release_notes/release_notes.html
	cp -fr ,infos-$(VERSION)/inst*_notes/inst*_v$(ABINIT_VERSION_MAJOR).$(ABINIT_VERSION_MINOR).html ,infos-$(VERSION)/install_notes/install.html
	-rm -fr ,infos-$(VERSION)/.arch-ids ,infos-$(VERSION)/*/.arch-ids ,infos-$(VERSION)/*/*/.arch-ids ,infos-$(VERSION)/*/*/*/.arch-ids
	tar -cvf infos_html-$(VERSION).tar                \
          ,infos-$(VERSION)/Tests \
          ,infos-$(VERSION)/input_variables ,infos-$(VERSION)/users ,infos-$(VERSION)/tutorial ,infos-$(VERSION)/known_problems \
          ,infos-$(VERSION)/gallery/Plot1.jpg ,infos-$(VERSION)/gallery/pcpm.gif ,infos-$(VERSION)/gallery/mode.png  \
          ,infos-$(VERSION)/*/*.css \
          ,infos-$(VERSION)/install_notes/install.html \
          ,infos-$(VERSION)/release_notes/release_notes.html \
          ,infos-$(VERSION)/features/features.html \
          ,infos-$(VERSION)/presentation/presentation.pdf
	gzip infos_html-$(VERSION).tar
	-rm -fr ,infos-$(VERSION)

# Prepare the theory documents
theory :
	cd doc/theory ; \
         latex geometry.tex ; latex geometry.tex ; dvips -f geometry.dvi > geometry.ps ; ps2pdf geometry.ps ; \
         latex 1WF.tex ;      latex 1WF.tex ;      dvips -f 1WF.dvi > 1WF.ps ;           ps2pdf 1WF.ps ; \
         latex set_WFs.tex ;  latex set_WFs.tex ;  dvips -f set_WFs.dvi > set_WFs.ps ;   ps2pdf set_WFs.ps ; \
         latex noncol.tex ;   latex noncol.tex ;   dvips -f noncol.dvi > noncol.ps ;     ps2pdf noncol.ps ; \
         rm -f *log *aux *dvi *ps
	cd doc/macroave ; \
         latex macroave.tex ; latex macroave.tex ; dvips -f macroave.dvi > macroave.ps ; ps2pdf macroave.ps ; \
         rm -f *log *aux *dvi *ps

# Prepare the presentation document
presentation :
	cd doc/presentation ; \
         latex presentation.tex ; latex presentation.tex ; dvips -f presentation.dvi > presentation.ps ; ps2pdf presentation.ps ; \
         rm -f *log *aux *dvi *ps ; \
         gzip presentation.pdf

# For SMP machines. Before starting the -j4 option, one needs some pre-compilation
# to avoid spurious effects. 
multi:
	cd lib/light ; make &
	cd lib/blas ; make &
	cd src/defs ; make
	cd src/main ; make abinip-abinit.o &
	cd src/01managempi ; make &
	cd src/08seqpar ; make 
	make -j4

# For SMP machines that cannot execute "make multi" because of "make -j4". Must be followed by the usual "make".
multi1:
	cd src/02nlstrain ; make
multi2:
	cd lib/macroav ; make
	cd src/01cg ; make
	cd src/01managempi ; make
	cd src/02parser ; make
	cd src/02psp ; make
	cd src/03nonlocal ; make
	cd src/03ionetcdf ; make
	cd src/03iovars ; make
	cd src/03paw ; make
	cd src/03xc ; make
	cd src/04bader ; make
	cd src/04occeig ; make
	cd src/04rsprc ; make
	cd src/05common ; make
	cd src/07lwf ; make
	cd src/07ddb ; make
	cd src/09cut3d ; make
multi3:
	cd lib/light ; make
	cd src/lib01fftnew ; make
	cd src/00basis ; make
	cd src/01contract ; make
	cd src/01util ; make
	cd src/03recipspace ; make
	cd src/03xml ; make
	cd src/05gw ; make
	cd src/06response ; make
	cd src/08seqpar ; make
multi4:
	cd lib/lapack ; make
	cd lib/numeric ; make
	cd lib/numericf90 ; make
	cd src/02ffts ; make
	cd src/02geometry ; make
	cd src/02spacepar ; make
	cd src/04iowfdenpot ; make
	cd src/04wfs ; make
	cd src/06geomoptim ; make
	cd src/07suscep ; make
	cd src/11drive ; make
multi_alt:
	cd src/defs ; make
	make multi1 &
	make multi2 &
	make multi3 &
check_list:
	@cat $(top_srcdir)/doc/maintainers/check_list.txt

split_dist:
	util/maintainers/make-splitted-dist.sh 1
	tar -cvf abinitE-$(VERSION).tar abinit-$(VERSION)/tests/v*
	rm -fr abinit-$(VERSION)/tests/v*
	tar -cvf abinitD-$(VERSION).tar abinit-$(VERSION)/tests/Psps_for_tests
	rm -fr abinit-$(VERSION)/tests/Psps_for_tests
	tar -cvf abinitC-$(VERSION).tar abinit-$(VERSION)/tests
	rm -fr abinit-$(VERSION)/tests
	tar -cvf abinitB-$(VERSION).tar abinit-$(VERSION)/src abinit-$(VERSION)/lib
	rm -fr abinit-$(VERSION)/src
	rm -fr abinit-$(VERSION)/lib
	tar -cvf abinitA-$(VERSION).tar abinit-$(VERSION)
	rm -fr abinit-$(VERSION)
	gzip abinitA-$(VERSION).tar
	gzip abinitB-$(VERSION).tar
	gzip abinitC-$(VERSION).tar
	gzip abinitD-$(VERSION).tar
	gzip abinitE-$(VERSION).tar

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

# Generate binary tarball
abinit_binpkgdir = $(ABINIT_BINARY_PACKAGE)
binary_package:
	-rm -rf $(abinit_binpkgdir) $(abinit_binpkgdir).tgz
	mkdir -p $(abinit_binpkgdir)
	$(MAKE) $(MAKEFLAGS) distdir && \
	 chmod -R u+w $(distdir) && \
	 mv $(distdir) $(abinit_binpkgdir)
	$(MAKE) $(MAKEFLAGS) install DESTDIR=$(PWD)/$(abinit_binpkgdir)
	mkdir -p $(abinit_binpkgdir)/$(abinit_datdir)
	cd $(abinit_binpkgdir); \
	 mv $(distdir)/tests ./$(abinit_datdir); \
	 mv $(distdir)/util/users ./$(abinit_datdir); \
	 mv $(distdir)/extras/matlab_data_analysis ./$(abinit_datdir); \
	 mv $(distdir)/extras/post_processing ./$(abinit_datdir); \
	 rm -rf $(distdir); \
	 tardir=. && \
	 $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >../$(abinit_binpkgdir).tgz

bin_prep:
	rm -fr abinitbin-$(VERSION) abinitbin.tar abinitbin_seq-$(VERSION)* abinitbin_seqpar-$(VERSION)*
	mkdir abinitbin-$(VERSION)
	tar -cvf abinitbin.tar AUTHORS COPYING INSTALL KNOWN_PROBLEMS NEWS README* RELNOTES THANKS bin src \
            doc extras util tests/Psps* tests/v*/Input tests/tutorial tests/paral tests/buil* tests/Scripts tests/cpu
	mv abinitbin.tar abinitbin-$(VERSION)
	cd abinitbin-$(VERSION) ; tar -xvf abinitbin.tar ; \
            rm -fr abinitbin.tar ; rm -fr .arch-* ; rm -fr */.arch-* ; \
            rm -fr */*/.arch-* ; rm -fr */*/*/.arch-* ; rm -fr */*/*/*/.arch-* ; \
            cd src ; rm -fr */*.a ; \
            rm -fr 00*/*.F90 ; rm -fr 00*/*.o ; \
            rm -fr 01*/*.F90 ; rm -fr 01*/*.o ; \
            rm -fr 02*/*.F90 ; rm -fr 02*/*.o ; \
            rm -fr 03*/*.F90 ; rm -fr 03*/*.o ; \
            rm -fr 04*/*.F90 ; rm -fr 04*/*.o ; \
            rm -fr 05*/*.F90 ; rm -fr 05*/*.o ; \
            rm -fr 06*/*.F90 ; rm -fr 06*/*.o ; \
            rm -fr 07*/*.F90 ; rm -fr 07*/*.o ; \
            rm -fr 08*/*.F90 ; rm -fr 08*/*.o ; \
            rm -fr 09*/*.F90 ; rm -fr 09*/*.o ; \
            rm -fr */*.F90 ; rm -fr */*.o ; \
            cd ../tests ; rm -fr */,* ; cd .. ; rm -fr extras/arch_hooks ; \
            mkdir opt ; mv src/main/* opt ; rm -fr src ; \
            cp ../util/maintainers/Makefile_topdir_binarypack Makefile ; \
            cp ../util/maintainers/Makefile_testdir_binarypack tests/Makefile ; \
            cp ../util/maintainers/tests.env_bin tests/tests.env

bin_seq: bin_prep
	cd abinitbin-$(VERSION) ; rm -fr tests/paral opt/abi*nip
	tar -cvf abinitbin_seq-$(VERSION).tar abinitbin-$(VERSION)
	chmod 644 abinitbin_seq-$(VERSION).tar
	gzip abinitbin_seq-$(VERSION).tar
	rm -fr abinitbin-$(VERSION)

bin_seqpar: bin_prep
	tar -cvf abinitbin_seqpar-$(VERSION).tar abinitbin-$(VERSION)
	chmod 644 abinitbin_seqpar-$(VERSION).tar
	gzip abinitbin_seqpar-$(VERSION).tar
	cd abinitbin-$(VERSION) ; rm opt/abinip ; rm -fr tests/paral
	tar -cvf abinitbin_seq-$(VERSION).tar abinitbin-$(VERSION)
	chmod 644 abinitbin_seq-$(VERSION).tar
	gzip abinitbin_seq-$(VERSION).tar
	rm -fr abinitbin-$(VERSION)


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

#
# Individual targets for binaries
#

if DO_BUILD_LINALG
linalg:
	cd lib/linalg && $(MAKE) all
else
linalg:
	@echo 'Not building the LINALG library'
endif

if DO_BUILD_NETCDF
netcdf:
	cd lib/netcdf && $(MAKE) all
else
netcdf:
	@echo 'Not building the NETCDF library'
endif

if DO_BUILD_NQXC
nqxc:
	cd lib/nqxc && $(MAKE) all
else
nqxc:
	@echo 'Not building the NQXC library'
endif

if DO_BUILD_XMLF90
xmlf90:
	cd lib/xmlf90 && $(MAKE) all
else
xmlf90:
	@echo 'Not building the XMLF90 library'
endif

# Individual build of abinis
abinis: linalg netcdf nqxc xmlf90
	cd lib/numericf90 && $(MAKE) libnumericf90.a
	cd lib/numeric && $(MAKE) libnumeric.a
	cd src/defs && $(MAKE) libdefs.a
	cd src/00basis && $(MAKE) lib00basis.a
	cd src/01cg && $(MAKE) lib01cg.a
	cd src/01util && $(MAKE) lib01util.a
	cd src/01managempi && $(MAKE) lib01managempis.a
	cd src/01contract && $(MAKE) lib01contract.a
	cd src/lib01fftnew && $(MAKE) liblib01fftnews.a
	cd src/02spacepar && $(MAKE) lib02spacepars.a
	cd src/02parser && $(MAKE) lib02parser.a
	cd src/02geometry && $(MAKE) lib02geometry.a
	cd src/02poisson && $(MAKE) lib02poisson.a
	cd src/02psp && $(MAKE) lib02psp.a
	cd src/02ffts && $(MAKE) lib02ffts.a
	cd src/02nlstrain && $(MAKE) lib02nlstrain.a
	cd src/02poisson && $(MAKE) lib02poisson.a
	cd src/03nonlocal && $(MAKE) lib03nonlocal.a
	cd src/03xml && $(MAKE) lib03xml.a
	cd src/03xc && $(MAKE) lib03xc.a
	cd src/03recipspace && $(MAKE) lib03recipspace.a
	cd src/03paw && $(MAKE) lib03paw.a
	cd src/03iovars && $(MAKE) lib03iovars.a
	cd src/03ionetcdf && $(MAKE) lib03ionetcdf.a
	cd src/04wfs && $(MAKE) lib04wfs.a
	cd src/04rsprc && $(MAKE) lib04rsprc.a
	cd src/04iowfdenpot && $(MAKE) lib04iowfdenpot.a
	cd src/04occeig && $(MAKE) lib04occeig.a
	cd src/04rsprc && $(MAKE) lib04rsprc.a
	cd src/05common && $(MAKE) lib05common.a
	cd src/05gw && $(MAKE) lib05gw.a
	cd src/06geomoptim && $(MAKE) lib06geomoptim.a
	cd src/06response && $(MAKE) lib06response.a
	cd src/07suscep && $(MAKE) lib07suscep.a
	cd src/08seqpar && $(MAKE) lib08seqpars.a
	cd src/11drive && $(MAKE) lib11drive.a
	cd src/main && $(MAKE) abinis$(EXEEXT)

# Individual build of abinip
abinip: linalg netcdf nqxc xmlf90
	cd lib/numericf90 && $(MAKE) libnumericf90.a
	cd lib/numeric && $(MAKE) libnumeric.a
	cd src/defs && $(MAKE) libdefs.a
	cd src/00basis && $(MAKE) lib00basis.a
	cd src/01cg && $(MAKE) lib01cg.a
	cd src/01util && $(MAKE) lib01util.a
	cd src/01managempi && $(MAKE) lib01managempip.a
	cd src/01contract && $(MAKE) lib01contract.a
	cd src/lib01fftnew && $(MAKE) liblib01fftnewp.a
	cd src/02spacepar && $(MAKE) lib02spaceparp.a
	cd src/02parser && $(MAKE) lib02parser.a
	cd src/02geometry && $(MAKE) lib02geometry.a
	cd src/02poisson && $(MAKE) lib02poisson.a
	cd src/02psp && $(MAKE) lib02psp.a
	cd src/02ffts && $(MAKE) lib02ffts.a
	cd src/02nlstrain && $(MAKE) lib02nlstrain.a
	cd src/02poisson && $(MAKE) lib02poisson.a
	cd src/03nonlocal && $(MAKE) lib03nonlocal.a
	cd src/03xml && $(MAKE) lib03xml.a
	cd src/03xc && $(MAKE) lib03xc.a
	cd src/03recipspace && $(MAKE) lib03recipspace.a
	cd src/03paw && $(MAKE) lib03paw.a
	cd src/03iovars && $(MAKE) lib03iovars.a
	cd src/03ionetcdf && $(MAKE) lib03ionetcdf.a
	cd src/04wfs && $(MAKE) lib04wfs.a
	cd src/04rsprc && $(MAKE) lib04rsprc.a
	cd src/04iowfdenpot && $(MAKE) lib04iowfdenpot.a
	cd src/04occeig && $(MAKE) lib04occeig.a
	cd src/04rsprc && $(MAKE) lib04rsprc.a
	cd src/05common && $(MAKE) lib05common.a
	cd src/05gw && $(MAKE) lib05gw.a
	cd src/06geomoptim && $(MAKE) lib06geomoptim.a
	cd src/06response && $(MAKE) lib06response.a
	cd src/07suscep && $(MAKE) lib07suscep.a
	cd src/08seqpar && $(MAKE) lib08seqparp.a
	cd src/11drive && $(MAKE) lib11drive.a
	cd src/main && $(MAKE) abinip$(EXEEXT)

# Individual build of abinitgw
abinitgw: linalg netcdf nqxc xmlf90
	cd lib/numericf90 && $(MAKE) libnumericf90.a
	cd src/defs && $(MAKE) libdefs.a
	cd src/00basis && $(MAKE) lib00basis.a
	cd src/01util && $(MAKE) lib01util.a
	cd src/01managempi && $(MAKE) lib01managempis.a
	cd src/01contract && $(MAKE) lib01contract.a
	cd src/lib01fftnew && $(MAKE) liblib01fftnews.a
	cd src/02spacepar && $(MAKE) lib02spacepars.a
	cd src/02poisson && $(MAKE) lib02poisson.a
	cd src/02parser && $(MAKE) lib02parser.a
	cd src/02geometry && $(MAKE) lib02geometry.a
	cd src/02ffts && $(MAKE) lib02ffts.a
	cd src/03xml && $(MAKE) lib03xml.a
	cd src/03xc && $(MAKE) lib03xc.a
	cd src/03recipspace && $(MAKE) lib03recipspace.a
	cd src/03iovars && $(MAKE) lib03iovars.a
	cd src/03ionetcdf && $(MAKE) lib03ionetcdf.a
	cd src/04wfs && $(MAKE) lib04wfs.a
	cd src/04iowfdenpot && $(MAKE) lib04iowfdenpot.a
	cd src/04occeig && $(MAKE) lib04occeig.a
	cd src/05common && $(MAKE) lib05common.a
	cd src/05gw && $(MAKE) lib05gw.a
	cd src/08seqpar && $(MAKE) lib08seqpars.a
	cd src/11drive && $(MAKE) lib11drive.a
	cd src/main && $(MAKE) abinitgw$(EXEEXT)

# Individual build of mrgddb
mrgddb: netcdf
	cd src/defs && $(MAKE) libdefs.a
	cd src/00basis && $(MAKE) lib00basis.a
	cd src/01util && $(MAKE) lib01util.a
	cd src/01managempi && $(MAKE) lib01managempis.a
	cd src/06response && $(MAKE) lib06response.a
	cd src/07ddb && $(MAKE) lib07ddb.a
	cd src/main && $(MAKE) mrgddb$(EXEEXT)

# Individual build of mrggkk
mrggkk: netcdf
	cd src/defs && $(MAKE) libdefs.a
	cd src/00basis && $(MAKE) lib00basis.a
	cd src/01util && $(MAKE) lib01util.a
	cd src/01managempi && $(MAKE) lib01managempis.a
	cd src/04iowfdenpot && $(MAKE) lib04iowfdenpot.a
	cd src/main && $(MAKE) mrggkk$(EXEEXT)

# Individual build of mrgscr
mrgscr: netcdf
	cd src/defs && $(MAKE) libdefs.a
	cd src/00basis && $(MAKE) lib00basis.a
	cd src/01util && $(MAKE) lib01util.a
	cd src/01managempi && $(MAKE) lib01managempis.a
	cd src/04iowfdenpot && $(MAKE) lib04iowfdenpot.a
	cd src/05gw && $(MAKE) lib05gw.a
	cd src/main && $(MAKE) mrgscr$(EXEEXT)

# Individual build of anaddb
anaddb: linalg netcdf
	cd lib/numericf90 && $(MAKE) libnumericf90.a
	cd lib/numeric && $(MAKE) libnumeric.a
	cd src/defs && $(MAKE) libdefs.a
	cd src/00basis && $(MAKE) lib00basis.a
	cd src/01util && $(MAKE) lib01util.a
	cd src/01managempi && $(MAKE) lib01managempis.a
	cd src/02parser && $(MAKE) lib02parser.a
	cd src/02geometry && $(MAKE) lib02geometry.a
	cd src/03nonlocal && $(MAKE) lib03nonlocal.a
	cd src/03recipspace && $(MAKE) lib03recipspace.a
	cd src/04iowfdenpot && $(MAKE) lib04iowfdenpot.a
	cd src/04wfs && $(MAKE) lib04wfs.a
	cd src/04occeig && $(MAKE) lib04occeig.a
	cd src/05common && $(MAKE) lib05common.a
	cd src/06response && $(MAKE) lib06response.a
	cd src/07ddb && $(MAKE) lib07ddb.a
	cd src/main && $(MAKE) anaddb$(EXEEXT)

# Individual build of aim
aim: netcdf
	cd lib/numericf90 && $(MAKE) libnumericf90.a
	cd lib/numeric && $(MAKE) libnumeric.a
	cd src/defs && $(MAKE) libdefs.a
	cd src/00basis && $(MAKE) lib00basis.a
	cd src/01util && $(MAKE) lib01util.a
	cd src/01managempi && $(MAKE) lib01managempis.a
	cd src/02geometry && $(MAKE) lib02geometry.a
	cd src/02parser && $(MAKE) lib02parser.a
	cd src/04iowfdenpot && $(MAKE) lib04iowfdenpot.a
	cd src/04bader && $(MAKE) lib04bader.a
	cd src/main && $(MAKE) aim$(EXEEXT)

# Individual build of cut3d
cut3d: linalg netcdf
	cd lib/numericf90 && $(MAKE) libnumericf90.a
	cd src/defs && $(MAKE) libdefs.a
	cd src/00basis && $(MAKE) lib00basis.a
	cd src/01util && $(MAKE) lib01util.a
	cd src/01managempi && $(MAKE) lib01managempis.a
	cd src/01contract && $(MAKE) lib01contract.a
	cd src/lib01fftnew && $(MAKE) liblib01fftnews.a
	cd src/02parser && $(MAKE) lib02parser.a
	cd src/02spacepar && $(MAKE) lib02spacepars.a
	cd src/02ffts && $(MAKE) lib02ffts.a
	cd src/02geometry && $(MAKE) lib02geometry.a
	cd src/03nonlocal && $(MAKE) lib03nonlocal.a
	cd src/03recipspace && $(MAKE) lib03recipspace.a
	cd src/04iowfdenpot && $(MAKE) lib04iowfdenpot.a
	cd src/04occeig && $(MAKE) lib04occeig.a
	cd src/05common && $(MAKE) lib05common.a
	cd src/09cut3d && $(MAKE) lib09cut3d.a
	cd src/main && $(MAKE) cut3d$(EXEEXT)

# Individual build of macroave
macroave:
	cd lib/macroav && $(MAKE) libmacroav.a
	cd src/defs && $(MAKE) libdefs.a
	cd src/00basis && $(MAKE) lib00basis.a
	cd src/01util && $(MAKE) lib01util.a
	cd src/01managempi && $(MAKE) lib01managempis.a
	cd src/04iowfdenpot && $(MAKE) lib04iowfdenpot.a
	cd src/main && $(MAKE) macroave$(EXEEXT)

# Individual build of newsp
newsp: netcdf
	cd lib/numericf90 && $(MAKE) libnumericf90.a
	cd src/defs && $(MAKE) libdefs.a
	cd src/00basis && $(MAKE) lib00basis.a
	cd src/01util && $(MAKE) lib01util.a
	cd src/01managempi && $(MAKE) lib01managempis.a
	cd src/01contract && $(MAKE) lib01contract.a
	cd src/02parser && $(MAKE) lib02parser.a
	cd src/02geometry && $(MAKE) lib02geometry.a
	cd src/02ffts && $(MAKE) lib02ffts.a
	cd src/03nonlocal && $(MAKE) lib03nonlocal.a
	cd src/03xml && $(MAKE) lib03xml.a
	cd src/03recipspace && $(MAKE) lib03recipspace.a
	cd src/03iovars && $(MAKE) lib03iovars.a
	cd src/04iowfdenpot && $(MAKE) lib04iowfdenpot.a
	cd src/04wfs && $(MAKE) lib04wfs.a
	cd src/05common && $(MAKE) lib05common.a
	cd src/08seqpar && $(MAKE) lib08seqpars.a
	cd src/main && $(MAKE) newsp$(EXEEXT)

# Individual build of conducti
conducti: netcdf
	cd lib/numericf90 && $(MAKE) libnumericf90.a
	cd lib/numeric && $(MAKE) libnumeric.a
	cd src/defs && $(MAKE) libdefs.a
	cd src/00basis && $(MAKE) lib00basis.a
	cd src/01util && $(MAKE) lib01util.a
	cd src/01managempi && $(MAKE) lib01managempis.a
	cd src/02geometry && $(MAKE) lib02geometry.a
	cd src/04iowfdenpot && $(MAKE) lib04iowfdenpot.a
	cd src/04occeig && $(MAKE) lib04occeig.a
	cd src/05common && $(MAKE) lib05common.a
	cd src/main && $(MAKE) conducti$(EXEEXT)

# Individual build of optic
optic: linalg netcdf
	cd src/defs && $(MAKE) libdefs.a
	cd src/00basis && $(MAKE) lib00basis.a
	cd src/01util && $(MAKE) lib01util.a
	cd src/01managempi && $(MAKE) lib01managempis.a
	cd src/02geometry && $(MAKE) lib02geometry.a
	cd src/03recipspace && $(MAKE) lib03recipspace.a
	cd src/04iowfdenpot && $(MAKE) lib04iowfdenpot.a
	cd src/05common && $(MAKE) lib05common.a
	cd src/main && $(MAKE) optic$(EXEEXT)

# Individual build of lwf
lwf: linalg netcdf
	cd src/defs && $(MAKE) libdefs.a
	cd src/00basis && $(MAKE) lib00basis.a
	cd src/01util && $(MAKE) lib01util.a
	cd src/01managempi && $(MAKE) lib01managempis.a
	cd src/02parser && $(MAKE) lib02parser.a
	cd src/07lwf && $(MAKE) lib07lwf.a
	cd src/main && $(MAKE) lwf$(EXEEXT)

# Individual build of band2eps
band2eps:
	cd src/main && $(MAKE) band2eps$(EXEEXT)

# Individual build of abinetcdf
abinetcdf: netcdf
	cd src/main && $(MAKE) abinetcdf$(EXEEXT)



syntax highlighted by Code2HTML, v. 0.9.1