[clang] [llvm] [libsycl] Move and rename the shared library (PR #188770)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 7 07:50:13 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-driver
Author: Sergey Semenov (sergey-semenov)
<details>
<summary>Changes</summary>
Align the shared library with other runtime libraries:
- Rename from libsycl.so to libLLVMSYCL.so
- Make build dir independent from LLVM_ENABLE_PER_TARGET_RUNTIME_DIR and install dir dependent on it.
---
Full diff: https://github.com/llvm/llvm-project/pull/188770.diff
10 Files Affected:
- (modified) clang/include/clang/Driver/SyclInstallationDetector.h (+2-2)
- (modified) clang/lib/Driver/ToolChains/Linux.cpp (+2-1)
- (modified) clang/lib/Driver/ToolChains/SYCL.cpp (+6-4)
- (renamed) clang/test/Driver/Inputs/SYCL/libLLVMSYCL.ll ()
- (modified) clang/test/Driver/link-device-code.test (+2-2)
- (modified) clang/test/Driver/sycl-offload-jit.cpp (+2-2)
- (modified) libsycl/CMakeLists.txt (+1-1)
- (modified) libsycl/src/CMakeLists.txt (+2-2)
- (modified) libsycl/test/lit.cfg.py (+1-1)
- (modified) libsycl/tools/sycl-ls/CMakeLists.txt (+1-1)
``````````diff
diff --git a/clang/include/clang/Driver/SyclInstallationDetector.h b/clang/include/clang/Driver/SyclInstallationDetector.h
index f92228817f045..5f40294c026d7 100644
--- a/clang/include/clang/Driver/SyclInstallationDetector.h
+++ b/clang/include/clang/Driver/SyclInstallationDetector.h
@@ -22,8 +22,8 @@ class SYCLInstallationDetector {
void addSYCLIncludeArgs(const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args) const;
- // Return the filesystem path to the SYCL runtime library (libsycl.so), that
- // was detected.
+ // Return the filesystem path to the SYCL runtime library (libLLVMSYCL.so),
+ // that was detected.
StringRef getSYCLRTLibPath() const { return SYCLRTLibPath; }
private:
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
index bde99a3dac860..cf67f984ccdd2 100644
--- a/clang/lib/Driver/ToolChains/Linux.cpp
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
@@ -865,7 +865,8 @@ void Linux::addOffloadRTLibs(unsigned ActiveKinds, const ArgList &Args,
if (ActiveKinds & Action::OFK_HIP)
Libraries.emplace_back(RocmInstallation->getLibPath(), "libamdhip64.so");
else if (ActiveKinds & Action::OFK_SYCL)
- Libraries.emplace_back(SYCLInstallation->getSYCLRTLibPath(), "libsycl.so");
+ Libraries.emplace_back(SYCLInstallation->getSYCLRTLibPath(),
+ "libLLVMSYCL.so");
for (auto [Path, Library] : Libraries) {
if (Args.hasFlag(options::OPT_frtlib_add_rpath,
diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp
index 033fd98183737..53bfdfe4316ae 100644
--- a/clang/lib/Driver/ToolChains/SYCL.cpp
+++ b/clang/lib/Driver/ToolChains/SYCL.cpp
@@ -19,15 +19,17 @@ SYCLInstallationDetector::SYCLInstallationDetector(
const Driver &D, const llvm::Triple &HostTriple,
const llvm::opt::ArgList &Args)
: D(D) {
- // Detect the presence of the SYCL runtime library (libsycl.so) in the
+ // Detect the presence of the SYCL runtime library (libLLVMSYCL.so) in the
// filesystem. This is used to determine whether a usable SYCL installation
// is available for the current driver invocation.
StringRef SysRoot = D.SysRoot;
SmallString<128> DriverDir(D.Dir);
+ SmallString<128> LibPath(DriverDir);
+ llvm::sys::path::append(LibPath, "..", "lib", HostTriple.str(),
+ "libLLVMSYCL.so");
if (DriverDir.starts_with(SysRoot) &&
- (Args.hasArg(options::OPT_fsycl) ||
- D.getVFS().exists(DriverDir + "/../lib/libsycl.so"))) {
- llvm::sys::path::append(DriverDir, "..", "lib");
+ (Args.hasArg(options::OPT_fsycl) || D.getVFS().exists(LibPath))) {
+ llvm::sys::path::append(DriverDir, "..", "lib", HostTriple.str());
SYCLRTLibPath = DriverDir;
}
}
diff --git a/clang/test/Driver/Inputs/SYCL/libsycl.ll b/clang/test/Driver/Inputs/SYCL/libLLVMSYCL.ll
similarity index 100%
rename from clang/test/Driver/Inputs/SYCL/libsycl.ll
rename to clang/test/Driver/Inputs/SYCL/libLLVMSYCL.ll
diff --git a/clang/test/Driver/link-device-code.test b/clang/test/Driver/link-device-code.test
index 231f02b6560e0..eb75eaf1fe5c2 100644
--- a/clang/test/Driver/link-device-code.test
+++ b/clang/test/Driver/link-device-code.test
@@ -3,12 +3,12 @@
# RUN: llvm-as %S/Inputs/SYCL/foo.ll -o %t.foo.bc
# RUN: llvm-as %S/Inputs/SYCL/bar.ll -o %t.bar.bc
# RUN: llvm-as %S/Inputs/SYCL/baz.ll -o %t.baz.bc
-# RUN: llvm-as %S/Inputs/SYCL/libsycl.ll -o %t.libsycl.bc
+# RUN: llvm-as %S/Inputs/SYCL/libLLVMSYCL.ll -o %t.libLLVMSYCL.bc
# RUN: clang-sycl-linker %t.foo.bc %t.bar.bc -triple=spirv64 --dry-run -o a.spv --print-linked-module 2>&1 | FileCheck %s --check-prefix=CHECK-SIMPLE
# RUN: not clang-sycl-linker %t.bar.bc %t.baz.bc -triple=spirv64 --dry-run -o a.spv --print-linked-module 2>&1 | FileCheck %s --check-prefix=CHECK-MULTIPLE-DEFS
-# RUN: clang-sycl-linker %t.foo.bc %t.bar.bc -device-libs=%t.libsycl.bc -library-path= -triple=spirv64 --dry-run -o a.spv --print-linked-module 2>&1 | FileCheck %s --check-prefix=CHECK-DEVICE-LIB
+# RUN: clang-sycl-linker %t.foo.bc %t.bar.bc -device-libs=%t.libLLVMSYCL.bc -library-path= -triple=spirv64 --dry-run -o a.spv --print-linked-module 2>&1 | FileCheck %s --check-prefix=CHECK-DEVICE-LIB
; CHECK-SIMPLE: define {{.*}}foo_func1{{.*}}
; CHECK-SIMPLE: define {{.*}}foo_func2{{.*}}
diff --git a/clang/test/Driver/sycl-offload-jit.cpp b/clang/test/Driver/sycl-offload-jit.cpp
index 5bdb56d935a98..e9b821597f804 100644
--- a/clang/test/Driver/sycl-offload-jit.cpp
+++ b/clang/test/Driver/sycl-offload-jit.cpp
@@ -29,13 +29,13 @@
// CHK-DEVICE-TRIPLE-SAME: "-O2"
// CHK-DEVICE-TRIPLE: llvm-offload-binary{{.*}} "--image=file={{.*}}.bc,triple=spirv64-unknown-unknown,arch=generic,kind=sycl"
-// Check if path to libsycl.so is passed to clang-linker-wrapper tool by default for SYCL compilation.
+// Check if path to libLLVMSYCL.so is passed to clang-linker-wrapper tool by default for SYCL compilation.
// The test also checks if SYCL header include paths are added to the SYCL host and device compilation.
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl %s 2>&1 \
// RUN: | FileCheck -check-prefixes=CHECK-LSYCL,CHECK-SYCL-HEADERS-HOST,CHECK-SYCL-HEADERS-DEVICE %s
// CHECK-SYCL-HEADERS-DEVICE: "-fsycl-is-device"{{.*}} "-internal-isystem" "{{.*}}bin{{[/\\]+}}..{{[/\\]+}}include"
// CHECK-SYCL-HEADERS-HOST: "-fsycl-is-host"{{.*}} "-internal-isystem" "{{.*}}bin{{[/\\]+}}..{{[/\\]+}}include"
-// CHECK-LSYCL: clang-linker-wrapper{{.*}} "{{.*}}bin{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}libsycl.so"
+// CHECK-LSYCL: clang-linker-wrapper{{.*}} "{{.*}}bin{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}x86_64-unknown-linux-gnu{{[/\\]+}}libLLVMSYCL.so"
/// Check -fsycl-is-device is passed when compiling for the device.
/// Check -fsycl-is-host is passed when compiling for host.
diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index d2b0d79ea8e65..ae3fd4359c3f2 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -116,7 +116,7 @@ add_custom_command(
install(DIRECTORY "${LIBSYCL_SOURCE_INCLUDE_DIR}/sycl" DESTINATION ${LIBSYCL_INCLUDE_DIR} COMPONENT sycl-headers)
install(DIRECTORY "${LIBSYCL_SOURCE_INCLUDE_DIR}/CL" DESTINATION ${LIBSYCL_INCLUDE_DIR} COMPONENT sycl-headers)
-set(LIBSYCL_LIB_NAME "sycl")
+set(LIBSYCL_LIB_NAME "LLVMSYCL")
set(LIBSYCL_SHARED_OUTPUT_NAME "${LIBSYCL_LIB_NAME}")
if (CMAKE_SYSTEM_NAME STREQUAL Windows)
if (CMAKE_MSVC_RUNTIME_LIBRARY AND (NOT CMAKE_MSVC_RUNTIME_LIBRARY MATCHES "DLL$"))
diff --git a/libsycl/src/CMakeLists.txt b/libsycl/src/CMakeLists.txt
index 4501005e433e3..3e5da7bb086fe 100644
--- a/libsycl/src/CMakeLists.txt
+++ b/libsycl/src/CMakeLists.txt
@@ -109,6 +109,6 @@ add_sycl_rt_library(${LIBSYCL_LIB_NAME}
${LIBSYCL_SOURCES})
install(TARGETS ${LIBSYCL_RT_LIBS}
- ARCHIVE DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT libsycl
- LIBRARY DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT libsycl
+ ARCHIVE DESTINATION ${LIBSYCL_INSTALL_LIBRARY_DIR} COMPONENT libsycl
+ LIBRARY DESTINATION ${LIBSYCL_INSTALL_LIBRARY_DIR} COMPONENT libsycl
RUNTIME DESTINATION "bin" COMPONENT libsycl)
diff --git a/libsycl/test/lit.cfg.py b/libsycl/test/lit.cfg.py
index 67ab5d2e83294..377be90791ef0 100644
--- a/libsycl/test/lit.cfg.py
+++ b/libsycl/test/lit.cfg.py
@@ -117,7 +117,7 @@ def __exit__(self, exc_type, exc_value, exc_traceback):
config.substitutions.append(
(
"%sycl_options",
- " -lsycl"
+ " -lLLVMSYCL"
+ " -isystem "
+ config.libsycl_include
+ " -isystem "
diff --git a/libsycl/tools/sycl-ls/CMakeLists.txt b/libsycl/tools/sycl-ls/CMakeLists.txt
index 82eb3e644e5b1..e34ba77c88c37 100644
--- a/libsycl/tools/sycl-ls/CMakeLists.txt
+++ b/libsycl/tools/sycl-ls/CMakeLists.txt
@@ -3,7 +3,7 @@ add_executable(sycl-ls sycl-ls.cpp)
target_include_directories(sycl-ls SYSTEM PRIVATE ${LLVM_MAIN_INCLUDE_DIR})
target_link_libraries(sycl-ls PRIVATE LLVMSupport LLVMObject)
-add_dependencies(sycl-ls sycl)
+add_dependencies(sycl-ls ${LIBSYCL_LIB_NAME})
target_include_directories(sycl-ls PRIVATE ${LIBSYCL_BUILD_INCLUDE_DIR})
target_link_libraries(sycl-ls
``````````
</details>
https://github.com/llvm/llvm-project/pull/188770
More information about the cfe-commits
mailing list