Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 114 additions & 0 deletions llvm/0003-LLVM-Cygwin-Fix-llvm-config-shared-library-names.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
From 5cb3c0bc6beeb169ab08ffc7da8a78276f254c25 Mon Sep 17 00:00:00 2001
From: Jeremy Drake <[email protected]>
Date: Mon, 21 Apr 2025 10:37:40 -0700
Subject: [PATCH 17/17] [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.
---
llvm/cmake/modules/AddLLVM.cmake | 4 ++--
llvm/tools/llvm-config/BuildVariables.inc.in | 1 +
llvm/tools/llvm-config/CMakeLists.txt | 1 +
llvm/tools/llvm-config/llvm-config.cpp | 9 ++++++---
llvm/tools/llvm-shlib/CMakeLists.txt | 2 +-
5 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake
index 7e1449e1a..93ce51e69 100644
--- a/llvm/cmake/modules/AddLLVM.cmake
+++ b/llvm/cmake/modules/AddLLVM.cmake
@@ -750,7 +750,7 @@ function(llvm_add_library name)
set(library_name ${output_name}-${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX})
set(api_name ${output_name}-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX})
set_target_properties(${name} PROPERTIES OUTPUT_NAME ${library_name})
- if(UNIX)
+ if(UNIX AND NOT CYGWIN)
llvm_install_library_symlink(${api_name} ${library_name} SHARED
COMPONENT ${name})
llvm_install_library_symlink(${output_name} ${library_name} SHARED
@@ -2241,7 +2241,7 @@ function(llvm_install_library_symlink name dest type)
endif()

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

diff --git a/llvm/tools/llvm-config/BuildVariables.inc.in b/llvm/tools/llvm-config/BuildVariables.inc.in
index 370005cd8..e4e1d449b 100644
--- a/llvm/tools/llvm-config/BuildVariables.inc.in
+++ b/llvm/tools/llvm-config/BuildVariables.inc.in
@@ -35,3 +35,4 @@
#define LLVM_DYLIB_COMPONENTS "@LLVM_DYLIB_COMPONENTS_expanded@"
#define LLVM_DYLIB_VERSION "@LLVM_DYLIB_VERSION@"
#define LLVM_TOOLS_INSTALL_DIR "@LLVM_TOOLS_INSTALL_DIR@"
+#define LLVM_SHARED_LIBRARY_PREFIX "@LLVM_SHARED_LIBRARY_PREFIX@"
diff --git a/llvm/tools/llvm-config/CMakeLists.txt b/llvm/tools/llvm-config/CMakeLists.txt
index 02c2532db..3a8f40b9c 100644
--- a/llvm/tools/llvm-config/CMakeLists.txt
+++ b/llvm/tools/llvm-config/CMakeLists.txt
@@ -65,6 +65,7 @@ set(LLVM_CXXFLAGS "${CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ${L
set(LLVM_BUILD_SYSTEM cmake)
set(LLVM_HAS_RTTI ${LLVM_CONFIG_HAS_RTTI})
set(LLVM_DYLIB_VERSION "${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}")
+set(LLVM_SHARED_LIBRARY_PREFIX "${CMAKE_SHARED_LIBRARY_PREFIX}")

# Use the C++ link flags, since they should be a superset of C link flags.
set(LLVM_LDFLAGS "${CMAKE_CXX_LINK_FLAGS}")
diff --git a/llvm/tools/llvm-config/llvm-config.cpp b/llvm/tools/llvm-config/llvm-config.cpp
index d5b76b1bb..a54538bb5 100644
--- a/llvm/tools/llvm-config/llvm-config.cpp
+++ b/llvm/tools/llvm-config/llvm-config.cpp
@@ -390,7 +390,7 @@ int main(int argc, char **argv) {
SharedExt = "dll";
SharedVersionedExt = LLVM_DYLIB_VERSION ".dll";
if (HostTriple.isOSCygMing()) {
- SharedPrefix = "lib";
+ SharedPrefix = LLVM_SHARED_LIBRARY_PREFIX;
StaticExt = "a";
StaticPrefix = "lib";
} else {
@@ -454,7 +454,7 @@ int main(int argc, char **argv) {
/// extension. Returns true if Lib is in a recognized format.
auto GetComponentLibraryNameSlice = [&](const StringRef &Lib,
StringRef &Out) {
- if (Lib.starts_with("lib")) {
+ if (Lib.starts_with(StaticPrefix) || Lib.starts_with(SharedPrefix)) {
unsigned FromEnd;
if (Lib.ends_with(StaticExt)) {
FromEnd = StaticExt.size() + 1;
@@ -465,7 +465,10 @@ int main(int argc, char **argv) {
}

if (FromEnd != 0) {
- Out = Lib.slice(3, Lib.size() - FromEnd);
+ unsigned FromStart = Lib.starts_with(SharedPrefix)
+ ? SharedPrefix.size()
+ : StaticPrefix.size();
+ Out = Lib.slice(FromStart, Lib.size() - FromEnd);
return true;
}
}
diff --git a/llvm/tools/llvm-shlib/CMakeLists.txt b/llvm/tools/llvm-shlib/CMakeLists.txt
index 9ad6154ae..64492f9db 100644
--- a/llvm/tools/llvm-shlib/CMakeLists.txt
+++ b/llvm/tools/llvm-shlib/CMakeLists.txt
@@ -33,7 +33,7 @@ if(LLVM_BUILD_LLVM_DYLIB)
if (LLVM_LINK_LLVM_DYLIB)
set(INSTALL_WITH_TOOLCHAIN INSTALL_WITH_TOOLCHAIN)
endif()
- if (WIN32)
+ if (WIN32 OR CYGWIN)
add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${INSTALL_WITH_TOOLCHAIN} ${SOURCES})
else()
add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB OUTPUT_NAME LLVM ${INSTALL_WITH_TOOLCHAIN} ${SOURCES})
--
2.49.0.windows.1

Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
From b6b6d01ec5c84ba11bc797e185e915e701699532 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mateusz=20Miku=C5=82a?= <[email protected]>
Date: Sat, 5 Apr 2025 13:18:35 +0200
Subject: [PATCH 17/17] [LLVM][Cygwin] Fix Signals compatibility with Cygwin
API

---
llvm/lib/Support/Unix/Signals.inc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/lib/Support/Unix/Signals.inc b/llvm/lib/Support/Unix/Signals.inc
index 2e7b467a1..4f8010ca2 100644
--- a/llvm/lib/Support/Unix/Signals.inc
+++ b/llvm/lib/Support/Unix/Signals.inc
@@ -842,7 +842,7 @@ void llvm::sys::PrintStackTrace(raw_ostream &OS, int Depth) {

const char *name = strrchr(dlinfo.dli_fname, '/');
if (!name)
- OS << format(" %-*s", width, dlinfo.dli_fname);
+ OS << format(" %-*s", width, (const char *)dlinfo.dli_fname);
else
OS << format(" %-*s", width, name + 1);

--
2.49.0.windows.1

10 changes: 7 additions & 3 deletions llvm/PKGBUILD
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ _version=20.1.3
_rc=""
_tag=llvmorg-${_version}${_rc}
pkgver=${_version}${_rc/-/}
pkgrel=1
pkgrel=2
pkgdesc="C language family frontend for LLVM"
arch=('i686' 'x86_64')
url="https://llvm.org/"
Expand All @@ -39,6 +39,8 @@ source=("${_url}/llvm-${pkgver}.src.tar.xz"{,.sig}
"${_url}/runtimes-${pkgver}.src.tar.xz"{,.sig}
"0001-LLVM-Cygwin-Fix-symbol-visibility-definition.patch"
"0002-undef-i386.patch"
"0003-LLVM-Cygwin-Fix-llvm-config-shared-library-names.patch"
"0004-LLVM-Cygwin-Fix-Signals-compatibility-with-Cygwin-AP.patch"
"0102-Clang-Cygwin-Enable-few-conditions-that-are-shared-w.patch"
"0103-Clang-Cygwin-Enable-TLS.patch"
"0104-Clang-Cygwin-Fix-symbol-visibility-definition.patch"
Expand Down Expand Up @@ -69,6 +71,8 @@ sha256sums=('e5dc9b9d842c5f79080f67860a084077e163430de1e2cd3a74e8bee86e186751'
'SKIP'
'68053c76fc82309a8a2c6f91ee9344f40d943f5a3078681c9d76388cc901b66b'
'233010fa91dc741ef6a7fd8b864f92766d37b3ce50c5d39811ca883ea6d1d859'
'834ed176bc5bad1dabde4558aa38e768b6d454f82081f1cdedb44163f0962be6'
'6bf8f75ac82b60d13198e206c0cf1bac7cdf1a84dc1db0a86d7686f1c0f346f1'
'a73568d353fd27ff7cae0bdddbced0d0119274a465befe8a0bda6cae4721da0b'
'f93d3b3227ee5958880d070451f92129c62a645e6cdc94bac9a13fa0144b3e23'
'f489cec6ee4a7dcfbe90be4d58fa853d0dfab893d024a8e878074dfab1fd4bfd'
Expand Down Expand Up @@ -126,6 +130,8 @@ prepare() {
cd "${srcdir}"/llvm
apply_git_patch_with_msg 0001-LLVM-Cygwin-Fix-symbol-visibility-definition.patch
apply_git_patch_with_msg 0002-undef-i386.patch
apply_git_patch_with_msg 0003-LLVM-Cygwin-Fix-llvm-config-shared-library-names.patch
apply_git_patch_with_msg 0004-LLVM-Cygwin-Fix-Signals-compatibility-with-Cygwin-AP.patch

# Patch clang
cd "${srcdir}"/clang
Expand Down Expand Up @@ -165,11 +171,9 @@ build() {
-DCOMPILER_RT_BUILD_ORC=OFF
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON
-DLLVM_DEFAULT_TARGET_TRIPLE=${CARCH}-pc-windows-cygnus
-DLLVM_ENABLE_BACKTRACES=OFF
-DLLVM_ENABLE_THREADS=ON
-DLLVM_HOST_TRIPLE=${CARCH}-pc-windows-cygnus
-DLLVM_INCLUDE_BENCHMARKS=OFF
-DLLVM_INCLUDE_EXAMPLES=OFF
-DLLVM_INCLUDE_TESTS=OFF
-DLLVM_USE_SYMLINKS=OFF
-DPython3_EXECUTABLE=/usr/bin/python.exe
Expand Down