| #.rst: | 
 | # FindComputeCpp | 
 | #--------------- | 
 | # | 
 | #   Copyright 2016-2018 Codeplay Software Ltd. | 
 | # | 
 | #   Licensed under the Apache License, Version 2.0 (the "License"); | 
 | #   you may not use these files except in compliance with the License. | 
 | #   You may obtain a copy of the License at | 
 | # | 
 | #       http://www.apache.org/licenses/LICENSE-2.0 | 
 | # | 
 | # | 
 | #   Unless required by applicable law or agreed to in writing, software | 
 | #   distributed under the License is distributed on an "AS IS" BASIS, | 
 | #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | #   See the License for the specific language governing permissions and | 
 | #   limitations under the License. | 
 |  | 
 | ######################### | 
 | #  FindComputeCpp.cmake | 
 | ######################### | 
 | # | 
 | #  Tools for finding and building with ComputeCpp. | 
 | # | 
 | #  User must define ComputeCpp_DIR pointing to the ComputeCpp | 
 | #  installation. | 
 | # | 
 | #  Latest version of this file can be found at: | 
 | #    https://github.com/codeplaysoftware/computecpp-sdk | 
 |  | 
 | cmake_minimum_required(VERSION 3.4.3) | 
 | include(FindPackageHandleStandardArgs) | 
 | include(ComputeCppIRMap) | 
 |  | 
 | set(COMPUTECPP_USER_FLAGS "" CACHE STRING "User flags for compute++") | 
 | separate_arguments(COMPUTECPP_USER_FLAGS) | 
 | mark_as_advanced(COMPUTECPP_USER_FLAGS) | 
 |  | 
 | set(COMPUTECPP_BITCODE "spir64" CACHE STRING | 
 |   "Bitcode type to use as SYCL target in compute++") | 
 | mark_as_advanced(COMPUTECPP_BITCODE) | 
 |  | 
 | include(CMakeFindDependencyMacro) | 
 | find_dependency(OpenCL REQUIRED) | 
 |  | 
 | # Find ComputeCpp package | 
 |  | 
 | if(DEFINED ComputeCpp_DIR) | 
 |   set(computecpp_find_hint ${ComputeCpp_DIR}) | 
 | elseif(DEFINED ENV{COMPUTECPP_DIR}) | 
 |   set(computecpp_find_hint $ENV{COMPUTECPP_DIR}) | 
 | endif() | 
 |  | 
 | # Used for running executables on the host | 
 | set(computecpp_host_find_hint ${computecpp_find_hint}) | 
 |  | 
 | if(CMAKE_CROSSCOMPILING) | 
 |   # ComputeCpp_HOST_DIR is used to find executables that are run on the host | 
 |   if(DEFINED ComputeCpp_HOST_DIR) | 
 |     set(computecpp_host_find_hint ${ComputeCpp_HOST_DIR}) | 
 |   elseif(DEFINED ENV{COMPUTECPP_HOST_DIR}) | 
 |     set(computecpp_host_find_hint $ENV{COMPUTECPP_HOST_DIR}) | 
 |   endif() | 
 | endif() | 
 |  | 
 | find_program(ComputeCpp_DEVICE_COMPILER_EXECUTABLE compute++ | 
 |   HINTS ${computecpp_host_find_hint} | 
 |   PATH_SUFFIXES bin | 
 |   NO_SYSTEM_ENVIRONMENT_PATH) | 
 |  | 
 | find_program(ComputeCpp_INFO_EXECUTABLE computecpp_info | 
 |   HINTS ${computecpp_host_find_hint} | 
 |   PATH_SUFFIXES bin | 
 |   NO_SYSTEM_ENVIRONMENT_PATH) | 
 |  | 
 | find_library(COMPUTECPP_RUNTIME_LIBRARY | 
 |   NAMES ComputeCpp ComputeCpp_vs2015 | 
 |   HINTS ${computecpp_find_hint} | 
 |   PATH_SUFFIXES lib | 
 |   DOC "ComputeCpp Runtime Library") | 
 |  | 
 | find_library(COMPUTECPP_RUNTIME_LIBRARY_DEBUG | 
 |   NAMES ComputeCpp_d ComputeCpp ComputeCpp_vs2015_d | 
 |   HINTS ${computecpp_find_hint} | 
 |   PATH_SUFFIXES lib | 
 |   DOC "ComputeCpp Debug Runtime Library") | 
 |  | 
 | find_path(ComputeCpp_INCLUDE_DIRS | 
 |   NAMES "CL/sycl.hpp" | 
 |   HINTS ${computecpp_find_hint}/include | 
 |   DOC "The ComputeCpp include directory") | 
 | get_filename_component(ComputeCpp_INCLUDE_DIRS ${ComputeCpp_INCLUDE_DIRS} ABSOLUTE) | 
 |  | 
 | get_filename_component(computecpp_canonical_root_dir "${ComputeCpp_INCLUDE_DIRS}/.." ABSOLUTE) | 
 | set(ComputeCpp_ROOT_DIR "${computecpp_canonical_root_dir}" CACHE PATH | 
 |     "The root of the ComputeCpp install") | 
 |  | 
 | if(NOT ComputeCpp_INFO_EXECUTABLE) | 
 |   message(WARNING "Can't find computecpp_info - check ComputeCpp_DIR") | 
 | else() | 
 |   execute_process(COMMAND ${ComputeCpp_INFO_EXECUTABLE} "--dump-version" | 
 |     OUTPUT_VARIABLE ComputeCpp_VERSION | 
 |     RESULT_VARIABLE ComputeCpp_INFO_EXECUTABLE_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE) | 
 |   if(NOT ComputeCpp_INFO_EXECUTABLE_RESULT EQUAL "0") | 
 |     message(WARNING "Package version - Error obtaining version!") | 
 |   endif() | 
 |  | 
 |   execute_process(COMMAND ${ComputeCpp_INFO_EXECUTABLE} "--dump-is-supported" | 
 |     OUTPUT_VARIABLE COMPUTECPP_PLATFORM_IS_SUPPORTED | 
 |     RESULT_VARIABLE ComputeCpp_INFO_EXECUTABLE_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE) | 
 |   if(NOT ComputeCpp_INFO_EXECUTABLE_RESULT EQUAL "0") | 
 |     message(WARNING "platform - Error checking platform support!") | 
 |   else() | 
 |     mark_as_advanced(COMPUTECPP_PLATFORM_IS_SUPPORTED) | 
 |     if (COMPUTECPP_PLATFORM_IS_SUPPORTED) | 
 |       message(STATUS "platform - your system can support ComputeCpp") | 
 |     else() | 
 |       message(STATUS "platform - your system is not officially supported") | 
 |     endif() | 
 |   endif() | 
 | endif() | 
 |  | 
 | find_package_handle_standard_args(ComputeCpp | 
 |   REQUIRED_VARS ComputeCpp_ROOT_DIR | 
 |                 ComputeCpp_DEVICE_COMPILER_EXECUTABLE | 
 |                 ComputeCpp_INFO_EXECUTABLE | 
 |                 COMPUTECPP_RUNTIME_LIBRARY | 
 |                 COMPUTECPP_RUNTIME_LIBRARY_DEBUG | 
 |                 ComputeCpp_INCLUDE_DIRS | 
 |   VERSION_VAR ComputeCpp_VERSION) | 
 | mark_as_advanced(ComputeCpp_ROOT_DIR | 
 |                  ComputeCpp_DEVICE_COMPILER_EXECUTABLE | 
 |                  ComputeCpp_INFO_EXECUTABLE | 
 |                  COMPUTECPP_RUNTIME_LIBRARY | 
 |                  COMPUTECPP_RUNTIME_LIBRARY_DEBUG | 
 |                  ComputeCpp_INCLUDE_DIRS | 
 |                  ComputeCpp_VERSION) | 
 |  | 
 | if(NOT ComputeCpp_FOUND) | 
 |   return() | 
 | endif() | 
 |  | 
 | list(APPEND COMPUTECPP_DEVICE_COMPILER_FLAGS -O2 -mllvm -inline-threshold=1000 -intelspirmetadata) | 
 | mark_as_advanced(COMPUTECPP_DEVICE_COMPILER_FLAGS) | 
 |  | 
 | if(CMAKE_CROSSCOMPILING) | 
 |   if(NOT COMPUTECPP_DONT_USE_TOOLCHAIN) | 
 |     list(APPEND COMPUTECPP_DEVICE_COMPILER_FLAGS --gcc-toolchain=${COMPUTECPP_TOOLCHAIN_DIR}) | 
 |   endif() | 
 |   list(APPEND COMPUTECPP_DEVICE_COMPILER_FLAGS --sysroot=${COMPUTECPP_SYSROOT_DIR}) | 
 |   list(APPEND COMPUTECPP_DEVICE_COMPILER_FLAGS -target ${COMPUTECPP_TARGET_TRIPLE}) | 
 | endif() | 
 |  | 
 | list(APPEND COMPUTECPP_DEVICE_COMPILER_FLAGS -sycl-target ${COMPUTECPP_BITCODE}) | 
 | message(STATUS "compute++ flags - ${COMPUTECPP_DEVICE_COMPILER_FLAGS}") | 
 |  | 
 | include(ComputeCppCompilerChecks) | 
 |  | 
 | if(NOT TARGET OpenCL::OpenCL) | 
 |   add_library(OpenCL::OpenCL UNKNOWN IMPORTED) | 
 |   set_target_properties(OpenCL::OpenCL PROPERTIES | 
 |     IMPORTED_LOCATION             "${OpenCL_LIBRARIES}" | 
 |     INTERFACE_INCLUDE_DIRECTORIES "${OpenCL_INCLUDE_DIRS}" | 
 |   ) | 
 | endif() | 
 |  | 
 | if(NOT TARGET ComputeCpp::ComputeCpp) | 
 |   add_library(ComputeCpp::ComputeCpp UNKNOWN IMPORTED) | 
 |   set_target_properties(ComputeCpp::ComputeCpp PROPERTIES | 
 |     IMPORTED_LOCATION_DEBUG          "${COMPUTECPP_RUNTIME_LIBRARY_DEBUG}" | 
 |     IMPORTED_LOCATION_RELWITHDEBINFO "${COMPUTECPP_RUNTIME_LIBRARY}" | 
 |     IMPORTED_LOCATION                "${COMPUTECPP_RUNTIME_LIBRARY}" | 
 |     INTERFACE_INCLUDE_DIRECTORIES    "${ComputeCpp_INCLUDE_DIRS}" | 
 |     INTERFACE_LINK_LIBRARIES         "OpenCL::OpenCL" | 
 |   ) | 
 | endif() | 
 |  | 
 | # This property allows targets to specify that their sources should be | 
 | # compiled with the integration header included after the user's | 
 | # sources, not before (e.g. when an enum is used in a kernel name, this | 
 | # is not technically valid SYCL code but can work with ComputeCpp) | 
 | define_property( | 
 |   TARGET PROPERTY COMPUTECPP_INCLUDE_AFTER | 
 |   BRIEF_DOCS "Include integration header after user source" | 
 |   FULL_DOCS "Changes compiler arguments such that the source file is | 
 |   actually the integration header, and the .cpp file is included on | 
 |   the command line so that it is seen by the compiler first. Enables | 
 |   non-standards-conformant SYCL code to compile with ComputeCpp." | 
 | ) | 
 | define_property( | 
 |   TARGET PROPERTY INTERFACE_COMPUTECPP_FLAGS | 
 |   BRIEF_DOCS "Interface compile flags to provide compute++" | 
 |   FULL_DOCS  "Set additional compile flags to pass to compute++ when compiling | 
 |   any target which links to this one." | 
 | ) | 
 | define_property( | 
 |   SOURCE PROPERTY COMPUTECPP_SOURCE_FLAGS | 
 |   BRIEF_DOCS "Source file compile flags for compute++" | 
 |   FULL_DOCS  "Set additional compile flags for compiling the SYCL integration | 
 |   header for the given source file." | 
 | ) | 
 |  | 
 | #################### | 
 | #   __build_ir | 
 | #################### | 
 | # | 
 | #  Adds a custom target for running compute++ and adding a dependency for the | 
 | #  resulting integration header and kernel binary. | 
 | # | 
 | #  TARGET : Name of the target. | 
 | #  SOURCE : Source file to be compiled. | 
 | #  COUNTER : Counter included in name of custom target. Different counter | 
 | #       values prevent duplicated names of custom target when source files with | 
 | #       the same name, but located in different directories, are used for the | 
 | #       same target. | 
 | # | 
 | function(__build_ir) | 
 |   set(options) | 
 |   set(one_value_args | 
 |     TARGET | 
 |     SOURCE | 
 |     COUNTER | 
 |   ) | 
 |   set(multi_value_args) | 
 |   cmake_parse_arguments(SDK_BUILD_IR | 
 |     "${options}" | 
 |     "${one_value_args}" | 
 |     "${multi_value_args}" | 
 |     ${ARGN} | 
 |   ) | 
 |   get_filename_component(sourceFileName ${SDK_BUILD_IR_SOURCE} NAME) | 
 |  | 
 |   # Set the path to the integration header. | 
 |   # The .sycl filename must depend on the target so that different targets | 
 |   # using the same source file will be generated with a different rule. | 
 |   set(baseSyclName ${CMAKE_CURRENT_BINARY_DIR}/${SDK_BUILD_IR_TARGET}_${sourceFileName}) | 
 |   set(outputSyclFile ${baseSyclName}.sycl) | 
 |   set(outputDeviceFile ${baseSyclName}.${IR_MAP_${COMPUTECPP_BITCODE}}) | 
 |   set(depFileName ${baseSyclName}.sycl.d) | 
 |  | 
 |   set(include_directories "$<TARGET_PROPERTY:${SDK_BUILD_IR_TARGET},INCLUDE_DIRECTORIES>") | 
 |   set(compile_definitions "$<TARGET_PROPERTY:${SDK_BUILD_IR_TARGET},COMPILE_DEFINITIONS>") | 
 |   set(generated_include_directories | 
 |     $<$<BOOL:${include_directories}>:-I\"$<JOIN:${include_directories},\"\t-I\">\">) | 
 |   set(generated_compile_definitions | 
 |     $<$<BOOL:${compile_definitions}>:-D$<JOIN:${compile_definitions},\t-D>>) | 
 |  | 
 |   # Obtain language standard of the file | 
 |   set(device_compiler_cxx_standard) | 
 |   get_target_property(targetCxxStandard ${SDK_BUILD_IR_TARGET} CXX_STANDARD) | 
 |   if (targetCxxStandard MATCHES 17) | 
 |     set(device_compiler_cxx_standard "-std=c++1z") | 
 |   elseif (targetCxxStandard MATCHES 14) | 
 |     set(device_compiler_cxx_standard "-std=c++14") | 
 |   elseif (targetCxxStandard MATCHES 11) | 
 |     set(device_compiler_cxx_standard "-std=c++11") | 
 |   elseif (targetCxxStandard MATCHES 98) | 
 |     message(FATAL_ERROR "SYCL applications cannot be compiled using C++98") | 
 |   else () | 
 |     set(device_compiler_cxx_standard "") | 
 |   endif() | 
 |  | 
 |   get_property(source_compile_flags | 
 |     SOURCE ${SDK_BUILD_IR_SOURCE} | 
 |     PROPERTY COMPUTECPP_SOURCE_FLAGS | 
 |   ) | 
 |   separate_arguments(source_compile_flags) | 
 |   if(source_compile_flags) | 
 |     list(APPEND computecpp_source_flags ${source_compile_flags}) | 
 |   endif() | 
 |  | 
 |   list(APPEND COMPUTECPP_DEVICE_COMPILER_FLAGS | 
 |     ${device_compiler_cxx_standard} | 
 |     ${COMPUTECPP_USER_FLAGS} | 
 |     ${computecpp_source_flags} | 
 |   ) | 
 |  | 
 |   set(ir_dependencies ${SDK_BUILD_IR_SOURCE}) | 
 |   get_target_property(target_libraries ${SDK_BUILD_IR_TARGET} LINK_LIBRARIES) | 
 |   if(target_libraries) | 
 |     foreach(library ${target_libraries}) | 
 |       if(TARGET ${library}) | 
 |         list(APPEND ir_dependencies ${library}) | 
 |       endif() | 
 |     endforeach() | 
 |   endif() | 
 |  | 
 |   # Depfile support was only added in CMake 3.7 | 
 |   # CMake throws an error if it is unsupported by the generator (i. e. not ninja) | 
 |   if((NOT CMAKE_VERSION VERSION_LESS 3.7.0) AND | 
 |           CMAKE_GENERATOR MATCHES "Ninja") | 
 |     file(RELATIVE_PATH relOutputFile ${CMAKE_BINARY_DIR} ${outputDeviceFile}) | 
 |     set(generate_depfile -MMD -MF ${depFileName} -MT ${relOutputFile}) | 
 |     set(enable_depfile DEPFILE ${depFileName}) | 
 |   endif() | 
 |  | 
 |   # Add custom command for running compute++ | 
 |   add_custom_command( | 
 |     OUTPUT ${outputDeviceFile} ${outputSyclFile} | 
 |     COMMAND ${ComputeCpp_DEVICE_COMPILER_EXECUTABLE} | 
 |             ${COMPUTECPP_DEVICE_COMPILER_FLAGS} | 
 |             ${generated_include_directories} | 
 |             ${generated_compile_definitions} | 
 |             -sycl-ih ${outputSyclFile} | 
 |             -o ${outputDeviceFile} | 
 |             -c ${SDK_BUILD_IR_SOURCE} | 
 |             ${generate_depfile} | 
 |     DEPENDS ${ir_dependencies} | 
 |     IMPLICIT_DEPENDS CXX ${SDK_BUILD_IR_SOURCE} | 
 |     ${enable_depfile} | 
 |     WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} | 
 |     COMMENT "Building ComputeCpp integration header file ${outputSyclFile}") | 
 |  | 
 |   # Name: (user-defined name)_(source file)_(counter)_ih | 
 |   set(headerTargetName | 
 |     ${SDK_BUILD_IR_TARGET}_${sourceFileName}_${SDK_BUILD_IR_COUNTER}_ih) | 
 |  | 
 |   if(NOT MSVC) | 
 |     # Add a custom target for the generated integration header | 
 |     add_custom_target(${headerTargetName} DEPENDS ${outputDeviceFile} ${outputSyclFile}) | 
 |     add_dependencies(${SDK_BUILD_IR_TARGET} ${headerTargetName}) | 
 |   endif() | 
 |  | 
 |   # This property can be set on a per-target basis to indicate that the | 
 |   # integration header should appear after the main source listing | 
 |   get_target_property(includeAfter ${SDK_ADD_SYCL_TARGET} COMPUTECPP_INCLUDE_AFTER) | 
 |  | 
 |   if(includeAfter) | 
 |     # Change the source file to the integration header - e.g. | 
 |     # g++ -c source_file_name.cpp.sycl | 
 |     get_target_property(current_sources ${SDK_BUILD_IR_TARGET} SOURCES) | 
 |     # Remove absolute path to source file | 
 |     list(REMOVE_ITEM current_sources ${SDK_BUILD_IR_SOURCE}) | 
 |     # Remove relative path to source file | 
 |     string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" | 
 |       rel_source_file ${SDK_BUILD_IR_SOURCE} | 
 |     ) | 
 |     list(REMOVE_ITEM current_sources ${rel_source_file}) | 
 |     # Add SYCL header to source list | 
 |     list(APPEND current_sources ${outputSyclFile}) | 
 |     set_property(TARGET ${SDK_BUILD_IR_TARGET} | 
 |       PROPERTY SOURCES ${current_sources}) | 
 |     # CMake/gcc don't know what language a .sycl file is, so tell them | 
 |     set_property(SOURCE ${outputSyclFile} PROPERTY LANGUAGE CXX) | 
 |     set(includedFile ${SDK_BUILD_IR_SOURCE}) | 
 |     set(cppFile ${outputSyclFile}) | 
 |   else() | 
 |     set_property(SOURCE ${outputSyclFile} PROPERTY HEADER_FILE_ONLY ON) | 
 |     set(includedFile ${outputSyclFile}) | 
 |     set(cppFile ${SDK_BUILD_IR_SOURCE}) | 
 |   endif() | 
 |  | 
 |   # Force inclusion of the integration header for the host compiler | 
 |   if(MSVC) | 
 |     # Group SYCL files inside Visual Studio | 
 |     source_group("SYCL" FILES ${outputSyclFile}) | 
 |  | 
 |     if(includeAfter) | 
 |       # Allow the source file to be edited using Visual Studio. | 
 |       # It will be added as a header file so it won't be compiled. | 
 |       set_property(SOURCE ${SDK_BUILD_IR_SOURCE} PROPERTY HEADER_FILE_ONLY true) | 
 |     endif() | 
 |  | 
 |     # Add both source and the sycl files to the VS solution. | 
 |     target_sources(${SDK_BUILD_IR_TARGET} PUBLIC ${SDK_BUILD_IR_SOURCE} ${outputSyclFile}) | 
 |  | 
 |     set(forceIncludeFlags "/FI${includedFile} /TP") | 
 |   else() | 
 |     set(forceIncludeFlags "-include ${includedFile} -x c++") | 
 |   endif() | 
 |  | 
 |   set_property( | 
 |     SOURCE ${cppFile} | 
 |     APPEND_STRING PROPERTY COMPILE_FLAGS "${forceIncludeFlags}" | 
 |   ) | 
 |  | 
 | endfunction(__build_ir) | 
 |  | 
 | ####################### | 
 | #  add_sycl_to_target | 
 | ####################### | 
 | # | 
 | #  Adds a SYCL compilation custom command associated with an existing | 
 | #  target and sets a dependency on that new command. | 
 | # | 
 | #  TARGET : Name of the target to add SYCL to. | 
 | #  SOURCES : Source files to be compiled for SYCL. | 
 | # | 
 | function(add_sycl_to_target) | 
 |   set(options) | 
 |   set(one_value_args | 
 |     TARGET | 
 |   ) | 
 |   set(multi_value_args | 
 |     SOURCES | 
 |   ) | 
 |   cmake_parse_arguments(SDK_ADD_SYCL | 
 |     "${options}" | 
 |     "${one_value_args}" | 
 |     "${multi_value_args}" | 
 |     ${ARGN} | 
 |   ) | 
 |  | 
 |   set_target_properties(${SDK_ADD_SYCL_TARGET} PROPERTIES LINKER_LANGUAGE CXX) | 
 |  | 
 |   # If the CXX compiler is set to compute++ enable the driver. | 
 |   get_filename_component(cmakeCxxCompilerFileName "${CMAKE_CXX_COMPILER}" NAME) | 
 |   if("${cmakeCxxCompilerFileName}" STREQUAL "compute++") | 
 |     if(MSVC) | 
 |       message(FATAL_ERROR "The compiler driver is not supported by this system, | 
 |                            revert the CXX compiler to your default host compiler.") | 
 |     endif() | 
 |  | 
 |     get_target_property(includeAfter ${SDK_ADD_SYCL_TARGET} COMPUTECPP_INCLUDE_AFTER) | 
 |     if(includeAfter) | 
 |       list(APPEND COMPUTECPP_USER_FLAGS -fsycl-ih-last) | 
 |     endif() | 
 |     list(INSERT COMPUTECPP_DEVICE_COMPILER_FLAGS 0 -sycl-driver) | 
 |     # Prepend COMPUTECPP_DEVICE_COMPILER_FLAGS and append COMPUTECPP_USER_FLAGS | 
 |     foreach(prop COMPILE_OPTIONS INTERFACE_COMPILE_OPTIONS) | 
 |       get_target_property(target_compile_options ${SDK_ADD_SYCL_TARGET} ${prop}) | 
 |       if(NOT target_compile_options) | 
 |         set(target_compile_options "") | 
 |       endif() | 
 |       set_property( | 
 |         TARGET ${SDK_ADD_SYCL_TARGET} | 
 |         PROPERTY ${prop} | 
 |         ${COMPUTECPP_DEVICE_COMPILER_FLAGS} | 
 |         ${target_compile_options} | 
 |         ${COMPUTECPP_USER_FLAGS} | 
 |       ) | 
 |     endforeach() | 
 |   else() | 
 |     set(fileCounter 0) | 
 |     list(INSERT COMPUTECPP_DEVICE_COMPILER_FLAGS 0 -sycl) | 
 |     # Add custom target to run compute++ and generate the integration header | 
 |     foreach(sourceFile ${SDK_ADD_SYCL_SOURCES}) | 
 |       if(NOT IS_ABSOLUTE ${sourceFile}) | 
 |         set(sourceFile "${CMAKE_CURRENT_SOURCE_DIR}/${sourceFile}") | 
 |       endif() | 
 |       __build_ir( | 
 |         TARGET     ${SDK_ADD_SYCL_TARGET} | 
 |         SOURCE     ${sourceFile} | 
 |         COUNTER    ${fileCounter} | 
 |       ) | 
 |       MATH(EXPR fileCounter "${fileCounter} + 1") | 
 |     endforeach() | 
 |   endif() | 
 |  | 
 |   set_property(TARGET ${SDK_ADD_SYCL_TARGET} | 
 |     APPEND PROPERTY LINK_LIBRARIES ComputeCpp::ComputeCpp) | 
 |   set_property(TARGET ${SDK_ADD_SYCL_TARGET} | 
 |     APPEND PROPERTY INTERFACE_LINK_LIBRARIES ComputeCpp::ComputeCpp) | 
 | endfunction(add_sycl_to_target) |