#INSTALL_DIR = /users/local/mpich-3.3.1_intel
###################################################################
#INSTALL_DIR = /opt/cray/mpt/7.3.2/gni/mpich-intel/15.0

FC = mpif90 -fc=ifort
BIN = ~/unres/bin

OPT = -mcmodel=medium -O2 -ip -w
OPTE = -mcmodel=medium -O3 -ip -w
#OPT = -O3 -intel-static -mcmodel=medium 
#OPT = -O3 -ip -w 
#OPT = -g -CB -mcmodel=medium -shared-intel
#OPTE = ${OPT}
FFLAGS = ${OPT} -c -I. -I./include_unres -I$(INSTALL_DIR)/include
FFLAGSE = ${OPTE} -c -I. -I./include_unres -I$(INSTALL_DIR)/include
LIBS = -L$(INSTALL_DIR)/lib -lmpich xdrf/libxdrf.a

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

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

objects = \
	wham_multparm.o \
	bxread.o \
	xread.o \
	cxread.o \
	enecalc1.o \
	energy_p_new.o \
	edis.o \
	boxshift.o \
	gnmr1.o \
	initialize_p.o \
	molread_zs.o \
	openunits.o \
	readrtns.o \
	read_constr_homology.o \
	arcos.o \
	cartprint.o \
	chainbuild.o \
	geomout.o \
	icant.o \
	intcor.o \
	int_from_cart.o \
	refsys.o \
	make_ensemble1.o \
	matmult.o \
	misc.o \
	mygetenv.o \
	parmread.o \
	permut.o \
	seq2chains.o \
	chain_symmetry.o \
	iperm.o \
	pinorm.o \
	printmat.o \
	proc_proc.o \
	rescode.o \
	setup_var.o \
	slices.o \
	store_parm.o \
	timing.o \
	wham_calc1.o \
	PMFprocess.o \
	ssMD.o \
	nmr_hpos.o \
	oligomer.o \
	contchain.o \
	xlinks.o

objects_compar = \
        readrtns_compar.o \
        readpdb-mult.o fitsq.o contact.o \
        elecont.o contfunc.o cont_frag.o conf_compar.o match_contact.o \
        angnorm.o odlodc.o promienie.o qwolynes.o read_ref_str.o \
        rmscalc.o secondary.o proc_cont.o define_pairs.o mysort.o

all: no_option
	@echo "Specify force field: GAB, 4P, E0LL2Y or NEWCORR"

no_option:

GAB: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DPGI -DISNAN -DAMD64 \
	-DCRYST_BOND -DCRYST_THETA -DCRYST_SC -DFOURBODY -DWHAM
GAB: ${objects} ${objects_compar} xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-GAB-HCD.exe

GAB_DFA: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DPGI -DISNAN -DAMD64 \
	-DCRYST_BOND -DCRYST_THETA -DCRYST_SC -DFOURBODY -DWHAM -DDFA
GAB_DFA: ${objects} ${objects_compar} dfa.o xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} dfa.o cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-GAB-HCD-DFA.exe

4P: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPGI -DISNAN -DAMD64 \
	-DCRYST_BOND -DCRYST_THETA -DCRYST_SC -DFOURBODY -DWHAM
4P: ${objects} ${objects_compar} xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-4P-HCD.exe

4P_DFA: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPGI -DISNAN -DAMD64 \
	-DCRYST_BOND -DCRYST_THETA -DCRYST_SC -DFOURBODY -DWHAM -DDFA
4P_DFA: ${objects} ${objects_compar} dfa.o xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} dfa.o cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-4P-HCD-DFA.exe

E0LL2Y: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DPGI -DISNAN -DFOURBODY -DAMD64 -DWHAM
E0LL2Y: ${objects} ${objects_compar} xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-E0LL2Y-HCD.exe

E0LL2Y_DFA: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DPGI -DISNAN -DFOURBODY -DAMD64 -DWHAM -DDFA
E0LL2Y_DFA: ${objects} ${objects_compar} dfa.o xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} dfa.o cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-E0LL2Y-HCD-DFA.exe

NEWCORR: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DNEWCORR -DCORRCD -DPGI -DISNAN -DAMD64 -DWHAM
NEWCORR: ${objects} ${objects_compar} xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-SC-HCD.exe

NEWCORR5D: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DNEWCORR -DCORRCD -DPGI -DISNAN -DAMD64 -DWHAM -DFIVEDIAG -DPREVIOUS -DSC_END #-DTHETA_CORR
NEWCORR5D: ${objects} ${objects_compar} xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} cinfo.o \
	${LIBS} -Wl, -o ${BIN}/wham_ifort_MPICH-piasek-HCD5-nmr-SAXS-xlinks-newtriss-tave-SC_END.exe

NEWCORR_DFA: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DNEWCORR -DCORRCD -DDFA -DPGI -DISNAN -DAMD64 -DWHAM -DDFA
NEWCORR_DFA: ${objects} ${objects_compar} dfa.o xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} dfa.o cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-SC-HCD-DFA.exe

NEWCORR5D_DFA: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DNEWCORR -DCORRCD -DDFA -DPGI -DISNAN -DAMD64 -DWHAM -DFIVEDIAG -DDFA
NEWCORR5D_DFA: ${objects} ${objects_compar} dfa.o xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} dfa.o cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-SC-HCD5-DFA-nmr.exe

xdrf/libxdrf.a:
	cd xdrf && make

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

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

