Skip to content

Commit b65d042

Browse files
committed
Create worktree from existing workspace
1 parent de08c3f commit b65d042

File tree

4 files changed

+54
-20
lines changed

4 files changed

+54
-20
lines changed

buildbot/configure.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ def do_configure(args, passthrough_args):
8585
# DeviceRTL uses -fuse-ld=lld, so enable lld.
8686
if args.offload:
8787
llvm_enable_projects += ";lld"
88+
sycl_enabled_backends.append("offload")
8889

8990
if args.cuda:
9091
llvm_targets_to_build += ";NVPTX"

sycl/CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,15 @@ if("hip" IN_LIST SYCL_ENABLE_BACKENDS)
532532
list(APPEND SYCL_TOOLCHAIN_DEPLOY_COMPONENTS ur_adapter_hip)
533533
endif()
534534

535+
if("offload" IN_LIST SYCL_ENABLE_BACKENDS)
536+
if(NOT TARGET lld)
537+
message(FATAL_ERROR
538+
"Offload support requires adding \"lld\" to the CMake argument \"LLVM_ENABLE_PROJECTS\"")
539+
endif()
540+
add_dependencies(sycl-toolchain ur_adapter_offload)
541+
list(APPEND SYCL_TOOLCHAIN_DEPLOY_COMPONENTS ur_adapter_offload)
542+
endif()
543+
535544
# Use it as fake dependency in order to force another command(s) to execute.
536545
add_custom_command(OUTPUT __force_it
537546
COMMAND "${CMAKE_COMMAND}" -E echo

sycl/cmake/modules/FetchUnifiedRuntime.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,10 @@ if("native_cpu" IN_LIST SYCL_ENABLE_BACKENDS)
318318
endif()
319319
endif()
320320

321+
if("offload" IN_LIST SYCL_ENABLE_BACKENDS)
322+
add_sycl_ur_adapter(offload)
323+
endif()
324+
321325
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
322326
# On Windows, also build/install debug libraries with the d suffix that are
323327
# compiled with /MDd so users can link against these in debug builds.

unified-runtime/source/adapters/offload/CMakeLists.txt

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -26,36 +26,53 @@ set(UR_OFFLOAD_INSTALL_DIR "" CACHE PATH "Path to the directory containing libom
2626
set(UR_OFFLOAD_INCLUDE_DIR "" CACHE PATH "Path to the directory containing LLVM headers")
2727
if (UR_OFFLOAD_INSTALL_DIR STREQUAL "" OR UR_OFFLOAD_INCLUDE_DIR STREQUAL "")
2828
include(ExternalProject)
29-
30-
set(LLVM_PROJECT_GIT https://github.com/llvm/llvm-project.git)
31-
set(LLVM_PROJECT_TAG ffddf33beb8097e760fafcbdd28d56c1d055e820)
32-
message(STATUS "UR_OFFLOAD_INSTALL_DIR and/or UR_OFFLOAD_INCLUDE_DIR not set, building liboffload runtime from source using llvm-project tag: ${LLVM_PROJECT_TAG}")
33-
set(LLVM_PROJECT_SOURCE_DIR ${CMAKE_BINARY_DIR}/llvm-project-src)
29+
set(LLVM_PROJECT_SOURCE_DIR ${CMAKE_BINARY_DIR}/llvm-src-offload)
30+
set(LLVM_PROJECT_TAG 4c0c295775cff0dcfc6439c3f51991ffac0345d8)
3431
set(OPENMP_INSTALL_DIR ${CMAKE_BINARY_DIR}/openmp-install)
35-
# Install to the same directory as main build
36-
set(UR_OFFLOAD_INSTALL_DIR ${CMAKE_INSTALL_PREFIX})
37-
set(UR_OFFLOAD_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/include)
38-
# Clone llvm-project only once
39-
ExternalProject_Add(llvm_project_src
40-
GIT_REPOSITORY ${LLVM_PROJECT_GIT}
41-
GIT_TAG ${LLVM_PROJECT_TAG}
42-
SOURCE_DIR ${LLVM_PROJECT_SOURCE_DIR}
43-
CONFIGURE_COMMAND ""
44-
BUILD_COMMAND ""
45-
INSTALL_COMMAND ""
46-
UPDATE_COMMAND ""
32+
set(UR_OFFLOAD_INSTALL_DIR ${CMAKE_BINARY_DIR}/offload-install)
33+
set(UR_OFFLOAD_INCLUDE_DIR ${UR_OFFLOAD_INSTALL_DIR}/include)
34+
35+
execute_process(COMMAND git -C "${CMAKE_SOURCE_DIR}" worktree prune)
36+
37+
if(NOT IS_DIRECTORY "${LLVM_PROJECT_SOURCE_DIR}")
38+
execute_process(
39+
COMMAND git -C "${CMAKE_SOURCE_DIR}" worktree add --no-checkout --detach "${LLVM_PROJECT_SOURCE_DIR}" "${LLVM_PROJECT_TAG}"
40+
RESULT_VARIABLE _wt_rv
41+
COMMAND_ERROR_IS_FATAL ANY
42+
)
43+
endif()
44+
45+
execute_process(
46+
COMMAND git sparse-checkout init --cone
47+
WORKING_DIRECTORY "${LLVM_PROJECT_SOURCE_DIR}"
48+
COMMAND_ERROR_IS_FATAL ANY
4749
)
50+
51+
execute_process(
52+
COMMAND git sparse-checkout set openmp offload cmake llvm/include libc
53+
WORKING_DIRECTORY "${LLVM_PROJECT_SOURCE_DIR}"
54+
COMMAND_ERROR_IS_FATAL ANY
55+
)
56+
57+
execute_process(
58+
COMMAND git checkout "${LLVM_PROJECT_TAG}"
59+
WORKING_DIRECTORY "${LLVM_PROJECT_SOURCE_DIR}"
60+
COMMAND_ERROR_IS_FATAL ANY
61+
)
62+
4863
# Build OpenMP runtime (required dependency for offload's libomptarget) from the cloned source
4964
ExternalProject_Add(openmp_ext
5065
# DeviceRTL uses -fuse-ld=lld, so add lld to the dependencies.
51-
DEPENDS llvm_project_src llvm-tblgen LLVMSupport clang lld
66+
DEPENDS llvm-tblgen LLVMSupport clang lld FileCheck not
5267
SOURCE_DIR ${LLVM_PROJECT_SOURCE_DIR}/openmp
5368
CMAKE_ARGS
5469
-DCMAKE_INSTALL_PREFIX=${OPENMP_INSTALL_DIR}
5570
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
5671
-DCMAKE_C_COMPILER=${CMAKE_BINARY_DIR}/bin/clang
5772
-DCMAKE_CXX_COMPILER=${CMAKE_BINARY_DIR}/bin/clang++
5873
-DLIBOMP_OMPD_GDB_SUPPORT=OFF
74+
-DOPENMP_ENABLE_OMPT_TOOLS=OFF
75+
-DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/bin
5976
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install
6077
UPDATE_COMMAND ""
6178
DOWNLOAD_COMMAND ""
@@ -71,18 +88,21 @@ if (UR_OFFLOAD_INSTALL_DIR STREQUAL "" OR UR_OFFLOAD_INCLUDE_DIR STREQUAL "")
7188
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
7289
-DCMAKE_C_COMPILER=${CMAKE_BINARY_DIR}/bin/clang
7390
-DCMAKE_CXX_COMPILER=${CMAKE_BINARY_DIR}/bin/clang++
74-
-DLIBOMPTARGET_LLVM_INCLUDE_DIRS=${LLVM_PROJECT_SOURCE_DIR}/llvm/include;${CMAKE_BINARY_DIR}/include
91+
-DLIBOMPTARGET_LLVM_INCLUDE_DIRS=${LLVM_PROJECT_SOURCE_DIR}/llvm/include|${CMAKE_BINARY_DIR}/include
7592
-DLLVM_DIR=${CMAKE_BINARY_DIR}/lib/cmake/llvm
7693
-DLIBOMPTARGET_PLUGINS_TO_BUILD=cuda|amdgpu
7794
-DLIBOMP_INCLUDE_DIR=${OPENMP_INSTALL_DIR}/include
7895
-DLLVM_TABLEGEN=${CMAKE_BINARY_DIR}/bin/llvm-tblgen
79-
-DCMAKE_PREFIX_PATH=${OPENMP_INSTALL_DIR};${CMAKE_BINARY_DIR}/bin
96+
-DCMAKE_PREFIX_PATH=${OPENMP_INSTALL_DIR}|${CMAKE_BINARY_DIR}/bin
8097
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install
8198
UPDATE_COMMAND ""
8299
DOWNLOAD_COMMAND ""
83100
BUILD_BYPRODUCTS "${UR_OFFLOAD_INSTALL_DIR}/lib/libLLVMOffload.so"
84101
)
85102
add_dependencies(${TARGET_NAME} offload_ext)
103+
install(DIRECTORY "${UR_OFFLOAD_INSTALL_DIR}/"
104+
DESTINATION "${CMAKE_INSTALL_PREFIX}"
105+
COMPONENT ur_adapter_offload)
86106
endif()
87107

88108
# When targetting CUDA devices, we need a workaround to avoid sending PTX to

0 commit comments

Comments
 (0)