.DEFAULT_GOAL := all


# Backward compatibility of SCALE environments for ver < 5.1
include $(TOPDIR)/utils/make/Make_compatibility

OBJ_DIR   = ./.libs
INST_DIR  = $(TOPDIR)

ifeq ($(origin BINDIR),undefined)
   BINDIR = $(INST_DIR)/bin
endif

ifeq ($(origin LIBDIR),undefined)
   LIBDIR = $(INST_DIR)/lib
endif

ifeq ($(origin MODDIR),undefined)
   MODDIR = $(INST_DIR)/include
endif

DCUTILSDIR  = $(TOPDIR)/dc_utils
SCALELIBDIR = $(TOPDIR)/scalelib
SCALERMDIR  = $(TOPDIR)/scale-rm
SCALEGMDIR  = $(TOPDIR)/scale-gm

ifeq ($(SCALE_DEBUG),T)
   FFLAGS = $(FFLAGS_DEBUG) $(FFLAGS_SYSDEPEND) -DDEBUG
   CFLAGS = $(CFLAGS_DEBUG) $(CFLAGS_SYSDEPEND)
else
   FFLAGS = $(FFLAGS_FAST)  $(FFLAGS_SYSDEPEND)
   CFLAGS = $(CFLAGS_FAST)  $(CFLAGS_SYSDEPEND)
   ifeq ($(SCALE_USE_AGGRESSIVEOPT),T)
      FFLAGS += $(FFLAGS_AGGRESSIVE)
      CFLAGS += $(CFLAGS_AGGRESSIVE)
   endif
   ifeq ($(SCALE_QUICKDEBUG),T)
      FFLAGS += $(FFLAGS_QUICKDEBUG) -DQUICKDEBUG
   endif
endif

ifeq ($(SCALE_USE_SINGLEFP),T)
   FFLAGS += -DSINGLE
endif

ifeq ($(SCALE_USE_MASSCHECK),T)
   FFLAGS += -DCHECK_MASS
endif

ifeq ($(SCALE_ENABLE_OPENMP),T)
   FFLAGS += $(FFLAGS_OPENMP)
endif

ifeq ($(SCALE_ENABLE_OPENACC),T)
   FFLAGS += $(FFLAGS_OPENACC)
endif

# NetCDF library setting
# library location are inquired in order of: environment variable->Makedef.XXX->here
include $(TOPDIR)/utils/make/Make_checknetcdf

ifeq ($(SCALE_ENABLE_PNETCDF),T)
   SCALE_NETCDF_INCLUDE += -DPNETCDF
   ifeq ($(shell pnetcdf-config --help > /dev/null 2>&1 && echo yes),yes)
      SCALE_NETCDF_INCLUDE += $(shell pnetcdf-config --cppflags) -I$(shell pnetcdf-config --includedir)
      SCALE_NETCDF_LIBS := -L$(shell pnetcdf-config --libdir) -lpnetcdf $(SCALE_NETCDF_LIBS)
   endif
endif

ifeq ($(SCALE_COMPAT_NETCDF3),T)
   CFLAGS += -DNETCDF3
endif

# Math library setting
# library location are inquired in order of: environment variable->Makedef.XXX
ifeq ($(SCALE_ENABLE_MATHLIB),T)
   FFLAGS += -DMATHLIB
endif

# PAPI library setting
# library location are inquired in order of: environment variable->Makedef.XXX
ifeq ($(SCALE_ENABLE_PAPI),T)
   FFLAGS += -DPAPI
endif

# Super Droplet Method (SDM)
ifeq ($(SCALE_ENABLE_SDM),T)
   FFLAGS         += -DSDM $(ADDITIONAL_FFLAGS_SDM)
   GAGETRYDIR      = $(TOPDIR)/contrib/Gadgetry
   MTDIR           = $(TOPDIR)/contrib/mt
   SDMDIR          = $(TOPDIR)/contrib/SDM
   CONTRIB_LIBS    = $(LIBDIR)/libgagetry.a $(LIBDIR)/libmt.a $(LIBDIR)/libsdm.a
   CONTRIB_INCLUDE = -I$(GAGETRYDIR) -I$(MTDIR) -I$(SDMDIR)
else
   GAGETRYDIR      =
   MTDIR           =
   SDMDIR          =
   CONTRIB_LIBS    =
   CONTRIB_INCLUDE =
endif
