# -------------------Compiler & Flags------------------------------------------
F90COMPILER = mpiifort
F90LINKER   = mpiifort
F90COMPILEOPTS=-O2 -fPIC -m64 -convert big_endian
F90COMPILEPATHS=-I${ESM_SOFT}/include
#F90COMPILECPPFLAGS=-DDEBUG=1 -DNETCDF=1 -DPNETCDF=1
F90COMPILECPPFLAGS=
F90LINKOPTS= -m64 -Wl,--no-as-needed 
F90LINKPATHS=-L${ESM_SOFT}/lib -L/apps/intel/2013Compiler/mkl/lib/intel64 
F90LINKLIBS=-lnetcdff -lnetcdf -lpnetcdf -lhdf5 -lhdf5_hl -ldl -lm -lz -lcurl -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread

# -----------------------------------------------------------------------------
SRCDIR =  src
OBJDIR =  obj 
LOGDIR =  log 


VPATH= $(SRCDIR)

.SUFFIXES: .F .f .f90 .F90 

%.o : %.f90
	$(F90COMPILER) -c $(F90COMPILEOPTS) $(F90COMPILEPATHS) $<

%.o : %.F90
	$(F90COMPILER) -c $(F90COMPILEOPTS) $(F90COMPILEPATHS) $(F90COMPILECPPFLAGS) $<
 
%.o : %.f
	$(F90COMPILER) -c $(F90COMPILEOPTS) $(F90COMPILEPATHS) $<
 
%.o : %.F
	$(F90COMPILER) -c $(F90COMPILEOPTS) $(F90COMPILEPATHS) $(F90COMPILECPPFLAGS) $<
       
      
# -----------------------------------------------------------------------------
#all: pre.exe prep.exe move log1
all: pre.exe move log1

pre.exe: const.o var.o comm.o io.o met.o interp.o presolver.o main.o
	$(F90LINKER) $(F90LINKOPTS) $(F90LINKPATHS) -o $@ $^ $(F90LINKLIBS)
#prep.exe: prep.o
#	$(F90LINKER) $(F90LINKOPTS) $(F90LINKPATHS) -o $@ $^ $(F90LINKLIBS)
move:	
	mv *.o *.mod ./$(OBJDIR)
log1:
#	mv *.log ./$(LOGDIR)

# -----------------------------------------------------------------------------
.PHONY: clean 
clean:
	rm -rf *.exe obj/* log/* data/* 
submit:
	make
	bsub -a intelmpi -n 96 -o output.%J -e errors.%J  mpirun.lsf ./pre.exe 
cess:
	make
	qsub run.job
run:
	mpiexec -n 96 ./pre.exe
#	bsub -a intelmpi -n 64 mpirun.lsf ./pre.exe 2>&1 | tee log.txt
#	bsub -a intelmpi -n 64 –R "span[hosts=6]" -o output.%J -e errors.%J  mpirun.lsf ./pre.exe 
#	bsub -a intelmpi -n 64 -o output.%J -e errors.%J  mpirun.lsf ./pre.exe

