diff --git a/rapids-cmake/cpm/nvcomp.cmake b/rapids-cmake/cpm/nvcomp.cmake index 25039ebd..1d26f0c1 100644 --- a/rapids-cmake/cpm/nvcomp.cmake +++ b/rapids-cmake/cpm/nvcomp.cmake @@ -111,6 +111,10 @@ function(rapids_cpm_nvcomp) rapids_cpm_get_proprietary_binary_url(nvcomp ${version} nvcomp_url) if(nvcomp_url) rapids_cpm_download_proprietary_binary(nvcomp ${nvcomp_url}) + + # Unset CPM_DOWNLOAD_ALL if we have a proprietary binary enabled. This ensures we actually use + # the proprietary binary + unset(CPM_DOWNLOAD_ALL) endif() # Record the nvcomp_DIR so that if USE_PROPRIETARY_BINARY is disabled we can safely clear the diff --git a/testing/cpm/CMakeLists.txt b/testing/cpm/CMakeLists.txt index 3ac11f06..3ef8eb16 100644 --- a/testing/cpm/CMakeLists.txt +++ b/testing/cpm/CMakeLists.txt @@ -92,6 +92,7 @@ add_cmake_config_test( cpm_nvcomp-proprietary-off.cmake ) add_cmake_config_test( cpm_nvcomp-proprietary-on.cmake ) add_cmake_config_test( cpm_nvcomp-simple.cmake ) add_cmake_config_test( cpm_nvcomp-invalid-arch.cmake ) +add_cmake_config_test( cpm_nvcomp-always-download-proprietary_binary.cmake SERIAL) add_cmake_config_test( cpm_nvcomp-override-clears-proprietary_binary.cmake SERIAL) add_cmake_config_test( cpm_proprietary-url-ctk-version-find-ctk.cmake ) diff --git a/testing/cpm/cpm_nvcomp-always-download-proprietary_binary.cmake b/testing/cpm/cpm_nvcomp-always-download-proprietary_binary.cmake new file mode 100644 index 00000000..429dc677 --- /dev/null +++ b/testing/cpm/cpm_nvcomp-always-download-proprietary_binary.cmake @@ -0,0 +1,56 @@ +#============================================================================= +# 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/init.cmake) +include(${rapids-cmake-dir}/cpm/nvcomp.cmake) +include(${rapids-cmake-dir}/cpm/package_override.cmake) + + +rapids_cpm_init() + +if(TARGET nvcomp::nvcomp) + message(FATAL_ERROR "Expected nvcomp::nvcomp not to exist") +endif() + +# Need to write out an nvcomp override file +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/override.json + [=[ +{ + "packages": { + "nvcomp": { + "always_download" : true, + "version": "3.0.6", + "git_url": "https://github.com/NVIDIA/nvcomp.git", + "git_tag": "v2.2.0", + "proprietary_binary": { + "x86_64-linux": "https://developer.download.nvidia.com/compute/nvcomp/${version}/local_installers/nvcomp_${version}_x86_64_${cuda-toolkit-version-major}.x.tgz", + "aarch64-linux": "https://developer.download.nvidia.com/compute/nvcomp/${version}/local_installers/nvcomp_${version}_SBSA_${cuda-toolkit-version-major}.x.tgz" + } + } + } +} +]=]) +rapids_cpm_package_override(${CMAKE_CURRENT_BINARY_DIR}/override.json) + +# +rapids_cpm_nvcomp(USE_PROPRIETARY_BINARY ON) + +if(NOT nvcomp_proprietary_binary) + message(FATAL_ERROR "Ignored nvcomp override file failed to get proprietary binary version") +endif() + +if(EXISTS "${nvcomp_SOURCE_DIR}/CMakeLists.txt") + message(FATAL_ERROR "Ignored nvcomp override file failed to get proprietary binary version") +endif()