ifdef InNemsMakefile include $(TOP)/conf/configure.nems.NUOPC endif ############ # commands # ############ FC = ftn CC = cc CXX = CC LD = ftn ######### # flags # ######### DEBUG = REPRO = VERBOSE = OPENMP = Y HYDRO = N CCPP = N STATIC = N include $(ESMFMKFILE) ESMF_INC = $(ESMF_F90COMPILEPATHS) NEMSIOINC = -I$(NEMSIO_INC) NCEPLIBS = $(UPP_LIB) $(NEMSIO_LIB) $(G2_LIB4) $(G2TMPL_LIB) $(BACIO_LIB4) $(SP_LIBd) $(W3EMC_LIBd) $(W3NCO_LIBd) $(CRTM_LIB) $(PNG_LIB) $(JASPER_LIB) $(Z_LIB) ############################################## # 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 -save-temps -ftz -assume byterecl -sox -align array64byte CPPDEFS += -Duse_libMPI -Duse_netCDF -DSPMD -DUSE_LOG_DIAG_FIELD_INFO -DUSE_GFSL63 -DGFS_PHYS -Duse_WRTCOMP CPPDEFS += -DNEW_TAUCTMAX -DINTERNAL_FILE_NML ifeq ($(HYDRO),Y) CPPDEFS += else CPPDEFS += -DMOIST_CAPPA -DUSE_COND endif ifeq ($(32BIT),Y) CPPDEFS += -DOVERLOAD_R4 -DOVERLOAD_R8 FFLAGS += -i4 -real-size 32 else ifeq ($(REPRO),Y) FFLAGS += -i4 -real-size 64 else FFLAGS += -i4 -real-size 64 -no-prec-div -no-prec-sqrt endif endif ifeq ($(REPRO),Y) FFLAGS += -qno-opt-dynamic-align CFLAGS += -qno-opt-dynamic-align else FFLAGS += -qno-opt-dynamic-align CFLAGS += -qno-opt-dynamic-align endif ifeq ($(MULTI_GASES),Y) CPPDEFS += -DMULTI_GASES endif FFLAGS_OPT = -O2 -debug minimal -fp-model source -qoverride-limits -qopt-prefetch=3 -g -traceback FFLAGS_REPRO = -O2 -debug minimal -fp-model consistent -qoverride-limits -g -traceback FFLAGS_DEBUG = -g -O0 -check -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 -g -traceback CFLAGS_REPRO = -O2 -debug minimal -g -traceback 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 += -L$(NETCDF_ROOT)/lib -L$(HDF5_ROOT)/lib LDFLAGS_OPENMP := -qopenmp LDFLAGS_VERBOSE := -Wl,-V,--verbose,-cref,-M # start with blank LIBS LIBS := ifeq ($(REPRO),Y) CPPDEFS += -DREPRO CFLAGS += $(CFLAGS_REPRO) FFLAGS += $(FFLAGS_REPRO) FAST := else ifeq ($(DEBUG),Y) CPPDEFS += -DDEBUG CFLAGS += $(CFLAGS_DEBUG) FFLAGS += $(FFLAGS_DEBUG) FAST := else ifeq ($(TEST),Y) CFLAGS += $(CFLAGS_TEST) FFLAGS += $(FFLAGS_TEST) FAST := else CFLAGS += $(CFLAGS_OPT) FFLAGS += $(FFLAGS_OPT) FAST := $(TRANSCENDENTALS) endif ifeq ($(OPENMP),Y) CPPDEFS += -DOPENMP CFLAGS += $(CFLAGS_OPENMP) FFLAGS += $(FFLAGS_OPENMP) LDFLAGS += $(LDFLAGS_OPENMP) endif ifeq ($(VERBOSE),Y) CFLAGS += $(CFLAGS_VERBOSE) FFLAGS += $(FFLAGS_VERBOSE) LDFLAGS += $(LDFLAGS_VERBOSE) endif ifeq ($(CCPP),Y) CPPDEFS += -DCCPP CFLAGS += -I$(PATH_CCPP)/include FFLAGS += -I$(PATH_CCPP)/include ifeq ($(STATIC),Y) CPPDEFS += -DSTATIC LDFLAGS += -L$(PATH_CCPP)/lib -lccppphys -lccpp $(NCEPLIBS) -lxml2 else LDFLAGS += -L$(PATH_CCPP)/lib -lccpp endif endif ifneq ($(findstring NetCDF/4,$(LOADEDMODULES)),) LIBS += -lnetcdff -lhdf5 $(Z_LIB) else LIBS += -lnetcdf endif LIBFABRIC_LIB_DIR := $(shell pkg-config --libs-only-L libfabric) LDFLAGS += $(LIBFABRIC_LIB_DIR) $(LIBS) ifdef InNemsMakefile FFLAGS += $(ESMF_INC) CPPFLAGS += -traditional EXTLIBS = $(NCEPLIBS) $(ESMF_LIB) $(LDFLAGS) endif