SHELL = /bin/sh inside_nems := $(wildcard ../../conf/configure.nems) ifneq ($(strip $(inside_nems)),) include ../../conf/configure.nems UTILINCS = -I../share -I$(PHYS_INC) -Inmmbphys else exist_configure_nmmb := $(wildcard ./conf/configure.nmmb) ifneq ($(strip $(exist_configure_nmmb)),) include conf/configure.nmmb else $(error "conf/configure.nmmb file is missing. Run ./configure") endif $(info ) $(info Build standalone NMMB ...) $(info ) UTILINCS = -I. -Inmmbphys endif LIBRARY = libnmm.a NMMBLIB = libnmmb.a NMMB_EXE = NMMB.x # # NMMB dynamics, drivers etc. # MODULES = ffsync.o \ module_ATM_COMM.o \ module_ERROR_MSG.o \ module_BGRID_INTERP.o \ module_CLOCKTIMES.o \ module_CONTROL.o \ module_CONVECTION.o \ module_DERIVED_TYPES.o \ module_DIAGNOSE.o \ module_DIGITAL_FILTER_NMM.o \ module_DM_PARALLEL.o \ module_DOMAIN_GRID_COMP.o \ module_DOMAIN_INTERNAL_STATE.o \ module_DYNAMICS_ROUTINES.o \ module_EXCHANGE.o \ module_FLTBNDS.o \ module_GET_CONFIG.o \ module_GET_CONFIG_WRITE.o \ module_GWD.o \ module_H_TO_V.o \ module_INIT_READ_BIN.o \ module_INIT_READ_NEMSIO.o \ module_INTERP2D.o \ module_MICROPHYSICS.o \ module_MPI_MORE.o \ module_MY_DOMAIN_SPECS.o \ module_NESTING.o \ module_NMM_GRID_COMP.o \ module_NMM_INTEGRATE.o \ module_NMM_INTERNAL_STATE.o \ module_OUTPUT.o \ module_PARENT_CHILD_CPL_COMP.o \ module_PRECIP_ADJUST.o \ module_RADIATION.o \ module_RELAX4E.o \ module_REDUCTION.o \ module_QUASIPOST.o \ module_TRACKER.o \ module_SOLVER_GRID_COMP.o \ module_SOLVER_INTERNAL_STATE.o \ module_TIMESERIES.o \ module_TURBULENCE.o \ module_VARS.o \ module_VARS_STATE.o \ module_WRITE_GRID_COMP.o \ module_WRITE_INTERNAL_STATE.o \ module_WRITE_ROUTINES.o MODULES_GFSP = n_namelist_physics_def.o \ n_layout1.o \ n_resol_def.o \ n_compns_physics.o \ n_mpi_def.o \ n_module_gfs_mpi_def.o \ n_mpi_quit.o \ cmp_comm.o MODULES_STUB = module_NMM_GRID_COMP_stub.o MODULES_POSTSTUB = post_nmm_stub.o ifneq ($(strip $(inside_nems)),) DEPEND_FILES = ${MODULES:.o=.F90} \ ${MODULES_GFSP:.o=.f} TARGET = $(LIBRARY) else DEPEND_FILES = ${MODULES:.o=.F90} \ ${MODULES_GFSP:.o=.f} \ ${MODULES_POSTSTUB:.o=.F90} \ NMMB.F90 TARGET = $(NMMB_EXE) endif all: depend $(MAKE) -C nmmbphys $(MAKECMDGOALS) $(MAKE) $(TARGET) $(MAKECMDGOALS) $(LIBRARY): $(MODULES) $(MODULES_GFSP) nmmbphys/*.o $(AR) $(ARFLAGS) $@ $? $(NMMBLIB): $(MODULES) $(MODULES_GFSP) $(MODULES_POSTSTUB) nmmbphys/*.o $(AR) $(ARFLAGS) $@ $? $(NMMB_EXE): NMMB.o redirect.o $(NMMBLIB) $(FC) $(FFLAGS_NMM) -o $@ $^ $(EXTLIBS) stub: $(MODULES_STUB) $(AR) $(ARFLAGS) $(LIBRARY) $(MODULES_STUB) $(MODULES): %.o: %.f90 $(FC) $(FFLAGS_NMM) $(UTILINCS) -c $*.f90 $(MODULES_GFSP): %.o: %.f $(F77) $(OPTS_GFS) $(FIXED) $(TRAPS) $(UTILINCS) -c $*.f $(MODULES_STUB): %.o: %.f90 $(FC) $(FFLAGS_NMM) $(UTILINCS) -c $*.f90 $(MODULES_POSTSTUB): %.o: %.f90 $(FC) $(FFLAGS_NMM) $(UTILINCS) -c $*.f90 NMMB.o: NMMB.f90 NMMB.F90 $(FC) $(FFLAGS_NMM) $(UTILINCS) -c NMMB.f90 redirect.o: redirect.c $(CC) -c redirect.c .PHONY: clean cleanall clean: @echo "Cleaning ... " @echo (cd nmmbphys && make clean) $(RM) -f $(TARGET) $(LIBRARY) $(NMMBLIB) *.f90 *.o *.mod *.lst depend cleanall: clean $(RM) -f conf/modules.nmmb $(RM) -f conf/configure.nmmb ifneq ($(strip $(inside_nems)),) MKDEPENDS = ../../../exe/mkDepends.pl include ../../conf/make.rules else MKDEPENDS = ./mkDepends.pl include conf/make.rules endif # do not include 'depend' file if the target contains string 'clean' ifneq (clean,$(findstring clean,$(MAKECMDGOALS))) -include depend endif