forked from NOAA-EMC/GFDL_atmos_cubed_sphere
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakefile
137 lines (113 loc) · 4.92 KB
/
makefile
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
SHELL = /bin/sh
inside_nems := $(wildcard ../../../conf/configure.nems)
ifneq ($(strip $(inside_nems)),)
include ../../../conf/configure.nems
else
exist_configure_fv3 := $(wildcard ../conf/configure.fv3)
ifneq ($(strip $(exist_configure_fv3)),)
include ../conf/configure.fv3
else
$(error "../conf/configure.fv3 file is missing. Run ./configure")
endif
$(info )
$(info Build standalone FV3 fv3core ...)
$(info )
endif
ifneq (,$(findstring CCPP,$(CPPDEFS)))
FAST_PHYSICS_SRCS_F90 =
else
FAST_PHYSICS_SRCS_F90 = ./model/fv_cmp.F90
endif
LIBRARY = libfv3core.a
FFLAGS += -I$(FMS_DIR) -I../gfsphysics -I../ipd -I../io -I../namphysics
SRCS_f =
SRCS_f90 =
SRCS_F =
SRCS_F90 = \
./model/a2b_edge.F90 \
./model/multi_gases.F90 \
./model/boundary.F90 \
./model/dyn_core.F90 \
./model/fv_arrays.F90 \
$(FAST_PHYSICS_SRCS_F90) \
./model/fv_control.F90 \
./model/fv_dynamics.F90 \
./model/fv_fill.F90 \
./model/fv_grid_utils.F90 \
./model/fv_mapz.F90 \
./model/fv_nesting.F90 \
./model/fv_regional_bc.F90 \
./model/fv_sg.F90 \
./model/fv_tracer2d.F90 \
./model/fv_update_phys.F90 \
./model/sw_core.F90 \
./model/tp_core.F90 \
./model/nh_core.F90 \
./model/nh_utils.F90 \
./tools/external_ic.F90 \
./tools/external_sst.F90 \
./tools/fv_diagnostics.F90 \
./tools/fv_eta.F90 \
./tools/fv_grid_tools.F90 \
./tools/fv_io.F90 \
./tools/fv_mp_mod.F90 \
./tools/fv_nudge.F90 \
./tools/fv_treat_da_inc.F90 \
./tools/fv_iau_mod.F90 \
./tools/fv_restart.F90 \
./tools/fv_surf_map.F90 \
./tools/fv_timing.F90 \
./tools/init_hydro.F90 \
./tools/sim_nc_mod.F90 \
./tools/sorted_index.F90 \
./tools/test_cases.F90 \
./driver/fvGFS/DYCORE_typedefs.F90 \
./driver/fvGFS/fv_nggps_diag.F90 \
./driver/fvGFS/atmosphere.F90
SRCS_c =
DEPEND_FILES = $(SRCS_f) $(SRCS_f90) $(SRCS_F) $(SRCS_F90)
OBJS_f = $(SRCS_f:.f=.o)
OBJS_f90 = $(SRCS_f90:.f90=.o)
OBJS_F = $(SRCS_F:.F=.o)
OBJS_F90 = $(SRCS_F90:.F90=.o)
OBJS_c = $(SRCS_c:.c=.o)
OBJS = $(OBJS_f) $(OBJS_f90) $(OBJS_F) $(OBJS_F90) $(OBJS_c)
all default: depend $(LIBRARY)
$(LIBRARY): $(OBJS)
$(AR) $(ARFLAGS) $@ $?
# this is the place to override default (implicit) compilation rules
# and create specific (explicit) rules
./model/nh_utils.o : ./model/nh_utils.F90
$(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) $(OTHER_FFLAGS) $(FAST) -c $< -o $@
# For PROD/TRANSITION, this is overwritten below
./model/fv_mapz.o : ./model/fv_mapz.F90
$(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) $(OTHER_FFLAGS) $(FAST) -c $< -o $@
./driver/fvGFS/fv_nggps_diag.o : ./driver/fvGFS/fv_nggps_diag.F90
$(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) $(OTHER_FFLAGS) $(ESMF_INC) -c $< -o $@
# additional include files (ESMF_INC) needed for PGI
./driver/fvGFS/atmosphere.o : ./driver/fvGFS/atmosphere.F90
$(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) $(OTHER_FFLAGS) $(ESMF_INC) -c $< -o $@
# For CCPP acceptance: reduce optimization for certain files to
# obtain bit-for-bit identical results in PROD mode on Theia/Intel 15
ifneq (,$(findstring TRANSITION,$(CPPDEFS)))
FFLAGS_LOPT=$(subst CORE-AVX2,CORE-AVX-I,\
$(subst no-prec-div,prec-div,\
$(subst no-prec-sqrt,prec-sqrt,$(FFLAGS))))
./model/dyn_core.o : ./model/dyn_core.F90
$(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS_LOPT) $(OTHER_FFLAGS) -c $< -o $@
./model/fv_mapz.o : ./model/fv_mapz.F90
$(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS_LOPT) $(OTHER_FFLAGS) $(FAST) -c $< -o $@
./model/fv_cmp.o : ./model/fv_cmp.F90
$(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS_LOPT) $(OTHER_FFLAGS) -c $< -o $@
endif # (,$(findstring TRANSITION,$(CPPDEFS)))
.PHONY: clean
clean:
@echo "Cleaning fv3core ... "
@echo
$(RM) -f $(LIBRARY) *__genmod.f90 */*.o */*/*.o *.mod *.i90 *.lst *.i depend
MKDEPENDS = ../mkDepends.pl
include ../conf/make.rules
# do not include 'depend' file if the target contains string 'clean'
ifneq (clean,$(findstring clean,$(MAKECMDGOALS)))
-include depend
endif