11cmake_minimum_required ( VERSION 3.20 )
2-
3- project ( WRF )
2+ cmake_policy ( SET CMP0118 NEW )
43
54enable_language ( C )
65enable_language ( CXX )
76enable_language ( Fortran )
87
8+ project ( WRF )
99set ( EXPORT_NAME ${PROJECT_NAME} )
1010
1111if ( DEFINED CMAKE_TOOLCHAIN_FILE )
@@ -14,11 +14,6 @@ if ( DEFINED CMAKE_TOOLCHAIN_FILE )
1414 # include( ${WRF_CONFIG} )
1515endif ()
1616
17- # Import default flags now, get rid of any imported release flag
18- # we will handle that ourselves with WRF_FCOPTIM/WRF_FCNOOPT
19- set ( CMAKE_Fortran_FLAGS_RELEASE "" CACHE STRING "" FORCE )
20- set ( CMAKE_C_FLAGS_RELEASE "" CACHE STRING "" FORCE )
21-
2217# list( APPEND CMAKE_MODULE_PATH )
2318list ( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR} /cmake/ ${PROJECT_SOURCE_DIR} /cmake/modules )
2419
@@ -218,13 +213,6 @@ set( DWORDSIZE 8 )
218213set ( LWORDSIZE 4 )
219214
220215
221- # To limit the KPP generation to not consume copious amounts of RAM
222- if ( NOT DEFINED MAX_KPP_GEN_THREADS )
223- # 1 thread takes about 4.75 GB
224- set ( MAX_KPP_GEN_THREADS 2 )
225- endif ()
226-
227-
228216########################
229217
230218################################################################################
@@ -266,7 +254,6 @@ endif()
266254
267255if ( ${ENABLE_KPP} AND NOT ${ENABLE_CHEM} )
268256 message ( WARNING "ENABLE_KPP requires ENABLE_CHEM but is not set, ignoring" )
269- set ( ENABLE_KPP OFF CACHE BOOL "Force ignore by configuration" FORCE )
270257endif ()
271258
272259
@@ -328,29 +315,6 @@ if ( ${USE_IPO} )
328315endif ()
329316
330317
331-
332- ################################################################################
333- ##
334- ## Checkout external repositories using manage_externals
335- ##
336- ################################################################################
337- message ( STATUS "Checking out external repos via manage_externals" )
338- set ( LOG_FILE ${CMAKE_CURRENT_BINARY_DIR} /checkout_externals.log )
339- execute_process (
340- COMMAND
341- ${PROJECT_SOURCE_DIR} /tools/manage_externals/checkout_externals --externals ${PROJECT_SOURCE_DIR} /arch/Externals.cfg
342- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
343- RESULT_VARIABLE MANAGE_EXTERNALS_STATUS
344- OUTPUT_FILE ${LOG_FILE}
345- ERROR_FILE ${LOG_FILE}
346- )
347- if ( ${MANAGE_EXTERNALS_STATUS} AND NOT ${MANAGE_EXTERNALS_STATUS} EQUAL 0 )
348- message ( FATAL_ERROR "Failed to checkout external repos via manage_externals" )
349- else ()
350- message ( STATUS "Finished checking out external repos via manage_externals" )
351- endif ()
352-
353-
354318################################################################################
355319##
356320## Create our flags / defines properties and variables to carry our information
@@ -413,20 +377,23 @@ if ( ${USE_MPI} )
413377 # Which may or may not get polluted by the environment
414378 # It still technically finds MPI but the output is nonintuitive
415379 # saying things like hdf5 or pthread
380+ find_package ( MPI REQUIRED COMPONENTS Fortran C )
381+ list ( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS
382+ USE_MPI=1
383+ DM_PARALLEL
384+ )
416385
417- # Supply any language-specific flags for interrogation
418386 if ( DEFINED WRF_MPI_Fortran_FLAGS AND NOT "${WRF_MPI_Fortran_FLAGS} " STREQUAL "" )
419- set ( MPI_Fortran_COMPILER_FLAGS ${WRF_MPI_Fortran_FLAGS} )
387+ list ( APPEND PROJECT_COMPILE_OPTIONS_OPTIONS
388+ $<$<COMPILE_LANGUAGE:Fortran>:${WRF_MPI_Fortran_FLAGS} >
389+ )
420390 endif ()
421391
422392 if ( DEFINED WRF_MPI_C_FLAGS AND NOT "${WRF_MPI_C_FLAGS} " STREQUAL "" )
423- set ( MPI_C_COMPILER_FLAGS ${WRF_MPI_C_FLAGS} )
393+ list ( APPEND PROJECT_COMPILE_OPTIONS_OPTIONS
394+ $<$<COMPILE_LANGUAGE:C>:${WRF_MPI_C_FLAGS} >
395+ )
424396 endif ()
425- find_package ( MPI REQUIRED COMPONENTS Fortran C )
426- list ( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS
427- USE_MPI=1
428- DM_PARALLEL
429- )
430397
431398 # Check if MPI in all its glory has forced IPO down our throats due to hard-coding the wrapper flags
432399 # https://www.open-mpi.org/faq/?category=mpi-apps#why-no-rpath LOL!
@@ -505,19 +472,6 @@ if ( ${ENABLE_CTSM} )
505472 # find_package( CTSM REQUIRED )
506473endif ()
507474
508- if ( ${ENABLE_KPP} )
509- find_package ( BISON REQUIRED )
510- find_package ( FLEX REQUIRED )
511- if ( ${FLEX_FOUND} AND "${FLEX_LIBRARIES} " STREQUAL "FL_LIBRARY-NOTFOUND" )
512- message ( FATAL_ERROR
513- "Flex executable found, but libraries were not. Please provide a searchable path for both "
514- "\n "
515- "Refer to https://cmake.org/cmake/help/latest/command/find_package.html for more info "
516- "on providing a suitable path"
517- )
518- endif ()
519- endif ()
520-
521475# Will need our own finder
522476# find_package( GPFS REQUIRED )
523477
@@ -724,13 +678,10 @@ list( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS
724678# Only define if set, this is to use #ifdef/#ifndef preprocessors
725679# in code since cmake cannot handle basically any others :(
726680# https://gitlab.kitware.com/cmake/cmake/-/issues/17398
727- if ( ${USE_DOUBLE} )
728- list ( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS DOUBLE_PRECISION )
729- endif ()
730681if ( ${ENABLE_CHEM} )
731- list ( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS WRF_CHEM )
682+ list ( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS WRF_CHEM=1 )
732683 if ( ${ENABLE_KPP} )
733- list ( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS WRF_KPP )
684+ list ( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS WRF_KPP=1 )
734685 endif ()
735686endif ()
736687if ( ${ENABLE_CHEM} )
@@ -963,18 +914,14 @@ add_subdirectory( share )
963914add_subdirectory ( frame )
964915add_subdirectory ( inc )
965916
966- if ( ${ENABLE_CHEM } )
917+ if ( ${WRF_CHEM } )
967918 add_subdirectory ( chem )
968919endif ()
969920
970921if ( ${ENABLE_HYDRO} )
971922 add_subdirectory ( hydro )
972923endif ()
973924
974- if ( ${WRF_CORE} STREQUAL "PLUS" )
975- add_subdirectory ( wrftladj )
976- endif ()
977-
978925add_subdirectory ( dyn_em )
979926
980927
0 commit comments