diff --git a/rapids-cmake/cpm/cccl.cmake b/rapids-cmake/cpm/cccl.cmake index 7dc2588a..42b2ae1b 100644 --- a/rapids-cmake/cpm/cccl.cmake +++ b/rapids-cmake/cpm/cccl.cmake @@ -101,9 +101,9 @@ function(rapids_cpm_cccl) if(CCCL_SOURCE_DIR AND to_install AND NOT rapids_cccl_install_rules_already_called) set_property(GLOBAL PROPERTY rapids_cmake_cccl_install_rules ON) - # CCCL < 2.7 does not currently correctly support installation of cub/thrust/libcudacxx in a + # CCCL < 2.8 does not currently correctly support installation of cub/thrust/libcudacxx in a # subdirectory - if(version VERSION_LESS 2.7) + if(version VERSION_LESS 2.8) set(Thrust_SOURCE_DIR "${CCCL_SOURCE_DIR}/thrust") set(CUB_SOURCE_DIR "${CCCL_SOURCE_DIR}/cub") set(libcudacxx_SOURCE_DIR "${CCCL_SOURCE_DIR}/libcudacxx") diff --git a/testing/cpm/CMakeLists.txt b/testing/cpm/CMakeLists.txt index 00bd252e..95dfaa8c 100644 --- a/testing/cpm/CMakeLists.txt +++ b/testing/cpm/CMakeLists.txt @@ -76,6 +76,7 @@ add_cmake_config_test( cpm_cccl-simple.cmake ) add_cmake_config_test( cpm_cccl-export.cmake ) add_cmake_build_test( cpm_cccl-version-2-5.cmake ) add_cmake_build_test( cpm_cccl-version-2-7.cmake ) +add_cmake_build_test( cpm_cccl-version-2-8.cmake ) add_cmake_build_test( cpm_cccl-preserve-custom-install-loc ) add_cmake_config_test( cpm_cuco-simple.cmake ) diff --git a/testing/cpm/cpm_cccl-version-2-7.cmake b/testing/cpm/cpm_cccl-version-2-7.cmake index a0eec346..57c36b2f 100644 --- a/testing/cpm/cpm_cccl-version-2-7.cmake +++ b/testing/cpm/cpm_cccl-version-2-7.cmake @@ -32,8 +32,8 @@ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/override.json "version": "2.7.0", "git_shallow": false, "git_url": "https://github.com/NVIDIA/cccl.git", - "git_tag": "e5229f2c7509ced5a830be4ae884d9e1639e8951" - } + "git_tag": "v2.7.0-rc2" + }, } } ]=]) @@ -74,7 +74,6 @@ foreach(to_verify IN LISTS include_dirs_to_verify cmake_dirs_to_verify) endforeach() ]=]) - add_custom_target(verify_thrust_header_search ALL COMMAND ${CMAKE_COMMAND} -E rm -rf "${CMAKE_BINARY_DIR}/check_cccl/build" COMMAND ${CMAKE_COMMAND} -S="${CMAKE_BINARY_DIR}/check_cccl" -B="${CMAKE_BINARY_DIR}/install/build" diff --git a/testing/cpm/cpm_cccl-version-2-8.cmake b/testing/cpm/cpm_cccl-version-2-8.cmake new file mode 100644 index 00000000..72477e06 --- /dev/null +++ b/testing/cpm/cpm_cccl-version-2-8.cmake @@ -0,0 +1,82 @@ +#============================================================================= +# Copyright (c) 2024, NVIDIA CORPORATION. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#============================================================================= +include(${rapids-cmake-dir}/cpm/cccl.cmake) +include(${rapids-cmake-dir}/cpm/init.cmake) +include(${rapids-cmake-dir}/cpm/package_override.cmake) + +include(GNUInstallDirs) +set(CMAKE_INSTALL_LIBDIR "lib") +set(CMAKE_INSTALL_INCLUDEDIR "include") + +rapids_cpm_init() + +# Need to write out an override file +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/override.json + [=[ +{ + "packages": { + "CCCL": { + "version": "2.8.0", + "git_shallow": false, + "git_url": "https://github.com/NVIDIA/cccl.git", + "git_tag": "fb4453dd632194dd2736772a9a0c19d200855ad7" + } + } +} + ]=]) + +rapids_cpm_package_override(${CMAKE_CURRENT_BINARY_DIR}/override.json) + +rapids_cpm_cccl(INSTALL_EXPORT_SET export_set) + +# Install our project so we can verify `cccl`/`thrust` has preserved +# the correct install location +add_custom_target(install_project ALL + COMMAND ${CMAKE_COMMAND} --install "${CMAKE_BINARY_DIR}" --prefix check_cccl/install/ + ) + +# Add a custom command that verifies that the expect files have +# been installed for each component +file(WRITE "${CMAKE_BINARY_DIR}/check_cccl/CMakeLists.txt" [=[ +cmake_minimum_required(VERSION 3.20) +project(verify_install_targets LANGUAGES CXX) + +# Verify include dirs +set(include_dirs_to_verify include/rapids/cub + include/rapids/libcudacxx/cuda + include/rapids/libcudacxx/nv + include/rapids/thrust) + +# Verify lib/cmake dirs +set(cmake_dirs_to_verify lib/rapids/cmake/cccl + lib/rapids/cmake/cub + lib/rapids/cmake/libcudacxx + lib/rapids/cmake/thrust) + +foreach(to_verify IN LISTS include_dirs_to_verify cmake_dirs_to_verify) + set(path "${CMAKE_CURRENT_SOURCE_DIR}/install/${to_verify}") + if(NOT EXISTS ${path}) + message(FATAL_ERROR "Failed to find `${path}` location") + endif() +endforeach() +]=]) + + +add_custom_target(verify_thrust_header_search ALL + COMMAND ${CMAKE_COMMAND} -E rm -rf "${CMAKE_BINARY_DIR}/check_cccl/build" + COMMAND ${CMAKE_COMMAND} -S="${CMAKE_BINARY_DIR}/check_cccl" -B="${CMAKE_BINARY_DIR}/install/build" +) +add_dependencies(verify_thrust_header_search install_project)