diff --git a/CMakeLists.txt b/CMakeLists.txt index 0823bb4773d0f7edce475c765392341195cae258..58e01a94056816611d44d3ec2edbd6c51e6c9f00 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,9 +57,13 @@ option(OGS_USE_CVODE "Use the Sundials CVODE module?" OFF) option(OGS_BUILD_UTILS "Should the utilities programs be built?" ON) option(OGS_BUILD_TESTING "Should the tests be built?" ON) +if(MSVC) + set(CMD_COMMAND "cmd;/c") +endif() + # ---- CMake includes ---- -include(GitSetup) include(Versions) +include(GitSetup) include(PythonSetup) include(ProcessesSetup) include(ProjectSetup) @@ -226,7 +230,7 @@ if(POETRY) file(STRINGS ${PROJECT_BINARY_DIR}/.python_packages OGS_PYTHON_PACKAGES) list(REMOVE_DUPLICATES OGS_PYTHON_PACKAGES) execute_process( - COMMAND ${_CMD_COMMAND} poetry add ${OGS_PYTHON_PACKAGES} + COMMAND ${CMD_COMMAND} poetry add ${OGS_PYTHON_PACKAGES} WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) endif() diff --git a/scripts/cmake/ConanSetup.cmake b/scripts/cmake/ConanSetup.cmake index 4f60c7a636a6bfd723cccd03d8d3f61eeff74c29..ca2bf9f61b29d07e7d7967123427cea20785eee0 100644 --- a/scripts/cmake/ConanSetup.cmake +++ b/scripts/cmake/ConanSetup.cmake @@ -3,7 +3,7 @@ if(NOT OGS_USE_CONAN OR NOT OGS_USE_NETCDF) endif() string(TOLOWER ${OGS_USE_CONAN} OGS_USE_CONAN_lower) if(OGS_USE_CONAN_lower STREQUAL "auto" AND POETRY) - execute_process(COMMAND ${_CMD_COMMAND} poetry add conan==${ogs.minimum_version.conan} + execute_process(COMMAND ${CMD_COMMAND} poetry add conan==${ogs.minimum_version.conan} WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) find_program(CONAN_CMD conan HINTS ${LOCAL_VIRTUALENV_BIN_DIRS} REQUIRED NO_DEFAULT_PATH diff --git a/scripts/cmake/Coverage.cmake b/scripts/cmake/Coverage.cmake index 0fb66a367f453eda3881fecc93114de26eae18c8..c11fb28d4f48d9b2ef703c66cb0f2159e01dd978 100644 --- a/scripts/cmake/Coverage.cmake +++ b/scripts/cmake/Coverage.cmake @@ -19,7 +19,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Og") if(NOT FASTCOV_PATH) execute_process( - COMMAND ${_CMD_COMMAND} poetry add fastcov==1.10 + COMMAND ${CMD_COMMAND} poetry add fastcov==1.10 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) find_program( diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake index 5e914f0d29350ec551da89241f8ff64eeb391965..5f1fcaa719e90f71f134dfae2935d7b42ace66e3 100644 --- a/scripts/cmake/Find.cmake +++ b/scripts/cmake/Find.cmake @@ -2,13 +2,6 @@ # Find tools # ############################################################################## -string(REPLACE ".windows.1" "" GIT_VERSION_STRING ${GIT_VERSION_STRING}) -if(${GIT_VERSION_STRING} VERSION_LESS ${ogs.minimum_version.git}) - message(FATAL_ERROR "Git version ${ogs.minimum_version.git} is required. \ - Found version ${GIT_VERSION_STRING}." - ) -endif() - find_package(Doxygen OPTIONAL_COMPONENTS dot) if(TARGET Doxygen::dot) # Create dependency graph in build dir with: diff --git a/scripts/cmake/GitSetup.cmake b/scripts/cmake/GitSetup.cmake index d7aa117ca154cb0e970957ff8304ef2ec0105f49..0d3f50e5638ed83601f7175f6dc1500d16a35a58 100644 --- a/scripts/cmake/GitSetup.cmake +++ b/scripts/cmake/GitSetup.cmake @@ -1,12 +1,25 @@ -# Git detection -find_package(Git REQUIRED) - # cmake-lint: disable=W0106 if(DEFINED ENV{OGS_VERSION}) set(OGS_VERSION $ENV{OGS_VERSION}) - message(STATUS "OGS VERSION: ${OGS_VERSION} (set via environment)") + message(STATUS "Using user-provided OGS_VERSION=${OGS_VERSION} (set via environment).") + return() elseif(DEFINED OGS_VERSION) - message(STATUS "Using user-provided OGS_VERSION=${OGS_VERSION}") + message(STATUS "Using user-provided OGS_VERSION=${OGS_VERSION}.") + return() +endif() + +# Git detection +find_package(Git) +if(NOT Git_FOUND) + message(FATAL_ERROR "Git was not found. Either install Git or provide an \ + OGS_VERSION as an environment- or CMake-variable!" +) +endif() +string(REPLACE ".windows.1" "" GIT_VERSION_STRING ${GIT_VERSION_STRING}) +if(${GIT_VERSION_STRING} VERSION_LESS ${ogs.minimum_version.git}) + message(FATAL_ERROR "Git version ${ogs.minimum_version.git} is required. \ + Found version ${GIT_VERSION_STRING}." + ) endif() if(NOT _IS_GIT_REPO) @@ -118,7 +131,3 @@ if(_IS_GIT_REPO AND NOT OGS_VERSION) OUTPUT_STRIP_TRAILING_WHITESPACE ) endif() - -if(MSVC) - set(_CMD_COMMAND "cmd" "/c" CACHE INTERNAL "") -endif() diff --git a/scripts/cmake/PythonSetup.cmake b/scripts/cmake/PythonSetup.cmake index 8b2b26b567ee40817e1f08f8ffc53b358053ba6a..5adc4eae6675cd5d0e1e197445709cb9b00a0fdf 100644 --- a/scripts/cmake/PythonSetup.cmake +++ b/scripts/cmake/PythonSetup.cmake @@ -21,7 +21,7 @@ if(OGS_USE_POETRY) endif() if(NOT EXISTS ${PROJECT_BINARY_DIR}/.venv) execute_process( - COMMAND ${_CMD_COMMAND} poetry install + COMMAND ${CMD_COMMAND} poetry install WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) endif()