From e1b5bfa2306e71615200c7ea0f8c141024d5278d Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Wed, 20 Nov 2019 09:32:51 -0700 Subject: [PATCH 1/2] Update submodule pointer for ccpp/physics --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 333980d88..74851c158 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 333980d88deeb932c34391a9a7ee85ba5a82042a +Subproject commit 74851c158b52910c5b21f9aeaa743703dc5943ac From e2026edab4278ea9c5853957733256c9d2118d47 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Wed, 20 Nov 2019 10:49:47 -0700 Subject: [PATCH 2/2] scm/src/CMakeLists.txt: run CCPP prebuild step from cmake --- scm/src/CMakeLists.txt | 59 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/scm/src/CMakeLists.txt b/scm/src/CMakeLists.txt index 042801a6d..fc5cc62f8 100644 --- a/scm/src/CMakeLists.txt +++ b/scm/src/CMakeLists.txt @@ -1,6 +1,61 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8) PROJECT(scm) set(PROJECT "CCPP-SCM") + +#################################################################### +# Begin CCPP prebuild step # +#################################################################### +if(STATIC) + # Start with empty list of suites + message (STATUS "Generating list of suites to compile for static CCPP") + set(SUITES "") + # Get list of all suite definition files (with full path) + file(GLOB SUITE_DEFINITION_FILES + "${CMAKE_CURRENT_SOURCE_DIR}/../../ccpp/suites/suite_*.xml" + ) + # Extract file name and suite name and append to SUITES + foreach(suite_definition_filepath IN LISTS SUITE_DEFINITION_FILES) + get_filename_component(suite_definition_filename ${suite_definition_filepath} NAME) + string(REGEX REPLACE "^suite_(.+)\\.xml$" "\\1" suite_name ${suite_definition_filename}) + string(APPEND SUITES "${suite_name},") + message (STATUS " adding suite ${suite_name}") + endforeach(suite_definition_filepath IN LISTS SUITE_DEFINITION_FILES) + # Abort if no suites found + if ("${SUITES}" STREQUAL "") + message(FATAL_ERROR "No suites found to compile for static CCPP") + endif("${SUITES}" STREQUAL "") + # Remove trailing comma from list of suites + string(REGEX REPLACE "(.+),$" "\\1" SUITES ${SUITES}) + # Run CCPP prebuild.py + message (STATUS "Running ccpp_prebuild.py for static CCPP") + execute_process( + COMMAND ccpp/framework/scripts/ccpp_prebuild.py --config=ccpp/config/ccpp_prebuild_config.py --static --suites=${SUITES} --builddir=${CMAKE_CURRENT_BINARY_DIR}/.. + OUTPUT_FILE ${PROJECT_BINARY_DIR}/ccpp_prebuild.out + ERROR_FILE ${PROJECT_BINARY_DIR}/ccpp_prebuild.err + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../.. + RESULT_VARIABLE return_code + ) +else(STATIC) + # Run CCPP prebuild.py + message (STATUS "Running ccpp_prebuild.py for dynamic CCPP") + execute_process( + COMMAND ccpp/framework/scripts/ccpp_prebuild.py --config=ccpp/config/ccpp_prebuild_config.py --builddir=${CMAKE_CURRENT_BINARY_DIR}/.. + OUTPUT_FILE ${PROJECT_BINARY_DIR}/ccpp_prebuild.out + ERROR_FILE ${PROJECT_BINARY_DIR}/ccpp_prebuild.err + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../.. + RESULT_VARIABLE return_code + ) +endif(STATIC) +# Check return code from CCPP prebuild.py +if(return_code EQUAL 0) + message (STATUS "CCPP prebuild step completed successfully") +else(return_code EQUAL 0) + message (FATAL_ERROR "CCPP prebuild step failed, check ccpp_prebuild.out/ccpp_prebuild.err") +endif(return_code EQUAL 0) +#################################################################### +# End CCPP prebuild step # +#################################################################### + ENABLE_LANGUAGE(Fortran) include(CMakeForceCompiler) @@ -8,14 +63,14 @@ include(CMakeForceCompiler) SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/modules) IF(DEFINED ENV{NETCDF}) - MESSAGE("The NETCDF env. variable is $ENV{NETCDF}") + MESSAGE(STATUS "The NETCDF environment variable is $ENV{NETCDF}") SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} $ENV{NETCDF}) ELSE(DEFINED ENV{NETCDF}) MESSAGE(FATAL_ERROR "The NETCDF environement variable must be set to point to your NetCDF installation before building. Stopping...") ENDIF(DEFINED ENV{NETCDF}) IF(DEFINED ENV{NCEPLIBS_DIR}) - MESSAGE("The NCEPLIBS_DIR env. variable is $ENV{NCEPLIBS_DIR}") + MESSAGE(STATUS "The NCEPLIBS_DIR environment variable is $ENV{NCEPLIBS_DIR}") set(NCEPLIBS_DIR $ENV{NCEPLIBS_DIR}) ELSE(DEFINED ENV{NCEPLIBS_DIR}) MESSAGE(FATAL_ERROR "The NCEPLIBS_DIR environment variable must be set to point to your NCEPlibs installation before building. Stopping...")