## Makefile (Felipe H. da Jornada, Apr 2015)
#

PREFIX=../..
include $(PREFIX)/Common/common-rules.mk

# Source files defined here
SRC     = hamiltonian.f90 inread.f90 iteration_data.f90 kpoint_pool.f90 \
	  diag_driver.f90 diag_scalapack.f90 diag_elpa.f90 diag_primme.f90 \
	  distribution.f90 wfn_io.f90 primme.f90 \
	  pseudopot.f90 pseudopot_vkb.f90 bgw_mpi.f90
OBJ     = $(SRC:.f90=.o) primme_aux.o

# object files from Common directory
COMOBJ = write_program_header.o \
	 scalapack.o svninfo.o sort.o \
	 wfn_rho_vxc_io.o check_inversion.o blas.o lapack.o misc.o \
	 io_utils.o input_utils.o hdf5_io.o \
	 wfn_io_hdf5.o hdf5_io.o
COMMONOBJS = $(addprefix $(COMMON)/,$(COMOBJ)) $(GLOBALOBJS)

LIBS = $(PRIMMELIB) $(ELPALIB) $(SCALAPACKLIB) $(LAPACKLIB) $(HDF5LIB)

default: parabands split_spin pythons tests

PYTHONS = compare_wfns.py
pythons: $(addprefix $(PREFIX)/bin/,$(PYTHONS))
$(PREFIX)/bin/%.py: %.py
	ln -sf $(PWD)/$^ $(PREFIX)/bin

TEST_SRCS = $(wildcard test/*/*.mako)
TEST_OBJS = $(patsubst %.mako,%,$(TEST_SRCS))
%.test: %.test.mako
	./test/gen_test.py $< $@
tests: $(TEST_OBJS)

parabands: parabands$(FLAVOR).x

split_spin: split_spin$(FLAVOR).x

split_spin$(FLAVOR).x: split_spin.o $(COMMONOBJS) $(OBJ)
	$(LINK) $(FOPTS) -o $@ $^ $(LIBS)
	$(INSTALL_CMD)

parabands$(FLAVOR).x: parabands.o $(COMMONOBJS) $(OBJ)
	$(LINK) $(FOPTS) -o $@ $^ $(LIBS)
	$(INSTALL_CMD)

# FHJ: NOTE: do not put any explicit dependecy here. Simply run make_deps.py
# and commit the newly generated make_deps.mk. End users will never have to
# do this step of generating make_deps.mk
include make_deps.mk
