#=============================
# Start of preamble
#=============================

# System properties

SHELL           =       /bin/sh

# Macros, these should be generic for all machines

LN      = ln -sf
MAKE    = make -i -r
RM      = /bin/rm -f
MV      = /bin/mv -f
CP      = /bin/cp -f
AR      = ar ru
M4      = m4
RANLIB  = ranlib
CPP     = /lib/cpp

.SUFFIXES: .f90 .F90 .F .i .o .f .c

#### Single location for defining total number of domains.  You need
#### at least 1 + 2*(number of total nests).  For example, 1 coarse
#### grid + three fine grids = 1 + 2(3) = 7, so MAX_DOMAINS=7.

MAX_DOMAINS = CONFIGURE_MAX_DOMAINS
MAX_PROC    = 1024

# Substituted by Config.pl

PERL          = CONFIGURE_PERL_PATH
REGISTRY      = CONFIGURE_REGISTRY
NETCDF_PATH   = CONFIGURE_NETCDF_PATH
NETCDF_LIB    = CONFIGURE_NETCDF_LIB
NETCDF_LIBS   = CONFIGURE_NETCDF_LIBS
NETCDF_INC    = CONFIGURE_NETCDF_INC
PNETCDF_PATH  = CONFIGURE_PNETCDF_PATH
PNETCDF_LIB   = CONFIGURE_PNETCDF_LIB
PNETCDF_LIBS  = CONFIGURE_PNETCDF_LIBS
PNETCDF_INC   = CONFIGURE_PNETCDF_INC
PHDF5_PATH    = CONFIGURE_PHDF5_PATH
PHDF5_LIB     = CONFIGURE_PHDF5_LIB
PHDF5_INC     = CONFIGURE_PHDF5_INC
HDF4_LIB      = CONFIGURE_HDF4_LIB
HDF4_INC      = CONFIGURE_HDF4_INC
HDFEOS_LIB    = CONFIGURE_HDFEOS_LIB
HDFEOS_INC    = CONFIGURE_HDFEOS_INC
ZLIB_LIB      = CONFIGURE_ZLIB_LIB
JPEG_LIB      = CONFIGURE_JPEG_LIB
BUFR_PATH     = CONFIGURE_BUFR_PATH
BUFR_LIB      = CONFIGURE_BUFR_LIB
BUFR_INC      = CONFIGURE_BUFR_INC
FFTPACK_PATH  = CONFIGURE_FFTPACK_PATH
FFTPACK_LIB   = CONFIGURE_FFTPACK_LIB
FFTPACK_INC   = CONFIGURE_FFTPACK_INC
LAPACK_PATH   = CONFIGURE_LAPACK_PATH
LAPACK_LIB    = CONFIGURE_LAPACK_LIB
LAPACK_INC    = CONFIGURE_LAPACK_INC
BLAS_PATH     = CONFIGURE_BLAS_PATH
BLAS_LIB      = CONFIGURE_BLAS_LIB
BLAS_INC      = CONFIGURE_BLAS_INC
GRIB_SHARE_LIB  = CONFIGURE_GRIB_SHARE_LIB
GRIB_SHARE_LIBS = CONFIGURE_GRIB_SHARE_LIBS
GRIB1_INC     = CONFIGURE_GRIB1_INC
GRIB1_LIB     = CONFIGURE_GRIB1_LIB
GRIB1_LIBS    = CONFIGURE_GRIB1_LIBS
GRIB2_INC     = CONFIGURE_GRIB2_INC
GRIB2_LIB     = CONFIGURE_GRIB2_LIB
GRIB2_LIBS    = CONFIGURE_GRIB2_LIBS

DA_CORE     = CONFIGURE_DA_CORE
EM_CORE     = CONFIGURE_EM_CORE
NMM_CORE    = CONFIGURE_NMM_CORE
COAMPS_CORE = CONFIGURE_COAMPS_CORE
EXP_CORE    = CONFIGURE_EXP_CORE

RWORDSIZE       = CONFIGURE_RWORDSIZE

IWORDSIZE       = 4
LWORDSIZE       = 8
DWORDSIZE       = 8
WORDSIZE_DEF    = -DIWORDSIZE=$(IWORDSIZE) -DDWORDSIZE=$(DWORDSIZE) \
   -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=$(LWORDSIZE)

DEFAULT_FPPFLAGS = CONFIGURE_NETCDF_FLAG \
    CONFIGURE_BUFR_FLAG CONFIGURE_FFTPACK_FLAG \
    $(WORDSIZE_DEF) CONFIGURE_PHDF5_FLAG CONFIGURE_PNETCDF_FLAG \
    -DLIMIT_ARGS CONFIGURE_PROMOTE_FLOAT -DINTIO \
    CONFIGURE_GRIB1_FLAG CONFIGURE_GRIB2_FLAG CONFIGURE_CHEM_FLAG \
    -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) \
    -DMAX_DOMAINS_F=$(MAX_DOMAINS) \
    -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) \
    -DDATA_CALLS_INCLUDED
DEFAULT_CCFLAGS = -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -DLANDREAD_STUB
WRFIO       = CONFIGURE_WRFIO_NF CONFIGURE_WRFIO_PNF CONFIGURE_WRFIO_PHDF5 \
                 CONFIGURE_WRFIO_GRIB1 CONFIGURE_WRFIO_GRIB2 wrfio_int
INCS        = -I. -I./inc -I../inc -I$(NETCDF_INC) -I$(BLAS_INC) -I$(LAPACK_INC) \
   -I$(FFTPACK_INC) -I$(HDF4_INC) -I$(PNETCDF_INC) -I$(PHDF5_INC) 
DEFAULT_LDFLAGS = CONFIGURE_LDFLAGS

# switch to use separately installed ESMF library for coupling:  1==true
ESMF_COUPLING       = CONFIGURE_ESMF_COUPLING
ESMF_MOD_DEPENDENCE = CONFIGURE_ESMF_MOD_DEPENDENCE
ESMF_MOD_INC        = CONFIGURE_ESMF_MOD_INC
ESMF_IO_INC         = CONFIGURE_ESMF_IO_INC
ESMF_IO_DEFS        = CONFIGURE_ESMF_IO_DEFS
ESMF_TARGET         = CONFIGURE_ESMF_TARGET

SOLVER=CONFIGURE_SOLVER

# Short cuts to directories

ARCH      = arch
CHEM      = ../chem
CONVERTOR = ../convertor
DA        = ../da
DYN_SHARE = ../dyn_share
DYN_NMM   = ../dyn_nmm
DYN_EM    = ../dyn_em
DYN_EXP   = ../dyn_exp
DYNAMICS  = ../dyn_$(SOLVER)
EXTERNAL  = ../external
FRAME     = ../frame
GEN_BE    = ../gen_be
INC       = ../inc
MAIN      = ../main
PHYS      = ../phys
RUN       = ../run
SCRIPTS   = ../scripts
SHARE     = ../share
TEST      = ../test
TOOLS     = ../tools

IO_GRIB1      = $(EXTERNAL)/io_grib1
IO_GRIB2      = $(EXTERNAL)/io_grib2
IO_GRIB_SHARE = $(EXTERNAL)/io_grib_share
IO_INT        = $(EXTERNAL)/io_int
ESMF_TIME_F90 = $(EXTERNAL)/esmf_time_f90
IO_NETCDF     = $(EXTERNAL)/io_netcdf
IO_PNETCDF    = $(EXTERNAL)/io_pnetcdf
IO_PHDF5      = $(EXTERNAL)/io_phdf5
IOAPI_SHARE   = $(EXTERNAL)/ioapi_share
RSL_LITE      = $(EXTERNAL)/RSL_LITE
RSL_STUBS     = $(EXTERNAL)/RSL_STUBS

ESMF_TIME_LIB = -lesmf_time
ESMF_TIME_LIBS = libesmf_time.a

#### Get core settings from environment (set in compile script)
#### Note to add a core, this has to be added to.

COREDEFS = -DEM_CORE=$(EM_CORE) -DDA_CORE=$(DA_CORE) -DNMM_CORE=$(NMM_CORE) \
   -DCOAMPS_CORE=$(COAMPS_CORE) -DEXP_CORE=$(EXP_CORE) CONFIGURE_COREFLAGS

#### DM buffer length for the configuration flags.

CONFIG_BUF_LEN = 16384

# defaults for occasional architecture specific settings

SED_FTN         = sed -f standard.sed
OMP             =
OMPCPP          =
MPI_LIB         =
DM_PPFLAGS      =
#### Architecture specific settings ####

