set(CMAKE_EXPERIMENTAL_SYCL "c0d1fb10-2ece-420e-9d29-7d7f2b300f25") enable_language(CXX) enable_language(SYCL) set(cmake_version_save "${CMAKE_VERSION}") # The experimental file-set export format currently requires CMake 4.5. set(CMAKE_VERSION 4.5.0) cmake_path(GET CMAKE_BINARY_DIR PARENT_PATH tests_dir) include("${tests_dir}/export/export.cmake") include("${tests_dir}/export/install/lib/cmake/install-export.cmake") set(CMAKE_VERSION "${cmake_version_save}") function(check_file_set target file_set expected_type expected_language) get_property(type FILE_SET "${file_set}" TARGET "${target}" PROPERTY TYPE) if(NOT type STREQUAL expected_type) message(SEND_ERROR "Expected ${target} ${file_set} TYPE ${expected_type}, got: ${type}") endif() get_property(language FILE_SET "${file_set}" TARGET "${target}" PROPERTY LANGUAGE) if(NOT language STREQUAL expected_language) message(SEND_ERROR "Expected ${target} ${file_set} LANGUAGE ${expected_language}, " "got: ${language}") endif() endfunction() foreach(namespace IN ITEMS export install) set(imported_target "${namespace}::fileset_export") check_file_set("${imported_target}" export_sources SOURCES SYCL) check_file_set("${imported_target}" SYCL SOURCES SYCL) add_library("fileset_${namespace}_consumer" OBJECT FileSetConsumer.cxx) target_link_libraries("fileset_${namespace}_consumer" PRIVATE "${imported_target}") target_compile_definitions("fileset_${namespace}_consumer" PRIVATE "$<$:LANG_CXX>" "$<$:LANG_SYCL>") set(override_target "${namespace}::fileset_default_override_export") check_file_set("${override_target}" SYCL SOURCES CXX) add_library("fileset_${namespace}_override_consumer" OBJECT FileSetConsumer.cxx) target_link_libraries("fileset_${namespace}_override_consumer" PRIVATE "${override_target}") target_compile_definitions("fileset_${namespace}_override_consumer" PRIVATE "$<$:LANG_CXX>" "$<$:LANG_SYCL>") set(headers_target "${namespace}::fileset_headers_export") check_file_set("${headers_target}" SYCL_HEADERS HEADERS SYCL) add_library("fileset_${namespace}_headers_consumer" OBJECT FileSetViral.cxx) target_link_libraries("fileset_${namespace}_headers_consumer" PRIVATE "${headers_target}") target_compile_definitions("fileset_${namespace}_headers_consumer" PRIVATE "$<$:LANG_CXX>" "$<$:LANG_SYCL>") endforeach()