From 3c35baf8643fd4a198028d8d403441ad3b1f6c3d Mon Sep 17 00:00:00 2001 From: Patrick Stotko Date: Wed, 18 Mar 2020 18:13:35 +0100 Subject: [PATCH] cmake: Install backend-specific find modules in subdirectories --- CMakeLists.txt | 3 ++- cmake/stdgpu-dependencies.cmake.in | 9 +++++++++ src/stdgpu/CMakeLists.txt | 8 ++++---- src/stdgpu/cuda/CMakeLists.txt | 4 +--- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f88ca7d95..ce816006f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,8 +20,9 @@ string(REGEX REPLACE "^STDGPU_BACKEND_" "" STDGPU_BACKEND_DIRECTORY ${STDGPU_BAC string(TOLOWER ${STDGPU_BACKEND_DIRECTORY} STDGPU_BACKEND_DIRECTORY) -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") +# Backend-specific modules have higher priority than generic modules list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/${STDGPU_BACKEND_DIRECTORY}") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) diff --git a/cmake/stdgpu-dependencies.cmake.in b/cmake/stdgpu-dependencies.cmake.in index 8e6ea1566..f1e2e5522 100644 --- a/cmake/stdgpu-dependencies.cmake.in +++ b/cmake/stdgpu-dependencies.cmake.in @@ -1,4 +1,13 @@ include(CMakeFindDependencyMacro) +set(STDGPU_BACKEND_DIRECTORY "@STDGPU_BACKEND_DIRECTORY@") + +# Backend-specific modules have higher priority than generic modules +list(PREPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}") +list(PREPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/${STDGPU_BACKEND_DIRECTORY}") + @STDGPU_DEPENDENCIES_INIT@ @STDGPU_DEPENDENCIES_BACKEND_INIT@ + +list(POP_FRONT CMAKE_MODULE_PATH) +list(POP_FRONT CMAKE_MODULE_PATH) diff --git a/src/stdgpu/CMakeLists.txt b/src/stdgpu/CMakeLists.txt index 605b116b8..75e751670 100644 --- a/src/stdgpu/CMakeLists.txt +++ b/src/stdgpu/CMakeLists.txt @@ -7,9 +7,7 @@ set(STDGPU_BUILD_CMAKE_DIR "${CMAKE_CURRENT_BINARY_DIR}/cmake") find_package(thrust 1.9.3 REQUIRED MODULE) set(STDGPU_DEPENDENCIES_INIT " -list(PREPEND CMAKE_MODULE_PATH \${CMAKE_CURRENT_LIST_DIR}) find_dependency(thrust 1.9.3 REQUIRED MODULE) -list(POP_FRONT CMAKE_MODULE_PATH) ") @@ -28,7 +26,8 @@ option(STDGPU_USE_FAST_DESTROY "Use fast destruction of allocated arrays (filled option(STDGPU_USE_FIBONACCI_HASHING "Use Fibonacci Hashing instead of Modulo to compute hash bucket indices (deprecated), default: ON" ON) configure_file("${STDGPU_INCLUDE_LOCAL_DIR}/stdgpu/config.h.in" - "${STDGPU_BUILD_INCLUDE_DIR}/stdgpu/config.h") + "${STDGPU_BUILD_INCLUDE_DIR}/stdgpu/config.h" + @ONLY) if(STDGPU_BUILD_SHARED_LIBS) @@ -72,7 +71,8 @@ install(DIRECTORY "${STDGPU_INCLUDE_LOCAL_DIR}/" "${STDGPU_BUILD_INCLUDE_DIR}/" # Install dependencies file and custom thrust module configure_file("${stdgpu_SOURCE_DIR}/cmake/stdgpu-dependencies.cmake.in" - "${STDGPU_BUILD_CMAKE_DIR}/stdgpu-dependencies.cmake") + "${STDGPU_BUILD_CMAKE_DIR}/stdgpu-dependencies.cmake" + @ONLY) install(FILES "${STDGPU_BUILD_CMAKE_DIR}/stdgpu-dependencies.cmake" DESTINATION "${CMAKE_INSTALL_PREFIX}/${STDGPU_CMAKE_INSTALL_DIR}" diff --git a/src/stdgpu/cuda/CMakeLists.txt b/src/stdgpu/cuda/CMakeLists.txt index 2c6e4e5de..1b7c1f582 100644 --- a/src/stdgpu/cuda/CMakeLists.txt +++ b/src/stdgpu/cuda/CMakeLists.txt @@ -2,9 +2,7 @@ find_package(CUDAToolkit 10.0 REQUIRED MODULE) set(STDGPU_DEPENDENCIES_BACKEND_INIT " -list(PREPEND CMAKE_MODULE_PATH \${CMAKE_CURRENT_LIST_DIR}) find_dependency(CUDAToolkit 10.0 REQUIRED MODULE) -list(POP_FRONT CMAKE_MODULE_PATH) " PARENT_SCOPE) target_sources(stdgpu PRIVATE impl/memory.cpp @@ -18,5 +16,5 @@ target_link_libraries(stdgpu PUBLIC CUDA::cudart) # Install custom CUDA module install(FILES "${stdgpu_SOURCE_DIR}/cmake/${STDGPU_BACKEND_DIRECTORY}/FindCUDAToolkit.cmake" - DESTINATION "${CMAKE_INSTALL_PREFIX}/${STDGPU_CMAKE_INSTALL_DIR}" + DESTINATION "${CMAKE_INSTALL_PREFIX}/${STDGPU_CMAKE_INSTALL_DIR}/${STDGPU_BACKEND_DIRECTORY}" COMPONENT stdgpu)