<?xml version="1.0"?>
<config_compilers>


<!--
===========================
This file defines compiler flags for building CESM.  General flags are listed first
followed by flags specific to particular operating systems, followed by particular machines.

More general flags are replaced by more specific flags. 
Flags of the sort ADD_FLAG indicate that the field should be appended to an already existing FLAG definition.  

Attributes indicate that an if clause should be added to the Macros so that these flags are added 
only under the conditions described by the attribute(s).

The env_mach_specific file may set environment variables or load modules which set environment variables
which are then  used in the Makefile.   For example the NETCDF_PATH on many machines is set by a module. 

Do not use variables CCPDEFS and SLIBS here, instead use ADD_CPPDEFS and ADD_SLIBS 

------------------------------------------------------------------------
 Serial/MPI compiler specification
------------------------------------------------------------------------

SCC   and  SFC specifies the serial compiler
MPICC and  MPICC specifies the mpi compiler

if $MPILIB is set to mpi-serial then
   CC = $SCC   
   FC = $SFC  
   MPICC = $SCC
   MPIFC = $SFC
   INC_MPI = $(CODEROOT)/utils/mct/mpi-serial


===========================
--> 
<compiler COMPILER="ibm">
  <!-- http://publib.boulder.ibm.com/infocenter/comphelp/v7v91/index.jsp 
 Notes:  (see xlf user's guide for the details)
  -lmass          => IBM-tuned intrinsic lib
  -qsmp=noauto    => enable SMP directives, but don't add any
  -qsmp=omp       => enable SMP directives, strict omp
  -qstrict        => don't turn divides into multiplies, etc
  -qhot           => higher-order-transformations (eg. loop padding)
  -qalias=noaryovrlp => assume no array overlap wrt equivalance, etc
  -qmaxmem=-1     => memory available to compiler during optimization
  -qipa=level=2   => InterProcedure Analysis (eg. inlining) => slow compiles
  -p -pg          => enable profiling (use in both FFLAGS and LDFLAGS)
  -qreport        => for smp/omp only
  -g              => always leave it on because overhead is minimal 
  -qflttrap=...   => enable default sigtrap (core dump)
  -C              => runtime array bounds checking (runs slow)
  -qinitauto=...  => initializes automatic variables
  -->
  <ADD_CPPDEFS> -DFORTRAN_SAME </ADD_CPPDEFS>
  <CPRE>-WF,-D</CPRE>
  <CFLAGS> -O2 -g -qfullpath -qmaxmem=-1 </CFLAGS>
  <FIXEDFLAGS>  -qsuffix=f=f -qfixed=132 </FIXEDFLAGS>
  <FREEFLAGS> -qsuffix=f=f90:cpp=F90  </FREEFLAGS>
  <FFLAGS> -g -qfullpath -qmaxmem=-1 </FFLAGS>
  <ADD_FFLAGS DEBUG="FALSE"> -O2 -qstrict -Q </ADD_FFLAGS>
  <ADD_FFLAGS compile_threaded="true"> -qsmp=omp </ADD_FFLAGS>
  <ADD_CFLAGS compile_threaded="true"> -qsmp=omp </ADD_CFLAGS>
  <ADD_LDFLAGS compile_threaded="true"> -qsmp=omp </ADD_LDFLAGS>
  <FC_AUTO_R8> -qrealsize=8 </FC_AUTO_R8>
  <ADD_FFLAGS DEBUG="TRUE"> -qinitauto=7FF7FFFF -qflttrap=ov:zero:inv:en -qspillsize=4000 </ADD_FFLAGS>
  <ADD_CFLAGS DEBUG="TRUE"> -g </ADD_CFLAGS>
  <ADD_FFLAGS DEBUG="TRUE" compile_threaded="true"> -qsmp=omp:noopt </ADD_FFLAGS>
  <ADD_CFLAGS DEBUG="TRUE" compile_threaded="true"> -qsmp=omp:noopt </ADD_CFLAGS>
  <ADD_LDFLAGS DEBUG="TRUE" compile_threaded="true"> -qsmp=omp:noopt </ADD_LDFLAGS>
  <ADD_CPPDEFS DEBUG="TRUE"> -DNO_SHR_VMATH </ADD_CPPDEFS>
  <ADD_FFLAGS DEBUG="TRUE" MODEL="pop2"> -C </ADD_FFLAGS>

</compiler>

<compiler COMPILER="pgi">
  <!-- http://www.pgroup.com/resources/docs.htm                                              -->
  <!-- Notes:  (see pgi man page & user's guide for the details) -->
  <!--  -Mextend        => Allow 132-column source lines -->
  <!--  -Mfixed         => Assume fixed-format source -->
  <!--  -Mfree          => Assume free-format source --> 

  <!--  -byteswapio     => Swap byte-order for unformatted i/o (big/little-endian) -->

  <!--  -target=linux   => Specifies the target architecture to Compute Node Linux (CNL only) -->
  <!--  -fast           => Chooses generally optimal flags for the target platform -->
  <!--  -Mnovect        => Disables automatic vector pipelining -->
  <!--  -Mvect=nosse    => Don't generate SSE, SSE2, 3Dnow, and prefetch instructions in loops    -->
  <!--  -Mflushz        => Set SSE to flush-to-zero mode (underflow) loops where possible  -->
  <!--  -Kieee          => Perform fp ops in strict conformance with the IEEE 754 standard.  -->
  <!--                     Some optimizations disabled, slightly slower, more accurate math.  -->
  <!--  -mp=nonuma      => Don't use thread/processors affinity (for NUMA architectures)  -->
  <!--
  <!--  -g              => Generate symbolic debug information. Turns off optimization.   -->
  <!--  -gopt           => Generate information for debugger without disabling optimizations  -->
  <!--  -Mbounds        => Add array bounds checking  -->
  <!--  -Ktrap=fp       => Determine IEEE Trap conditions fp => inv,divz,ovf   -->
  <!--                     * inv: invalid operands         -->
  <!--                     * divz divide by zero           -->
  <!--                     * ovf: floating point overflow   -->
  <!--  -Mlist          => Create a listing file             -->
  <!--  -F              => leaves file.f for each preprocessed file.F file  -->
  <!--  -time           => Print execution time for each compiler step  -->


  <ADD_CPPDEFS> -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 </ADD_CPPDEFS>
  <CFLAGS> -gopt -Mlist -time  </CFLAGS>

  <ADD_CFLAGS compile_threaded="true"> -mp </ADD_CFLAGS>
  <ADD_FFLAGS compile_threaded="true"> -mp </ADD_FFLAGS>
  <ADD_LDFLAGS compile_threaded="true"> -mp </ADD_LDFLAGS>


  <FIXEDFLAGS> -Mfixed </FIXEDFLAGS>
  <FREEFLAGS> -Mfree </FREEFLAGS>
  <FC_AUTO_R8> -r8 </FC_AUTO_R8>

  <FFLAGS>  -i4 -gopt -Mlist -time -Mextend -byteswapio -Mflushz -Kieee  </FFLAGS>
  <ADD_FFLAGS MODEL="cam">  -O2 -Mvect=nosse  </ADD_FFLAGS>
  <ADD_FFLAGS MODEL="cice"> -O2 -Mvect=nosse  </ADD_FFLAGS>
  <ADD_FFLAGS MODEL="clm">  -O2 -Mvect=nosse  </ADD_FFLAGS>
  <ADD_FFLAGS MODEL="vic">  -O2 -Mvect=nosse  </ADD_FFLAGS>
  <ADD_CFLAGS MODEL="vic">  -O1 -Mnovect      </ADD_CFLAGS>
  <ADD_FFLAGS MODEL="rtm">  -O2 -Mvect=nosse  </ADD_FFLAGS>
  <ADD_FFLAGS MODEL="pop2"> -O2 -Mvect=nosse  </ADD_FFLAGS>
  <ADD_FFLAGS MODEL="moby"> -O2 -Mvect=nosse  </ADD_FFLAGS>
  <ADD_FFLAGS MODEL="datm"> -O2 -Mvect=nosse  </ADD_FFLAGS>
  <ADD_FFLAGS MODEL="dice"> -O2 -Mvect=nosse  </ADD_FFLAGS>
  <ADD_FFLAGS MODEL="dlnd"> -O2 -Mvect=nosse  </ADD_FFLAGS>
  <ADD_FFLAGS MODEL="drof"> -O2 -Mvect=nosse  </ADD_FFLAGS>
  <ADD_FFLAGS MODEL="docn"> -O2 -Mvect=nosse  </ADD_FFLAGS>

  <ADD_FFLAGS DEBUG="TRUE"> -g -Ktrap=fp -Mbounds -Kieee -Mpgicoff -traceback</ADD_FFLAGS>
  <ADD_CFLAGS DEBUG="TRUE"> -g </ADD_CFLAGS>
  <ADD_FFLAGS MODEL="datm"> -Mnovect </ADD_FFLAGS>
  <ADD_FFLAGS MODEL="dlnd"> -Mnovect </ADD_FFLAGS>
  <ADD_FFLAGS MODEL="drof"> -Mnovect </ADD_FFLAGS>
  <ADD_FFLAGS MODEL="dice"> -Mnovect </ADD_FFLAGS>
  <ADD_FFLAGS MODEL="docn"> -Mnovect </ADD_FFLAGS>

  <LDFLAGS> -time -Wl,--allow-multiple-definition </LDFLAGS>
  <SCC> pgcc </SCC>
  <SFC> pgf95 </SFC>
  <MPICC> mpicc </MPICC>
  <MPIFC> mpif90 </MPIFC>
</compiler>

<compiler COMPILER="intel">
  <!-- http://software.intel.com/en-us/articles/intel-composer-xe/ -->
  <ADD_CPPDEFS> -DFORTRANUNDERSCORE -DNO_R16 -DHAVE_F2008_CONTIGUOUS</ADD_CPPDEFS>
  <ADD_CFLAGS compile_threaded="true"> -qopenmp </ADD_CFLAGS>
  <ADD_FFLAGS compile_threaded="true"> -qopenmp </ADD_FFLAGS>
  <ADD_LDFLAGS compile_threaded="true"> -qopenmp </ADD_LDFLAGS>
  <FREEFLAGS> -free </FREEFLAGS>
  <FIXEDFLAGS> -fixed -132 </FIXEDFLAGS>
  <ADD_FFLAGS DEBUG="TRUE"> -g -CU -check pointers -check bounds -fpe0 -ftz </ADD_FFLAGS>
  <ADD_CFLAGS DEBUG="TRUE"> -g </ADD_CFLAGS>
  <FFLAGS> -O2 -fp-model precise -convert big_endian -assume byterecl -ftz -traceback </FFLAGS>
  <CFLAGS> -O2 -fp-model precise </CFLAGS>
  <FFLAGS_NOOPT> -O0 </FFLAGS_NOOPT>
  <FC_AUTO_R8> -r8 </FC_AUTO_R8>
  <SFC> ifort </SFC>
  <SCC> icc </SCC>
  <MPIFC> mpif90 </MPIFC>
  <MPICC> mpicc  </MPICC>
</compiler>

<compiler COMPILER="gnu">
  <!-- http://gcc.gnu.org/onlinedocs/gfortran/ -->
  <ADD_CPPDEFS> -DFORTRANUNDERSCORE -DNO_R16 -DHAVE_F2008_CONTIGUOUS</ADD_CPPDEFS>
  <ADD_CFLAGS compile_threaded="true"> -fopenmp </ADD_CFLAGS>
  <ADD_FFLAGS compile_threaded="true"> -fopenmp </ADD_FFLAGS>
  <ADD_LDFLAGS compile_threaded="true"> -fopenmp </ADD_LDFLAGS>
  <FREEFLAGS> -ffree-form -ffree-line-length-none </FREEFLAGS>
  <ADD_FFLAGS DEBUG="TRUE"> -g -Wall </ADD_FFLAGS>
  <ADD_CFLAGS DEBUG="TRUE"> -g </ADD_CFLAGS>
  <FFLAGS> -O -fconvert=big-endian  </FFLAGS>
  <FFLAGS_NOOPT> -O0 </FFLAGS_NOOPT>
  <FC_AUTO_R8> -fdefault-real-8 </FC_AUTO_R8>
  <SFC> gfortran </SFC>
  <SCC> gcc </SCC>
  <MPIFC> mpif90 </MPIFC>
  <MPICC> mpicc  </MPICC>
</compiler>

<compiler COMPILER="pathscale">
  <!-- http://www.pathscale.com/node/70 -->
  <ADD_CPPDEFS> -DFORTRANUNDERSCORE -DNO_R16 -DCPRPATHSCALE </ADD_CPPDEFS>
  <ADD_CFLAGS compile_threaded="true"> -mp </ADD_CFLAGS>
  <ADD_FFLAGS compile_threaded="true"> -mp </ADD_FFLAGS>
  <ADD_LDFLAGS compile_threaded="true"> -mp </ADD_LDFLAGS>
  <ADD_FFLAGS DEBUG="TRUE"> -g -trapuv -Wuninitialized </ADD_FFLAGS>
  <ADD_CFLAGS DEBUG="TRUE"> -g </ADD_CFLAGS>
  <FFLAGS> -O -extend_source -ftpp -fno-second-underscore -funderscoring -byteswapio  </FFLAGS>
  <FFLAGS_NOOPT> -O0 </FFLAGS_NOOPT>
  <FC_AUTO_R8> -r8 </FC_AUTO_R8>
  <MPIFC> mpif90 </MPIFC>
  <MPICC> mpicc  </MPICC>  
</compiler>

<compiler COMPILER="cray">
  <!-- http://docs.cray.com/cgi-bin/craydoc.cgi?mode=View;id=S-3901-74;idx=books_search;this_sort=title;q=;type=books;title=Cray%20Fortran%20Reference%20Manual -->
  <ADD_CPPDEFS> -DFORTRANUNDERSCORE -DNO_R16 -DHAVE_F2008_CONTIGUOUS</ADD_CPPDEFS>
  <ADD_CPPDEFS MODEL="pop2"> -DDIR=NOOP </ADD_CPPDEFS>
  <ADD_CFLAGS compile_threaded="false"> -h noomp </ADD_CFLAGS>
  <ADD_FFLAGS compile_threaded="false"> -h noomp </ADD_FFLAGS>
  <ADD_LDFLAGS compile_threaded="false"> -h noomp </ADD_LDFLAGS>
  <ADD_CPPDEFS MODEL="moby"> -DDIR=NOOP </ADD_CPPDEFS>
  <ADD_FFLAGS DEBUG="TRUE"> -g -trapuv -Wuninitialized </ADD_FFLAGS>
  <ADD_CFLAGS DEBUG="TRUE"> -g </ADD_CFLAGS>
  <FFLAGS> -O2 -h byteswapio -f free -N 255 -em  </FFLAGS>
  <FFLAGS_NOOPT> -O0 </FFLAGS_NOOPT>
  <FC_AUTO_R8> -S real64 </FC_AUTO_R8>
  <LDFLAGS> -Wl,--allow-multiple-definition -h byteswapio </LDFLAGS>  
</compiler>

<compiler COMPILER="lahey">
  <!-- http://www.lahey.com/doc.htm -->
  <!--  --trace produces a call traceback on abort -->
  <!--  --trap causes code to stop on divide by zero or overflow exceptions -->
  <!--  --pca prevents overwriting constant arguments -->
  <!-- --chk for basic compiler checking (a,e,s,u,x) -->
  <SFC> lf95 </SFC>
  <MPIFC> mpif90 </MPIFC>
  <SCC> gcc </SCC>
  <MPICC> mpicc </MPICC>
  <FFLAGS> --wide </FFLAGS>
  <ADD_FFLAGS DEBUG="TRUE"> -g --chk a,e,s,u --pca --trace --trap </ADD_FFLAGS>
  <ADD_CFLAGS DEBUG="TRUE"> -g </ADD_CFLAGS>
  <FC_AUTO_R8> -r8 </FC_AUTO_R8>
  <ADD_FFLAGS compile_threaded="true"> --openmp --threadheap 4096 </ADD_FFLAGS>
  <ADD_LDFLAGS compile_threaded="true"> --openmp --threadheap 4096 </ADD_LDFLAGS>
  <ADD_LDFLAGS> -Wl,-rpath,$(LAHEY)/lib64</ADD_LDFLAGS>
</compiler>

<compiler OS="Darwin">
   <ADD_CPPDEFS> -DSYSDARWIN </ADD_CPPDEFS>
   <ADD_LDFLAGS MODEL="driver"> -all_load </ADD_LDFLAGS>
</compiler>

<compiler COMPILER="intel" OS="Darwin" >
  <ADD_FFLAGS compile_threaded="false"> -heap-arrays </ADD_FFLAGS>
</compiler>

<compiler MACH="userdefined">
  <NETCDF_PATH> USERDEFINED_MUST_EDIT_THIS</NETCDF_PATH>
  <PNETCDF_PATH></PNETCDF_PATH>
  <ADD_SLIBS># USERDEFINED $(shell $(NETCDF_PATH)/bin/nc-config --flibs)</ADD_SLIBS>  
  <ADD_CPPDEFS></ADD_CPPDEFS>
  <CONFIG_ARGS></CONFIG_ARGS>
  <ESMF_LIBDIR></ESMF_LIBDIR>
  <MPI_LIB_NAME></MPI_LIB_NAME>
  <MPI_PATH></MPI_PATH>
</compiler>

<compiler OS="CNL">
  <SFC> ftn </SFC>
  <SCC> cc </SCC>
  <MPIFC> ftn </MPIFC>
  <MPICC> cc </MPICC>
  <MPI_LIB_NAME> mpich </MPI_LIB_NAME>
  <MPI_PATH> $(MPICH_DIR)</MPI_PATH>
  <NETCDF_PATH> $(NETCDF_DIR)</NETCDF_PATH>
  <PNETCDF_PATH> $(PARALLEL_NETCDF_DIR)</PNETCDF_PATH>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>  
  <ADD_CPPDEFS> -DLINUX </ADD_CPPDEFS>
</compiler>

<compiler COMPILER="pgi" MACH="lynx">
  <NETCDF_PATH> $(NETCDF)</NETCDF_PATH>
  <ADD_SLIBS> $(shell $(NETCDF_PATH)/bin/nc-config --flibs) -L/contrib/hdf5/1.8.7_seq/hdf5-pgi//lib -lhdf5_hl -lhdf5 \
              -lm -lcurl -L/contrib/libidn/1.19/pgi/lib -lidn -lssl -lcrypto -ldl -lz</ADD_SLIBS>  
</compiler>

<compiler COMPILER="intel" MACH="lynx">
  <NETCDF_PATH> $(CRAY_NETCDF_DIR)/netcdf-intel</NETCDF_PATH>
  <ADD_SLIBS> $(shell $(NETCDF_PATH)/bin/nc-config --flibs) </ADD_SLIBS>
</compiler>

<compiler COMPILER="gnu" MACH="lynx">
  <ADD_CPPDEFS> -DNO_MPIMOD </ADD_CPPDEFS>
  <NETCDF_PATH> /contrib/netcdf/3.6.3/gnu</NETCDF_PATH>
</compiler>

<compiler COMPILER="gnu" MACH="yellowstone">
  <ADD_CPPDEFS> -DNO_MPIMOD </ADD_CPPDEFS>
</compiler>

<compiler COMPILER="cray" MACH="lynx">
  <NETCDF_PATH> $(CRAY_NETCDF_DIR)/netcdf-cce</NETCDF_PATH>
</compiler>

<compiler COMPILER="pathscale" MACH="lynx">
  <NETCDF_PATH> $(CRAY_NETCDF_DIR)/netcdf-pathscale</NETCDF_PATH>
</compiler>


<compiler MACH="yellowstone" COMPILER="intel">
  <MPICC>mpiicc</MPICC>
  <MPIFC>mpiifort</MPIFC>
  <ADD_FFLAGS>  -xHost </ADD_FFLAGS>
  <ADD_CFLAGS>  -xHost </ADD_CFLAGS>
</compiler>

<compiler MACH="yellowstone" COMPILER="pgi">
  <ADD_CPPDEFS> -DNO_MPIMOD </ADD_CPPDEFS>
</compiler>

<compiler MACH="yellowstone" COMPILER="pathscale">
  <ADD_CPPDEFS> -DNO_MPIMOD </ADD_CPPDEFS>
  <SCC>pathcc</SCC>
  <SFC>pathf95</SFC>
</compiler>

<compiler MACH="yellowstone">
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=gpfs </PIO_CONFIG_OPTS>
  <NETCDF_PATH>$(NETCDF)</NETCDF_PATH>
  <PNETCDF_PATH>$(PNETCDF)</PNETCDF_PATH>
  <!--The following flag is required due to a bug in mpich2 v1208 --> 
  <ADD_CPPDEFS MODEL="cam" MPILIB="mpich2"> -DNO_MPI2 </ADD_CPPDEFS>
</compiler>

<compiler COMPILER="intel" MACH="cheyenne">
  <ADD_CPPDEFS> $(CPPFLAGS) </ADD_CPPDEFS>
  <MPICC>mpicc</MPICC>
  <MPIFC>mpif90</MPIFC>
  <CFLAGS> -O1 -fp-model precise </CFLAGS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff </SLIBS>
</compiler>

<compiler COMPILER="intel" MACH="gust">
  <SCC> icx </SCC>
  <SFC> ifort </SFC>
  <ADD_CPPDEFS> $(CPPFLAGS) </ADD_CPPDEFS>
  <ADD_CFLAGS> -g -march=core-avx2 -std=c99 -qno-opt-dynamic-align  -Wno-error=incompatible-function-pointer-types </ADD_CFLAGS>
  <ADD_FFLAGS> -g -march=core-avx2 -qno-opt-dynamic-align </ADD_FFLAGS>
  <ADD_FFLAGS MODEL="cam">  -O1 </ADD_FFLAGS>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff </SLIBS>
</compiler>

<compiler COMPILER="intel" MACH="derecho">
  <SCC> icx </SCC>
  <SFC> ifort </SFC>
  <ADD_CPPDEFS> $(CPPFLAGS) </ADD_CPPDEFS>
  <ADD_CFLAGS> -g -march=core-avx2 -std=c99 -qno-opt-dynamic-align  -Wno-error=incompatible-function-pointer-types -Wno-error=implicit-function-declaration </ADD_CFLAGS>
  <ADD_FFLAGS> -g -march=core-avx2 -qno-opt-dynamic-align </ADD_FFLAGS>
  <ADD_FFLAGS MODEL="cam">  -O1 </ADD_FFLAGS>
  <ADD_LDFLAGS> -Wl,--allow-multiple-definition </ADD_LDFLAGS>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff </SLIBS>
</compiler>

<compiler COMPILER="pgi" MACH="raptor">
  <NETCDF_PATH> $(NETCDF_DIR)</NETCDF_PATH>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf </SLIBS>
</compiler>

<compiler COMPILER="intel" MACH="cent">
  <ADD_CPPDEFS> $(CPPFLAGS) </ADD_CPPDEFS>
  <MPICC>mpicc</MPICC>
  <MPIFC>mpif90</MPIFC>
  <CFLAGS> -O1 -fp-model precise </CFLAGS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff </SLIBS>
</compiler>

<compiler COMPILER="intel" MACH="spirit">
  <ADD_CPPDEFS> $(CPPFLAGS) </ADD_CPPDEFS>
  <MPICC>icc</MPICC>
  <MPIFC>ifort</MPIFC>
  <CFLAGS> -O1 -fp-model precise </CFLAGS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lmpi</SLIBS>
</compiler>

<compiler COMPILER="intel" MACH="thunder">
  <ADD_CPPDEFS> $(CPPFLAGS) </ADD_CPPDEFS>
  <MPICC>mpicc</MPICC>
  <MPIFC>mpif90</MPIFC>
  <CFLAGS> -O1 -fp-model precise </CFLAGS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff </SLIBS>
</compiler>

<compiler COMPILER="intel" MACH="mustang">
  <ADD_CPPDEFS> $(CPPFLAGS) </ADD_CPPDEFS>
  <MPICC>mpicc</MPICC>
  <MPIFC>mpif90</MPIFC>
  <CFLAGS> -O1 -fp-model precise </CFLAGS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -L/p/app/COST/dependencies/curl/7.63.0/intel/lib -l curl</SLIBS>
</compiler>

<compiler COMPILER="intel" MACH="topaz">
  <MPICC>mpicc</MPICC>
  <MPIFC>mpif90</MPIFC>
  <CFLAGS> -O1 -fp-model precise </CFLAGS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff</SLIBS>
</compiler>

<compiler COMPILER="pgi" MACH="copper">
  <NETCDF_PATH> $(NETCDF_DIR)</NETCDF_PATH>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf </SLIBS>
</compiler>

<compiler COMPILER="pgi" MACH="garnet">
  <NETCDF_PATH> $(NETCDF_DIR)</NETCDF_PATH>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf </SLIBS>
</compiler>

<compiler COMPILER="pgi" MACH="conrad">
  <NETCDF_PATH> $(NETCDF_DIR)</NETCDF_PATH>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf </SLIBS>
</compiler>

<compiler COMPILER="intel" MACH="conrad">
  <ADD_FFLAGS MODEL="cam">  -O1 </ADD_FFLAGS>
  <NETCDF_PATH> $(NETCDF_DIR)</NETCDF_PATH>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf </SLIBS>
</compiler>

<compiler COMPILER="intel" MACH="excal">
  <SFC> ftn </SFC>
  <SCC> cc </SCC>
  <MPIFC> ftn </MPIFC>
  <MPICC> cc </MPICC>
  <ADD_FFLAGS MODEL="cam">  -O1 </ADD_FFLAGS>
  <NETCDF_PATH> $(NETCDF_DIR)</NETCDF_PATH>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf </SLIBS>
</compiler>

<compiler COMPILER="pgi" MACH="gordon">
  <NETCDF_PATH> $(NETCDF_DIR)</NETCDF_PATH>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf </SLIBS>
</compiler>

<compiler COMPILER="intel" MACH="gordon">
  <ADD_FFLAGS MODEL="cam">  -O1 </ADD_FFLAGS>
  <NETCDF_PATH> $(NETCDF_DIR)</NETCDF_PATH>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf </SLIBS>
</compiler>

<compiler COMPILER="pgi" MACH="onyx">
  <NETCDF_PATH> $(NETCDF_DIR)</NETCDF_PATH>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf </SLIBS>
</compiler>

<compiler COMPILER="intel" MACH="onyx">
  <ADD_FFLAGS MODEL="cam">  -O1 </ADD_FFLAGS>
  <NETCDF_PATH> $(NETCDF_DIR)</NETCDF_PATH>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf </SLIBS>
</compiler>

<compiler COMPILER="pgi" MACH="onyxknl">
  <NETCDF_PATH> $(NETCDF_DIR)</NETCDF_PATH>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <CONFIG_ARGS> --host=Linux </CONFIG_ARGS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf </SLIBS>
</compiler>

<compiler COMPILER="intel" MACH="onyxknl">
  <ADD_FFLAGS MODEL="cam">  -O1 </ADD_FFLAGS>
  <NETCDF_PATH> $(NETCDF_DIR)</NETCDF_PATH>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <CONFIG_ARGS> --host=Linux </CONFIG_ARGS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf </SLIBS>
</compiler>

<compiler COMPILER="pgi" MACH="lightning">
  <NETCDF_PATH> $(NETCDF_DIR)</NETCDF_PATH>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf </SLIBS>
</compiler>

<compiler COMPILER="intel" MACH="lightning">
  <NETCDF_PATH> $(NETCDF_DIR)</NETCDF_PATH>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf </SLIBS>
</compiler>

<compiler MACH="erebus">
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=gpfs </PIO_CONFIG_OPTS>
  <NETCDF_PATH>$(NETCDF)</NETCDF_PATH>
  <PNETCDF_PATH>$(PNETCDF)</PNETCDF_PATH>
  <!--The following flag is required due to a bug in mpich2 v1208 --> 
  <ADD_CPPDEFS MODEL="cam" MPILIB="mpich2"> -DNO_MPI2 </ADD_CPPDEFS>
  <SCC>mpicc</SCC>
  <SFC>mpif90</SFC>
</compiler>
 
<compiler MACH="lynx">
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
</compiler>

<compiler COMPILER="pgi" MACH="titan">
  <ADD_FFLAGS> -O2 </ADD_FFLAGS>
  <ADD_CPPDEFS> -D_NO_MPI_RSEND </ADD_CPPDEFS>
  <CONFIG_ARGS> --host=Linux </CONFIG_ARGS>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <ADD_SLIBS> $(shell $(NETCDF_PATH)/bin/nc-config --flibs) </ADD_SLIBS>  
</compiler>

<compiler COMPILER="pgi" MACH="bluewaters">
  <ADD_LDFLAGS> -R/scratch/jedwards/pgi/11.10.0.patch -L/scratch/jedwards/pgi/11.10.0.patch -lpgc -lpgmp </ADD_LDFLAGS>
</compiler>

<compiler  MACH="bluewaters">
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <ADD_SLIBS> $(shell $(NETCDF_PATH)/bin/nc-config --flibs) </ADD_SLIBS>  
</compiler>


<compiler MACH="janus">
  <NETCDF_PATH> $(NETCDF)</NETCDF_PATH>
  <PNETCDF_PATH> $(PNETCDF)</PNETCDF_PATH>
  <ADD_SLIBS> $(shell $(NETCDF_PATH)/bin/nc-config --flibs) </ADD_SLIBS>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=lustre </PIO_CONFIG_OPTS>
  <SFC> mpif90 </SFC>
  <SCC> mpicc </SCC>
</compiler>

<compiler COMPILER="intel" MACH="janus">
  <ADD_FFLAGS> -O2 -xHost </ADD_FFLAGS>
  <ADD_CFLAGS> -O2 -xHost </ADD_CFLAGS>
  <ESMF_LIBDIR>/projects/siva7831/esmf_install/esmf-5.3.0-O-intel-openmpi/lib</ESMF_LIBDIR>
  <PNETCDF_PATH>/home/jimedwards/parallel-netcdf/1.3.0/intel/12.1.4/</PNETCDF_PATH>
</compiler>

<compiler COMPILER="ibm" OS="AIX">
  <CONFIG_SHELL> /usr/bin/bash </CONFIG_SHELL>
  <SFC> xlf95_r </SFC>
  <MPIFC> mpxlf95_r </MPIFC>
  <SCC> cc_r </SCC>
  <MPICC> mpcc_r </MPICC>  
  <ADD_CPPFLAGS> -DF2003 </ADD_CPPFLAGS>
  <ADD_CFLAGS> -qarch=auto -qtune=auto -qcache=auto </ADD_CFLAGS>
  <ADD_FFLAGS> -qarch=auto -qtune=auto -qcache=auto -qsclk=micro </ADD_FFLAGS>
  <ADD_LDFLAGS DEBUG="TRUE"> -qsigtrap=xl__trcedump </ADD_LDFLAGS>
  <ADD_FFLAGS MODEL="cam"> -qspill=6000 </ADD_FFLAGS>
  <ADD_LDFLAGS> -bdatapsize:64K -bstackpsize:64K -btextpsize:32K </ADD_LDFLAGS>
  <ADD_SLIBS> -lmassv -lessl </ADD_SLIBS>
  <ADD_SLIBS DEBUG="FALSE"> -lmass </ADD_SLIBS>
</compiler>

<compiler COMPILER="ibm" MACH="bluefire">
  <NETCDF_PATH>$(NETCDF)</NETCDF_PATH>
  <PNETCDF_PATH> /contrib/parallel-netcdf/1.3.0</PNETCDF_PATH>
  <LAPACK_LIBDIR> /contrib/lapack/3.4.1/lib </LAPACK_LIBDIR>
  <ADD_SLIBS>$(shell $(NETCDF_PATH)/bin/nc-config --flibs)</ADD_SLIBS>
  <ESMF_LIBDIR                     > /contrib/esmf-5.3.0-64-O/lib</ESMF_LIBDIR>
  <ESMF_LIBDIR MPILIB="mpi-serial" > /contrib/esmf-5.2.0rp1bs22-64-O-mpiuni-netcdf4.1.3/lib </ESMF_LIBDIR>
  <ESMF_LIBDIR DEBUG="TRUE"        > /contrib/esmf-5.3.0-64-g/lib</ESMF_LIBDIR>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=gpfs </PIO_CONFIG_OPTS>
</compiler>




<compiler COMPILER="ibm" OS="BGL">
  <ADD_CFLAGS> -qtune=440 -qarch=440d </ADD_CFLAGS>
  <ADD_FFLAGS> -qtune=440 -qarch=440d </ADD_FFLAGS>
  <MPI_PATH> /bgl/BlueLight/ppcfloor/bglsys</MPI_PATH>
  <MPI_LIB_NAME> mpich.rts </MPI_LIB_NAME>
  <SFC> blrts_xlf95 </SFC>
  <MPIFC> blrts_xlf95 </MPIFC>
  <SCC> blrts_xlc </SCC>
  <MPICC> blrts_xlc </MPICC>
  <CFLAGS> -O3 -qstrict </CFLAGS>
  <ADD_FFLAGS DEBUG="FALSE"> -O3 -qstrict -Q </ADD_FFLAGS>
  <ADD_FFLAGS DEBUG="TRUE"> -qinitauto=FF911299 -qflttrap=ov:zero:inv:en </ADD_FFLAGS>
  <MLIBS> -L/bgl/BlueLight/ppcfloor/bglsys/lib -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts </MLIBS>
  <ADD_CPPDEFS> -DLINUX -DnoI8 </ADD_CPPDEFS>
  <CONFIG_ARGS> --build=powerpc-bgp-linux --host=powerpc64-suse-linux </CONFIG_ARGS>
  <LDFLAGS>  -Wl,--relax -Wl,--allow-multiple-definition </LDFLAGS>
  <ADD_FFLAGS> -qextname=flush </ADD_FFLAGS>
</compiler>

<compiler COMPILER="ibm" OS="BGP">
  <ADD_CFLAGS> -qtune=450 -qarch=450 -I/bgsys/drivers/ppcfloor/arch/include/</ADD_CFLAGS>
  <ADD_FFLAGS>-qspillsize=2500 -qtune=450 -qarch=450 </ADD_FFLAGS>
  <ADD_CPPDEFS> -DLINUX -DnoI8 </ADD_CPPDEFS>
  <CONFIG_ARGS> --build=powerpc-bgp-linux --host=powerpc64-suse-linux </CONFIG_ARGS>
  <LDFLAGS>  -Wl,--relax -Wl,--allow-multiple-definition </LDFLAGS>
  <ADD_FFLAGS> -qextname=flush </ADD_FFLAGS>
</compiler>


<compiler COMPILER="ibm" OS="BGQ">
  <ADD_CFLAGS> -qtune=auto -qarch=auto </ADD_CFLAGS>
  <ADD_FFLAGS>-qspillsize=2500 -qtune=auto -qarch=auto </ADD_FFLAGS>
  <ADD_CPPDEFS> -DLINUX -DnoI8 </ADD_CPPDEFS>
  <CONFIG_ARGS> --build=powerpc-bgp-linux --host=powerpc64-suse-linux </CONFIG_ARGS>
  <LDFLAGS>  -Wl,--relax -Wl,--allow-multiple-definition </LDFLAGS>
  <ADD_FFLAGS> -qextname=flush </ADD_FFLAGS>
</compiler>


<compiler COMPILER="ibm" MACH="intrepid">
  <SFC> mpixlf95_r </SFC>
  <MPIFC> mpixlf95_r </MPIFC>
  <SCC> mpixlc_r </SCC>
  <MPICC> mpixlc_r </MPICC>
  <ADD_CPPDEFS> -DNO_MPIMOD </ADD_CPPDEFS>
  <NETCDF_PATH> /soft/apps/current/netcdf-4.1.3-disable_netcdf_4</NETCDF_PATH>
  <PNETCDF_PATH> /soft/apps/current/parallel-netcdf-1.3.1-xl</PNETCDF_PATH>
  <ADD_SLIBS>$(shell $(NETCDF_PATH)/bin/nc-config --flibs) -L/bgsys/drivers/ppcfloor/comm/lib</ADD_SLIBS>
  <PIO_CONFIG_OPTS> --enable-filesystem-hints=gpfs </PIO_CONFIG_OPTS>
</compiler>


<compiler COMPILER="ibm" MACH="mira">
  <SFC> mpixlf95_r </SFC>
  <MPIFC> mpixlf95_r </MPIFC>
  <SCC> mpixlc_r </SCC>
  <MPICC> mpixlc_r </MPICC>
  <ADD_CPPDEFS> -DNO_MPIMOD </ADD_CPPDEFS>
  <NETCDF_PATH> /soft/libraries/unsupported/netcdf-4.1.3</NETCDF_PATH>
  <PNETCDF_PATH> /gpfs/vesta_home/mickelso/soft/parallel-netcdf-1.3.0</PNETCDF_PATH>
  <ADD_SLIBS>$(shell $(NETCDF_PATH)/bin/nc-config --flibs) -L/bgsys/drivers/ppcfloor/comm/sys/lib</ADD_SLIBS>
  <PIO_CONFIG_OPTS>  --enable-filesystem-hints=gpfs </PIO_CONFIG_OPTS>
</compiler>


<compiler MACH="brutus">
  <NETCDF_PATH> $(NETCDF)</NETCDF_PATH>
  <MPI_PATH> $(MPI_ROOT)</MPI_PATH>
  <MPI_LIB_NAME MPILIB="mpich"> mpich </MPI_LIB_NAME>
  <MPI_LIB_NAME MPILIB="openmpi"> mpi </MPI_LIB_NAME>
  <CONFIG_ARGS> --host=LINUX </CONFIG_ARGS>
</compiler>    

<compiler COMPILER="pgi" MACH="eastwind">
  <NETCDF_PATH> $(NETCDF_HOME)</NETCDF_PATH>
  <CONFIG_ARGS> --host=Linux --enable-filesystem-hints=lustre</CONFIG_ARGS>
  <ADD_CPPDEFS> -DLINUX </ADD_CPPDEFS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi </SLIBS>
</compiler>

<compiler COMPILER="pgi" MACH="olympus">
  <NETCDF_PATH> $(NETCDF_LIB)/..</NETCDF_PATH>
  <CONFIG_ARGS> --host=Linux --enable-filesystem-hints=lustre</CONFIG_ARGS>
  <ADD_CPPDEFS> -DLINUX </ADD_CPPDEFS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi </SLIBS>
</compiler>
 
<compiler COMPILER="intel" MACH="evergreen">
  <NETCDF_PATH> $(NETCDFLIB)/..</NETCDF_PATH>
  <CONFIG_ARGS> --host=Linux --enable-filesystem-hints=lustre</CONFIG_ARGS>
  <ADD_CPPDEFS> -DLINUX </ADD_CPPDEFS>
  <SLIBS> -L$(NETCDF_PATH)/lib -lnetcdf -lcurl </SLIBS>
  <ADD_FFLAGS> -heap_arrays </ADD_FFLAGS>
  <ADD_CFLAGS> -heap_arrays </ADD_CFLAGS>
</compiler>

<compiler COMPILER="pgi" MACH="hera">
  <NETCDF_PATH>/usr/local/tools/netcdf-pgi-4.1.3</NETCDF_PATH>
  <MPI_PATH>/usr/local/tools/mvapich2-pgi-1.7/</MPI_PATH>
  <MPI_LIB_NAME> mpich</MPI_LIB_NAME>
  <ADD_SLIBS>$(shell /usr/local/tools/netcdf-pgi-4.1.3/bin/nc-config --flibs)</ADD_SLIBS>    
  <ADD_LDFLAGS> -Wl,-rpath /usr/local/tools/netcdf-pgi-4.1.3/lib</ADD_LDFLAGS>
</compiler>

<compiler COMPILER="pgi" MACH="hopper">
  <ADD_SLIBS>$(shell $(NETCDF_PATH)/bin/nf-config --flibs)</ADD_SLIBS>
  <ESMF_LIBDIR DEBUG="FALSE">/project/projectdirs/ccsm1/esmf/ESMF_5_3_0_pgi12.5-0/lib/libO/Unicos.pgi.64.mpi.default/</ESMF_LIBDIR>
 <ESMF_LIBDIR DEBUG="TRUE">/project/projectdirs/ccsm1/esmf/ESMF_5_3_0_pgi12.5-0/lib/libg/Unicos.pgi.64.mpi.default/</ESMF_LIBDIR>
</compiler>

<compiler COMPILER="intel" MACH="hopper">
  <ADD_SLIBS>$(shell $(NETCDF_PATH)/bin/nf-config --flibs)</ADD_SLIBS>
  <ESMF_LIBDIR DEBUG="FALSE">/project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libO/Unicos.intel.64.mpi.default/</ESMF_LIBDIR>
 <ESMF_LIBDIR DEBUG="TRUE">/project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libg/Unicos.intel.64.mpi.default/</ESMF_LIBDIR>
</compiler>



<compiler MACH="pleiades-har">
  <NETCDF_PATH> /nasa/netcdf/4.0-i10.1</NETCDF_PATH>
  <MPI_PATH>/nasa/sgi/mpt/2.06a67</MPI_PATH>
  <MPI_LIB_NAME>mpi</MPI_LIB_NAME>
  <MPICC>icc</MPICC>
</compiler>

<compiler MACH="pleiades-wes">
  <NETCDF_PATH> /nasa/netcdf/4.0-i10.1</NETCDF_PATH>
  <MPI_PATH>/nasa/sgi/mpt/2.06a67</MPI_PATH>
  <MPI_LIB_NAME>mpi</MPI_LIB_NAME>
  <MPICC>icc</MPICC>
</compiler>

<compiler MACH="pleiades-san">
  <NETCDF_PATH> /nasa/netcdf/4.0-i10.1</NETCDF_PATH>
  <MPI_PATH>/nasa/sgi/mpt/2.06a67</MPI_PATH>
  <MPI_LIB_NAME>mpi</MPI_LIB_NAME>
  <MPICC>icc</MPICC>
</compiler>

<compiler MACH="sierra">
  <NETCDF_PATH>/usr/local/tools/netcdf-pgi-4.1.3</NETCDF_PATH>
  <MPI_PATH>/usr/local/tools/mvapich2-pgi-1.7/</MPI_PATH>
  <MPI_LIB_NAME> mpich</MPI_LIB_NAME>
  <ADD_SLIBS>$(shell /usr/local/tools/netcdf-pgi-4.1.3/bin/nc-config --flibs)</ADD_SLIBS>    
  <ADD_LDFLAGS> -Wl,-rpath /usr/local/tools/netcdf-pgi-4.1.3/lib</ADD_LDFLAGS>
</compiler>

<compiler MACH="frankfurt">
 <MPI_LIB_NAME MPILIB="mpich"> mpich</MPI_LIB_NAME>
 <MPI_LIB_NAME MPILIB="openmpi"> mpi</MPI_LIB_NAME>
 <LAPACK_LIBDIR> /usr/lib64 </LAPACK_LIBDIR>
 <ADD_SLIBS>$(shell $(NETCDF_PATH)/bin/nc-config --flibs)</ADD_SLIBS>
</compiler>

<compiler COMPILER="intel" MACH="frankfurt">
 <NETCDF_PATH> /usr/local/netcdf-4.1.3-intel-cluster-2011.0.013</NETCDF_PATH>
 <MPI_PATH MPILIB="mpich"> /cluster/mpich-1.2.7p1-intel-cluster-2011.0.013</MPI_PATH>
 <MPI_PATH MPILIB="openmpi"> /cluster/openmpi-qlc-intel</MPI_PATH>
</compiler>

<compiler COMPILER="pgi" MACH="frankfurt">
 <NETCDF_PATH> /usr/local/netcdf-4.1.3-pgi-hpf-cc-11.5-0</NETCDF_PATH>
 <MPI_PATH MPILIB="mpich"> /cluster/mpich-1.2.7p1-pgi-hpf-cc-11.5-0</MPI_PATH>
 <MPI_PATH MPILIB="openmpi"> /cluster/openmpi-qlc-pgi</MPI_PATH>
</compiler>


</config_compilers>
