From 5f8091f51a24e9b5a74dcbedf926d0f42a636bc2 Mon Sep 17 00:00:00 2001 From: Anthony Islas Date: Fri, 10 May 2024 13:46:58 -0700 Subject: [PATCH] Update WRF find logic --- CMakeLists.txt | 16 ++++++++++++---- arch/configure_reader.py | 12 +++++++++++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 814efa3..036c492 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,10 +9,12 @@ project( WPS ) set( EXPORT_NAME ${PROJECT_NAME} ) set( INTERNAL_GRIB2_PATH ${CMAKE_INSTALL_PREFIX}/grib2 ) -if ( NOT DEFINED WRF_DIR AND NOT DEFINED WRF_ROOT ) - message( STATUS "No WRF_DIR or WRF_ROOT provided, skipping targets that rely on WRF" ) +if ( DEFINED CMAKE_TOOLCHAIN_FILE ) + set( WPS_CONFIG ${CMAKE_TOOLCHAIN_FILE} ) endif() + + list( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/ ${PROJECT_SOURCE_DIR}/cmake/modules @@ -41,6 +43,9 @@ include( wrf_case_setup ) # Grab version info wrf_get_version( ${PROJECT_SOURCE_DIR}/README ) +# Disable WRF-specifics entirely +set( USE_WRF ON CACHE BOOL "USE_WRF" ) + ################################################################################ ## ## MPI & OpenMP @@ -89,11 +94,14 @@ endif() # Now find required libraries, which may have been affected by externals -if ( DEFINED WRF_DIR OR DEFINED WRF_ROOT ) - find_package( WRF COMPONENTS WRF_Core io_netcdf io_grib1 io_int REQUIRED ) +if ( DEFINED WRF_DIR OR DEFINED WRF_ROOT OR DEFINED ENV{WRF_DIR} OR DEFINED ENV{WRF_ROOT} ) + # PATHS will be checked last + find_package( WRF COMPONENTS WRF_Core io_netcdf io_grib1 io_int REQUIRED PATHS ../WRF/install ../wrf/install ) if ( ${WRF_FOUND} ) message( STATUS "Found WRF : ${WRF_CONFIG} (found version \"${WRF_VERSION}\")" ) endif() +elseif ( ${USE_WRF} ) + message( STATUS "No WRF_DIR or WRF_ROOT provided, skipping targets that rely on WRF" ) endif() # Find externals now -- this is a little different than normal since we want WRF to diff --git a/arch/configure_reader.py b/arch/configure_reader.py index 105485d..ca9c40f 100755 --- a/arch/configure_reader.py +++ b/arch/configure_reader.py @@ -606,6 +606,15 @@ def projectSpecificOptions( options, stanzaCfg ) : ############################################################################## buildExt = input( "[EXT] Build external? Default [N] [y/N] : " ).lower() in yesValues + useWRF = not( input( inspect.cleandoc( + """ + [WRF] Try to find WRF for metgrid/geogrid? + Requires WRF path set or ../WRF or ../wrf to exist. + Valid input paths are WRF_ROOT or WRF_DIR, set via env var or passed into cmake. + !!! If no valid path is found, these targets will be skipped !!! + Default [Y] [Y/n] : + """ + ) ).lower() in noValues ) additionalOptions = { # "WRF_CORE" : coreOption, @@ -613,7 +622,8 @@ def projectSpecificOptions( options, stanzaCfg ) : # "WRF_CASE" : caseOption, "USE_OPENMP" : "ON" if useOpenMP else "OFF", "USE_MPI" : "ON" if useMPI else "OFF", - "BUILD_EXTERNALS" : "ON" if buildExt else "OFF" + "BUILD_EXTERNALS" : "ON" if buildExt else "OFF", + "USE_WRF" : "ON" if useWRF else "OFF" } return additionalOptions -- 2.11.4.GIT