diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 66bbf5d1396a60d4df4935dc2237a921e7e609ab..d7f39297d068f53081cd9ea8caf9180a81794457 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,10 +8,10 @@ stages: variables: # Build config BUILD_TYPE: Release - BUILD_PROCESSES: "" # Empty string: builds all processes + BUILD_PROCESSES: "ON" # or OFF or ;-separated list of processes BUILD_TESTS: "true" BUILD_CTEST: "true" - CPU_TARGET: ivybridge # envinf2 has oldest cpu + CPU_TARGET: ivybridge # envinf1 has oldest cpu workflow: rules: diff --git a/Applications/ApplicationsLib/CMakeLists.txt b/Applications/ApplicationsLib/CMakeLists.txt index a915de8466253ebf902e049aa335e829f5cdac60..05b380e432004e765c4ae7c0f398c94ec7a24076 100644 --- a/Applications/ApplicationsLib/CMakeLists.txt +++ b/Applications/ApplicationsLib/CMakeLists.txt @@ -8,19 +8,14 @@ ogs_add_library(ApplicationsLib ${LIB_SOURCES}) target_link_libraries( ApplicationsLib PUBLIC BaseLib GeoLib NumLib - PRIVATE CMakeInfoLib - MathLib - MeshLib - MeshGeoToolsLib + PRIVATE CMakeInfoLib MathLib MeshLib MeshGeoToolsLib $<$<BOOL:${OGS_USE_PYTHON}>:pybind11::pybind11> $<$<BOOL:${OGS_USE_PETSC}>:petsc> ) if(OGS_BUILD_CLI OR OGS_BUILD_UTILS OR OGS_BUILD_TESTING) target_link_libraries( - ApplicationsLib - PUBLIC Processes - PRIVATE ParameterLib ProcessLib + ApplicationsLib PUBLIC Processes PRIVATE ParameterLib ProcessLib ) elseif(OGS_BUILD_GUI) target_link_libraries(ApplicationsLib PRIVATE nlohmann_json::nlohmann_json) @@ -36,12 +31,10 @@ target_compile_definitions( ) # Set cpp definitions if the cmake option is enabled for the given process. -foreach(process ${_processes_list}) - if(OGS_BUILD_PROCESS_${process}) - string(TOUPPER "OGS_BUILD_PROCESS_${process}" EnableProcess) - set_property( - TARGET ApplicationsLib APPEND PROPERTY COMPILE_DEFINITIONS - ${EnableProcess} - ) - endif() +foreach(process ${_enabled_processes}) + string(TOUPPER "OGS_BUILD_PROCESS_${process}" EnableProcess) + set_property( + TARGET ApplicationsLib APPEND PROPERTY COMPILE_DEFINITIONS + ${EnableProcess} + ) endforeach() diff --git a/ProcessLib/CMakeLists.txt b/ProcessLib/CMakeLists.txt index 2e4ae212faa09f268ca0e696b56442ddaaf28a76..97de8fc0a26216a66aaf8c0e6f178c5cb9c7352d 100644 --- a/ProcessLib/CMakeLists.txt +++ b/ProcessLib/CMakeLists.txt @@ -1,14 +1,10 @@ # Collect the process libraries in interface library add_library(Processes INTERFACE) -foreach(process ${_processes_list}) - if(OGS_BUILD_PROCESS_${process}) - add_subdirectory(${process}) - target_link_libraries(Processes INTERFACE ${process}) - set_target_properties( - ${process} PROPERTIES JOB_POOL_COMPILE heavy_tasks - ) - endif() +foreach(process ${_enabled_processes}) + add_subdirectory(${process}) + target_link_libraries(Processes INTERFACE ${process}) + set_target_properties(${process} PROPERTIES JOB_POOL_COMPILE heavy_tasks) endforeach() get_source_files(SOURCES) diff --git a/scripts/cmake/ProcessesSetup.cmake b/scripts/cmake/ProcessesSetup.cmake index 21f9407d5625c5f90807400fa75d1e2265970f87..1ebe8552126b7168e45e99b2bf645126038578b6 100644 --- a/scripts/cmake/ProcessesSetup.cmake +++ b/scripts/cmake/ProcessesSetup.cmake @@ -28,44 +28,47 @@ set(_processes_list TwoPhaseFlowWithPrho ) -# Add a cmake option for each process. -foreach(process ${_processes_list}) - option(OGS_BUILD_PROCESS_${process} "Build the ${process} process." ON) -endforeach() - -set(OGS_BUILD_PROCESSES "" +set(OGS_BUILD_PROCESSES ON CACHE STRING "Semicolon-separated list of processes to build" ) + +# Drop-down (cmake-gui), cycle-through list (ccmake) for easiere interactive +# selection. For enabling multiple selected processes cmake usage via cli is +# required! +set_property( + CACHE OGS_BUILD_PROCESSES PROPERTY STRINGS ON OFF ${_processes_list} +) + if(NOT OGS_BUILD_CLI) set(OGS_BUILD_PROCESSES OFF "" CACHE STRING "" FORCE) message( STATUS "ATTENTION: OGS_BUILD_CLI=OFF -> OGS_BUILD_PROCESSES is set to OFF too.\n" " If cli is switched on again, remember to switch processes back to on \n" - " too with -DOGS_BUILD_PROCESSES=\"\"!" + " too with -DOGS_BUILD_PROCESSES=ON!" ) endif() -if(NOT "${OGS_BUILD_PROCESSES}" STREQUAL "") - if(${OGS_BUILD_PROCESSES}) - foreach(process ${OGS_BUILD_PROCESSES}) - if(NOT "${process}" IN_LIST _processes_list) - message( - FATAL_ERROR - "${process} given in OGS_BUILD_PROCESSES is " - "not a valid process name! Valid names are ${_processes_list}" - ) - endif() - endforeach() - message(STATUS "Enabled processes:") + +if("${OGS_BUILD_PROCESSES}" STREQUAL "ON" OR "${OGS_BUILD_PROCESSES}" STREQUAL + "OFF" +) + if(OGS_BUILD_PROCESSES) + message(STATUS "All processes enabled.") + set(_enabled_processes ${_processes_list}) else() message(STATUS "All processes disabled.") + unset(_enabled_processes) endif() - foreach(process ${_processes_list}) - if("${process}" IN_LIST OGS_BUILD_PROCESSES) - set(OGS_BUILD_PROCESS_${process} ON CACHE BOOL "" FORCE) - message(STATUS " ${process}") - else() - set(OGS_BUILD_PROCESS_${process} OFF CACHE BOOL "" FORCE) +else() + foreach(process ${OGS_BUILD_PROCESSES}) + if(NOT "${process}" IN_LIST _processes_list) + message( + FATAL_ERROR + "${process} given in OGS_BUILD_PROCESSES is " + "not a valid process name! Valid names are ${_processes_list}" + ) endif() endforeach() + set(_enabled_processes ${OGS_BUILD_PROCESSES}) + message(STATUS "Enabled processes: ${OGS_BUILD_PROCESSES}") endif()