set(SUPPORTS_CXX "FALSE")
if("${COMPILER}" STREQUAL "gnu")
  set(SUPPORTS_CXX "TRUE")
  set(CFLAGS "-mcmodel=medium")
  set(CXXFLAGS "-std=c++14")
  set(CXX_LINKER "FORTRAN")
  set(FC_AUTO_R8 "-fdefault-real-8")
  set(FFLAGS "-mcmodel=medium -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none")
  set(FFLAGS_NOOPT "-O0")
  set(FIXEDFLAGS "-ffixed-form")
  set(FREEFLAGS "-ffree-form")
  set(HAS_F2008_CONTIGUOUS "FALSE")
  set(MPICC "mpicc")
  set(MPICXX "mpicxx")
  set(MPIFC "mpif90")
  set(SCC "gcc")
  set(SCXX "g++")
  set(SFC "gfortran")
endif()
if("${COMPILER}" STREQUAL "intel")
  set(SUPPORTS_CXX "TRUE")
  set(CFLAGS "-O2 -fp-model precise -std=gnu99")
  set(CXXFLAGS "-std=c++14 -fp-model source")
  set(CXX_LINKER "FORTRAN")
  set(FC_AUTO_R8 "-r8")
  set(FFLAGS "-convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model source")
  set(FFLAGS_NOOPT "-O0")
  set(FIXEDFLAGS "-fixed -132")
  set(FREEFLAGS "-free")
  set(HAS_F2008_CONTIGUOUS "TRUE")
  set(MPICC "mpicc")
  set(MPICXX "mpicxx")
  set(MPIFC "mpif90")
  set(SCC "icc")
  set(SCXX "icpc")
  set(SFC "ifort")
  set(CXX_LDFLAGS "-cxxlib")
endif()
if("${COMPILER}" STREQUAL "intel")
  set(PIO_FILESYSTEM_HINTS "gpfs")
  set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}")
  set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}")
  set(PNETCDF_PATH "$ENV{PNETCDF_PATH}")
  if("${MPILIB}" STREQUAL "impi")
    set(MPICC "mpiicc")
    set(MPICXX "mpiicpc")
    set(MPIFC "mpiifort")
  endif()
endif()
if("${COMPILER}" STREQUAL "gnu")
  set(PIO_FILESYSTEM_HINTS "gpfs")
  set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}")
  set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}")
  set(PNETCDF_PATH "$ENV{PNETCDF_PATH}")
  set(CXX_LIBS "-lstdc++")
endif()
if("${COMPILER}" STREQUAL "gnu")
  execute_process(COMMAND $ENV{NETCDF_FORTRAN_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE CIME_TEMP_SHELL2 OUTPUT_STRIP_TRAILING_WHITESPACE)
  execute_process(COMMAND $ENV{NETCDF_C_PATH}/bin/nc-config --libs OUTPUT_VARIABLE CIME_TEMP_SHELL3 OUTPUT_STRIP_TRAILING_WHITESPACE)
  set(CPPDEFS "${CPPDEFS}  -DFORTRANUNDERSCORE -DNO_R16 -DCPRGNU")
  set(SLIBS "${SLIBS} ${CIME_TEMP_SHELL2} ${CIME_TEMP_SHELL3}")
  set(SLIBS "${SLIBS} -Wl,--start-group $ENV{MKLROOT}/lib/intel64/libmkl_gf_lp64.a $ENV{MKLROOT}/lib/intel64/libmkl_sequential.a $ENV{MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread -lm -ldl")
  unset(CIME_TEMP_SHELL2)
  unset(CIME_TEMP_SHELL3)
  if("${compile_threaded}" STREQUAL "TRUE")
    set(CFLAGS "${CFLAGS}  -fopenmp")
  endif()
  if("${DEBUG}" STREQUAL "TRUE")
    set(CFLAGS "${CFLAGS}  -g -Wall -fbacktrace -fcheck=bounds -ffpe-trap=invalid,zero,overflow")
    set(CPPDEFS "${CPPDEFS}  -DYAKL_DEBUG")
  endif()
  if("${DEBUG}" STREQUAL "FALSE")
    set(CFLAGS "${CFLAGS}  -O")
  endif()
  if("${COMP_NAME}" STREQUAL "csm_share")
    set(CFLAGS "${CFLAGS}  -std=c99")
  endif()
  if("${COMP_NAME}" STREQUAL "cism")
    set(CMAKE_OPTS "${CMAKE_OPTS}  -D CISM_GNU=ON")
  endif()
  if("${COMP_NAME}" STREQUAL "gptl")
    set(CPPDEFS "${CPPDEFS}  -DHAVE_NANOTIME -DBIT64 -DHAVE_SLASHPROC -DHAVE_GETTIMEOFDAY")
  endif()
  if("${compile_threaded}" STREQUAL "TRUE")
    set(CXXFLAGS "${CXXFLAGS}  -fopenmp")
    set(FFLAGS "${FFLAGS}  -fopenmp")
  endif()
  if("${DEBUG}" STREQUAL "TRUE")
    set(CXXFLAGS "${CXXFLAGS}  -g -Wall -fbacktrace")
    set(FFLAGS "${FFLAGS}  -g -Wall -fbacktrace -fcheck=bounds -ffpe-trap=zero,overflow")
  endif()
  if("${DEBUG}" STREQUAL "FALSE")
    set(CXXFLAGS "${CXXFLAGS}  -O")
    set(FFLAGS "${FFLAGS}  -O")
  endif()
  if("${compile_threaded}" STREQUAL "TRUE")
    set(LDFLAGS "${LDFLAGS}  -fopenmp")
  endif()
endif()
if("${COMPILER}" STREQUAL "intel")
  execute_process(COMMAND $ENV{NETCDF_FORTRAN_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE CIME_TEMP_SHELL0 OUTPUT_STRIP_TRAILING_WHITESPACE)
  execute_process(COMMAND $ENV{NETCDF_C_PATH}/bin/nc-config --libs OUTPUT_VARIABLE CIME_TEMP_SHELL1 OUTPUT_STRIP_TRAILING_WHITESPACE)
  set(CPPDEFS "${CPPDEFS}  -DFORTRANUNDERSCORE -DNO_R16 -DCPRINTEL")
  set(CFLAGS "${CFLAGS} -static-intel")
  set(CFLAGS "${CFLAGS}  -march=core-avx2")
  set(CXXFLAGS "${CXXFLAGS} -static-intel")
  set(CXXFLAGS "${CXXFLAGS}  -axCORE-AVX2")
  set(FFLAGS "${FFLAGS} -static-intel")
  set(FFLAGS "${FFLAGS}  -axCORE-AVX2")
  set(LDFLAGS "${LDFLAGS} -static-intel")
  set(SLIBS "${SLIBS} ${CIME_TEMP_SHELL0} ${CIME_TEMP_SHELL1} -mkl")
  unset(CIME_TEMP_SHELL0)
  unset(CIME_TEMP_SHELL1)
  if("${COMP_NAME}" STREQUAL "gptl")
    set(CPPDEFS "${CPPDEFS} -DHAVE_SLASHPROC")
  endif()
  if("${compile_threaded}" STREQUAL "TRUE")
    set(CFLAGS "${CFLAGS}  -qopenmp")
    set(CXXFLAGS "${CXXFLAGS}  -qopenmp")
    set(FFLAGS "${FFLAGS}  -qopenmp")
  endif()
  if("${DEBUG}" STREQUAL "FALSE")
    set(CFLAGS "${CFLAGS}  -O2 -debug minimal")
    set(CFLAGS "${CFLAGS}  -O3")
    set(CXXFLAGS "${CXXFLAGS}  -O2")
    set(CXXFLAGS "${CXXFLAGS}  -O3")
    set(FFLAGS "${FFLAGS}  -O2 -debug minimal")
    set(FFLAGS "${FFLAGS} -O3 -qno-opt-dynamic-align")
  endif()
  if("${DEBUG}" STREQUAL "TRUE")
    set(CFLAGS "${CFLAGS}  -O0 -g")
    set(CXXFLAGS "${CXXFLAGS}  -O0 -g")
    set(FFLAGS "${FFLAGS}  -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created")
  endif()
  if("${compile_threaded}" STREQUAL "TRUE")
    set(LDFLAGS "${LDFLAGS}  -qopenmp")
  endif()
endif()
