###################################################################
#INSTALL_DIR = /net/software/local/intel/compilers_and_libraries_2016.3.210/linux/mpi/intel64


FC = mpif90 -fc=ifort


OPT = -O2 -ip -mcmodel=medium 
OPTE = -O3 -ip -mcmodel=medium 
OPT0 = -O0
#OPT = -CB -g -mcmodel=medium -shared-intel
OPTE = ${OPT}
FFLAGS =  ${OPT} -c -I. -Iinclude_unres -I$(INSTALL_DIR)/include
FFLAGSE =  ${OPTE} -c -I. -Iinclude_unres -I$(INSTALL_DIR)/include
FFLAGS0 =  ${OPT0} -c -I. -Iinclude_unres -I$(INSTALL_DIR)/include
FFLAGS1 =  ${OPT1} -c -I. -Iinclude_unres -I$(INSTALL_DIR)/include
LIBS = -L$(INSTALL_DIR)/lib -lmpi xdrf/libxdrf.a ${SITE_LIBS}

.c.o:
	cc -c -DLINUX -DPGI $*.c

.f.o:
	${FC} ${FFLAGS} $*.f

.F.o:
	${FC} ${FFLAGS} ${CPPFLAGS} ${FFLAGS} $*.F

object = main_clust.o arcos.o cartprint.o chainbuild.o convert.o initialize_p.o \
	matmult.o readrtns.o pinorm.o rescode.o intcor.o timing.o misc.o \
	geomout.o readpdb-mult.o read_coords.o parmread.o calc_rmsgdt.o probabl.o fitsq.o hc.o  \
	track.o wrtclust.o srtclust.o ave_restr.o ave_restr1.o out_rms.o noyes.o contact.o printmat.o \
	int_from_cart1.o energy_p_new.o icant.o proc_proc.o work_partition.o \
	setup_var.o read_ref_str.o gnmr1.o permut.o seq2chains.o \
	chain_symmetry.o iperm.o rmscalc.o rmsnat.o TMscore.o ssMD.o refsys.o \
	read_constr_homology.o boxshift.o nmr_hpos.o edis.o inbox.o xlinks.o \
	make_conf_list.o enecalc.o ave_contact.o

object_lbfgsb = lbfgs_driver.o src.o blas1.o dpmeps.o linpack.o timer.o

no_option:

GAB: CPPFLAGS = -DPROCOR -DLINUX -DPGI -DAMD64 -DUNRES -DISNAN -DMP -DMPI  \
	-DCLUST -DSPLITELE -DLANG0 -DCRYST_BOND -DCRYST_THETA -DCRYST_SC \
	-DFOURBODY
GAB: BIN = ~/unres/bin/unres_clustMD_ifort_MPICH-tryton_GAB-HCD.exe
GAB: ${object} xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo | true
	${FC} ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${object} cinfo.o ${LIBS} -o ${BIN}

4P: CPPFLAGS = -DLINUX -DPGI -DAMD64 -DUNRES -DISNAN -DMP -DMPI \
	-DCLUST -DSPLITELE -DLANG0 -DCRYST_BOND -DCRYST_THETA -DCRYST_SC \
	-DFOURBODY
4P: BIN = ~/unres/bin/unres_clustMD_ifort_MPICH-tryton_4P-HCD.exe
4P: ${object} xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo | true
	${FC} ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${object} cinfo.o ${LIBS} -o ${BIN}

E0LL2Y: CPPFLAGS = -DLINUX -DPGI -DAMD64 -DUNRES -DISNAN -DMP -DMPI -DPROCOR \
	-DCLUST -DSPLITELE -DFOURBODY
E0LL2Y: BIN = ~/unres/bin/unres_clustMD_ifort_MPICH-tryton_E0LL2Y-HCD.exe
E0LL2Y: ${object} xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo | true
	${FC} ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${object} cinfo.o ${LIBS} -o ${BIN}

E0LL2Y_DFA: CPPFLAGS = -DLINUX -DPGI -DAMD64 -DUNRES -DISNAN -DMP -DMPI -DPROCOR \
	-DCLUST -DSPLITELE -DFOURBODY -DDFA
E0LL2Y_DFA: BIN = ~/unres/bin/unres_clustMD_ifort_MPICH-tryton_E0LL2Y-HCD-DFA.exe
E0LL2Y_DFA: ${object} dfa.o xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo | true
	${FC} ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${object} dfa.o cinfo.o ${LIBS} -o ${BIN}

NEWCORR: CPPFLAGS = -DLINUX -DPGI -DAMD64 -DUNRES -DISNAN -DMP -DMPI -DPROCOR \
	-DCORRCD -DCLUST -DSPLITELE -DLANG0 -DNEWCORR
#-DCLUST -DSPLITELE -DLANG0 -DNEWCORR
NEWCORR: BIN = ~/unres/bin/unres_clustMD_ifort_MPICH-tryton_SC-HCD.exe
#NEWCORR: BIN = ~/bin/unres_clustMD-mult_ifort_MPICH_NEWCORR-fouriertor-test.exe
NEWCORR: ${object} xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo | true
	${FC} ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${object} cinfo.o ${LIBS} -o ${BIN}

NEWCORR5D: CPPFLAGS = -DLINUX -DPGI -DAMD64 -DUNRES -DISNAN -DMP -DMPI -DPROCOR \
	-DCORRCD -DCLUST -DSPLITELE -DLANG0 -DNEWCORR -DFIVEDIAG -DSC_END
#-DCLUST -DSPLITELE -DLANG0 -DNEWCORR
NEWCORR5D: BIN = ~/unres/bin/unres_clustMD_ifort_MPICH-tryton_SC-HCD5-nmr-SAXS-xlinks-newtriss-tave-contmap.exe
#NEWCORR5D: BIN = ~/unres/bin/unres_clustMD_ifort_MPICH-tryton_SC-HCD5-nmr-SAXS-xlinks13.exe
#NEWCORR: BIN = ~/bin/unres_clustMD-mult_ifort_MPICH_NEWCORR-fouriertor-test.exe
NEWCORR5D: ${object} ${object_lbfgsb} xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo | true
	${FC} ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${object} ${object_lbfgsb} cinfo.o ${LIBS} -o ${BIN}

NEWCORR_DFA: CPPFLAGS = -DLINUX -DPGI -DAMD64 -DUNRES -DISNAN -DMP -DMPI -DPROCOR \
	-DCORRCD -DCLUST -DSPLITELE -DLANG0 -DNEWCORR -DDFA
#-DCLUST -DSPLITELE -DLANG0 -DNEWCORR
NEWCORR_DFA: BIN = ~/unres/bin/unres_clustMD_ifort_MPICH-tryton_SC-HCD-DFA.exe
#NEWCORR: BIN = ~/bin/unres_clustMD-mult_ifort_MPICH_NEWCORR-fouriertor-test.exe
NEWCORR_DFA: ${object} dfa.o xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo | true
	${FC} ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${object} dfa.o cinfo.o ${LIBS} -o ${BIN}

NEWCORR5D_DFA: CPPFLAGS = -DLINUX -DPGI -DAMD64 -DUNRES -DISNAN -DMP -DMPI -DPROCOR \
	-DCORRCD -DCLUST -DSPLITELE -DLANG0 -DNEWCORR -DFIVEDIAG -DDFA
#-DCLUST -DSPLITELE -DLANG0 -DNEWCORR
NEWCORR5D_DFA: BIN = ~/unres/bin/unres_clustMD_ifort_MPICH-tryton_SC-HCD5-DFA-nmr-SAXS.exe
#NEWCORR: BIN = ~/bin/unres_clustMD-mult_ifort_MPICH_NEWCORR-fouriertor-test.exe
NEWCORR5D_DFA: ${object} dfa.o xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo | true
	${FC} ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${object} dfa.o cinfo.o ${LIBS} -o ${BIN}

xdrf/libxdrf.a:
	cd xdrf && make

energy_p_new.o: energy_p_new.F
	${FC} ${FFLAGSE} ${CPPFLAGS} energy_p_new.F

src.o: src.f
	${FC} ${FFLAGS0} src.f

blas1.o: blas1.f
	${FC} ${FFLAGS0} blas1.f

linpack.o: linpack.f
	${FC} ${FFLAGS0} linpack.f

dpmeps.o: dpmeps.f
	${FC} ${FFLAGS0} dpmeps.f

timer.o: timer.f
	${FC} ${FFLAGS0} timer.f

clean:
	/bin/rm -f *.o && /bin/rm -f compinfo && cd xdrf && make clean

