diff --git a/CMakeLists.txt b/CMakeLists.txt index a9c033cb..de88e943 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,17 +1,27 @@ # First-order language CUDA requires at least CMake 3.18 cmake_minimum_required(VERSION 3.24) +# Default seletion of CUDA Compute Capabilities. +# This must be called before project() or cmake sets it to the oldest non-deprecated CC +# "all" and "all-major" work for Intel and perhaps for ARM with discrete GPUs, but not Tegra and Jetson. +if(EXISTS "/etc/nv_tegra_release") + # The CC list for Tegras and Jetson will require manual updates + set(CMAKE_CUDA_ARCHITECTURES "53;62;72;87" + CACHE + STRING "Which CUDA CCs to support: native, all, all-major or an explicit list delimited by semicolons") +else() + # The CC list for discrete GPUs will require CMake updates + set(CMAKE_CUDA_ARCHITECTURES "all-major" + CACHE + STRING "Which CUDA CCs to support: native, all, all-major or an explicit list delimited by semicolons") +endif() + project(PopSift VERSION 1.0.0 LANGUAGES CXX CUDA) # Policy to support CUDA as a first-order language for CMake. # Since CMake 3.18. See https://cmake.org/cmake/help/latest/policy/CMP0104.html cmake_policy(SET CMP0104 NEW) -set(CMAKE_CUDA_ARCHITECTURES "all-major" - CACHE - STRING "Which CUDA CCs to support: native, all, all-major or an explicit list delimited by semicolons" - FORCE) - # Set build path as a folder named as the platform (linux, windows, darwin...) plus the processor type set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")