]> git.ipfire.org Git - thirdparty/xz.git/commitdiff
CMake: Update for liblzma_*.map files and fix wrong common_w32res.rc dep.
authorLasse Collin <lasse.collin@tukaani.org>
Thu, 8 Sep 2022 12:02:41 +0000 (15:02 +0300)
committerLasse Collin <lasse.collin@tukaani.org>
Fri, 16 Sep 2022 12:32:55 +0000 (15:32 +0300)
The previous commit split liblzma.map into liblzma_linux.map and
liblzma_generic.map. This commit updates the CMake build for those.

common_w32res.rc dependency was listed under Linux/FreeBSD while
obviously it belongs to Windows when building a DLL.

CMakeLists.txt

index cf42055cdb2981788a1772342fc170e17991230d..90939c2b4f114d5ec22255d74798e13daa63a919 100644 (file)
@@ -414,20 +414,34 @@ if(WIN32)
         # Add the Windows resource file for liblzma.dll.
         target_sources(liblzma PRIVATE src/liblzma/liblzma_w32res.rc)
 
+        set_target_properties(liblzma PROPERTIES
+            LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc"
+        )
+
         # Export the public API symbols with __declspec(dllexport).
         target_compile_definitions(liblzma PRIVATE DLL_EXPORT)
     else()
         # Disable __declspec(dllimport) when linking against static liblzma.
         target_compile_definitions(liblzma INTERFACE LZMA_API_STATIC)
     endif()
-elseif(CMAKE_SYSTEM_NAME MATCHES "^Linux$|^FreeBSD$")
-    # Symbol versioning for shared liblzma. This doesn't affect static builds.
+elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+    # GNU/Linux-specific symbol versioning for shared liblzma.
+    # Note that adding link options doesn't affect static builds.
+    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"
+    )
+    set_target_properties(liblzma PROPERTIES
+        LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma_linux.map"
+    )
+elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+    # Symbol versioning for shared liblzma for non-GNU/Linux.
+    # FIXME? What about Solaris?
     target_link_options(liblzma PRIVATE
-        "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma.map"
+        "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma_generic.map"
     )
     set_target_properties(liblzma PROPERTIES
-        LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma.map"
-        LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc"
+        LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma_generic.map"
     )
 endif()