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 $@ ./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 $@ .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