6 ARCHFLAGS = $(COREDEFS) -DIWORDSIZE=$(IWORDSIZE) -DDWORDSIZE=$(DWORDSIZE) -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=$(LWORDSIZE) \
11 CONFIGURE_NETCDF_FLAG \
12 CONFIGURE_PNETCDF_FLAG \
14 CONFIGURE_GRIB2_FLAG \
15 CONFIGURE_RTTOV_FLAG \
17 CONFIGURE_4DVAR_FLAG \
18 CONFIGURE_WAVELET_FLAG \
24 -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) \
25 -DMAX_DOMAINS_F=$(MAX_DOMAINS) \
26 -DMAX_HISTORY=$(MAX_HISTORY) \
27 -DNMM_NEST=$(WRF_NMM_NEST)
28 CFLAGS = $(CFLAGS_LOCAL) CONFIGURE_DMPARALLEL CONFIGURE_STUBMPI \
29 -DMAX_HISTORY=$(MAX_HISTORY)
30 FCFLAGS = $(FCOPTIM) $(FCBASEOPTS)
31 ESMF_LIB_FLAGS = ESMFLIBFLAG
32 # ESMF 5 -- these are defined in esmf.mk, included above
33 #NOWIN ESMF_IO_LIB = ESMFIOLIB
34 ESMF_IO_LIB_EXT = ESMFIOEXTLIB
35 INCLUDE_MODULES = $(MODULE_SRCH_FLAG) \
36 $(ESMF_MOD_INC) $(ESMF_LIB_FLAGS) \
37 -I$(WRF_SRC_ROOT_DIR)/main \
38 -I$(WRF_SRC_ROOT_DIR)/external/io_netcdf \
39 -I$(WRF_SRC_ROOT_DIR)/external/io_int \
40 -I$(WRF_SRC_ROOT_DIR)/frame \
41 -I$(WRF_SRC_ROOT_DIR)/share \
42 -I$(WRF_SRC_ROOT_DIR)/phys \
43 -I$(WRF_SRC_ROOT_DIR)/chem -I$(WRF_SRC_ROOT_DIR)/inc \
44 -I$(NETCDFPATH)/include \
48 #NOWIN LIB_BUNDLED = \
49 #NOWIN $(WRF_SRC_ROOT_DIR)/external/fftpack/fftpack5/libfftpack.a \
50 #NOWIN $(WRF_SRC_ROOT_DIR)/external/io_grib1/libio_grib1.a \
51 #NOWIN $(WRF_SRC_ROOT_DIR)/external/io_grib_share/libio_grib_share.a \
52 #NOWIN $(WRF_SRC_ROOT_DIR)/external/io_int/libwrfio_int.a \
53 #NOWIN $(ESMF_IO_LIB) \
54 #NOWIN CONFIGURE_COMMS_LIB \
55 #NOWIN $(WRF_SRC_ROOT_DIR)/frame/module_internal_header_util.o \
56 #NOWIN $(WRF_SRC_ROOT_DIR)/frame/pack_utils.o
58 #NOWIN LIB_EXTERNAL = \
59 #NOWIN CONFIGURE_NETCDF_LIB_PATH CONFIGURE_PNETCDF_LIB_PATH CONFIGURE_GRIB2_LIB CONFIGURE_ATMOCN_LIB
61 LIB = $(LIB_BUNDLED) $(LIB_EXTERNAL) $(LIB_LOCAL)
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 PNETCDFPATH = CONFIGURE_PNETCDF_PATH
68 bundled: wrf_ioapi_includes wrfio_grib_share wrfio_grib1 wrfio_int esmf_time fftpack CONFIGURE_ATMOCN
69 external: CONFIGURE_WRFIO_NF CONFIGURE_WRFIO_PNF CONFIGURE_WRFIO_GRIB2 CONFIGURE_COMMS_EXTERNAL $(ESMF_TARGET)
71 ######################
72 externals: bundled external
75 ( /bin/rm -f $(WRF_SRC_ROOT_DIR)/tools/gen_comms.c )
78 ( if [ ! -e module_dm.F ] ; then /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F ; fi )
81 ( if [ ! -e $(WRF_SRC_ROOT_DIR)/tools/gen_comms.c ] ; then \
82 /bin/cp $(WRF_SRC_ROOT_DIR)/tools/gen_comms_warning $(WRF_SRC_ROOT_DIR)/tools/gen_comms.c ; \
83 cat $(WRF_SRC_ROOT_DIR)/external/RSL_LITE/gen_comms.c >> $(WRF_SRC_ROOT_DIR)/tools/gen_comms.c ; fi )
86 ( if [ ! -e module_dm.F ] ; then /bin/cp module_dm_warning module_dm.F ; \
87 cat $(WRF_SRC_ROOT_DIR)/external/RSL_LITE/module_dm.F >> module_dm.F ; fi )
90 ( cd $(WRF_SRC_ROOT_DIR)/external/io_netcdf ; \
91 make NETCDFPATH="$(NETCDFPATH)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
92 CC="$(SCC)" CFLAGS="$(CFLAGS)" \
93 FC="$(SFC) $(PROMOTION) $(FCFLAGS)" TRADFLAG="$(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" )
96 ( cd $(WRF_SRC_ROOT_DIR)/external/io_pnetcdf ; \
97 make NETCDFPATH="$(PNETCDFPATH)" RANLIB="$(RANLIB)" CPP="$(CPP) $(ARCHFLAGS)" \
98 FC="$(FC) $(PROMOTION) $(FCFLAGS)" TRADFLAG="$(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" )
101 ( cd $(WRF_SRC_ROOT_DIR)/external/io_grib_share ; \
102 make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
103 FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) $(FCSUFFIX)" TRADFLAG="$(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" archive)
106 ( cd $(WRF_SRC_ROOT_DIR)/external/io_grib1 ; \
107 make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
108 FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) $(FCSUFFIX)" TRADFLAG="$(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" archive)
111 ( cd $(WRF_SRC_ROOT_DIR)/external/io_grib2 ; \
112 make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" \
114 FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) $(FCSUFFIX)" TRADFLAG="-traditional" AR="$(AR)" ARFLAGS="$(ARFLAGS)" \
115 FIXED="$(FORMAT_FIXED)" archive)
118 ( cd $(WRF_SRC_ROOT_DIR)/external/io_int ; \
119 make CC="$(CC)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
120 FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FGREP="$(FGREP)" \
121 TRADFLAG="$(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" ARCHFLAGS="$(ARCHFLAGS)" all )
124 ( cd $(WRF_SRC_ROOT_DIR)/external/esmf_time_f90 ; \
125 make FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" \
126 CPP="$(CPP) -I$(WRF_SRC_ROOT_DIR)/inc -I. $(ARCHFLAGS) $(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" )
129 ( cd $(WRF_SRC_ROOT_DIR)/external/fftpack/fftpack5 ; \
130 make FC="$(SFC)" FFLAGS="$(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" )
133 ( cd $(WRF_SRC_ROOT_DIR)/external/atm_ocn ; \
134 make CC="$(SCC)" CFLAGS="$(CFLAGS) " RM="$(RM)" RANLIB="$(RANLIB)" \
136 FC="$(DM_FC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) $(FCSUFFIX)" TRADFLAG="-traditional" AR="$(AR)" ARFLAGS="$(ARFLAGS)" \
137 FIXED="$(FORMAT_FIXED)" )
139 $(WRF_SRC_ROOT_DIR)/external/RSL_LITE/librsl_lite.a :
140 ( cd $(WRF_SRC_ROOT_DIR)/external/RSL_LITE ; make CC="$(CC) $(CFLAGS)" \
141 FC="$(FC) $(FCFLAGS) $(PROMOTION) $(BYTESWAPIO)" \
142 CPP="$(CPP) -I. $(ARCHFLAGS) $(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" ;\
143 $(RANLIB) $(WRF_SRC_ROOT_DIR)/external/RSL_LITE/librsl_lite.a )
145 ######################
146 # Macros, these should be generic for all machines
153 # These sub-directory builds are identical across all architectures
156 ( cd $(WRF_SRC_ROOT_DIR)/external/ioapi_share ; \
157 $(MAKE) NATIVE_RWORDSIZE="$(NATIVE_RWORDSIZE)" RWORDSIZE="$(RWORDSIZE)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" )
160 ( cd $(WRF_SRC_ROOT_DIR)/external/io_esmf ; \
161 make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) $(ESMF_MOD_INC)" \
162 RANLIB="$(RANLIB)" CPP="$(CPP) $(POUND_DEF) " AR="$(AR)" ARFLAGS="$(ARFLAGS)" )
164 # There is probably no reason to modify these rules
168 $(CPP) -I$(WRF_SRC_ROOT_DIR)/inc $(CPPFLAGS) $*.F > $@
169 mv $*.i $(DEVTOP)/pick/$*.f90
170 cp $*.F $(DEVTOP)/pick
174 $(CPP) -I$(WRF_SRC_ROOT_DIR)/inc $(CPPFLAGS) $(OMPCPP) $*.F > $*.bb
175 $(SED_FTN) $*.bb | $(CPP) > $*.f90
177 @ if echo $(ARCHFLAGS) | $(FGREP) 'DVAR4D'; then \
178 echo COMPILING $*.F for 4DVAR ; \
179 $(WRF_SRC_ROOT_DIR)/var/build/da_name_space.pl $*.f90 > $*.f90.tmp ; \
180 mv $*.f90.tmp $*.f90 ; \
182 if $(FGREP) '!$$OMP' $*.f90 ; then \
183 if [ -n "$(OMP)" ] ; then echo COMPILING $*.F WITH OMP ; fi ; \
184 $(FC) -o $@ -c $(FCFLAGS) $(OMP) $(MODULE_DIRS) $(PROMOTION) $(FCSUFFIX) $*.f90 ; \
186 if [ -n "$(OMP)" ] ; then echo COMPILING $*.F WITHOUT OMP ; fi ; \
187 $(FC) -o $@ -c $(FCFLAGS) $(MODULE_DIRS) $(PROMOTION) $(FCSUFFIX) $*.f90 ; \
193 $(SED_FTN) $*.F > $*.b
194 $(CPP) -I$(WRF_SRC_ROOT_DIR)/inc $(CPPFLAGS) $*.b > $@
199 $(FC) -o $@ -c $(FCFLAGS) $(PROMOTION) $(FCSUFFIX) $*.f90
201 setfeenv.o : setfeenv.c
203 $(CCOMP) -o $@ -c $(CFLAGS) $(OMPCC) $*.c
207 $(CC) -o $@ -c $(CFLAGS) $*.c