Skip to content

Commit 30308d5

Browse files
committed
[LLVM][Cygwin] Fix llvm-config shared library names
Add a new variable to BuildVariables to have CMake's shared library prefix, to avoid having to patch between "cyg" and "msys-" on MSYS2. Override LLVM_DYLIB_VERSION on Cygwin to include minor version, though I don't really understand why that isn't an issue on any other platform.
1 parent 2667845 commit 30308d5

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

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

Lines changed: 1 addition & 0 deletions
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 "@CMAKE_SHARED_LIBRARY_PREFIX@"

llvm/tools/llvm-config/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,11 @@ set(LLVM_CFLAGS "${LLVM_C_STD_FLAG} ${LLVM_DEFINITIONS}")
6464
set(LLVM_CXXFLAGS "${CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ${LLVM_CXX_STDLIB_FLAG} ${COMPILE_FLAGS} ${LLVM_DEFINITIONS}")
6565
set(LLVM_BUILD_SYSTEM cmake)
6666
set(LLVM_HAS_RTTI ${LLVM_CONFIG_HAS_RTTI})
67-
set(LLVM_DYLIB_VERSION "${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}")
67+
if(CYGWIN)
68+
set(LLVM_DYLIB_VERSION "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}${LLVM_VERSION_SUFFIX}")
69+
else()
70+
set(LLVM_DYLIB_VERSION "${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}")
71+
endif()
6872

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

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

Lines changed: 9 additions & 3 deletions
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,18 +454,24 @@ 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;
461+
} else if (HostTriple.isWindowsCygwinEnvironment() &&
462+
Lib.ends_with(SharedVersionedExt)) {
463+
FromEnd = SharedVersionedExt.size() + 1;
461464
} else if (Lib.ends_with(SharedExt)) {
462465
FromEnd = SharedExt.size() + 1;
463466
} else {
464467
FromEnd = 0;
465468
}
466469

467470
if (FromEnd != 0) {
468-
Out = Lib.slice(3, Lib.size() - FromEnd);
471+
unsigned FromStart = Lib.starts_with(SharedPrefix)
472+
? SharedPrefix.size()
473+
: StaticPrefix.size();
474+
Out = Lib.slice(FromStart, Lib.size() - FromEnd);
469475
return true;
470476
}
471477
}

0 commit comments

Comments
 (0)