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