@@ -73,27 +73,33 @@ if (NOT DEFINED LEVEL_ZERO_LIBRARY OR NOT DEFINED LEVEL_ZERO_INCLUDE_DIR)
7373 ${level-zero-loader_SOURCE_DIR}/include CACHE PATH "Path to Level Zero Headers" )
7474endif ()
7575
76- add_library (LevelZeroLoader INTERFACE )
76+ add_library (LevelZeroLoader INTERFACE )
7777# The MSVC linker does not like / at the start of a path, so to work around this
7878# we split it into a link library and a library path, where the path is allowed
7979# to have leading /.
8080get_filename_component (LEVEL_ZERO_LIBRARY_SRC "${LEVEL_ZERO_LIBRARY} " DIRECTORY )
8181get_filename_component (LEVEL_ZERO_LIB_NAME "${LEVEL_ZERO_LIBRARY} " NAME )
8282target_link_directories (LevelZeroLoader
83- INTERFACE "${LEVEL_ZERO_LIBRARY_SRC} "
83+ INTERFACE "$<BUILD_INTERFACE:${LEVEL_ZERO_LIBRARY_SRC} >"
84+ "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >"
8485)
8586target_link_libraries (LevelZeroLoader
8687 INTERFACE "${LEVEL_ZERO_LIB_NAME} "
8788)
8889
89- add_library (LevelZeroLoader-Headers INTERFACE )
90+ add_library (LevelZeroLoader-Headers INTERFACE )
9091target_include_directories (LevelZeroLoader-Headers
91- INTERFACE "${LEVEL_ZERO_INCLUDE_DIR} "
92+ INTERFACE "$<BUILD_INTERFACE:${LEVEL_ZERO_INCLUDE_DIR} >"
93+ "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >"
9294)
9395
9496if (UR_BUILD_ADAPTER_L0)
95- add_ur_adapter(ur_adapter_level_zero
96- SHARED
97+ set (ADAPTER_LIB_TYPE SHARED)
98+ if (UR_STATIC_ADAPTER_L0)
99+ set (ADAPTER_LIB_TYPE STATIC )
100+ endif ()
101+
102+ add_ur_adapter(ur_adapter_level_zero ${ADAPTER_LIB_TYPE}
97103 ${CMAKE_CURRENT_SOURCE_DIR} /ur_interface_loader.cpp
98104 ${CMAKE_CURRENT_SOURCE_DIR} /adapter.hpp
99105 ${CMAKE_CURRENT_SOURCE_DIR} /adapter.cpp
@@ -133,6 +139,20 @@ if(UR_BUILD_ADAPTER_L0)
133139 ${CMAKE_CURRENT_SOURCE_DIR} /../../ur/ur.cpp
134140 )
135141
142+ if (UR_STATIC_ADAPTER_L0)
143+ target_compile_definitions (ur_adapter_level_zero PUBLIC UR_STATIC_ADAPTER_LEVEL_ZERO)
144+
145+ # 'utils' target from 'level-zero-loader' includes path which is prefixed
146+ # in the source directory, this breaks the installation of 'utils' target.
147+ set_target_properties (utils PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "" )
148+ install (TARGETS ur_adapter_level_zero ur_umf LevelZeroLoader LevelZeroLoader-Headers ze_loader utils
149+ EXPORT ${PROJECT_NAME} -targets
150+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
151+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
152+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
153+ )
154+ endif ()
155+
136156 if (NOT WIN32 )
137157 target_sources (ur_adapter_level_zero
138158 PRIVATE
@@ -152,7 +172,7 @@ if(UR_BUILD_ADAPTER_L0)
152172
153173 if (WIN32 )
154174 # 0x800: Search for the DLL only in the System32 folder
155- target_link_options (ur_adapter_level_zero PUBLIC /DEPENDENTLOADFLAG:0x800)
175+ target_link_options (ur_adapter_level_zero PRIVATE /DEPENDENTLOADFLAG:0x800)
156176 endif ()
157177
158178 target_link_libraries (ur_adapter_level_zero PRIVATE
0 commit comments