@@ -22,11 +22,6 @@ set(install_dest_obj lib${LLVM_LIBDIR_SUFFIX})
2222set (install_dest_obj-new-offload lib${LLVM_LIBDIR_SUFFIX} )
2323set (install_dest_bc lib${LLVM_LIBDIR_SUFFIX} )
2424
25- set (clang $<TARGET_FILE:clang>)
26- set (llvm-ar $<TARGET_FILE:llvm-ar>)
27- set (llvm-link $<TARGET_FILE:llvm-link>)
28- set (llvm-opt $<TARGET_FILE:opt>)
29-
3025string (CONCAT sycl_targets_opt
3126 "-fsycl-targets="
3227 "spir64_x86_64-unknown-unknown,"
@@ -55,6 +50,7 @@ set(compile_opts
5550 # we declare all functions as 'static'.
5651 -Wno-undefined-internal
5752 -sycl-std=2020
53+ --target =${LLVM_HOST_TRIPLE}
5854 )
5955
6056set (SYCL_LIBDEVICE_GCC_TOOLCHAIN "" CACHE PATH "Path to GCC installation" )
@@ -146,7 +142,8 @@ function(compile_lib_ext filename)
146142
147143 add_custom_command (
148144 OUTPUT ${devicelib-file}
149- COMMAND ${clang} ${ARG_OPTS}
145+ COMMAND ${clang_exe} -I ${PROJECT_BINARY_DIR} /include
146+ ${ARG_OPTS}
150147 ${CMAKE_CURRENT_SOURCE_DIR} /${ARG_SRC} -o ${devicelib-file}
151148 MAIN_DEPENDENCY ${ARG_SRC}
152149 DEPENDS ${ARG_DEPENDENCIES}
@@ -224,20 +221,26 @@ function(add_devicelibs filename)
224221 endforeach ()
225222endfunction ()
226223
227- # Set up the dependency lists for the libdevice libraries
228- set (crt_obj_deps wrapper.h device.h spirv_vars.h sycl-compiler)
229- set (complex_obj_deps device_complex.h device.h sycl-compiler)
230- set (cmath_obj_deps device_math.h device.h sycl-compiler)
231- set (imf_obj_deps device_imf.hpp imf_half.hpp imf_bf16.hpp imf_rounding_op.hpp imf_impl_utils.hpp device.h sycl-compiler)
232- set (itt_obj_deps device_itt.h spirv_vars.h device.h sycl-compiler)
233- set (bfloat16_obj_deps sycl-headers sycl-compiler)
224+ # For native builds, sycl-compiler will already include everything we need.
225+ # For cross builds, we also need native versions of the tools.
226+ set (sycl-compiler_deps
227+ sycl-compiler ${clang_target} ${append -file_target}
228+ ${clang-offload-bundler_target} ${clang-offload-packager_target}
229+ ${file-table-tform_target} ${llvm-foreach_target} ${llvm-spirv_target}
230+ ${sycl-post-link_target})
231+ set (crt_obj_deps wrapper.h device.h spirv_vars.h ${sycl-compiler_deps})
232+ set (complex_obj_deps device_complex.h device.h ${sycl-compiler_deps})
233+ set (cmath_obj_deps device_math.h device.h ${sycl-compiler_deps})
234+ set (imf_obj_deps device_imf.hpp imf_half.hpp imf_bf16.hpp imf_rounding_op.hpp imf_impl_utils.hpp device.h ${sycl-compiler_deps})
235+ set (itt_obj_deps device_itt.h spirv_vars.h device.h ${sycl-compiler_deps})
236+ set (bfloat16_obj_deps sycl-headers ${sycl-compiler_deps})
234237if (NOT MSVC AND UR_SANITIZER_INCLUDE_DIR)
235238 set (asan_obj_deps
236239 device.h atomic.hpp spirv_vars.h
237240 ${UR_SANITIZER_INCLUDE_DIR} /asan/asan_libdevice.hpp
238241 include /asan_rtl.hpp
239242 include /spir_global_var.hpp
240- sycl-compiler )
243+ ${ sycl-compiler_deps} )
241244
242245 set (sanitizer_generic_compile_opts ${compile_opts}
243246 -fno-sycl-instrument-device-code
@@ -427,6 +430,7 @@ set(imf_fp64_fallback_src ${imf_fallback_src_dir}/imf_fp64_fallback.cpp)
427430set (imf_bf16_fallback_src ${imf_fallback_src_dir} /imf_bf16_fallback.cpp)
428431
429432set (imf_host_cxx_flags -c
433+ --target =${LLVM_HOST_TRIPLE}
430434 -D__LIBDEVICE_HOST_IMPL__
431435)
432436
@@ -520,13 +524,13 @@ function(add_lib_imf name)
520524
521525 add_custom_command (
522526 OUTPUT ${ARG_DIR} /${name} .${${ARG_FTYPE} -suffix }
523- COMMAND ${clang } ${compile_opts} ${ARG_EXTRA_OPTS}
527+ COMMAND ${clang_exe } ${compile_opts} ${ARG_EXTRA_OPTS}
524528 -I ${CMAKE_CURRENT_SOURCE_DIR} /imf
525529 ${imf_${ARG_DTYPE} _fallback_src}
526530 -o
527531 ${ARG_DIR} /${name} .${${ARG_FTYPE} -suffix }
528532 DEPENDS ${imf_fallback_${ARG_DTYPE} _deps}
529- get_imf_fallback_${ARG_DTYPE} sycl-compiler
533+ get_imf_fallback_${ARG_DTYPE} ${ sycl-compiler_deps}
530534 VERBATIM )
531535
532536 add_custom_target (${ARG_TGT_NAME}
@@ -620,7 +624,7 @@ foreach(dtype IN ITEMS bf16 fp32 fp64)
620624 endif ()
621625 add_custom_command (
622626 OUTPUT ${${ftype} _binary_dir}/imf-${dtype} -host.${${ftype} -suffix }
623- COMMAND ${clang } ${${ftype} _host_compile_opts}
627+ COMMAND ${clang_exe } ${${ftype} _host_compile_opts}
624628 ${CMAKE_CURRENT_SOURCE_DIR} /${wrapper_name}
625629 -o ${${ftype} _binary_dir}/imf-${dtype} -host.${${ftype} -suffix }
626630 MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR} /${wrapper_name}
@@ -637,7 +641,7 @@ foreach(ftype IN ITEMS obj obj-new-offload)
637641 DEPENDS ${${ftype} _binary_dir}/${devicelib_host_static_${ftype} })
638642 add_custom_command (
639643 OUTPUT ${${ftype} _binary_dir}/${devicelib_host_static_${ftype} }
640- COMMAND ${llvm-ar } rcs
644+ COMMAND ${llvm-ar_exe } rcs
641645 ${${ftype} _binary_dir}/${devicelib_host_static_${ftype} }
642646 ${${ftype} _binary_dir}/imf-fp32-host.${${ftype} -suffix }
643647 ${${ftype} _binary_dir}/fallback-imf-fp32-host.${${ftype} -suffix }
@@ -648,7 +652,7 @@ foreach(ftype IN ITEMS obj obj-new-offload)
648652 DEPENDS imf_fp32_host_${ftype} imf_fallback_fp32_host_${ftype}
649653 DEPENDS imf_fp64_host_${ftype} imf_fallback_fp64_host_${ftype}
650654 DEPENDS imf_bf16_host_${ftype} imf_fallback_bf16_host_${ftype}
651- DEPENDS sycl-compiler
655+ DEPENDS ${llvm-ar_target}
652656 VERBATIM )
653657 add_dependencies (libsycldevice-obj imf_host_${ftype} )
654658
0 commit comments