############ # commands # ############ FC = mpiifort CC = mpiicc CXX = mpiicpc LD = mpiifort -mkl=sequential ######### # flags # ######### # default is 64-bit OpenMP non-hydrostatic build using AVX2 DEBUG = REPRO = VERBOSE = OPENMP = Y AVX2 = Y HYDRO = N include $(ESMFMKFILE) ESMF_INC = $(ESMF_F90COMPILEPATHS) NCEPLIBS = $(BACIO_LIB4) $(SP_LIBd) $(W3EMC_LIBd) $(W3NCO_LIBd) ############################################## # Need to use at least GNU Make version 3.81 # ############################################## need := 3.81 ok := $(filter $(need),$(firstword $(sort $(MAKE_VERSION) $(need)))) ifneq ($(need),$(ok)) $(error Need at least make version $(need). Load module gmake/3.81) endif NETCDF_ROOT = $(NETCDF) INCLUDE = -I$(NETCDF_ROOT)/include FPPFLAGS := -fpp -Wp,-w $(INCLUDE) CFLAGS := $(INCLUDE) FFLAGS := $(INCLUDE) -fno-alias -auto -safe-cray-ptr -ftz -assume byterecl -nowarn -sox -align array64byte ifeq ($(HYDRO),Y) CPPDEFS += -Duse_libMPI -Duse_netCDF -DSPMD -DUSE_LOG_DIAG_FIELD_INFO -DGFSL64 -DGFS_PHYS else CPPDEFS += -Duse_libMPI -Duse_netCDF -DSPMD -DUSE_LOG_DIAG_FIELD_INFO -DGFSL64 -DGFS_PHYS -DMOIST_CAPPA -DUSE_COND endif CPPDEFS += -DNEW_TAUCTMAX -DINTERNAL_FILE_NML ifeq ($(NAM_phys),Y) CPPDEFS += -DNAM_phys endif ifeq ($(32BIT),Y) CPPDEFS += -DOVERLOAD_R4 FFLAGS += -i4 -real-size 32 else FFLAGS += -i4 -real-size 64 -no-prec-div -no-prec-sqrt endif ifeq ($(AVX2),Y) FFLAGS += -xCORE-AVX2 -qno-opt-dynamic-align CFLAGS += -xCORE-AVX2 -qno-opt-dynamic-align else FFLAGS += -xHOST -qno-opt-dynamic-align CFLAGS += -xHOST -qno-opt-dynamic-align endif FFLAGS_OPT = -O2 -debug minimal -fp-model source -qoverride-limits -qopt-prefetch=3 FFLAGS_REPRO = -O2 -debug minimal -fp-model source -qoverride-limits -g -traceback FFLAGS_DEBUG = -g -O0 -check all -check noarg_temp_created -check nopointer -warn -warn noerrors -fp-stack-check -fstack-protector-all -fpe0 -debug -traceback -ftrapuv TRANSCENDENTALS := -fast-transcendentals FFLAGS_OPENMP = -qopenmp FFLAGS_VERBOSE = -v -V -what CFLAGS += -D__IFC -sox -fp-model source CFLAGS_OPT = -O2 -debug minimal CFLAGS_REPRO = -O2 -debug minimal CFLAGS_OPENMP = -qopenmp CFLAGS_DEBUG = -O0 -g -ftrapuv -traceback # Optional Testing compile flags. Mutually exclusive from DEBUG, REPRO, and OPT # *_TEST will match the production if no new option(s) is(are) to be tested. FFLAGS_TEST = -O3 -debug minimal -fp-model source -qoverride-limits CFLAGS_TEST = -O2 LDFLAGS := LDFLAGS_OPENMP := -qopenmp LDFLAGS_VERBOSE := -Wl,-V,--verbose,-cref,-M # start with blank LIBS LIBS := ifneq ($(REPRO),) CFLAGS += $(CFLAGS_REPRO) FFLAGS += $(FFLAGS_REPRO) FAST := else ifneq ($(DEBUG),) CFLAGS += $(CFLAGS_DEBUG) FFLAGS += $(FFLAGS_DEBUG) FAST := else ifneq ($(TEST),) CFLAGS += $(CFLAGS_TEST) FFLAGS += $(FFLAGS_TEST) FAST := else CFLAGS += $(CFLAGS_OPT) FFLAGS += $(FFLAGS_OPT) FAST := $(TRANSCENDENTALS) endif ifneq ($(OPENMP),) CFLAGS += $(CFLAGS_OPENMP) FFLAGS += $(FFLAGS_OPENMP) LDFLAGS += $(LDFLAGS_OPENMP) endif ifneq ($(VERBOSE),) CFLAGS += $(CFLAGS_VERBOSE) FFLAGS += $(FFLAGS_VERBOSE) LDFLAGS += $(LDFLAGS_VERBOSE) endif ifneq ($(findstring netcdf/4,$(LOADEDMODULES)),) LIBS += -L$(NETCDF)/lib -lnetcdff -lnetcdf else LIBS += -L$(NETCDF)/lib -lnetcdff -lnetcdf endif LDFLAGS += $(LIBS)