1# Tested with: GFortran 7.4.0, MPICH 3.3, LAPACK 3.8.0, ScaLAPACK 2.0.2, FFTW 3.3,
2#              Libint 2.6.0, Libxc 4.3.4, ELPA 2019.05.001, PLUMED 2.5.2, SPGLIB 1.12.2
3# Author: Matthias Krack (matthias.krack@psi.ch, PSI, Dezember 2019)
4
5CC         = mpicc
6FC         = mpif90
7LD         = mpif90
8AR         = ar -r
9
10include      $(MPI_PATH)/plumed/2.5.2/lib/plumed/src/lib/Plumed.inc.static
11
12ELPA_VER   = 2019.05.001
13ELPA_INC   = $(MPI_PATH)/elpa/$(ELPA_VER)/include/elpa-$(ELPA_VER)
14ELPA_LIB   = $(MPI_PATH)/elpa/$(ELPA_VER)/lib
15
16FFTW_INC   = $(GNU_PATH)/fftw/3.3-regtest/include
17FFTW_LIB   = $(GNU_PATH)/fftw/3.3-regtest/lib
18
19LIBINT_INC = $(GNU_PATH)/libint/2.6.0-lmax-4-regtest/include
20LIBINT_LIB = $(GNU_PATH)/libint/2.6.0-lmax-4-regtest/lib
21
22LIBXC_INC  = $(GNU_PATH)/libxc/4.3.4-regtest/include
23LIBXC_LIB  = $(GNU_PATH)/libxc/4.3.4-regtest/lib
24
25SPGLIB_INC = $(GNU_PATH)/spglib/1.12.2/include
26SPGLIB_LIB = $(GNU_PATH)/spglib/1.12.2/lib
27
28CFLAGS     = -O1 -g -mtune=generic
29
30DFLAGS     = -D__ELPA -D__FFTW3 -D__LIBINT -D__LIBXC
31DFLAGS    += -D__MPI_VERSION=3 -D__PLUMED2 -D__SPGLIB
32DFLAGS    += -D__parallel -D__SCALAPACK
33DFLAGS    += -D__CHECK_DIAG
34
35WFLAGS     = -Waliasing -Wampersand -Wc-binding-type -Wconversion
36WFLAGS    += -Wintrinsic-shadow -Wintrinsics-std -Wline-truncation
37WFLAGS    += -Wno-tabs -Wrealloc-lhs -Wtarget-lifetime -Wunderflow
38WFLAGS    += -Wunused-but-set-variable -Wunused-dummy-argument -Wunused-variable
39WFLAGS    += -Werror
40
41FCFLAGS    = $(CFLAGS) $(DFLAGS) $(WFLAGS)
42FCFLAGS   += -fcheck=bounds,do,recursion,pointer -ffree-form
43FCFLAGS   += -ffree-line-length-none -fimplicit-none -fno-omit-frame-pointer
44FCFLAGS   += -std=f2008
45FCFLAGS   += -I$(ELPA_INC)/elpa -I$(ELPA_INC)/modules
46FCFLAGS   += -I$(FFTW_INC) -I$(LIBINT_INC) -I$(LIBXC_INC)
47
48LDFLAGS    = $(FCFLAGS) -fsanitize=leak
49
50LIBS       = $(PLUMED_DEPENDENCIES) -lgsl -lgslcblas -lz
51LIBS      += $(ELPA_LIB)/libelpa.a
52LIBS      += $(LIBXC_LIB)/libxcf03.a
53LIBS      += $(LIBXC_LIB)/libxc.a
54LIBS      += $(LIBINT_LIB)/libint2.a
55LIBS      += $(SPGLIB_LIB)/libsymspg.a
56LIBS      += $(FFTW_LIB)/libfftw3.a
57LIBS      += $(MPI_LIBRARY_PATH)/libscalapack-regtest.a
58LIBS      += $(LIBPATH)/liblapack-regtest.a
59LIBS      += $(LIBPATH)/libblas-regtest.a
60LIBS      += -ldl -lstdc++
61