This repository was archived by the owner on Oct 23, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile.in.ACME
More file actions
99 lines (85 loc) · 3.56 KB
/
Makefile.in.ACME
File metadata and controls
99 lines (85 loc) · 3.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# Duplicate logic from Tools/Makefile to set compile_threaded
compile_threaded = false
ifeq ($(strip $(SMP)),TRUE)
compile_threaded = true
THREADDIR = threads
else
ifeq ($(strip $(BUILD_THREADED)),TRUE)
compile_threaded = true
THREADDIR = threads
else
THREADDIR = nothreads
endif
endif
# End duplicated logic
include $(CASEROOT)/Macros.make
ifneq ($(wildcard core_$(CORE)/build_options.mk), ) # Check for build_options.mk
include core_$(CORE)/build_options.mk
else # ELSE Use Default Options
EXE_NAME=$(CORE)_model
NAMELIST_SUFFIX=$(CORE)
endif
# Map the ESM component corresponding to each MPAS core
ifeq "$(CORE)" "ocean"
COMPONENT=ocn
else ifeq "$(CORE)" "landice"
COMPONENT=glc
else ifeq "$(CORE)" "cice"
COMPONENT=ice
endif
ifeq ($(strip $(USE_ESMF_LIB)), TRUE)
ESMFDIR = esmf
else
ESMFDIR = noesmf
endif
# Set MOAB info if it is being used
ifeq ($(strip $(USE_MOAB)), TRUE)
ifdef MOAB_PATH
CPPDEFS += -DHAVE_MOAB -DMOAB_MPAS_INSIDE_E3SM
MOAB_INCLUDES = -I$(MOAB_PATH)/include
else
$(error MOAB_PATH must be defined when USE_MOAB is TRUE)
endif
endif
RM = rm -f
CPP = cpp -P -traditional
FC=$(MPIFC)
CC=$(MPICC)
NETCDF=$(NETCDF_PATH)
PNETCDF=$(PNETCDF_PATH)
PIO=$(INSTALL_SHAREDPATH)/pio
FILE_OFFSET = -DOFFSET64BIT
override CFLAGS += -DMPAS_NO_LOG_REDIRECT -DMPAS_NO_ESMF_INIT -DMPAS_ESM_SHR_CONST -DMPAS_PERF_MOD_TIMERS
override FFLAGS += -DMPAS_NO_LOG_REDIRECT -DMPAS_NO_ESMF_INIT -DMPAS_ESM_SHR_CONST -DMPAS_PERF_MOD_TIMERS
override CPPFLAGS += $(CPPDEFS) $(MODEL_FORMULATION) $(FILE_OFFSET) $(ZOLTAN_DEFINE) -DMPAS_NO_LOG_REDIRECT -DMPAS_NO_ESMF_INIT -DMPAS_ESM_SHR_CONST -D_MPI -DMPAS_NAMELIST_SUFFIX=$(NAMELIST_SUFFIX) -DMPAS_EXE_NAME=$(EXE_NAME) -DMPAS_PERF_MOD_TIMERS
override CPPINCLUDES += -I$(EXEROOT)/$(COMPONENT)/source/inc -I$(INSTALL_SHAREDPATH)/include -I$(INSTALL_SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/csm_share -I$(NETCDF)/include -I$(PIO) -I$(PNETCDF)/include $(MOAB_INCLUDES)
override FCINCLUDES += -I$(EXEROOT)/$(COMPONENT)/source/inc -I$(INSTALL_SHAREDPATH)/include -I$(INSTALL_SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/csm_share -I$(NETCDF)/include -I$(PIO) -I$(PNETCDF)/include
LIBS += $(IMESH_LIBS) -L$(PIO) -L$(PNETCDF)/lib -L$(NETCDF)/lib -L$(LIBROOT) -L$(INSTALL_SHAREDPATH)/lib -lpio -lpnetcdf -lnetcdf
ifneq (,$(findstring FORTRANUNDERSCORE, $(CPPFLAGS)))
ifeq (,$(findstring DUNDERSCORE, $(CPPFLAGS)))
override CPPFLAGS += -DUNDERSCORE
endif
endif
ifeq ($(DEBUG), TRUE)
override CPPFLAGS += -DMPAS_DEBUG
endif
ifeq ($(compile_threaded), true)
override CPPFLAGS += -DMPAS_OPENMP
endif
all:
@echo $(CPPINCLUDES)
@echo $(FCINCLUDES)
( $(MAKE) mpas RM="$(RM)" CPP="$(CPP)" NETCDF="$(NETCDF)" PNETCDF="$(PNETCDF)" \
PIO="$(PIO)" FC="$(FC)" CC="$(CC)" SFC="$(SFC)" SCC="$(SCC)" \
CPPFLAGS="$(CPPFLAGS)" CPPINCLUDES="$(CPPINCLUDES)" FCINCLUDES="$(FCINCLUDES)" \
FFLAGS="$(FFLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" )
mpas: externals frame ops dycore drver
ar ru lib$(COMPONENT).a framework/*.o
ar ru lib$(COMPONENT).a operators/*.o
ar ru lib$(COMPONENT).a external/ezxml/*.o
ar ru lib$(COMPONENT).a `find core_$(CORE)/ -type f -name "*.o"` # Find command finds objects in any subdirectories
ar ru lib$(COMPONENT).a $(DRIVER)/*.o
externals:
( cd external; $(MAKE) FC="$(FC)" SFC="$(SFC)" CC="$(CC)" SCC="$(SCC)" FFLAGS="$(FFLAGS)" CFLAGS="$(CFLAGS)" CPP="$(CPP)" NETCDF="$(NETCDF)" CORE="$(CORE)" ezxml-lib )
drver: externals frame ops dycore
( cd $(DRIVER); $(MAKE) CPPFLAGS="$(CPPFLAGS)" CPPINCLUDES="$(CPPINCLUDES)" FREEFLAGS="$(FREEFLAGS)" all )