]> git.ipfire.org Git - thirdparty/xz.git/commitdiff
CMake: Don't use symbol versioning with static library.
authorLasse Collin <lasse.collin@tukaani.org>
Wed, 23 Nov 2022 22:02:31 +0000 (00:02 +0200)
committerLasse Collin <lasse.collin@tukaani.org>
Thu, 24 Nov 2022 21:50:46 +0000 (23:50 +0200)
CMakeLists.txt

index 62d349ae75fe8a4ecc8081d5be580c725d566530..8288d933ac5c62315821f1aa251bd3b7508f2b97 100644 (file)
@@ -424,9 +424,13 @@ if(WIN32)
         # Disable __declspec(dllimport) when linking against static liblzma.
         target_compile_definitions(liblzma INTERFACE LZMA_API_STATIC)
     endif()
-elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+elseif(BUILD_SHARED_LIBS AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
     # GNU/Linux-specific symbol versioning for shared liblzma.
-    # Note that adding link options doesn't affect static builds.
+    # Note that adding link options doesn't affect static builds
+    # but HAVE_SYMBOL_VERSIONS_LINUX must not be used with static builds
+    # because it would put symbol versions into the static library which
+    # can cause problems. It's clearer if all symver related things are
+    # omitted when not building a shared library.
     target_compile_definitions(liblzma PRIVATE HAVE_SYMBOL_VERSIONS_LINUX)
     target_link_options(liblzma PRIVATE
         "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma_linux.map"
@@ -434,7 +438,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
     set_target_properties(liblzma PROPERTIES
         LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma_linux.map"
     )
-elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+elseif(BUILD_SHARED_LIBS AND CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
     # Symbol versioning for shared liblzma for non-GNU/Linux.
     # FIXME? What about Solaris?
     target_link_options(liblzma PRIVATE