@@ -18,7 +18,7 @@ endif()
18
18
function (add_sycl_rt_library LIB_NAME LIB_OBJ_NAME )
19
19
# Add an optional argument so we can get the library name to
20
20
# link with for Windows Debug version
21
- cmake_parse_arguments (ARG "" "XPTI_LIB" "COMPILE_OPTIONS;SOURCES" ${ARGN} )
21
+ cmake_parse_arguments (ARG "" "XPTI_LIB;IMPLIB_NAME " "COMPILE_OPTIONS;SOURCES" ${ARGN} )
22
22
23
23
add_library (${LIB_OBJ_NAME} OBJECT ${ARG_SOURCES} )
24
24
add_library (${LIB_NAME} SHARED
@@ -75,12 +75,12 @@ function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME)
75
75
if (WIN32 )
76
76
include_directories (${LLVM_EXTERNAL_SYCL_SOURCE_DIR} /pi_win_proxy_loader )
77
77
if (WIN_DUPE )
78
- target_link_libraries (${LIB_NAME} PUBLIC pi_win_proxy_loaderd )
78
+ target_link_libraries (${LIB_NAME} PUBLIC pi_win_proxy_loaderd )
79
79
set (MANIFEST_FILE_NAME "sycld.manifest" )
80
- else ()
81
- target_link_libraries (${LIB_NAME} PUBLIC pi_win_proxy_loader )
80
+ else ()
81
+ target_link_libraries (${LIB_NAME} PUBLIC pi_win_proxy_loader )
82
82
set (MANIFEST_FILE_NAME "sycl.manifest" )
83
- endif ()
83
+ endif ()
84
84
# Embed manifest into the sycl.dll where pi_win_proxy_loader.dll is described as sycl.dll's private dll and will always be loaded from the same directory.
85
85
# 0x2000: LOAD_LIBRARY_SAFE_CURRENT_DIRS flag. Using this flag means that loading dependency DLLs (of sycl.dll)
86
86
# from the current directory is only allowed if it is under a directory in the Safe load list.
@@ -92,6 +92,16 @@ function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME)
92
92
if (WIN32 )
93
93
target_compile_definitions (${LIB_OBJ_NAME} PRIVATE __SYCL_BUILD_SYCL_DLL )
94
94
target_link_libraries (${LIB_NAME} PRIVATE shlwapi )
95
+ if (ARG_IMPLIB_NAME )
96
+ add_custom_command (
97
+ TARGET ${LIB_NAME} POST_BUILD
98
+ COMMAND ${CMAKE_COMMAND} -E copy
99
+ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /${LIB_NAME}.lib ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /${ARG_IMPLIB_NAME}.lib
100
+ COMMENT "Creating version-agnostic copy of the import library." )
101
+ install (
102
+ FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /${ARG_IMPLIB_NAME}.lib
103
+ DESTINATION "lib${LLVM_LIBDIR_SUFFIX} " COMPONENT sycl )
104
+ endif ()
95
105
endif ()
96
106
97
107
if (MSVC )
@@ -277,14 +287,14 @@ if (MSVC)
277
287
278
288
set (WIN_DUPE "1" )
279
289
if (SYCL_ENABLE_XPTI_TRACING )
280
- add_sycl_rt_library (sycl${SYCL_MAJOR_VERSION}d sycld_object XPTI_LIB xptid COMPILE_OPTIONS "/MDd" SOURCES ${SYCL_NON_PREVIEW_SOURCES} )
290
+ add_sycl_rt_library (sycl${SYCL_MAJOR_VERSION}d sycld_object XPTI_LIB xptid COMPILE_OPTIONS "/MDd" SOURCES ${SYCL_NON_PREVIEW_SOURCES} IMPLIB_NAME sycld )
281
291
if (SYCL_ENABLE_MAJOR_RELEASE_PREVIEW_LIB )
282
- add_sycl_rt_library (sycl${SYCL_MAJOR_VERSION}-previewd sycl-previewd_object XPTI_LIB xptid COMPILE_OPTIONS "/MDd" "/D__INTEL_PREVIEW_BREAKING_CHANGES" SOURCES ${SYCL_PREVIEW_SOURCES} )
292
+ add_sycl_rt_library (sycl${SYCL_MAJOR_VERSION}-previewd sycl-previewd_object XPTI_LIB xptid COMPILE_OPTIONS "/MDd" "/D__INTEL_PREVIEW_BREAKING_CHANGES" SOURCES ${SYCL_PREVIEW_SOURCES} IMPLIB_NAME sycl-previewd )
283
293
endif ()
284
294
else ()
285
- add_sycl_rt_library (sycl${SYCL_MAJOR_VERSION}d sycld_object COMPILE_OPTIONS "/MDd" SOURCES ${SYCL_NON_PREVIEW_SOURCES} )
295
+ add_sycl_rt_library (sycl${SYCL_MAJOR_VERSION}d sycld_object COMPILE_OPTIONS "/MDd" SOURCES ${SYCL_NON_PREVIEW_SOURCES} IMPLIB_NAME sycld )
286
296
if (SYCL_ENABLE_MAJOR_RELEASE_PREVIEW_LIB )
287
- add_sycl_rt_library (sycl${SYCL_MAJOR_VERSION}-previewd sycl-previewd_object COMPILE_OPTIONS "/MDd" "/D__INTEL_PREVIEW_BREAKING_CHANGES" SOURCES ${SYCL_PREVIEW_SOURCES} )
297
+ add_sycl_rt_library (sycl${SYCL_MAJOR_VERSION}-previewd sycl-previewd_object COMPILE_OPTIONS "/MDd" "/D__INTEL_PREVIEW_BREAKING_CHANGES" SOURCES ${SYCL_PREVIEW_SOURCES} IMPLIB_NAME sycl-previewd )
288
298
endif ()
289
299
endif ()
290
300
unset (WIN_DUPE )
@@ -307,16 +317,18 @@ set(LIB_NAME "sycl${SYCL_MAJOR_VERSION}")
307
317
else ()
308
318
set (LIB_NAME "sycl" )
309
319
endif ()
320
+ # Version-agnostic name of the import library, has effect on Windows only.
321
+ set (IMPLIB_NAME "sycl" )
310
322
311
323
if (SYCL_ENABLE_XPTI_TRACING )
312
- add_sycl_rt_library (${LIB_NAME} sycl_object XPTI_LIB xpti COMPILE_OPTIONS ${SYCL_EXTRA_OPTS} SOURCES ${SYCL_NON_PREVIEW_SOURCES} )
324
+ add_sycl_rt_library (${LIB_NAME} sycl_object XPTI_LIB xpti COMPILE_OPTIONS ${SYCL_EXTRA_OPTS} SOURCES ${SYCL_NON_PREVIEW_SOURCES} IMPLIB_NAME ${IMPLIB_NAME} )
313
325
if (SYCL_ENABLE_MAJOR_RELEASE_PREVIEW_LIB )
314
- add_sycl_rt_library (${LIB_NAME} -preview sycl-preview_object XPTI_LIB xpti COMPILE_OPTIONS ${SYCL_EXTRA_OPTS} "-D__INTEL_PREVIEW_BREAKING_CHANGES" SOURCES ${SYCL_PREVIEW_SOURCES} )
326
+ add_sycl_rt_library (${LIB_NAME} -preview sycl-preview_object XPTI_LIB xpti COMPILE_OPTIONS ${SYCL_EXTRA_OPTS} "-D__INTEL_PREVIEW_BREAKING_CHANGES" SOURCES ${SYCL_PREVIEW_SOURCES} IMPLIB_NAME ${IMPLIB_NAME} -preview )
315
327
endif ()
316
328
else ()
317
- add_sycl_rt_library (${LIB_NAME} sycl_object COMPILE_OPTIONS ${SYCL_EXTRA_OPTS} SOURCES ${SYCL_NON_PREVIEW_SOURCES} )
329
+ add_sycl_rt_library (${LIB_NAME} sycl_object COMPILE_OPTIONS ${SYCL_EXTRA_OPTS} SOURCES ${SYCL_NON_PREVIEW_SOURCES} IMPLIB_NAME ${IMPLIB_NAME} )
318
330
if (SYCL_ENABLE_MAJOR_RELEASE_PREVIEW_LIB )
319
- add_sycl_rt_library (${LIB_NAME} -preview sycl-preview_object COMPILE_OPTIONS ${SYCL_EXTRA_OPTS} "-D__INTEL_PREVIEW_BREAKING_CHANGES" SOURCES ${SYCL_PREVIEW_SOURCES} )
331
+ add_sycl_rt_library (${LIB_NAME} -preview sycl-preview_object COMPILE_OPTIONS ${SYCL_EXTRA_OPTS} "-D__INTEL_PREVIEW_BREAKING_CHANGES" SOURCES ${SYCL_PREVIEW_SOURCES} IMPLIB_NAME ${IMPLIB_NAME} -preview )
320
332
endif ()
321
333
endif ()
322
334
0 commit comments