From 341e83eb166e409ce87683ff6f5c03b5cd5b5a1a Mon Sep 17 00:00:00 2001 From: MinsukJi-NOAA Date: Mon, 9 Mar 2020 17:31:35 +0000 Subject: [PATCH 1/3] support for ufs-s2s-model debug compilaiton * automatically enable NEMS_BUILDOPT=DEBUG=Y based on coupledFV3_MOM6_CICE_debug.appBuilder * automatically use esmf/8.0.0g module based on coupledFV3_MOM6_CICE_debug.appBuilder --- src/incmake/configure_rules.mk | 8 ++++++++ src/incmake/configure_vars.mk | 4 ++++ src/incmake/relist_components.mk | 9 +++++++++ 3 files changed, 21 insertions(+) diff --git a/src/incmake/configure_rules.mk b/src/incmake/configure_rules.mk index a394f138..2ae6b99c 100644 --- a/src/incmake/configure_rules.mk +++ b/src/incmake/configure_rules.mk @@ -32,6 +32,14 @@ $(NEMSDIR)/src/ESMFVersionDefine.h: ifneq ($(CHOSEN_MODULE),) $(CONFDIR)/modules.nems: $(MODULE_DIR)/$(CHOSEN_MODULE) cp $(MODULE_DIR)/$(CHOSEN_MODULE) $@ +ifeq ($(FV3_MAKEOPT),DEBUG=Y) +ifeq ($(MOM6_MAKEOPT),DEBUG=Y) +ifeq ($(CICE_MAKEOPT),DEBUG=Y) + sed -i 's;esmf/8.0.0;esmf/8.0.0g;' $@ +endif +endif +endif + else $(CONFDIR)/modules.nems: cat /dev/null > $@ diff --git a/src/incmake/configure_vars.mk b/src/incmake/configure_vars.mk index defac659..6600831a 100644 --- a/src/incmake/configure_vars.mk +++ b/src/incmake/configure_vars.mk @@ -42,3 +42,7 @@ ifeq (,$(CHOSEN_MODULE)) MODULE_LOGIC=echo No module selected. MODULE_LIST= endif + +# Update time stamp of module file so that target modules.nems is always built +# This is for automatic change of esmf module depending on DEBUG flag in configure_rules.mk +$(shell touch $(MODULE_DIR)/$(CHOSEN_MODULE)) diff --git a/src/incmake/relist_components.mk b/src/incmake/relist_components.mk index 04752033..5ef515e7 100644 --- a/src/incmake/relist_components.mk +++ b/src/incmake/relist_components.mk @@ -56,6 +56,15 @@ override_components := \ override COMPONENTS := $(override_components) ######################################################################## +# If FV3 MOM6 CICE all specify DEBUG=Y, set NEMS_BUILDOPT to DEBUG=Y +ifeq ($(FV3_MAKEOPT),DEBUG=Y) +ifeq ($(MOM6_MAKEOPT),DEBUG=Y) +ifeq ($(CICE_MAKEOPT),DEBUG=Y) + NEMS_BUILDOPT:=DEBUG=Y +endif +endif +endif +$(info NEMS_BUILDOPT IS $(NEMS_BUILDOPT)) # Tools to print component options. From f85ba3b3e1730e47d877366182ac10eca452d4c3 Mon Sep 17 00:00:00 2001 From: MinsukJi-NOAA Date: Tue, 10 Mar 2020 14:58:03 +0000 Subject: [PATCH 2/3] Change debug flag check from ifeq to findstring --- src/incmake/configure_rules.mk | 6 +++--- src/incmake/relist_components.mk | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/incmake/configure_rules.mk b/src/incmake/configure_rules.mk index 2ae6b99c..a399a3f3 100644 --- a/src/incmake/configure_rules.mk +++ b/src/incmake/configure_rules.mk @@ -32,9 +32,9 @@ $(NEMSDIR)/src/ESMFVersionDefine.h: ifneq ($(CHOSEN_MODULE),) $(CONFDIR)/modules.nems: $(MODULE_DIR)/$(CHOSEN_MODULE) cp $(MODULE_DIR)/$(CHOSEN_MODULE) $@ -ifeq ($(FV3_MAKEOPT),DEBUG=Y) -ifeq ($(MOM6_MAKEOPT),DEBUG=Y) -ifeq ($(CICE_MAKEOPT),DEBUG=Y) +ifneq (,$(findstring DEBUG=Y,$(FV3_MAKEOPT))) +ifneq (,$(findstring DEBUG=Y,$(MOM6_MAKEOPT))) +ifneq (,$(findstring DEBUG=Y,$(CICE_MAKEOPT))) sed -i 's;esmf/8.0.0;esmf/8.0.0g;' $@ endif endif diff --git a/src/incmake/relist_components.mk b/src/incmake/relist_components.mk index 5ef515e7..357f5b49 100644 --- a/src/incmake/relist_components.mk +++ b/src/incmake/relist_components.mk @@ -57,9 +57,9 @@ override COMPONENTS := $(override_components) ######################################################################## # If FV3 MOM6 CICE all specify DEBUG=Y, set NEMS_BUILDOPT to DEBUG=Y -ifeq ($(FV3_MAKEOPT),DEBUG=Y) -ifeq ($(MOM6_MAKEOPT),DEBUG=Y) -ifeq ($(CICE_MAKEOPT),DEBUG=Y) +ifneq (,$(findstring DEBUG=Y,$(FV3_MAKEOPT))) +ifneq (,$(findstring DEBUG=Y,$(MOM6_MAKEOPT))) +ifneq (,$(findstring DEBUG=Y,$(CICE_MAKEOPT))) NEMS_BUILDOPT:=DEBUG=Y endif endif From 4bc56718886aafbef7097e6fbe6a8199a627705e Mon Sep 17 00:00:00 2001 From: MinsukJi-NOAA Date: Fri, 17 Apr 2020 14:43:19 +0000 Subject: [PATCH 3/3] Loading machine-dependent esmf debug module *Remove the previous approach of auto-loading esmf debug module *Use S2S_DEBUB_MODULE env var to load machine-dependent esmf debug module *Require ufs-s2s-model/modules/${BUILD_TARGET}/fv3_coupled_debug file --- GNUmakefile | 7 +++++++ src/incmake/configure_rules.mk | 8 -------- src/incmake/configure_vars.mk | 4 ---- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index e2f3050b..b426b8a9 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -19,6 +19,13 @@ override NEMSDIR=$(ROOTDIR)/NEMS # it explicitly to make sure. Never change this: override SHELL=/bin/sh +# S2S_DEBUG_MODULE is used by before_components.mk for s2s-model to +# load machine-dependent esmf debug module. Its default value is false +# Trigger S2S_DEBUG_MODULE in one of two ways: +# 1) argument to make call: e.g. make app=* S2S_DEBUG_MODULE=true build +# 2) env before make call: e.g. export S2S_DEBUG_MODULE=true; make app=* build +S2S_DEBUG_MODULE?=false + # Set global variables and load utilities: include $(NEMSDIR)/src/incmake/infinity.mk # Recursion detector include $(NEMSDIR)/src/incmake/gmsl/gmsl # GNU Make Standard Library diff --git a/src/incmake/configure_rules.mk b/src/incmake/configure_rules.mk index a399a3f3..a394f138 100644 --- a/src/incmake/configure_rules.mk +++ b/src/incmake/configure_rules.mk @@ -32,14 +32,6 @@ $(NEMSDIR)/src/ESMFVersionDefine.h: ifneq ($(CHOSEN_MODULE),) $(CONFDIR)/modules.nems: $(MODULE_DIR)/$(CHOSEN_MODULE) cp $(MODULE_DIR)/$(CHOSEN_MODULE) $@ -ifneq (,$(findstring DEBUG=Y,$(FV3_MAKEOPT))) -ifneq (,$(findstring DEBUG=Y,$(MOM6_MAKEOPT))) -ifneq (,$(findstring DEBUG=Y,$(CICE_MAKEOPT))) - sed -i 's;esmf/8.0.0;esmf/8.0.0g;' $@ -endif -endif -endif - else $(CONFDIR)/modules.nems: cat /dev/null > $@ diff --git a/src/incmake/configure_vars.mk b/src/incmake/configure_vars.mk index 6600831a..defac659 100644 --- a/src/incmake/configure_vars.mk +++ b/src/incmake/configure_vars.mk @@ -42,7 +42,3 @@ ifeq (,$(CHOSEN_MODULE)) MODULE_LOGIC=echo No module selected. MODULE_LIST= endif - -# Update time stamp of module file so that target modules.nems is always built -# This is for automatic change of esmf module depending on DEBUG flag in configure_rules.mk -$(shell touch $(MODULE_DIR)/$(CHOSEN_MODULE))