
####################
# IBM XLF compiler #
####################
#FC     = xlf90
#MPIF90 = mpxlf_r
#OPT    = -O3
#REAL8  = -qrealsize=8
##DBGFLAGS  = -qinitauto=7FF7FFFF -qflttrap=zero:inv:en -qsigtrap=xl__trcedump
##DBGFLAGS = -C -qzerosize -qinitauto=7FF7FFFF -qflttrap=zero:inv:en -qsigtrap=xl__trcedump
#FFLAGS = $(OPT) -qstrict -qarch=auto -q64 -I$(INC_NETCDF) $(DBGFLAGS)
#LIB_NETCDF = /contrib/netcdf/4.1.3_seq/lib
#INC_NETCDF = /contrib/netcdf/4.1.3_seq/include
##LIB_APEX  = ../apex_trunk/lib
#LIB_ESMF = /contrib/esmf-5.2.0rp2-64-O-mpi-netcdf4.1.3/lib
#include $(LIB_ESMF)/esmf.mk
#LIBS     = -lmass -L$(LIB_NETCDF) -lnetcdf -L$(LIB_ESMF) -lesmf
#LDFLAGS    += $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) $(ESMF_F90LINKRPATHS)
#LDFLAGS    += $(ESMF_F90ESMFLINKLIBS)
##################################
# Intel on IBM Linux Yellowstone #
##################################
# Assume that default ifort and mpif90 modules are loaded:
#FC     = ifort
#MPIF90 = mpif90
#REAL8  = -r8
# Without debug flags:
#OPT    = -O3
#FFLAGS = $(OPT) -heap-arrays
## With debug flags:
##OPT   = -O
##FFLAGS = $(OPT) -I$(INC_NETCDF) -heap-arrays -debug full -traceback -check bounds -check format -check output_conversion -check pointers -check uninit
#LIB_ESMF   = /glade/p/work/svasquez/install/esmf-5.3.0-g-netcdf4.2/lib
#include $(LIB_ESMF)/esmf.mk
#LIBS = -L$(LIB_ESMF) -Wl,-rpath=$(LIB_ESMF) -lesmf
############################
# HAO Linux Intel Compiler #
############################
#NPROC  = 4
FC     = /opt/local/intel2011/composerxe-2011.0.084/bin/intel64/ifort
#MPIF90 = /opt/local/intel2011/impi/4.0.1.007/intel64/bin/mpif90 -fc=ifort
REAL8  = -r8

LIB_NETCDF = /home/tgcm/intel/netcdf-4.1.1/lib
INC_NETCDF = /home/tgcm/intel/netcdf-4.1.1/include

## Without debug flags:
OPT    = -O3
FFLAGS = $(OPT) -I$(INC_NETCDF) -heap-arrays

## With debug flags:
##OPT   = -O
##FFLAGS = $(OPT) -I$(INC_NETCDF) -heap-arrays -debug full -traceback -check bounds -check format -check output_conversion -check pointers -check uninit

##LIB_APEX   = /home/foster/tgcm/edynamo/apex_trunk/lib
#LIB_ESMF   = /home/tgcm/esmf/ESMF_5_2_0rp1_beta_snapshot_21/lib/libO/Linux.intel.64.intelmpi.hao
#include $(LIB_ESMF)/esmf.mk
##LIBS     = -lcurl -L$(LIB_NETCDF) -lnetcdf -L$(LIB_ESMF) -lesmf -L$(LIB_APEX) -lapex
LIBS     = -L /usr/lib64 -llibcurl.so.4.1.1 -L$(LIB_NETCDF) -lnetcdf 
#LDFLAGS    += $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) $(ESMF_F90LINKRPATHS)
#LDFLAGS    += $(ESMF_F90ESMFLINKLIBS) 
#MACHINES  = machines.ini

################
# GNU compiler #
################
#FCOMPILER=gnu95
#FC=gfortran
#OPT=-g
#FFLAGS=$(OPT)
#Debugging flags (leave these commented out unless you know what you're doing):
##FFLAGS+=-Wall -Wextra -pedantic -fimplicit-none -fbounds-check

###########################
# Portland Group compiler #
###########################
#FCOMPILER=pg
#FC=pgf90
#OPT=-O3
#FFLAGS=$(OPT)
#Debugging flags (leave these commented out unless you know what you're doing):
##FFLAGS+= -C -Mchkfpstk -Mchkstk -Mpgicoff -traceback -Ktrap=fp -Minform=inform
##FFLAGS+= -fpic -Minform=inform -Mnosecond_underscore -fast
## -Ktrap=align,denorm,divz,fp,inexact,inv,ovf,unf

########################################################################
# You shouldn't need to touch anything below this line.
########################################################################
.SUFFIXES : .o .F90 .F
%.o: %.F90
	$(FC) $(FFLAGS) -c  -o $@ $<
%.o: %.F
	$(FC) $(FFLAGS) $(REAL8) -c  -o $@ $<

EXEC = driver_wx
#
# Objects including old code apex_subs.o (apex_subs.F)
OBJS = shr_kind_mod.o params.o util.o geogrid.o namelist.o read_ncfile.o fields.o output.o main.o
#
# Object to link with libapex.a (without apex_subs.o)
#OBJS = shr_kind_mod.o params.o timing.o util.o geogrid.o maggrid.o namelist.o my_mpi.o read_ncfile.o fields.o apex.o my_esmf.o output.o addfld_mod.o solve.o mud.o mudcom.o mudmod.o muh2cr.o heelis.o edynamo.o main.o

$(EXEC): $(OBJS)
	@ echo "   =====================================================   "
	@ echo "   =      WACCM-X Standalone Physics Column Driver     =   "
	@ echo "   =                                                   =   "
	@ echo "   =====================================================   "
	$(FC) -o $@ $(OBJS) $(LIBS)

##my_esmf.o: my_esmf.F90
##	$(ESMF_F90COMPILER) -c $(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) \
##	$(ESMF_F90COMPILECPPFLAGS) $(CPPFLAGS) $(FFLAGS) $<
##my_mpi.o: my_mpi.F90
##	$(ESMF_F90COMPILER) -c $(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) \
##	$(ESMF_F90COMPILECPPFLAGS) $(CPPFLAGS) $(FFLAGS) $<
##edynamo.o: edynamo.F90
##	$(ESMF_F90COMPILER) -c $(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) \
##	$(ESMF_F90COMPILECPPFLAGS) $(CPPFLAGS) $(FFLAGS) $<
shr_kind_mod.o: shr_kind_mod.F90
	$(FC) -c $(FFLAGS) $<

params.o: params.F90
	$(FC) -c $(FFLAGS) $<

util.o: util.F90
	$(FC) -c $(FFLAGS) $<

geogrid.o: geogrid.F90
	$(FC) -c $(FFLAGS) $<

namelist.o: namelist.F90
	$(FC) -c $(FFLAGS) $<

fields.o: fields.F90
	$(FC) -c $(FFLAGS) $<

read_ncfile.o: read_ncfile.F90
	$(FC) -c $(FFLAGS) $<

output.o: output.F90
	$(FC) -c $(FFLAGS) $<

main.o: main.F90
	$(FC) -c $(FFLAGS) $<

#$(MACHINES): export HN=$(HOST)
#$(MACHINES): export NP=$(NPROC)
#$(MACHINES): FORCE
#	@echo "Making $(MACHINES)"
#	@echo `hostname` > $(MACHINES)
#	@awk 'BEGIN{ for (i=2; i <= ENVIRON["NP"]; i++) print ENVIRON["HN"] }' >> $(MACHINES)
#FORCE:

clean:
	rm -f *.o *.mod $(EXEC)
