# +-======-+ # Copyright (c) 2003-2018 United States Government as represented by # the Admistrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # THIS OPEN SOURCE AGREEMENT ("AGREEMENT") DEFINES THE RIGHTS OF USE, # REPRODUCTION, DISTRIBUTION, MODIFICATION AND REDISTRIBUTION OF CERTAIN # COMPUTER SOFTWARE ORIGINALLY RELEASED BY THE UNITED STATES GOVERNMENT AS # REPRESENTED BY THE GOVERNMENT AGENCY LISTED BELOW ("GOVERNMENT AGENCY"). # THE UNITED STATES GOVERNMENT, AS REPRESENTED BY GOVERNMENT AGENCY, IS AN # INTENDED THIRD-PARTY BENEFICIARY OF ALL SUBSEQUENT DISTRIBUTIONS OR # REDISTRIBUTIONS OF THE SUBJECT SOFTWARE. ANYONE WHO USES, REPRODUCES, # DISTRIBUTES, MODIFIES OR REDISTRIBUTES THE SUBJECT SOFTWARE, AS DEFINED # HEREIN, OR ANY PART THEREOF, IS, BY THAT ACTION, ACCEPTING IN FULL THE # RESPONSIBILITIES AND OBLIGATIONS CONTAINED IN THIS AGREEMENT. # # Government Agency: National Aeronautics and Space Administration # Government Agency Original Software Designation: GSC-15354-1 # Government Agency Original Software Title: GEOS-5 GCM Modeling Software # User Registration Requested. Please Visit http://opensource.gsfc.nasa.gov # Government Agency Point of Contact for Original Software: # Dale Hithon, SRA Assistant, (301) 286-2691 # # +-======-+ # # # REVISION HISTORY: # # 09Jun2003 da Silva First crack. # 07Aug2003 Sawyer Modified for FVdycore # 27Aug2003 Sawyer Added a2d3d and d2a3d # 22Sep2004 Sawyer Modifications for merge with current code # 06Oct2004 Sawyer Removed spmd_dyn # 17Feb2005 Sawyer Added epvd and ppme # 17May2005 Sawyer Added FVdycore_wrapper # 18oct2005 da Silva Moved ALTIX specific flags to FVdycore.mk # 18Jan2006 Putman Added mfz_comp # 17May2006 Sawyer Added diag_module.F90 # # Make sure ESMADIR is defined # ---------------------------- ifndef ESMADIR ESMADIR := $(PWD)/../.. endif # Compilation rules, flags, etc # ----------------------------- include $(ESMADIR)/Config/ESMA_base.mk # Generic stuff include $(ESMADIR)/Config/ESMA_arch.mk # System dependencies include $(ESMADIR)/Config/GMAO_base.mk # System dependencies include FMS_arch.mk # arch dependent flags # --------------------- # Standard ESMA Targets # --------------------- esma_help help: @echo "Standard ESMA targets:" @echo "% make esma_install (builds and install under ESMADIR)" @echo "% make esma_clean (removes deliverables: *.[aox], etc)" @echo "% make esma_distclean (leaves in the same state as cvs co)" @echo "% make esma_doc (generates PDF, installs under ESMADIR)" @echo "% make esma_help (this message)" @echo "Environment:" @echo " ESMADIR = $(ESMADIR)" @echo " BASEDIR = $(BASEDIR)" @echo " ARCH = $(ARCH)" @echo " SITE = $(SITE)" THIS := $(shell basename `pwd`) LIB = lib$(THIS).a esma_install install: $(LIB) $(MKDIR) $(ESMALIB) $(ESMAETC) $(ESMAINC)/$(THIS) $(CP) -p *.a $(ESMALIB) $(CP) -p *.[Mm][Oo][Dd] $(ESMAINC)/$(THIS) $(CP) -p shared/include/*.h $(ESMAINC)/$(THIS) $(CP) -p shared/mpp/include/*.h $(ESMAINC)/$(THIS) $(CP) -p shared/mpp/include/*.inc $(ESMAINC)/$(THIS) # $(CP) -p *.rc $(ESMAETC) esma_clean clean: -$(RM) *~ *.[aox] *.[Mm][Oo][Dd] esma_distclean distclean: -$(RM) *~ *.[aoxd] *.[Mm][Oo][Dd] esma_doc doc: @$(PROTEX) $(PROTEX_FLAGS) *GridComp*.[fF]* > $(ESMADOC)/$(THIS).tex # -------------------- # User Defined Targets # -------------------- .SUFFIXES: .inc ALLSRCS := $(shell cat path_names) HEADERS = $(shell cat path_names |grep "\.h") INCFILES = $(shell cat path_names |grep "\.inc") SRCS := $(filter-out $(HEADERS) $(INCFILES), $(ALLSRCS)) OBJS := $(notdir $(addsuffix .o, $(basename $(SRCS)))) DEPS := $(notdir $(addsuffix .d, $(basename $(ALLSRCS)))) DEPS := $(filter-out nsclock.d threadloc.d, $(DEPS)) # filter these out INC_DIRS = . ./shared/include ./shared/mpp/include \ $(INC_GMAO_SHARED) $(INC_SDF) $(INC_ESMF) $(INC_MPI) MOD_DIRS = . $(INC_DIRS) SRC_DIRS = $(sort $(dir $(SRCS))) USER_FINCS = $(foreach dir,$(INC_DIRS),$(I)$(dir)) USER_FMODS = $(foreach dir,$(MOD_DIRS),$(M)$(dir)) vpath % $(SRC_DIRS) $(INC_DIRS) $(MOD_DIRS) /usr/include USER_FFLAGS += $(BIG_ENDIAN) USER_FDEFS = $(D)OVERLOAD_R4 $(D)MAPL_MODE $(D)EIGHT_BYTE $(D)SPMD $(D)TIMING \ $(D)use_libMPI $(D)use_netCDF USER_CDEFS = $(USER_FDEFS) USER_CINCS += $(I)$(INC_SDF) $(I)$(INC_MPI) ifeq ($(FV_PRECISION), R4) FREAL = $(FREAL4) endif # There seems to be a bug with oda_core and PGI using # -fast. O3 works ifeq ($(ESMA_FC),pgfortran) .NOTPARALLEL: ifneq ("$(BOPT)","g") oda_core.o: FOPT := -O3 -Kieee $(GPU_TARGET) endif endif # There seems to be a bug with oda_core and PGI using # -fast. O3 works ifeq ($(ESMA_FC),gfortran) ifeq ("$(BOPT)","Og") diag_axis.o: FOPT := -Og endif endif $(LIB) lib : $(DEPS) $(OBJS) $(AR) $(AR_FLAGS) $(LIB) $(OBJS) # -------------------- # Dependencies # -------------------- echo: @echo HDRS=$(HEADERS) # Make sure dep files are not remade during cleaning # -------------------------------------------------- ifneq ($(findstring clean,$(MAKECMDGOALS)),clean) -include $(DEPS) endif .inc.d: -@$(CPP) $(FPPFLAGS) $< > $*___.f90 @$(PERL) $(FDP) -i $< $(FDP_FLAGS) -c $*___.f90 @$(RM) $*___.f90 .h.d: -@$(CPP) $(FPPFLAGS) $< > $*___.f90 @$(PERL) $(FDP) -i $< $(FDP_FLAGS) -c $*___.f90 @$(RM) $*___.f90 #. -include $(ESMADIR)/Config/ESMA_post.mk # ESMA additional targets, macros