# This config file contains the compile options for compilation
# of the GSI code on the NOAA HPCS.

# ----------------------------------
# Redefine variables for NOAA HPCS
# ----------------------------------
#

# This is just information from the previous setup ..
# BACIO_VER = 2.0.1
# BUFR_VER = 10.2.5
# CRTM_VER = 2.2.3
# NEMSIO_VER = 2.2.1
# SFCIO_VER = 1.0.0
# SIGIO_VER = 2.0.1
# SP_VER = 2.0.2
# W3EMC_VER = 2.0.5
# W3NCO_VER = 2.0.6
# CORELIB  = /scratch3/NCEPDEV/nwprod/lib
# CORECRTM = /scratch4/NCEPDEV/da/save/Michael.Lueken/nwprod/lib

BACIO_VER = 2.0.3
BUFR_VER = 11.3.0
CRTM_VER = 2.2.6
NEMSIO_VER = 2.2.4
SFCIO_VER = 1.1.1
SIGIO_VER = 2.1.1
SP_VER = 2.0.2
W3EMC_VER = 2.3.1
W3NCO_VER = 2.0.6

CORELIB = /scratch2/NCEPDEV/nwprod/NCEPLIBS/compilers/intel/18.0.5.274/lib
COREINC = /scratch2/NCEPDEV/nwprod/NCEPLIBS/compilers/intel/18.0.5.274/include
CORECRTMLIB = /scratch2/NCEPDEV/nwprod/NCEPLIBS/compilers/intel/18.0.5.274/lib
CORECRTMINC = /scratch2/NCEPDEV/nwprod/NCEPLIBS/compilers/intel/18.0.5.274/include

INCsfcio = $(COREINC)/sfcio_v$(SFCIO_VER)_4
INCsigio = $(COREINC)/sigio_v$(SIGIO_VER)_4
INCnemsio= $(COREINC)/nemsio_v$(NEMSIO_VER)

CRTM_LIB=$(CORECRTMLIB)/libcrtm_v$(CRTM_VER).a

BACIO_LIB4=$(CORELIB)/libbacio_v$(BACIO_VER)_4.a
BUFR_LIBd=$(CORELIB)/libbufr_v$(BUFR_VER)_d_64.a
NEMSIO_LIB=$(CORELIB)/libnemsio_v$(NEMSIO_VER).a
SFCIO_LIB4=$(CORELIB)/libsfcio_v$(SFCIO_VER)_4.a
SIGIO_LIB4=$(CORELIB)/libsigio_v$(SIGIO_VER)_4.a
SP_LIBd=$(CORELIB)/libsp_v$(SP_VER)_d.a
W3EMC_LIBd=$(CORELIB)/libw3emc_v$(W3EMC_VER)_d.a
W3NCO_LIBd=$(CORELIB)/libw3nco_v$(W3NCO_VER)_d.a

WRFPATH = /scratch3/NCEPDEV/nceplibs/ext/WRF/3.7/WRFV3
LIBwrfio_int    = $(WRFPATH)/external/io_int/libwrfio_int.a
LIBwrfio_netcdf = $(WRFPATH)/external/io_netcdf/libwrfio_nf.a
OBJwrf_frame_pk = $(WRFPATH)/frame/pack_utils.o
OBJwrf_sizeof_int = $(WRFPATH)/frame/module_machine.o
WRFLIB = $(LIBwrfio_int) $(LIBwrfio_netcdf) $(OBJwrf_frame_pk) $(OBJwrf_sizeof_int)

INCnetcdf  = ${NETCDF}/include
LIBnetcdf  = -L${NETCDF}/lib -lnetcdf

# Empty out definition of libs use by GMAO GSI building structure
LIBtransf = #-L$(CORELIB) -ltransf
LIBhermes = #-L$(CORELIB) -lhermes
LIBgfio   = #-L$(CORELIB) -lgfio
INChdf    = #-I$(BASEDIR)/$(ARCH)/include/hdf
LIBhdf    = #-L$(BASEDIR)/$(ARCH)/lib  -lmfhdf -ldf -lhdfjpeg -lhdfz -lsz


# ---------------------------
# General targets/definitions
# ---------------------------

  AR     = ar -rv

# ----------------------------
# Fortran compiler and options
# ----------------------------

  CF            = mpif90 -f90=ifort
  FC            = $(CF)

#--- Normal mode options
  PROF= #-pg
  OMP = -qopenmp

  FFLAGS_F90    = -DGFS
  #FFLAGS_F90    = -DGFS -DMPI3 # use this if MPI-3 is available (saves memory for LETKF)
  EXE_FILE = global_enkf

  FFLAGS_COM_N  = -I ./ -I ../ -I $(INCsfcio) -I $(INCsigio) -I $(INCnemsio) \
                -I $(INCnetcdf) -O3 -xHOST -warn all -implicitnone -traceback -fp-model strict -convert big_endian $(OMP)

  FFLAGS_COM_N_NOSWAP  = -I ./ -I ../ -I $(INCsfcio) -I $(INCsigio) -I $(INCnemsio) \
		  -I $(INCnetcdf) -O3 -xHOST -warn all -implicitnone -traceback -fp-model strict -convert big_endian $(OMP)

  FFLAGS_N  = $(FFLAGS_F90) $(FFLAGS_COM_N) $(PROF)
  FFLAGS_NOSWAP_N  = $(FFLAGS_F90) $(FFLAGS_COM_N_NOSWAP) $(PROF)
  FFLAGS_f  = $(FFLAGS_COM_N) $(PROF)
  FFLAGS    = $(FFLAGS_N) $(PROF)


#--- Debug mode options
  FFLAGS_COM_D  =  -I ./ -I ../ -I $(INCsfcio) -I $(INCsigio) -I $(INCnemsio) \
		-I $(INCnetcdf) -O0 -xHOST -warn all -implicitnone -traceback -g -debug full -fp-model strict -convert big_endian
  FFLAGS_COM_NOSWAP_D  =  -I ./ -I ../ -I $(INCsfcio) -I $(INCsigio) \
		-I $(INCnemsio) -I $(INCnetcdf) -O0 -xHOST -warn all -implicitnone -traceback -g -debug full -fp-model strict -convert big_endian
  
  FFLAGS_D  = $(FFLAGS_F90) $(FFLAGS_COM_D)
  FFLAGS_NOSWAP_D = $(FFLAGS_F90) $(FFLAGS_COM_NOSWAP_D)



# ----------------------
# C Compiler and options
# ----------------------

  CC            = gcc

#--- Normal mode options

  CFLAGS_N      = -DLINUX -Dfunder -I ./ -DFortranByte=char -DFortranInt=int -DFortranLlong='long long' -O3 $(PROF)

#--- Debug mode options

  CFLAGS_D      = -DLINUX -Dfunder -I ./ -DFortranByte=char -DFortranInt=int -DFortranLlong='long long' -g


# ------------------
# Linker and options
# ------------------

  LD            = $(CF)

#--- Normal mode options
# LIBS_N        = -L$(CORELIB) -lsp_d -lnemsio -lbacio_4 -lsigio_4 \
#      -lsfcio_4 -lbufr_d_64 -lw3lib-2.0_d $(LIBcrtm) $(WRFLIB) $(LIBnetcdf)
# LIBS_N        = -L$(CORELIB) -lsp_d -lnemsio -lbacio_4 -lsigio_4 \
#      -lsfcio -lbufr_d_64 -lw3nco_d -lw3emc_d -lcrtm_v2.1.3 $(WRFLIB) $(LIBnetcdf)
  LIBS_N        = $(SP_LIBd) $(NEMSIO_LIB) $(BACIO_LIB4) $(SIGIO_LIB4) \
                $(SFCIO_LIB4) $(BUFR_LIBd) $(W3NCO_LIBd) $(W3EMC_LIBd) \
                $(CRTM_LIB) $(WRFLIB) $(LIBnetcdf)
#      -L../lib/GSD/gsdcloud4nmmb -lgsdcloud
# LIBS_N        = $(LIBnemsio) -L$(CORELIB) -lsp_d -lsigio_4 \
#      -lsfcio_4 -lbufr_dc -lw3lib-2.0_d $(LIBcrtm) $(WRFLIB) $(LIBbacio) $(LIBnetcdf)

  LDFLAGS_N     = -mkl -qopenmp

  LDFLAGS       = $(LDFLAGS_N)

#--- Debug mode options

  LIBS_D        = $(LIBS_N)

  LDFLAGS_D     = $(LDFLAGS_N)

#--- Empty out mpi library definition: embedded in compiler

  LIBmpi	=