Skip to content

Commit 70cb55b

Browse files
committed
[UR][L0] Build and Install the L0 Dynamic Loader for use during standalone builds
Signed-off-by: Neil R. Spruit <[email protected]>
1 parent f90ca8e commit 70cb55b

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

unified-runtime/cmake/FetchLevelZero.cmake

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ if (NOT DEFINED LEVEL_ZERO_LIBRARY OR NOT DEFINED LEVEL_ZERO_INCLUDE_DIR)
4141
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-c++98-compat-extra-semi")
4242
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-warning-option")
4343
endif()
44-
set(BUILD_STATIC ON)
4544

4645
if (UR_LEVEL_ZERO_LOADER_REPO STREQUAL "")
4746
set(UR_LEVEL_ZERO_LOADER_REPO "https://github.com/oneapi-src/level-zero.git")
@@ -67,8 +66,42 @@ if (NOT DEFINED LEVEL_ZERO_LIBRARY OR NOT DEFINED LEVEL_ZERO_INCLUDE_DIR)
6766
if(MSVC)
6867
set(USE_Z7 ON)
6968
endif()
69+
set(BUILD_STATIC ON)
7070
FetchContent_MakeAvailable(level-zero-loader)
7171
FetchContent_GetProperties(level-zero-loader)
72+
set(BUILD_STATIC OFF)
73+
74+
# Create a second copy of the repository for the second configuration
75+
set(level-zero-loader-dynamic_SOURCE_DIR "${CMAKE_BINARY_DIR}/level-zero-loader-dynamic-src")
76+
77+
if(NOT EXISTS ${level-zero-loader-dynamic_SOURCE_DIR})
78+
file(COPY ${level-zero-loader_SOURCE_DIR} DESTINATION ${level-zero-loader-dynamic_SOURCE_DIR})
79+
endif()
80+
81+
# Build dynamic configuration
82+
set(BUILD_STATIC OFF)
83+
# Manually configure the dynamic build to avoid redefining the ze_loader target
84+
set(level-zero-loader-dynamic_BUILD_DIR ${CMAKE_BINARY_DIR}/level-zero-loader-dynamic-build)
85+
file(MAKE_DIRECTORY ${level-zero-loader-dynamic_BUILD_DIR})
86+
execute_process(COMMAND ${CMAKE_COMMAND} -DBUILD_STATIC=OFF -S ${level-zero-loader-dynamic_SOURCE_DIR}/level-zero-loader-src -B ${level-zero-loader-dynamic_BUILD_DIR})
87+
# Store the dynamic build directory globally for use in the level_zero UR cmake
88+
set(LEVEL_ZERO_LOADER_DYNAMIC_BUILD_DIR ${level-zero-loader-dynamic_BUILD_DIR} CACHE PATH "Path to the Level Zero dynamic loader build directory")
89+
90+
message(${CMAKE_BINARY_DIR})
91+
if(WIN32)
92+
add_custom_target(
93+
LEVEL_ZERO_DYNAMIC_LOADER_INSTALL
94+
ALL
95+
COMMAND ${CMAKE_COMMAND} --build ${LEVEL_ZERO_LOADER_DYNAMIC_BUILD_DIR}
96+
COMMAND ${CMAKE_COMMAND} -E copy ${LEVEL_ZERO_LOADER_DYNAMIC_BUILD_DIR}/bin/*.dll ${CMAKE_BINARY_DIR}/bin/
97+
)
98+
else()
99+
add_custom_target(
100+
LEVEL_ZERO_DYNAMIC_LOADER_INSTALL
101+
ALL
102+
COMMAND ${CMAKE_COMMAND} -E copy ${LEVEL_ZERO_LOADER_DYNAMIC_BUILD_DIR}/lib/*.so* ${CMAKE_BINARY_DIR}/lib/
103+
)
104+
endif()
72105

73106
# Restore original flags
74107
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_BAK}")

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ if(UR_BUILD_ADAPTER_L0)
116116
"${CMAKE_CURRENT_SOURCE_DIR}/../../"
117117
LevelZeroLoader-Headers
118118
)
119+
add_dependencies(ur_adapter_level_zero LEVEL_ZERO_DYNAMIC_LOADER_INSTALL)
119120
endif()
120121

121122
if(UR_BUILD_ADAPTER_L0_V2)
@@ -220,4 +221,5 @@ if(UR_BUILD_ADAPTER_L0_V2)
220221
"${CMAKE_CURRENT_SOURCE_DIR}/../../ur"
221222
LevelZeroLoader-Headers
222223
)
224+
add_dependencies(ur_adapter_level_zero_v2 LEVEL_ZERO_DYNAMIC_LOADER_INSTALL)
223225
endif()

0 commit comments

Comments
 (0)