blob: 0ae0c84f1b633f2a9f9a93022257e32485049dc8 [file]
# SPDX-FileCopyrightText: The Eigen Authors
# SPDX-License-Identifier: MPL-2.0
cmake_minimum_required(VERSION 3.18)
project(GpuFlags NONE)
include("${EIGEN_SOURCE_DIR}/cmake/EigenGpuTesting.cmake")
function(check_flags actual expected what)
separate_arguments(actual NATIVE_COMMAND "${actual}")
separate_arguments(expected NATIVE_COMMAND "${expected}")
if(NOT actual STREQUAL expected)
message(FATAL_ERROR "${what}: expected [${expected}], got [${actual}]")
endif()
endfunction()
macro(find_package package)
set(CUDAToolkit_VERSION 12.8)
set(CUDAToolkit_TARGET_DIR /cuda)
endmacro()
# Keep compiler discovery hardware-independent, but run CMake's real flag/cache initialization.
macro(enable_language language)
check_flags("${CMAKE_CUDA_FLAGS}" "${EXPECTED_DETECTION} ${extra_flags}" "compiler detection flags")
set(CMAKE_CUDA_COMPILER_ID EigenFlagTest)
include(CMakeInitializeConfigs)
include(CMakeCUDAInformation)
endmacro()
set(EIGEN_TEST_CUDA ON)
set(EIGEN_CUDA_COMPUTE_ARCH 75)
set(ENV{CUDAFLAGS} "${ENVIRONMENT_FLAGS}")
if(DEFINED NORMAL_FLAGS)
set(CMAKE_CUDA_FLAGS "${NORMAL_FLAGS}")
endif()
set(extra_flags "${EIGEN_CUDA_CXX_FLAGS}")
if(EIGEN_TEST_CUDA_CLANG)
string(PREPEND extra_flags "--cuda-path=/cuda ")
set(WIN32 FALSE)
endif()
# Compiler and platform modules can add flags only after compiler identification.
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_BINARY_DIR}/Modules")
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/Modules/Compiler/EigenFlagTest-CUDA.cmake"
"string(APPEND CMAKE_CUDA_FLAGS_INIT \" -DPLATFORM_FLAG=1\")\n")
ei_gpu_testing_enable()
check_flags("${CMAKE_CUDA_FLAGS}" "${EXPECTED_BUILD} ${extra_flags}" "build flags")
get_property(cache_flags CACHE CMAKE_CUDA_FLAGS PROPERTY VALUE)
check_flags("${cache_flags}" "${EXPECTED_CACHE}" "cached flags")