# Define our compilers.................................
#
# on geodyncomp, the defaults are OpenMPI (1.4.3), 
# built with the GNU compilers
# F90 = mpif90
# F77 = mpif90
# cc  = mpicc
# on geodyncomp, we also have an intel compiler
F90 = ifort
F77 = ifort
cc = icc

# we take the standard ar
# AR=ar
AR=xiar

# There are no BITS
# BITS=-ifort-dbg-openmpi
BITS=_v0.2a-intel_12.0.0-mpich2_1.2.1p1
# BITS=-ifort-mvapich2

# no MKL
# IMKL = /scinet/gpc/intel/Compiler/11.1/056/mkl/include
# IMKL = /scinet/gpc/intel/Compiler/11.1/072/mkl/include
# INCLUDE=-I$(IMKL)

# Define MPI include files for ifort.
# these should match the build of wsmp; see below.
# for openmpi, these work
# MPI_INC=-I /opt/openmpi/include
# MPI_LIB=-L/opt/openmpi/lib -lmpi -lmpi_f77 -lmpi_f90
# for mpich2
MPI_INC=-I /opt/mpich2/gnu/include
MPI_LIB=-L/opt/mpich2/gnu/lib -lmpichf90 -lfmpich -lmpich
# for mvapich2
# MPI_INC=-I /usr/lib64/mvapich2/1.4-gcc/include
# MPI_LIB=-L/usr/lib64/mvapich2/1.4-gcc/lib -lfmpich -lmpich

INCLUDE = $(MPI_INC)

# Define FORTRAN compiler flags.......................
#
#GFORTRAN_FLAGS = -ffree-line-length-0
# This gives us, at run time,
# error while loading shared libraries: libimf.so: cannot open shared object file
# No such file or directory
# IFORT_FLAGS = -O2 -fp-model strict -mcmodel=large -shared-intel
# IFORT_FLAGS = -fast
IFORT_FLAGS = -O2 -heap-arrays 10
#IFORT_FLAGS = -O0
#IFORT_DEBUG = -g -warn all -check all -debug all
#F90_DEBUG = -g -warn all -check all -debug all -check:noarg_temp_created -traceback
#F90_DEBUG = -g -traceback
F90_DEBUG =
#F77_DEBUG = -g -warn all -check all -debug all
#F77_DEBUG = -g -traceback
F77_DEBUG =
#IFORT_DEBUG =
#F90FLAGS = ${IFORT_FLAGS} ${IFORT_DEBUG}
#F77FLAGS = ${IFORT_FLAGS} ${IFORT_DEBUG}
F90FLAGS = ${IFORT_FLAGS} ${F90_DEBUG}
F77FLAGS = ${IFORT_FLAGS} ${F77_DEBUG}
FFLAGS=${F90FLAGS}
# Define C compiler flags.............................
#
ICC_FLAGS = 
#CFLAGS = -O0 ${ICC_FLAGS}
CFLAGS = -O2 ${ICC_FLAGS}

# no Intel MKL library
#
# LMKL = /scinet/gpc/intel/Compiler/11.1/056/mkl/lib
# LMKL = /scinet/gpc/intel/Compiler/11.1/072/mkl/lib

# MPI libraries
# (use the default)

# WSMP Library
#
# wsmp, with gnu and openMPI
# WSMP = -L/opt/wsmp/wsmp-Linux64/lib/GNU/openmpi -lpwsmp64
# wsmp, with intel and mpich2
WSMP = -L/opt/wsmp/wsmp-Linux64/lib/Intel/mpich2 -lpwsmp64

# Not using Google's TCMalloc
# TCML   = /home/dwhipp/software/tcml

LIBS = \
 -LOCTREE -lOctree$(BITS) \
 -LNN -lnn_f$(BITS) \
 -LNN -lnn_c$(BITS) \
 -LCASCADE -lcascade$(BITS) \
 -LRESAMPLE -lresample$(BITS) \
 $(WSMP) -lblas \
 $(MPI_LIB) \
 -lpthread

# The Makefiles look at compile output with this
PAGER=more

# compile rules.......................................
#
COMPILE_OUT=$(NAME)$(BITS).compile
.SUFFIXES:
.SUFFIXES: .o .c .f .f90
.f90.o:
	@echo "--"                                   >>$(COMPILE_OUT) 2>&1
	@echo "$(F90) $(F90FLAGS) $(INCLUDE) -c $<" >>$(COMPILE_OUT) 2>&1
	$(F90) $(F90FLAGS) $(INCLUDE) -c $<         >>$(COMPILE_OUT) 2>&1

.f.o:
	@echo "--"                                   >>$(COMPILE_OUT) 2>&1
	@echo "$(F77) $(F77FLAGS) $(INCLUDE) -c $<" >>$(COMPILE_OUT) 2>&1
	$(F77) $(F77FLAGS) $(INCLUDE) -c $<         >>$(COMPILE_OUT) 2>&1

.c.o:
	@echo "--"                                 >>$(COMPILE_OUT) 2>&1
	@echo "$(CC) $(CFLAGS) -c $<"              >>$(COMPILE_OUT) 2>&1
	$(CC) $(CFLAGS) -c $<                      >>$(COMPILE_OUT) 2>&1