Skip to content

Commit b092049

Browse files
committed
[LLVM][Cygwin] Fix llvm shared library name
Treat Cygwin like WIN32 in llvm-shlib for naming the library. Don't create shlib symlinks on Cygwin, they don't help anything there, but teach llvm_install_library_symlink that Cygwin's shared libraries live in BINDIR like WIN32. 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 b092049

File tree

5 files changed

+11
-6
lines changed

5 files changed

+11
-6
lines changed

llvm/cmake/modules/AddLLVM.cmake

+2-2
Original file line numberDiff line numberDiff line change
@@ -750,7 +750,7 @@ function(llvm_add_library name)
750750
set(library_name ${output_name}-${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX})
751751
set(api_name ${output_name}-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX})
752752
set_target_properties(${name} PROPERTIES OUTPUT_NAME ${library_name})
753-
if(UNIX)
753+
if(UNIX AND NOT CYGWIN)
754754
llvm_install_library_symlink(${api_name} ${library_name} SHARED
755755
COMPONENT ${name})
756756
llvm_install_library_symlink(${output_name} ${library_name} SHARED
@@ -2259,7 +2259,7 @@ function(llvm_install_library_symlink name dest type)
22592259
endif()
22602260

22612261
set(output_dir lib${LLVM_LIBDIR_SUFFIX})
2262-
if(WIN32 AND "${type}" STREQUAL "SHARED")
2262+
if((WIN32 OR CYGWIN) AND "${type}" STREQUAL "SHARED")
22632263
set(output_dir "${CMAKE_INSTALL_BINDIR}")
22642264
endif()
22652265

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)