#
# ----------------------------------------------------------------------------
# common definitions for 32-core Cray XC40, MPI,  small memory, real*8, ARCTIC
# HYCOM+CICE using ESMF4; see http://www.esmf.ucar.edu/ for ESMF
# Intel Compiler: module switch PrgEnv-cray PrgEnv-intel
# -fp-model precise -no-fma maintains bit for bit equality for all NMPI values
# version that uses MPI-2 I/O for HYCOM
# relocatable version
# ----------------------------------------------------------------------------
#
# MACROS      DESCRIPTIONS:
#
# FC:         Fortran 90 compiler.
# FCFFLAGS:   Fortran 90 compilation flags.
# CC:         C compiler.
# CCFLAGS:    C compilation flags.
# CPP:        cpp preprocessor (may be implied by FC).
# CPPFLAGS:   cpp -D macro flags.
# LD:         Loader.
# LDFLAGS:    Loader flags.
# EXTRALIBS:  Extra local libraries (if any).
#

FC            = ftn
INCLUDES      = -I${ESMF_DIR}/mod/modO -I${ESMF_DIR}/include -I${CICE_DIR}/esmf/compile
FCFFLAGS      =	-traceback -xHost -O3 -fp-model precise -no-fma -ftz -align array64byte -r8 -warn nogeneral -diag-disable 10212 -mcmodel=small $(INCLUDES) 
CC            = cc
CCFLAGS       =	-traceback -xHost -O -mcmodel=small
CPP           = cpp -P
CPPFLAGS      = -DUSE_ESMF4 -DIA32 -DREAL8 -DMPI -DENDIAN_IO -DTIMER -DRELO $(CPP_EXTRAS) 
LD            = $(FC)
LDFLAGS       = -V $(FCFFLAGS)
EXTRALIBS     =
EXTRALIBS     = -L/p/home/wallcraf/pkgs/netcdf/intel/4.0.1/lib -lnetcdf -L${ESMF_DIR}/lib/libO -lesmf   -lAtpSigHandler -lAtpSigHCommData -lpthread -liomp5 -limf -lm -lpthread -ldl -lsci_intel_mp -liomp5 -limf -lm -lpthread -ldl -lrt -lugni -lpthread -lpmi -limf -lm -ldl -lrt -lugni -lpthread -lpmi -limf -lm -ldl -ldmapp -lmpl -lpmi -lpthread -lalpslli -lpthread -lwlm_detect -lugni -lpthread -lalpsutil -lpthread -lrca -lxpmem -ludreg -limf -lm -lifcore -lifport -lpthread -limf -lsvml -lirng -lm -lipgo -ldecimal -lstdc++ -lgcc -lgcc_eh -lirc -lsvml -lgcc -lgcc_eh -lirc_s -ldl -lrt -ldl


# --- generic make definitions
#
SHELL         = /bin/sh
RM            = \rm -f

#
# rules.
#

.c.o:
	$(CC) $(CPPFLAGS) $(CCFLAGS)  -c $*.c

.F90.o:
	$(FC) $(CPPFLAGS) $(FCFFLAGS) -c $*.F90