6 ARCHFLAGS = $(COREDEFS) -DIWORDSIZE=$(IWORDSIZE) -DDWORDSIZE=$(DWORDSIZE) -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=$(LWORDSIZE) \
11 CONFIGURE_NETCDF_FLAG \
12 CONFIGURE_NETCDFPAR_FLAG \
13 CONFIGURE_PNETCDF_FLAG \
15 CONFIGURE_GRIB2_FLAG \
16 CONFIGURE_RTTOV_FLAG \
19 CONFIGURE_CLOUDCV_FLAG \
20 CONFIGURE_4DVAR_FLAG \
21 CONFIGURE_TERRAIN_AND_LANDUSE \
22 CONFIGURE_WAVELET_FLAG \
30 -DBUILD_RRTMG_FAST=0 \
33 -DSHOW_ALL_VARS_USED=0 \
34 -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) \
35 -DMAX_DOMAINS_F=$(MAX_DOMAINS) \
36 -DMAX_HISTORY=$(MAX_HISTORY) \
37 -DNMM_NEST=$(WRF_NMM_NEST)
38 CFLAGS = $(CFLAGS_LOCAL) CONFIGURE_DMPARALLEL CONFIGURE_STUBMPI \
39 CONFIGURE_TERRAIN_AND_LANDUSE \
40 -DMAX_HISTORY=$(MAX_HISTORY) CONFIGURE_NMM_CORE
41 FCFLAGS = $(FCOPTIM) $(FCBASEOPTS)
42 ESMF_LIB_FLAGS = ESMFLIBFLAG
43 # ESMF 5 -- these are defined in esmf.mk, included above
44 #NOWIN ESMF_IO_LIB = ESMFIOLIB
45 ESMF_IO_LIB_EXT = ESMFIOEXTLIB
46 INCLUDE_MODULES = $(MODULE_SRCH_FLAG) \
47 $(ESMF_MOD_INC) $(ESMF_LIB_FLAGS) \
48 -I$(WRF_SRC_ROOT_DIR)/main \
49 -I$(WRF_SRC_ROOT_DIR)/external/io_netcdf \
50 -I$(WRF_SRC_ROOT_DIR)/external/io_int \
51 -I$(WRF_SRC_ROOT_DIR)/frame \
52 -I$(WRF_SRC_ROOT_DIR)/share \
53 -I$(WRF_SRC_ROOT_DIR)/phys \
54 -I$(WRF_SRC_ROOT_DIR)/wrftladj \
55 -I$(WRF_SRC_ROOT_DIR)/chem -I$(WRF_SRC_ROOT_DIR)/inc \
56 -I$(NETCDFPATH)/include \
57 CONFIGURE_RTTOV_INC CONFIGURE_CTSM_INC
59 CC_TOOLS_CFLAGS = CONFIGURE_NMM_CORE
61 LIB = $(LIB_BUNDLED) $(LIB_EXTERNAL) $(LIB_LOCAL) $(LIB_WRF_HYDRO) CONFIGURE_CTSM_LIB
62 LDFLAGS = $(OMP) $(FCFLAGS) $(LDFLAGS_LOCAL) CONFIGURE_LDFLAGS
63 ENVCOMPDEFS = CONFIGURE_COMPILEFLAGS
64 CPPFLAGS = $(ARCHFLAGS) $(ENVCOMPDEFS) -I$(LIBINCLUDE) $(TRADFLAG) CONFIGURE_COMMS_INCLUDE
65 NETCDFPATH = CONFIGURE_NETCDF_PATH
66 HDF5PATH = CONFIGURE_HDF5_PATH
67 WRFPLUSPATH = CONFIGURE_WRFPLUS_PATH
68 RTTOVPATH = CONFIGURE_RTTOV_PATH
69 PNETCDFPATH = CONFIGURE_PNETCDF_PATH
71 bundled: io_only CONFIGURE_ATMOCN
72 external: io_only CONFIGURE_COMMS_EXTERNAL $(ESMF_TARGET)
73 io_only: esmf_time CONFIGURE_WRFIO_NF CONFIGURE_WRFIO_NFPAR CONFIGURE_WRFIO_PNF CONFIGURE_WRFIO_GRIB2 \
74 wrf_ioapi_includes wrfio_grib_share wrfio_grib1 wrfio_int fftpack
77 ######################
78 externals: io_only bundled external
81 ( /bin/rm -f $(WRF_SRC_ROOT_DIR)/tools/gen_comms.c )
84 ( if [ ! -e module_dm.F ] ; then /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F ; fi )
87 ( if [ ! -e $(WRF_SRC_ROOT_DIR)/tools/gen_comms.c ] ; then \
88 /bin/cp $(WRF_SRC_ROOT_DIR)/tools/gen_comms_warning $(WRF_SRC_ROOT_DIR)/tools/gen_comms.c ; \
89 cat $(WRF_SRC_ROOT_DIR)/external/RSL_LITE/gen_comms.c >> $(WRF_SRC_ROOT_DIR)/tools/gen_comms.c ; fi )
92 ( if [ ! -e module_dm.F ] ; then /bin/cp module_dm_warning module_dm.F ; \
93 cat $(WRF_SRC_ROOT_DIR)/external/RSL_LITE/module_dm.F >> module_dm.F ; fi )
96 ( cd $(WRF_SRC_ROOT_DIR)/external/io_netcdf ; \
97 make $(J) NETCDFPATH="$(NETCDFPATH)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
98 CC="$(SCC)" CFLAGS="$(CFLAGS)" \
99 FC="$(SFC) $(PROMOTION) $(OMP) $(FCFLAGS)" TRADFLAG="$(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" )
102 ( cd $(WRF_SRC_ROOT_DIR)/external/io_netcdfpar ; \
103 make $(J) NETCDFPARPATH="$(NETCDFPATH)" RANLIB="$(RANLIB)" CPP="$(CPP) $(ARCHFLAGS)" \
104 FC="$(FC) $(PROMOTION) $(OMP) $(FCFLAGS)" TRADFLAG="$(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" )
107 ( cd $(WRF_SRC_ROOT_DIR)/external/io_pnetcdf ; \
108 make $(J) NETCDFPATH="$(PNETCDFPATH)" RANLIB="$(RANLIB)" CPP="$(CPP) $(ARCHFLAGS)" \
109 FC="$(FC) $(PROMOTION) $(OMP) $(FCFLAGS)" TRADFLAG="$(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" )
112 ( cd $(WRF_SRC_ROOT_DIR)/external/io_grib_share ; \
113 make $(J) CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
114 FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) $(FCSUFFIX)" TRADFLAG="$(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" archive)
117 ( cd $(WRF_SRC_ROOT_DIR)/external/io_grib1 ; \
118 make $(J) CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
119 FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) $(FCSUFFIX)" TRADFLAG="$(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" archive)
122 ( cd $(WRF_SRC_ROOT_DIR)/external/io_grib2 ; \
123 make $(J) CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" \
125 FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) $(FCSUFFIX)" TRADFLAG="-traditional" AR="$(AR)" ARFLAGS="$(ARFLAGS)" \
126 FIXED="$(FORMAT_FIXED)" archive)
129 ( cd $(WRF_SRC_ROOT_DIR)/external/io_int ; \
130 make $(J) CC="$(CC)" CFLAGS_LOCAL="$(CFLAGS_LOCAL)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
131 FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) $(OMP)" FGREP="$(FGREP)" \
132 TRADFLAG="$(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" ARCHFLAGS="$(ARCHFLAGS)" all )
135 ( cd $(WRF_SRC_ROOT_DIR)/external/esmf_time_f90 ; \
136 make $(J) FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" \
137 CPP="$(CPP) -I$(WRF_SRC_ROOT_DIR)/inc -I. $(ARCHFLAGS) $(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" )
140 ( cd $(WRF_SRC_ROOT_DIR)/external/fftpack/fftpack5 ; \
141 make $(J) FC="$(SFC)" FFLAGS="$(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" AR="$(AR)" \
142 ARFLAGS="$(ARFLAGS)" CPP="$(CPP)" CPPFLAGS="$(CPPFLAGS)" RM="$(RM)" )
145 ( cd $(WRF_SRC_ROOT_DIR)/external/atm_ocn ; \
146 make $(J) CC="$(SCC)" CFLAGS="$(CFLAGS) " RM="$(RM)" RANLIB="$(RANLIB)" \
147 CPP="$(CPP)" CPPFLAGS="$(CPPFLAGS)" \
148 FC="$(DM_FC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) $(FCSUFFIX)" TRADFLAG="-traditional" AR="$(AR)" ARFLAGS="$(ARFLAGS)" \
149 FIXED="$(FORMAT_FIXED)" )
151 $(WRF_SRC_ROOT_DIR)/external/RSL_LITE/librsl_lite.a :
152 ( cd $(WRF_SRC_ROOT_DIR)/external/RSL_LITE ; make $(J) CC="$(CC) $(CFLAGS)" \
153 FC="$(FC) $(FCFLAGS) $(OMP) $(PROMOTION) $(BYTESWAPIO)" \
154 CPP="$(CPP) -I. $(ARCHFLAGS) $(OMPCPP) $(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" ;\
155 $(RANLIB) $(WRF_SRC_ROOT_DIR)/external/RSL_LITE/librsl_lite.a )
157 ######################
158 # Macros, these should be generic for all machines
165 # These sub-directory builds are identical across all architectures
168 ( cd $(WRF_SRC_ROOT_DIR)/external/ioapi_share ; \
169 $(MAKE) NATIVE_RWORDSIZE="$(NATIVE_RWORDSIZE)" RWORDSIZE="$(RWORDSIZE)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" )
172 ( cd $(WRF_SRC_ROOT_DIR)/external/io_esmf ; \
173 make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) $(ESMF_MOD_INC)" \
174 RANLIB="$(RANLIB)" CPP="$(CPP) $(POUND_DEF) " AR="$(AR)" ARFLAGS="$(ARFLAGS)" )
176 # There is probably no reason to modify these rules
180 sed -e "s/^\!.*'.*//" -e "s/^ *\!.*'.*//" $*.F > $*.G
181 $(CPP) -I$(WRF_SRC_ROOT_DIR)/inc $(CPPFLAGS) $*.G > $*.i
182 mv $*.i $(DEVTOP)/pick/$*.f90
183 cp $*.F $(DEVTOP)/pick
187 sed -e "s/^\!.*'.*//" -e "s/^ *\!.*'.*//" $*.F > $*.G
188 $(CPP) -I$(WRF_SRC_ROOT_DIR)/inc $(CPPFLAGS) $(OMPCPP) $*.G > $*.bb
189 $(SED_FTN) $*.bb | $(CPP) $(TRADFLAG) > $*.f90
191 @ if echo $(ARCHFLAGS) | $(FGREP) 'DVAR4D'; then \
192 echo COMPILING $*.F for 4DVAR ; \
193 $(WRF_SRC_ROOT_DIR)/var/build/da_name_space.pl $*.f90 > $*.f90.tmp ; \
194 mv $*.f90.tmp $*.f90 ; \
196 $(FC) -o $@ -c $(FCFLAGS) $(OMP) $(MODULE_DIRS) $(PROMOTION) $(FCSUFFIX) $*.f90
201 sed -e "s/^\!.*'.*//" -e "s/^ *\!.*'.*//" $*.F > $*.G
202 $(SED_FTN) $*.G > $*.H
203 $(CPP) -I$(WRF_SRC_ROOT_DIR)/inc $(CPPFLAGS) $*.H > $@
208 $(FC) -o $@ -c $(FCFLAGS) $(PROMOTION) $(FCSUFFIX) $*.f90
210 setfeenv.o : setfeenv.c
212 $(CCOMP) -o $@ -c $(CFLAGS) $(OMPCC) $*.c
216 $(CC) -o $@ -c $(CFLAGS) $*.c