set(LLVM_LINK_COMPONENTS BinaryFormat Object Option Support FrontendOffloading TargetParser ) add_llvm_tool(llvm-gpu-loader llvm-gpu-loader.cpp # TODO: We intentionally split this currently due to statically linking the # GPU runtimes. Dynamically load the dependencies, possibly using the # LLVM offloading API when it is complete. PARTIAL_SOURCES_INTENDED DEPENDS intrinsics_gen ) # Locate the RPC server handling interface. include(FindLibcCommonUtils) target_link_libraries(llvm-gpu-loader PUBLIC llvm-libc-common-utilities) # Check for HSA support for targeting AMD GPUs. find_package(hsa-runtime64 QUIET 1.2.0 HINTS ${CMAKE_INSTALL_PREFIX} PATHS /opt/rocm) if(hsa-runtime64_FOUND) target_sources(llvm-gpu-loader PRIVATE amdhsa.cpp) target_compile_definitions(llvm-gpu-loader PRIVATE AMDHSA_SUPPORT) target_link_libraries(llvm-gpu-loader PRIVATE hsa-runtime64::hsa-runtime64) # Compatibility with the old amdhsa-loader name. add_llvm_tool_symlink(amdhsa-loader llvm-gpu-loader) endif() # Check for CUDA support for targeting NVIDIA GPUs. find_package(CUDAToolkit 11.2 QUIET) if(CUDAToolkit_FOUND) target_sources(llvm-gpu-loader PRIVATE nvptx.cpp) target_compile_definitions(llvm-gpu-loader PRIVATE NVPTX_SUPPORT) target_link_libraries(llvm-gpu-loader PRIVATE CUDA::cuda_driver) # Compatibility with the old nvptx-loader name. add_llvm_tool_symlink(nvptx-loader llvm-gpu-loader) endif()