Skip to content

[libunwind] Introduce LIBUNWIND_LIBRARY_VERSION and drop outdated Apple flags #110178

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

ldionne
Copy link
Member

@ldionne ldionne commented Sep 26, 2024

This patch introduces the LIBUNWIND_LIBRARY_VERSION setting to control the dylib version of libunwind. This allows expressing the dylib version in CMake instead of adding custom compiler flags.

As a drive-by, also remove some outdated Apple flags that are not relevant anymore.

…le flags

This patch introduces the LIBUNWIND_LIBRARY_VERSION setting to control
the dylib version of libunwind. This allows expressing the dylib
version in CMake instead of adding custom compiler flags.

As a drive-by, also remove some outdated Apple flags that are not
relevant anymore.
@ldionne ldionne requested a review from a team as a code owner September 26, 2024 22:21
@llvmbot
Copy link
Member

llvmbot commented Sep 26, 2024

@llvm/pr-subscribers-libunwind

Author: Louis Dionne (ldionne)

Changes

This patch introduces the LIBUNWIND_LIBRARY_VERSION setting to control the dylib version of libunwind. This allows expressing the dylib version in CMake instead of adding custom compiler flags.

As a drive-by, also remove some outdated Apple flags that are not relevant anymore.


Full diff: https://github.com/llvm/llvm-project/pull/110178.diff

2 Files Affected:

  • (modified) libunwind/CMakeLists.txt (+6)
  • (modified) libunwind/src/CMakeLists.txt (+2-11)
diff --git a/libunwind/CMakeLists.txt b/libunwind/CMakeLists.txt
index 28d67b0fef92cc..6903fa583a501d 100644
--- a/libunwind/CMakeLists.txt
+++ b/libunwind/CMakeLists.txt
@@ -66,6 +66,12 @@ cmake_dependent_option(LIBUNWIND_INSTALL_SHARED_LIBRARY
   "Install the shared libunwind library." ON
   "LIBUNWIND_ENABLE_SHARED;LIBUNWIND_INSTALL_LIBRARY" OFF)
 
+set(LIBUNWIND_LIBRARY_VERSION "1.0" CACHE STRING
+  "Version of libunwind. This will be reflected in the name of the shared library produced.
+   For example, -DLIBUNWIND_LIBRARY_VERSION=x.y will result in the library being named
+   libunwind.x.y.dylib, along with the usual symlinks pointing to that. On Apple platforms,
+   this also controls the linker's 'current_version' property.")
+
 if(MINGW)
   set(LIBUNWIND_DEFAULT_TEST_CONFIG "llvm-libunwind-mingw.cfg.in")
 elseif (LIBUNWIND_ENABLE_SHARED)
diff --git a/libunwind/src/CMakeLists.txt b/libunwind/src/CMakeLists.txt
index 780430ba70ba60..125cf4ffe912a3 100644
--- a/libunwind/src/CMakeLists.txt
+++ b/libunwind/src/CMakeLists.txt
@@ -105,15 +105,6 @@ if (LIBUNWIND_ENABLE_SHARED AND
           "on C++ ABI library is not supported.")
 endif()
 
-if (APPLE)
-  add_compile_flags("-U__STRICT_ANSI__")
-  add_link_flags("-compatibility_version 1" "-install_name /usr/lib/libunwind.1.dylib")
-
-  if (CMAKE_OSX_DEPLOYMENT_TARGET STREQUAL "10.6")
-    add_link_flags("-current_version ${LIBUNWIND_VERSION}" "/usr/lib/libSystem.B.dylib")
-  endif ()
-endif ()
-
 if (HAIKU)
   add_library_flags_if(LIBUNWIND_HAS_ROOT_LIB root)
 
@@ -170,8 +161,8 @@ if (LIBUNWIND_ENABLE_SHARED)
       LINK_FLAGS "${LIBUNWIND_LINK_FLAGS}"
       LINKER_LANGUAGE C
       OUTPUT_NAME "${LIBUNWIND_SHARED_OUTPUT_NAME}"
-      VERSION "1.0"
-      SOVERSION "1"
+      VERSION     "${LIBUNWIND_LIBRARY_VERSION}"
+      SOVERSION   "1"
   )
 
   list(APPEND LIBUNWIND_BUILD_TARGETS "unwind_shared")

@ldionne ldionne merged commit 3527e83 into llvm:main Sep 27, 2024
61 checks passed
@ldionne ldionne deleted the review/libunwind-introduce-LIBUNWIND_LIBRARY_VERSION branch September 27, 2024 13:17
Sterling-Augustine pushed a commit to Sterling-Augustine/llvm-project that referenced this pull request Sep 27, 2024
…le flags (llvm#110178)

This patch introduces the LIBUNWIND_LIBRARY_VERSION setting to control
the dylib version of libunwind. This allows expressing the dylib version
in CMake instead of adding custom compiler flags.

As a drive-by, also remove some outdated Apple flags that are not
relevant anymore.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants