From: Bruno Turcksin Date: Fri, 2 May 2025 18:41:16 +0000 (-0400) Subject: Improve error message when trying to configure with ArborX 2.0 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F18411%2Fhead;p=dealii.git Improve error message when trying to configure with ArborX 2.0 --- diff --git a/cmake/configure/configure_50_arborx.cmake b/cmake/configure/configure_50_arborx.cmake index ea6eb3fcfe..b838da6b78 100644 --- a/cmake/configure/configure_50_arborx.cmake +++ b/cmake/configure/configure_50_arborx.cmake @@ -50,27 +50,29 @@ macro(feature_arborx_find_external var) ArborX::ArborX ) - check_cxx_compiler_bug( - " - #include - int main() { - Kokkos::View points(\"points\", 0); - [[maybe_unused]] ArborX::BVH bvh(Kokkos::DefaultHostExecutionSpace{}, points); - } - " - DEAL_II_ARBORX_CXX20_BUG) - reset_cmake_required() + if(ArborX_VERSION VERSION_LESS 2.0.0) + check_cxx_compiler_bug( + " + #include + int main() { + Kokkos::View points(\"points\", 0); + [[maybe_unused]] ArborX::BVH bvh(Kokkos::DefaultHostExecutionSpace{}, points); + } + " + DEAL_II_ARBORX_CXX20_BUG) + reset_cmake_required() - if(DEAL_II_ARBORX_CXX20_BUG) - message(STATUS "Could not find a sufficient ArborX installation: " - "The ArborX version doesn't work with C++20 or higher." - ) - set(ARBORX_ADDITIONAL_ERROR_STRING - ${ARBORX_ADDITIONAL_ERROR_STRING} - "Could not find a sufficient ArborX installation:\n" - "The ArborX version doesn't work with C++20 or higher. Try using a later ArborX release or try specifying a lower C++ standard.\n" - ) - set(${var} FALSE) + if(DEAL_II_ARBORX_CXX20_BUG) + message(STATUS "Could not find a sufficient ArborX installation: " + "The ArborX version doesn't work with C++20 or higher." + ) + set(ARBORX_ADDITIONAL_ERROR_STRING + ${ARBORX_ADDITIONAL_ERROR_STRING} + "Could not find a sufficient ArborX installation:\n" + "The ArborX version doesn't work with C++20 or higher. Try using a later ArborX release or try specifying a lower C++ standard.\n" + ) + set(${var} FALSE) + endif() endif() endif() diff --git a/cmake/modules/FindDEAL_II_ARBORX.cmake b/cmake/modules/FindDEAL_II_ARBORX.cmake index c87a574afb..bd8c877a96 100644 --- a/cmake/modules/FindDEAL_II_ARBORX.cmake +++ b/cmake/modules/FindDEAL_II_ARBORX.cmake @@ -27,13 +27,25 @@ set_if_empty(ARBORX_DIR "$ENV{ARBORX_DIR}") # silence a warning when including FindKOKKOS.cmake set(CMAKE_CXX_EXTENSIONS OFF) -find_package(ArborX 1.3 QUIET +find_package(ArborX QUIET HINTS ${ARBORX_DIR} ${ArborX_DIR} $ENV{ArborX_DIR} ) if(ArborX_FOUND) get_property(ARBORX_INSTALL_INCLUDE_DIR TARGET ArborX::ArborX PROPERTY INTERFACE_INCLUDE_DIRECTORIES) + # + # ArborX's compatibility mode is set to SameMajorVersion. Therefore if we want to + # support both the 1.X and the 2.X, we cannot set a minimum version in + # find_package. Instead we need to check the minimum version ourselves. + # + if(ArborX_VERSION VERSION_LESS 1.3) + message(FATAL_ERROR "Found ArborX version ${ArborX_VERSION} but the minimum version supported is 1.3") + elseif(ArborX_VERSION VERSION_GREATER_EQUAL 2.0) + message(FATAL_ERROR "Found ArborX version ${ArborX_VERSION}. The 2.X series is not currently supported") + endif() + + # # Check whether ArborX was compiled with MPI support #