INSTALL_DIR = /users/software/mpich2-1.4.1p1_intel
#INSTALL_DIR = /users/software/mpich-1.2.7p1_intel-10.1_em64_ssh
#BIN=../bin
#FC = ifort
FC= ${INSTALL_DIR}/bin/mpif90
OPT = -O3 -ip -w
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
#OPT = -CB -g 
#FFLAGS =  ${OPT} -c -I. -Iinclude_unres -I$(INSTALL_DIR)/include
#CPPFLAGS = -DLINUX -DPGI -DSPLITELE -DPROCOR -DMP -DMPI
#LIBS = -L$(INSTALL_DIR)/lib -lmpich xdrf/libxdrf.a -g -d2 -CA -CB

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

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

#.F.o:
#	${FC} ${FFLAGS} ${CPPFLAGS} ${FFLAGS} $*.F
#UNRES_FILE= ../../UNRESS/unres_f90/source/unres_MD-M
UNRES_FILE= ../unres_MD-M
WHAM_FILE= ../wham

data = clust_data.o 
#w_compar_data.o w_comm_local.o

objects_unres = xdrf/*.o names.o io_units.o control_data.o calc_data.o \
	compare_data.o control_data.o minim_data.o MD_data.o\
	energy_data.o geometry_data.o MPI_data.o MCM_data.o comm_local.o math.o geometry.o \
	io_base.o energy.o regularize.o control.o io_config.o # compare.o

#compare_data.o control_data.o minim_data.o CSA_data.o
objects_wham = wham_data.o conform_compar.o io_wham.o work_partition.o

objects = track.o hc.o io_clust.o probabl.o cluster.o

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

no_option:


#objects = 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.o read_coords.o parmread.o probabl.o fitsq.o hc.o  \
	track.o wrtclust.o srtclust.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

GAB: CPPFLAGS = -DPROCOR -DLINUX -DPGI -DUNRES -DISNAN -DMP -DMPI \
	-DSPLITELE -DLANG0 -DCRYST_BOND -DCRYST_THETA -DCRYST_SC -DCLUSTER
GAB: EXE_FILE = ../../bin/cluster_GAB_F90_EL.exe
GAB: ${data} ${objects_unres} ${objects_wham} ${objects}
	$(FC) ${OPT} ${data} ${objects_unres} ${objects_wham} ${objects} -o ${EXE_FILE}
#	$(FC) ${OPT} ${objects} ${LIBS} -o ${BIN}/unres_clustMD-mult_MPICH-GAB.exe

E0LL2Y: CPPFLAGS = -DPROCOR -DLINUX -DPGI -DUNRES -DISNAN -DMP -DMPI \
	-DSPLITELE -DLANG0 -DCLUSTER
E0LL2Y: EXE_FILE = ../../bin/cluster_E0LL2Y_F90_EL.exe
E0LL2Y: ${data} ${objects_unres} ${objects_wham} ${objects}
	$(FC) ${OPT} ${data} ${objects_unres} ${objects_wham} ${objects} -o ${EXE_FILE}
#	$(FC) ${OPT} ${objects} ${LIBS} -o ${BIN}/unres_clustMD-mult_MPICH-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 ${EXE_FILE} && rm -f compinfo && cd xdrf && make clean


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

wham_data.o: ${WHAM_FILE}/wham_data.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${WHAM_FILE}/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_FILE}/names.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_FILE}/names.f90

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

md_calc.o: ${UNRES_FILE}/md_calc.f90
	${FC} ${FFLAGS1} ${CPPFLAGS} ${UNRES_FILE}/md_calc.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

check_bond.o: ${UNRES_FILE}/check_bond.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_FILE}/check_bond.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

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

minim.o: ${UNRES_FILE}/minim.f90
	${FC} ${FFLAGS1} ${CPPFLAGS} ${UNRES_FILE}/minim.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

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

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

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

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

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

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

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

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

unres.o: ${UNRES_FILE}/unres.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${UNRES_FILE}/unres.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: ${WHAM_FILE}/io_wham.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${WHAM_FILE}/io_wham.f90

conform_compar.o: ${WHAM_FILE}/conform_compar.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${WHAM_FILE}/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: ${WHAM_FILE}/work_partition.f90
	${FC} ${FFLAGS} ${CPPFLAGS} ${WHAM_FILE}/work_partition.f90

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

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

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

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

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

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