mirror of
https://github.com/Kitware/CMake.git
synced 2026-11-06 13:27:09 +00:00
Add experimental support for SYCL under an experimental gate. The IntelLLVM and Adaptivecpp compilers are recognized, as well as upstream Clang with libsycl support. Fixes: #27219, #27905
58 lines
1.8 KiB
CMake
58 lines
1.8 KiB
CMake
include(RunCMake)
|
|
|
|
if(CMake_TEST_SYCL)
|
|
list(APPEND RunCMake_TEST_OPTIONS -Wno-experimental)
|
|
endif()
|
|
|
|
function(configure_and_build case)
|
|
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${case}-build)
|
|
run_cmake(${case})
|
|
set(RunCMake_TEST_NO_CLEAN 1)
|
|
set(RunCMake_TEST_OUTPUT_MERGE 1)
|
|
run_cmake_command(${case}-build ${CMAKE_COMMAND} --build . --target main)
|
|
unset(RunCMake_TEST_NO_CLEAN)
|
|
unset(RunCMake_TEST_OUTPUT_MERGE)
|
|
unset(RunCMake_TEST_BINARY_DIR)
|
|
endfunction()
|
|
|
|
# CMP0220 policy behavior. These cases are language-agnostic (they use CXX)
|
|
# and configure-only, so they run on every platform regardless of CMake_TEST_CUDA.
|
|
|
|
# NEW: language configuration propagates up out of the enabling scope.
|
|
run_cmake(CMP0220-NEW)
|
|
run_cmake(CMP0220-NEW-function)
|
|
run_cmake(CMP0220-NEW-multilevel)
|
|
|
|
# OLD: language configuration stays in the scope that enabled it.
|
|
run_cmake(CMP0220-OLD)
|
|
|
|
# MIXED: NEW and OLD set at different scope levels around the enabling scope.
|
|
run_cmake(CMP0220-MIXED-block)
|
|
run_cmake(CMP0220-MIXED-nested-block)
|
|
|
|
# WARN: whether the optional CMP0220 warning is emitted.
|
|
run_cmake(CMP0220-WARN)
|
|
run_cmake(CMP0220-WARN-default)
|
|
run_cmake(CMP0220-WARN-block)
|
|
run_cmake(CMP0220-WARN-top-level)
|
|
|
|
# These cases enable CXX in a subdirectory and verify that its implicit RC
|
|
# language state is usable from an ancestor scope.
|
|
if(CMake_TEST_RESOURCES)
|
|
configure_and_build(CXXImplicitRC)
|
|
run_cmake(CMP0220-MIXED-implicit-RC)
|
|
endif()
|
|
|
|
# The following cases enable CUDA in a subdirectory and build a target in an
|
|
# ancestor scope, so they require a working CUDA toolchain.
|
|
if(CMake_TEST_CUDA)
|
|
foreach(case IN ITEMS CUDAParent CUDASibling)
|
|
configure_and_build(${case})
|
|
endforeach()
|
|
endif()
|
|
if(CMake_TEST_SYCL)
|
|
foreach(case IN ITEMS SYCLParent SYCLSibling)
|
|
configure_and_build(${case})
|
|
endforeach()
|
|
endif()
|