| # SPDX-FileCopyrightText: The Eigen Authors |
| # SPDX-License-Identifier: MPL-2.0 |
| |
| function(check_cuda_flags name environment toolchain expected_detection expected_build expected_cache) |
| set(build "${WORK_DIR}/${name}-${clang}-${custom}") |
| set(toolchain_file "${build}/toolchain.cmake") |
| file(WRITE "${toolchain_file}" "set(CMAKE_CUDA_FLAGS_INIT \"${toolchain}\")\n") |
| bs_configure("CUDA flags: ${name}" "${BS_CONSUMER_DIR}/gpu_flags" "${build}" |
| "-DEIGEN_SOURCE_DIR=${EIGEN_SOURCE_DIR}" |
| "-DCMAKE_TOOLCHAIN_FILE=${toolchain_file}" |
| "-DEIGEN_TEST_CUDA_CLANG=${clang}" |
| "-DEIGEN_CUDA_CXX_FLAGS=${custom}" |
| "-DENVIRONMENT_FLAGS=${environment}" |
| "-DEXPECTED_DETECTION=${expected_detection}" |
| "-DEXPECTED_BUILD=${expected_build}" |
| "-DEXPECTED_CACHE=${expected_cache}" ${ARGN}) |
| |
| # The cache keeps the initial defaults; changed Eigen flags replace the previous extras on reconfigure. |
| file(WRITE "${toolchain_file}" "set(CMAKE_CUDA_FLAGS_INIT \"-DCHANGED_INIT=1\")\n") |
| bs_configure("CUDA flags: ${name}, reconfigure" "${BS_CONSUMER_DIR}/gpu_flags" "${build}" |
| "-DEIGEN_CUDA_CXX_FLAGS=-DCHANGED_EIGEN=1" |
| "-DENVIRONMENT_FLAGS=-DCHANGED_ENV=1" |
| "-DEXPECTED_DETECTION=${expected_build}") |
| endfunction() |
| |
| foreach(clang OFF ON) |
| foreach(custom "" "-DEIGEN_FLAG=1") |
| check_cuda_flags(empty "" "" "" "-DPLATFORM_FLAG=1" "-DPLATFORM_FLAG=1") |
| check_cuda_flags(environment "-DENV_FLAG=1" "" "-DENV_FLAG=1" |
| "-DENV_FLAG=1 -DPLATFORM_FLAG=1" "-DENV_FLAG=1 -DPLATFORM_FLAG=1") |
| check_cuda_flags(toolchain "" "-DINIT_FLAG=1" "-DINIT_FLAG=1" |
| "-DINIT_FLAG=1 -DPLATFORM_FLAG=1" "-DINIT_FLAG=1 -DPLATFORM_FLAG=1") |
| check_cuda_flags(combined "-DENV_FLAG=1" "-DINIT_FLAG=1" "-DENV_FLAG=1 -DINIT_FLAG=1" |
| "-DENV_FLAG=1 -DINIT_FLAG=1 -DPLATFORM_FLAG=1" |
| "-DENV_FLAG=1 -DINIT_FLAG=1 -DPLATFORM_FLAG=1") |
| check_cuda_flags(cache "-DENV_FLAG=1" "-DINIT_FLAG=1" "-DCACHE_FLAG=1" "-DCACHE_FLAG=1" "-DCACHE_FLAG=1" |
| "-DCMAKE_CUDA_FLAGS=-DCACHE_FLAG=1") |
| check_cuda_flags(cache_empty "-DENV_FLAG=1" "-DINIT_FLAG=1" "" "" "" "-DCMAKE_CUDA_FLAGS=") |
| check_cuda_flags(normal "-DENV_FLAG=1" "-DINIT_FLAG=1" "-DNORMAL_FLAG=1" "-DNORMAL_FLAG=1" |
| "-DENV_FLAG=1 -DINIT_FLAG=1 -DPLATFORM_FLAG=1" "-DNORMAL_FLAGS=-DNORMAL_FLAG=1") |
| check_cuda_flags(normal_empty "-DENV_FLAG=1" "-DINIT_FLAG=1" "" "" |
| "-DENV_FLAG=1 -DINIT_FLAG=1 -DPLATFORM_FLAG=1" "-DNORMAL_FLAGS=") |
| endforeach() |
| endforeach() |