# Makefile for Superconducting Toolkit

include ../../make.inc

# location of needed modules and included files (if any)
MODFLAGS= $(MOD_FLAG)../../iotk/src $(MOD_FLAG)../../Modules $(MOD_FLAG)../../LAXlib $(MOD_FLAG)../../UtilXlib \
          $(MOD_FLAG)../../FFTXlib $(MOD_FLAG)../../PW/src $(MOD_FLAG)../../LR_Modules \
          $(MOD_FLAG)../../PP/src $(MOD_FLAG)../../PHonon/PH $(MOD_FLAG).
IFLAGS=

SCTKOBJS = \
calc_usonic_mod.o \
deltaf.o \
lambda_mu_k.o \
qpdos.o \
sctk_broyden.o \
sctk_cnt_dsp.o \
sctk_coulomb.o \
sctk_dmuxc.o \
sctk_gapeq_rhs.o \
sctk_gauss_legendre.o \
sctk_ini_delta.o \
sctk_invert.o \
sctk_io_delta.o \
sctk_kel.o \
sctk_kernel_weight.o \
sctk_main.o \
sctk_qpdos.o \
sctk_read_file.o \
sctk_rotate_kernel.o \
sctk_stdin.o \
sctk_tetra.o \
sctk_val.o \
sctk_wfc.o \
sctk_z.o \
ultrasonic.o \

LRMODS = ../../LR_Modules/liblrmod.a
PWOBJS = ../../PW/src/libpw.a
PHOBJS = ../../PHonon/PH/libph.a
PPOBJS = ../../PP/src/fermisurfer_common.o
QEMODS = ../../Modules/libqemod.a ../../KS_Solvers/Davidson/libdavid.a ../../KS_Solvers/CG/libcg.a \
         ../../FFTXlib/libqefft.a ../../LAXlib/libqela.a ../../UtilXlib/libutil.a

TLDEPS= bindir mods libs pw-lib lrmods

all : tldeps libs-sctk sctk_main.x deltaf.x sctk_kel.x qpdos.x ultrasonic.x

libs-sctk : libsctk.a

sctk_main.x : sctk_main.o libsctk.a $(PWOBJS) $(LRMODS) $(LIBOBJS)
	$(LD) $(LDFLAGS) -o $@ sctk_main.o libsctk.a \
		 $(PPOBJS) $(PHOBJS) $(LRMODS) $(PWOBJS) $(QEMODS) $(LIBOBJS) $(LIBS)
	- ( cd ../../bin ; ln -fs ../SCTK/src/sctk_main.x . )

deltaf.x : deltaf.o libsctk.a $(PWOBJS) $(LRMODS) $(LIBOBJS)
	$(LD) $(LDFLAGS) -o $@ deltaf.o libsctk.a \
		 $(PPOBJS) $(PHOBJS) $(LRMODS) $(PWOBJS) $(QEMODS) $(LIBOBJS) $(LIBS)
	- ( cd ../../bin ; ln -fs ../SCTK/src/deltaf.x . )

sctk_kel.x : sctk_kel.o libsctk.a $(PWOBJS) $(LRMODS) $(LIBOBJS)
	$(LD) $(LDFLAGS) -o $@ sctk_kel.o libsctk.a \
		 $(PPOBJS) $(PHOBJS) $(LRMODS) $(PWOBJS) $(QEMODS) $(LIBOBJS) $(LIBS)
	- ( cd ../../bin ; ln -fs ../SCTK/src/sctk_kel.x . )

qpdos.x : qpdos.o libsctk.a $(PWOBJS) $(LRMODS) $(LIBOBJS)
	$(LD) $(LDFLAGS) -o $@ qpdos.o libsctk.a \
		 $(PPOBJS) $(PHOBJS) $(LRMODS) $(PWOBJS) $(QEMODS) $(LIBOBJS) $(LIBS)
	- ( cd ../../bin ; ln -fs ../SCTK/src/qpdos.x . )

ultrasonic.x : ultrasonic.o libsctk.a $(PWOBJS) $(LRMODS) $(LIBOBJS)
	$(LD) $(LDFLAGS) -o $@ ultrasonic.o libsctk.a \
		 $(PPOBJS) $(PHOBJS) $(LRMODS) $(PWOBJS) $(QEMODS) $(LIBOBJS) $(LIBS)
	- ( cd ../../bin ; ln -fs ../SCTK/src/ultrasonic.x . )

tldeps :
	if test -n "$(TLDEPS)" ; then \
	( cd ../.. ; $(MAKE) $(TLDEPS) || exit 1 ) ; fi

libsctk.a : $(SCTKOBJS)
	$(AR) $(ARFLAGS) $@ $?
	$(RANLIB) $@

clean :
	- /bin/rm -f *.x *.o *.a *~ *_tmp.f90 *.d *.mod *.i *.L
	- /bin/rm -rf ../../bin/sctk_main.x ../../bin/deltaf.x ../../bin/sctk_kel.x \
	../../bin/qpdos.x ../../bin/ultrasonic.x

include make.depend
# DO NOT DELETE
