Skip to content

Commit c8427d6

Browse files
[SYCL] Add MAJOR_VERSION to the name of the sycl library on Win (intel#6745)
1 parent 079494e commit c8427d6

File tree

6 files changed

+46
-26
lines changed

6 files changed

+46
-26
lines changed

clang/lib/Driver/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ if(WIN32)
1616
set(system_libs version)
1717
endif()
1818

19+
# This must be in sync with llvm/sycl/CMakeLists.txt.
20+
SET_SOURCE_FILES_PROPERTIES( ToolChains/MSVC.cpp ToolChains/Clang.cpp
21+
PROPERTIES COMPILE_DEFINITIONS SYCL_MAJOR_VERSION="5" )
22+
1923
add_clang_library(clangDriver
2024
Action.cpp
2125
Compilation.cpp

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8144,9 +8144,9 @@ void Clang::AddClangCLArgs(const ArgList &Args, types::ID InputType,
81448144
if (Args.hasArg(options::OPT_fsycl) &&
81458145
!Args.hasArg(options::OPT_nolibsycl)) {
81468146
if (RTOptionID == options::OPT__SLASH_MDd)
8147-
CmdArgs.push_back("--dependent-lib=sycld");
8147+
CmdArgs.push_back("--dependent-lib=sycl" SYCL_MAJOR_VERSION "d");
81488148
else
8149-
CmdArgs.push_back("--dependent-lib=sycl");
8149+
CmdArgs.push_back("--dependent-lib=sycl" SYCL_MAJOR_VERSION);
81508150
CmdArgs.push_back("--dependent-lib=sycl-devicelib-host");
81518151
}
81528152
}

clang/lib/Driver/ToolChains/MSVC.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,9 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA,
137137
CmdArgs.push_back(Args.MakeArgString(std::string("-libpath:") +
138138
TC.getDriver().Dir + "/../lib"));
139139
if (Args.hasArg(options::OPT_g_Flag))
140-
CmdArgs.push_back("-defaultlib:sycld.lib");
140+
CmdArgs.push_back("-defaultlib:sycl" SYCL_MAJOR_VERSION "d.lib");
141141
else
142-
CmdArgs.push_back("-defaultlib:sycl.lib");
142+
CmdArgs.push_back("-defaultlib:sycl" SYCL_MAJOR_VERSION ".lib");
143143
CmdArgs.push_back("-defaultlib:sycl-devicelib-host.lib");
144144
}
145145

clang/test/Driver/sycl-offload.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -639,35 +639,35 @@
639639
// CHECK-LD-NOSTDLIB: "{{.*}}ld{{(.exe)?}}"
640640
// CHECK-LD-NOSTDLIB-NOT: "-lsycl"
641641

642-
/// Check for default linking of sycl.lib with -fsycl usage
642+
/// Check for default linking of syclN.lib with -fsycl usage
643643
// RUN: %clang -fsycl -target x86_64-unknown-windows-msvc %s -o %t -### 2>&1 | FileCheck -check-prefix=CHECK-LINK-SYCL %s
644644
// RUN: %clang_cl -fsycl %s -o %t -### 2>&1 | FileCheck -check-prefix=CHECK-LINK-SYCL-CL %s
645-
// CHECK-LINK-SYCL-CL: "--dependent-lib=sycl"
646-
// CHECK-LINK-SYCL-CL-NOT: "-defaultlib:sycl.lib"
647-
// CHECK-LINK-SYCL: "-defaultlib:sycl.lib"
645+
// CHECK-LINK-SYCL-CL: "--dependent-lib=sycl{{[0-9]*}}"
646+
// CHECK-LINK-SYCL-CL-NOT: "-defaultlib:sycl{{[0-9]*}}.lib"
647+
// CHECK-LINK-SYCL: "-defaultlib:sycl{{[0-9]*}}.lib"
648648

649649
/// Check no SYCL runtime is linked with -nolibsycl
650650
// RUN: %clang -fsycl -nolibsycl -target x86_64-unknown-windows-msvc %s -o %t -### 2>&1 | FileCheck -check-prefix=CHECK-LINK-NOLIBSYCL %s
651651
// RUN: %clang_cl -fsycl -nolibsycl %s -o %t -### 2>&1 | FileCheck -check-prefix=CHECK-LINK-NOLIBSYCL-CL %s
652-
// CHECK-LINK-NOLIBSYCL-CL-NOT: "--dependent-lib=sycl"
652+
// CHECK-LINK-NOLIBSYCL-CL-NOT: "--dependent-lib=sycl{{[0-9]*}}"
653653
// CHECK-LINK-NOLIBSYCL: "{{.*}}link{{(.exe)?}}"
654-
// CHECK-LINK-NOLIBSYCL-NOT: "-defaultlib:sycl.lib"
654+
// CHECK-LINK-NOLIBSYCL-NOT: "-defaultlib:sycl{{[0-9]*}}.lib"
655655

656656
/// Check SYCL runtime is linked despite -nostdlib on Windows, this is
657657
/// necessary for the Windows Clang CMake to work
658658
// RUN: %clang -fsycl -nostdlib -target x86_64-unknown-windows-msvc %s -o %t -### 2>&1 | FileCheck -check-prefix=CHECK-LINK-NOSTDLIB %s
659659
// RUN: %clang_cl -fsycl -nostdlib %s -o %t -### 2>&1 | FileCheck -check-prefix=CHECK-LINK-NOSTDLIB-CL %s
660-
// CHECK-LINK-NOSTDLIB-CL: "--dependent-lib=sycl"
660+
// CHECK-LINK-NOSTDLIB-CL: "--dependent-lib=sycl{{[0-9]*}}"
661661
// CHECK-LINK-NOSTDLIB: "{{.*}}link{{(.exe)?}}"
662-
// CHECK-LINK-NOSTDLIB: "-defaultlib:sycl.lib"
662+
// CHECK-LINK-NOSTDLIB: "-defaultlib:sycl{{[0-9]*}}.lib"
663663

664664
/// Check sycld.lib is chosen with /MDd or -g
665665
// RUN: %clang -fsycl -g -target x86_64-unknown-windows-msvc %s -o %t -### 2>&1 | FileCheck -check-prefix=CHECK-LINK-SYCL-DEBUG %s
666666
// RUN: %clang_cl -fsycl /MDd %s -o %t -### 2>&1 | FileCheck -check-prefix=CHECK-LINK-SYCL-DEBUG-CL %s
667-
// CHECK-LINK-SYCL-DEBUG-CL: "--dependent-lib=sycld"
668-
// CHECK-LINK-SYCL-DEBUG-CL-NOT: "-defaultlib:sycld.lib"
669-
// CHECK-LINK-SYCL-DEBUG: "-defaultlib:sycld.lib"
670-
// CHECK-LINK-SYCL-DEBUG-NOT: "--dependent-lib=sycld"
667+
// CHECK-LINK-SYCL-DEBUG-CL: "--dependent-lib=sycl{{[0-9]*}}d"
668+
// CHECK-LINK-SYCL-DEBUG-CL-NOT: "-defaultlib:sycl{{[0-9]*}}d.lib"
669+
// CHECK-LINK-SYCL-DEBUG: "-defaultlib:sycl{{[0-9]*}}d.lib"
670+
// CHECK-LINK-SYCL-DEBUG-NOT: "--dependent-lib=sycl{{[0-9]*}}d"
671671

672672
/// Check "-spirv-allow-unknown-intrinsics=llvm.genx." option is emitted for llvm-spirv tool
673673
// RUN: %clangxx %s -fsycl -### 2>&1 | FileCheck %s --check-prefix=CHK-ALLOW-INTRIN

sycl/CMakeLists.txt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ include(AddSYCLExecutable)
2525
include(AddSYCL)
2626
include(SYCLUtils)
2727

28+
# The change in SYCL_MAJOR_VERSION must be accompanied with the same update in
29+
# llvm/clang/lib/Driver/CMakeLists.txt.
2830
set(SYCL_MAJOR_VERSION 5)
2931
set(SYCL_MINOR_VERSION 7)
3032
set(SYCL_PATCH_VERSION 0)
@@ -201,9 +203,14 @@ install(DIRECTORY "${sycl_inc_dir}/CL" DESTINATION ${SYCL_INCLUDE_DIR}/sycl COMP
201203
install(DIRECTORY "${sycl_inc_dir}/std" DESTINATION ${SYCL_INCLUDE_DIR} COMPONENT sycl-headers)
202204
install(DIRECTORY ${BOOST_MP11_DESTINATION_DIR} DESTINATION ${SYCL_INCLUDE_DIR}/sycl/detail COMPONENT boost_mp11-headers)
203205

204-
set(SYCL_RT_LIBS sycl)
205-
if (MSVC)
206-
list(APPEND SYCL_RT_LIBS sycld)
206+
if (WIN32)
207+
set(SYCL_RT_LIBS sycl${SYCL_MAJOR_VERSION})
208+
# Do we really support non-MSVC ABI on WIN?
209+
if (MSVC)
210+
list(APPEND SYCL_RT_LIBS sycl${SYCL_MAJOR_VERSION}d)
211+
endif()
212+
else()
213+
set(SYCL_RT_LIBS sycl)
207214
endif()
208215

209216
# This function allows building multiple libraries with the same options.

sycl/source/CMakeLists.txt

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,11 @@ if (SYCL_ENABLE_XPTI_TRACING)
1616
include_directories(${LLVM_EXTERNAL_XPTI_SOURCE_DIR}/include)
1717
endif()
1818

19-
function(add_sycl_rt_library LIB_NAME)
19+
function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME)
2020
# Add an optional argument so we can get the library name to
2121
# link with for Windows Debug version
2222
cmake_parse_arguments(ARG "" "XPTI_LIB" "COMPILE_OPTIONS;SOURCES" ${ARGN})
2323

24-
set(LIB_OBJ_NAME ${LIB_NAME}_object)
25-
2624
add_library(${LIB_OBJ_NAME} OBJECT ${ARG_SOURCES})
2725
add_library(${LIB_NAME} SHARED
2826
$<TARGET_OBJECTS:${LIB_OBJ_NAME}>
@@ -201,18 +199,29 @@ if (MSVC)
201199
endforeach()
202200

203201
if (SYCL_ENABLE_XPTI_TRACING)
204-
add_sycl_rt_library(sycld XPTI_LIB xptid COMPILE_OPTIONS "/MDd" SOURCES ${SYCL_SOURCES})
202+
add_sycl_rt_library(sycl${SYCL_MAJOR_VERSION}d sycld_object XPTI_LIB xptid COMPILE_OPTIONS "/MDd" SOURCES ${SYCL_SOURCES})
205203
else()
206-
add_sycl_rt_library(sycld COMPILE_OPTIONS "/MDd" SOURCES ${SYCL_SOURCES})
204+
add_sycl_rt_library(sycl${SYCL_MAJOR_VERSION}d sycld_object COMPILE_OPTIONS "/MDd" SOURCES ${SYCL_SOURCES})
207205
endif()
206+
add_library(sycld ALIAS sycl${SYCL_MAJOR_VERSION}d)
208207

209208
set(SYCL_EXTRA_OPTS "/MD")
210209
endif()
211210

211+
if (WIN32)
212+
set(LIB_NAME "sycl${SYCL_MAJOR_VERSION}")
213+
else()
214+
set(LIB_NAME "sycl")
215+
endif()
216+
212217
if (SYCL_ENABLE_XPTI_TRACING)
213-
add_sycl_rt_library(sycl XPTI_LIB xpti COMPILE_OPTIONS ${SYCL_EXTRA_OPTS} SOURCES ${SYCL_SOURCES})
218+
add_sycl_rt_library(${LIB_NAME} sycl_object XPTI_LIB xpti COMPILE_OPTIONS ${SYCL_EXTRA_OPTS} SOURCES ${SYCL_SOURCES})
214219
else()
215-
add_sycl_rt_library(sycl COMPILE_OPTIONS ${SYCL_EXTRA_OPTS} SOURCES ${SYCL_SOURCES})
220+
add_sycl_rt_library(${LIB_NAME} sycl_object COMPILE_OPTIONS ${SYCL_EXTRA_OPTS} SOURCES ${SYCL_SOURCES})
221+
endif()
222+
223+
if (WIN32)
224+
add_library(sycl ALIAS ${LIB_NAME})
216225
endif()
217226

218227
install(TARGETS ${SYCL_RT_LIBS}

0 commit comments

Comments
 (0)