Merge pull request #22 from wirc-sjsu/develop-w21
[WRF-Fire-merge.git] / arch / postamble
blob33bd572b1fa3b4a697e99454c6a899c18da28566
1 ######################
2 # POSTAMBLE
4 FGREP = fgrep -iq
6 ARCHFLAGS       =    $(COREDEFS) -DIWORDSIZE=$(IWORDSIZE) -DDWORDSIZE=$(DWORDSIZE) -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=$(LWORDSIZE) \
7                      $(ARCH_LOCAL) \
8                      $(DA_ARCHFLAGS) \
9                       CONFIGURE_DMPARALLEL \
10                       CONFIGURE_STUBMPI \
11                       CONFIGURE_NETCDF_FLAG \
12                       CONFIGURE_NETCDFPAR_FLAG \
13                       CONFIGURE_PNETCDF_FLAG \
14                       CONFIGURE_ESMF_FLAG \
15                       CONFIGURE_GRIB2_FLAG \
16                       CONFIGURE_RTTOV_FLAG \
17                       CONFIGURE_CRTM_FLAG \
18                       CONFIGURE_HDF5_FLAG \
19                       CONFIGURE_CLOUDCV_FLAG \
20                       CONFIGURE_4DVAR_FLAG \
21                       CONFIGURE_TERRAIN_AND_LANDUSE \
22                       CONFIGURE_WAVELET_FLAG \
23                       CONFIGURE_NESTOPT \
24                       -DUSE_ALLOCATABLES \
25                       -Dwrfmodel \
26                       -DGRIB1 \
27                       -DINTIO \
28                       -DKEEP_INT_AROUND \
29                       -DLIMIT_ARGS \
30                       -DBUILD_RRTMG_FAST=0 \
31                       -DBUILD_RRTMK=0 \
32                       -DBUILD_SBM_FAST=1 \
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
58 REGISTRY        =    Registry
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
80 gen_comms_serial :
81         ( /bin/rm -f $(WRF_SRC_ROOT_DIR)/tools/gen_comms.c )
83 module_dm_serial :
84         ( if [ ! -e module_dm.F ] ; then /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F ; fi )
86 gen_comms_rsllite :
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 )
91 module_dm_rsllite :
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 )
95 wrfio_nf : 
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)" )
101 wrfio_nfpar : 
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)" )
106 wrfio_pnf : 
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)" )
111 wrfio_grib_share :
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) 
116 wrfio_grib1 :
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)
121 wrfio_grib2 :
122         ( cd $(WRF_SRC_ROOT_DIR)/external/io_grib2 ; \
123           make $(J) CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" \
124           CPP="$(CPP)" \
125           FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) $(FCSUFFIX)" TRADFLAG="-traditional" AR="$(AR)" ARFLAGS="$(ARFLAGS)" \
126           FIXED="$(FORMAT_FIXED)" archive)
128 wrfio_int : 
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 )
134 esmf_time : 
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)" )
139 fftpack :
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)" )
144 atm_ocn :
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
160 LN      =       ln -sf
161 MAKE    =       make -i -r
162 RM      =       rm -f
165 # These sub-directory builds are identical across all architectures
167 wrf_ioapi_includes :
168         ( cd $(WRF_SRC_ROOT_DIR)/external/ioapi_share ; \
169           $(MAKE) NATIVE_RWORDSIZE="$(NATIVE_RWORDSIZE)" RWORDSIZE="$(RWORDSIZE)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" )
171 wrfio_esmf :
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
178 .F.i:
179         $(RM) $@
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
185 .F.o:
186         $(RM) $@
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
190         $(RM) $*.G $*.bb
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 ; \
195         fi
196         $(FC) -o $@ -c $(FCFLAGS) $(OMP) $(MODULE_DIRS) $(PROMOTION) $(FCSUFFIX) $*.f90
197         
199 .F.f90:
200         $(RM) $@
201         sed -e "s/^\!.*'.*//" -e "s/^ *\!.*'.*//" $*.F > $*.G
202         $(SED_FTN) $*.G > $*.H 
203         $(CPP) -I$(WRF_SRC_ROOT_DIR)/inc $(CPPFLAGS) $*.H  > $@
204         $(RM) $*.G $*.H
206 .f90.o:
207         $(RM) $@
208         $(FC) -o $@ -c $(FCFLAGS) $(PROMOTION) $(FCSUFFIX) $*.f90
210 setfeenv.o : setfeenv.c
211         $(RM) $@
212         $(CCOMP) -o $@ -c $(CFLAGS) $(OMPCC) $*.c
214 .c.o:
215         $(RM) $@
216         $(CC) -o $@ -c $(CFLAGS) $*.c