Skip to content

Commit 21e05f7

Browse files
committed
[LLVM][Cygwin] Fix llvm shared library name
Treat Cygwin like WIN32 in llvm-shlib for naming the library. Add a new variable to BuildVariables to have CMake's shared library prefix, to avoid having to patch between "cyg" and "msys-" on MSYS2.
1 parent 2667845 commit 21e05f7

File tree

4 files changed

+9
-4
lines changed

4 files changed

+9
-4
lines changed

llvm/tools/llvm-config/BuildVariables.inc.in

+1
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,4 @@
3535
#define LLVM_DYLIB_COMPONENTS "@LLVM_DYLIB_COMPONENTS_expanded@"
3636
#define LLVM_DYLIB_VERSION "@LLVM_DYLIB_VERSION@"
3737
#define LLVM_TOOLS_INSTALL_DIR "@LLVM_TOOLS_INSTALL_DIR@"
38+
#define LLVM_SHARED_LIBRARY_PREFIX "@LLVM_SHARED_LIBRARY_PREFIX@"

llvm/tools/llvm-config/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ set(LLVM_CXXFLAGS "${CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ${L
6565
set(LLVM_BUILD_SYSTEM cmake)
6666
set(LLVM_HAS_RTTI ${LLVM_CONFIG_HAS_RTTI})
6767
set(LLVM_DYLIB_VERSION "${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}")
68+
set(LLVM_SHARED_LIBRARY_PREFIX "${CMAKE_SHARED_LIBRARY_PREFIX}")
6869

6970
# Use the C++ link flags, since they should be a superset of C link flags.
7071
set(LLVM_LDFLAGS "${CMAKE_CXX_LINK_FLAGS}")

llvm/tools/llvm-config/llvm-config.cpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ int main(int argc, char **argv) {
390390
SharedExt = "dll";
391391
SharedVersionedExt = LLVM_DYLIB_VERSION ".dll";
392392
if (HostTriple.isOSCygMing()) {
393-
SharedPrefix = "lib";
393+
SharedPrefix = LLVM_SHARED_LIBRARY_PREFIX;
394394
StaticExt = "a";
395395
StaticPrefix = "lib";
396396
} else {
@@ -454,7 +454,7 @@ int main(int argc, char **argv) {
454454
/// extension. Returns true if Lib is in a recognized format.
455455
auto GetComponentLibraryNameSlice = [&](const StringRef &Lib,
456456
StringRef &Out) {
457-
if (Lib.starts_with("lib")) {
457+
if (Lib.starts_with(StaticPrefix) || Lib.starts_with(SharedPrefix)) {
458458
unsigned FromEnd;
459459
if (Lib.ends_with(StaticExt)) {
460460
FromEnd = StaticExt.size() + 1;
@@ -465,7 +465,10 @@ int main(int argc, char **argv) {
465465
}
466466

467467
if (FromEnd != 0) {
468-
Out = Lib.slice(3, Lib.size() - FromEnd);
468+
unsigned FromStart = Lib.starts_with(SharedPrefix)
469+
? SharedPrefix.size()
470+
: StaticPrefix.size();
471+
Out = Lib.slice(FromStart, Lib.size() - FromEnd);
469472
return true;
470473
}
471474
}

llvm/tools/llvm-shlib/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ if(LLVM_BUILD_LLVM_DYLIB)
3333
if (LLVM_LINK_LLVM_DYLIB)
3434
set(INSTALL_WITH_TOOLCHAIN INSTALL_WITH_TOOLCHAIN)
3535
endif()
36-
if (WIN32)
36+
if (WIN32 OR CYGWIN)
3737
add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${INSTALL_WITH_TOOLCHAIN} ${SOURCES})
3838
else()
3939
add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB OUTPUT_NAME LLVM ${INSTALL_WITH_TOOLCHAIN} ${SOURCES})

0 commit comments

Comments
 (0)