INSTALL_DIR = /users/software/mpich2-1.4.1p1_intel
#INSTALL_DIR = /users/software/mpich-1.2.7p1_intel-10.1_em64_ssh

#FC= ifort
OPT = -mcmodel=medium -O3 -ip -w

FC= ${INSTALL_DIR}/bin/mpif90
CC = gcc

#DEB = -g -CA -CB -auto -zero -traceback -u -check pointer -check uninit
DEB = -g -CA -CB -check pointer #-check uninit
#OPT =  -O3 #-ip
FFLAGS = -fpp -c ${DEB} #${OPT} #-I. -I./include_unres -I$(INSTALL_DIR)/include
FFLAGSE = -fpp -c ${DEB} #${OPT} #-I. -I./include_unres -I$(INSTALL_DIR)/include
FFLAGS2 = -fpp -c -g -CA -CB #-O0
#FFLAGS = -c -g -C -I. -I./include_unres -I$(INSTALL_DIR)/include
#LIBS = -L$(INSTALL_DIR)/lib -lmpich ../../lib/xdrf/libxdrf.a

#CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DPGI -DCRYST_BOND -DCRYST_SC -DCRYST_THETA -DWHAM_RUN -DMPI -DISNAN

#EXE_FILE = ../bin/wham_F90_EL.exe
#UNRES_FILE= ../../UNRESS/unres_f90/source/unres_MD-M
UNRES_FILE= ../unres
UNRES_DATA_FILE= ../unres/data

data = wham_data.o w_compar_data.o w_comm_local.o

data_unres = names.o io_units.o calc_data.o compare_data.o control_data.o minim_data.o CSA_data.o\
	energy_data.o geometry_data.o MD_data.o MPI_data.o MCM_data.o comm_local.o

objects_unres = xdrf/*.o math.o geometry.o \
	io_base.o energy.o control.o regularize.o compare.o

objects = conform_compar.o io_database.o io_config.o io_wham.o\
	enecalc.o wham_calc.o work_partition.o\
	wham.o
#io_config is from unres package

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

no_option:

GAB: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DPGI -DISNAN -DAMD64 \
	-DCRYST_BOND -DCRYST_THETA -DCRYST_SC -DWHAM_RUN  #-DWHAM
GAB: EXE_FILE = ../../bin/wham_GAB_F90_EL.exe
GAB: ${data} ${data_unres} ${objects_unres} ${objects}
	cc -o compinfo compinfo.c
	./compinfo | true
	${FC} ${FFLAGS} cinfo.f90
	$(FC) ${OPT} ${data}  ${data_unres} ${objects_unres} ${objects} cinfo.o -o ${EXE_FILE}
#        $(FC) ${OPT} ${objects} ${objects_compar} cinfo.o \
#        ${LIBS} -static-intel -o ${BIN}/wham-mult_ifort_MPICH-GAB.exe

4P: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPGI -DISNAN -DAMD64 \
	-DCRYST_BOND -DCRYST_THETA -DCRYST_SC -DWHAM_RUN # -DWHAM
4P: EXE_FILE = ../../bin/wham_4P_F90_EL.exe
4P: ${data}  ${data_unres} ${objects_unres} ${objects}
	cc -o compinfo compinfo.c
	./compinfo | true
	${FC} ${FFLAGS} cinfo.f90
	$(FC) ${OPT} ${data}  ${data_unres} ${objects_unres} ${objects} cinfo.o -o ${EXE_FILE}
#        $(FC) ${OPT} ${objects} ${objects_compar} cinfo.o \
#        ${LIBS} -static-intel -o ${BIN}/wham-mult_ifort_MPICH_D-4P.exe

E0LL2Y: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DPGI -DISNAN -DAMD64 -DWHAM_RUN #-DWHAM
E0LL2Y: EXE_FILE = ../../bin/wham_E0LL2Y_F90_EL.exe
E0LL2Y: ${data}  ${data_unres} ${objects_unres} ${objects}
	cc -o compinfo compinfo.c
	./compinfo | true
	${FC} ${FFLAGS} cinfo.f90
	$(FC) ${OPT} ${data}  ${data_unres} ${objects_unres} ${objects} cinfo.o -o ${EXE_FILE}
#        $(FC) ${OPT} ${objects} ${objects_compar} cinfo.o \
#        ${LIBS} -static-intel -o ${BIN}/wham-mult_ifort_MPICH_D-E0LL2Y.exe

xdrf/*.o:
	cd xdrf && make

clean:
	rm -f *.o && rm -f *.mod && rm -f compinfo && cd xdrf && make clean
#	rm -f *.o && rm -f *.mod && rm -f ${EXE_FILE} && rm -f compinfo && cd xdrf && make clean
#	/bin/rm *.o

wham_data.o: wham_data.f90
	${FC} ${FFLAGS} ${CPPFLAGS} wham_data.f90

w_compar_data.o: w_compar_data.f90
	${FC} ${FFLAGS} ${CPPFLAGS} w_compar_data.f90

w_comm_local.o: w_comm_local.f90
	${FC} ${FFLAGS} ${CPPFLAGS} w_comm_local.f90


names.o: ${UNRES_DATA_FILE}/names.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_DATA_FILE}/names.f90

io_units.o: ${UNRES_DATA_FILE}/io_units.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_DATA_FILE}/io_units.f90

calc_data.o: ${UNRES_DATA_FILE}/calc_data.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_DATA_FILE}/calc_data.f90

compare_data.o: ${UNRES_DATA_FILE}/compare_data.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_DATA_FILE}/compare_data.f90

control_data.o: ${UNRES_DATA_FILE}/control_data.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_DATA_FILE}/control_data.f90

CSA_data.o: ${UNRES_DATA_FILE}/CSA_data.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_DATA_FILE}/CSA_data.f90

energy_data.o: ${UNRES_DATA_FILE}/energy_data.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_DATA_FILE}/energy_data.f90

geometry_data.o: ${UNRES_DATA_FILE}/geometry_data.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_DATA_FILE}/geometry_data.f90

MCM_data.o: ${UNRES_DATA_FILE}/MCM_data.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_DATA_FILE}/MCM_data.f90

MD_data.o: ${UNRES_DATA_FILE}/MD_data.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_DATA_FILE}/MD_data.f90

minim_data.o: ${UNRES_DATA_FILE}/minim_data.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_DATA_FILE}/minim_data.f90

MPI_data.o: ${UNRES_DATA_FILE}/MPI_data.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_DATA_FILE}/MPI_data.f90

comm_local.o: ${UNRES_DATA_FILE}/comm_local.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_DATA_FILE}/comm_local.f90

math.o: ${UNRES_FILE}/math.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_FILE}/math.f90

geometry.o: ${UNRES_FILE}/geometry.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_FILE}/geometry.f90

io_base.o: ${UNRES_FILE}/io_base.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_FILE}/io_base.f90

energy.o: ${UNRES_FILE}/energy.f90
	${FC} ${FFLAGSE} ${CPPFLAGS} ${UNRES_FILE}/energy.f90

control.o: ${UNRES_FILE}/control.F90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_FILE}/control.F90

io_config.o: ${UNRES_FILE}/io_config.f90
	${FC} ${FFLAGS2} ${CPPFLAGS} ${UNRES_FILE}/io_config.f90

regularize.o: ${UNRES_FILE}/regularize.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_FILE}/regularize.f90

compare.o: ${UNRES_FILE}/compare.F90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_FILE}/compare.F90


proc_proc.o: proc_proc.c
	${CC} ${CPPFLAGS} -O -c proc_proc.c

io_database.o: io_database.f90
	${FC} ${FFLAGS} ${CPPFLAGS} io_database.f90

io_wham.o: io_wham.f90
	${FC} ${FFLAGS} ${CPPFLAGS} io_wham.f90

conform_compar.o: conform_compar.f90
	${FC} ${FFLAGS} ${CPPFLAGS} conform_compar.f90

enecalc.o: enecalc.f90
	${FC} ${FFLAGS} ${CPPFLAGS} enecalc.f90

wham_calc.o: wham_calc.f90
	${FC} ${FFLAGS} ${CPPFLAGS} wham_calc.f90

work_partition.o: work_partition.f90
	${FC} ${FFLAGS} ${CPPFLAGS} work_partition.f90

wham.o: wham.f90
	${FC} ${FFLAGS} ${CPPFLAGS} wham.f90

