]> git.ipfire.org Git - thirdparty/xz.git/commitdiff
CMake: Build lzmadec.
authorLasse Collin <lasse.collin@tukaani.org>
Sat, 17 Feb 2024 13:35:35 +0000 (15:35 +0200)
committerLasse Collin <lasse.collin@tukaani.org>
Mon, 19 Feb 2024 10:21:37 +0000 (12:21 +0200)
CMakeLists.txt

index fae52cd186e76f94ec79ede46b238c28dc48e705..043c31518a8155ba36f767bf2f02a35fdd48935f 100644 (file)
@@ -25,6 +25,7 @@
 #   - liblzma_Development
 #   - xz (on some platforms only)
 #   - xzdec (on some platforms only)
+#   - lzmadec (on some platforms only)
 #
 # To find the target liblzma::liblzma from other packages, use the CONFIG
 # option with find_package() to avoid a conflict with the FindLibLZMA module
@@ -772,7 +773,7 @@ endif()
 set(SUPPORTED_SANDBOX_METHODS ON OFF capsicum pledge landlock)
 
 set(ENABLE_SANDBOX ON CACHE STRING
-    "Sandboxing method to use in 'xz' and 'xzdec'")
+    "Sandboxing method to use in 'xz', 'xzdec', and 'lzmadec'")
 
 set_property(CACHE ENABLE_SANDBOX
                 PROPERTY STRINGS "${SUPPORTED_SANDBOX_METHODS}")
@@ -1387,50 +1388,57 @@ endif()
 
 
 #############################################################################
-# xzdec
+# xzdec and lzmadec
 #############################################################################
 
 if(HAVE_DECODERS AND (NOT MSVC OR MSVC_VERSION GREATER_EQUAL 1900))
-    add_executable(xzdec
-        src/common/sysdefs.h
-        src/common/tuklib_common.h
-        src/common/tuklib_config.h
-        src/common/tuklib_exit.c
-        src/common/tuklib_exit.h
-        src/common/tuklib_gettext.h
-        src/common/tuklib_progname.c
-        src/common/tuklib_progname.h
-        src/xzdec/xzdec.c
-    )
+    foreach(XZDEC xzdec lzmadec)
+        add_executable("${XZDEC}"
+            src/common/sysdefs.h
+            src/common/tuklib_common.h
+            src/common/tuklib_config.h
+            src/common/tuklib_exit.c
+            src/common/tuklib_exit.h
+            src/common/tuklib_gettext.h
+            src/common/tuklib_progname.c
+            src/common/tuklib_progname.h
+            src/xzdec/xzdec.c
+        )
 
-    target_include_directories(xzdec PRIVATE
-        src/common
-        src/liblzma/api
-    )
+        target_include_directories("${XZDEC}" PRIVATE
+            src/common
+            src/liblzma/api
+        )
 
-    target_link_libraries(xzdec PRIVATE liblzma libgnu)
+        target_link_libraries("${XZDEC}" PRIVATE liblzma libgnu)
 
-    if(WIN32)
-        # Add the Windows resource file for xzdec.exe.
-        target_sources(xzdec PRIVATE src/xzdec/xzdec_w32res.rc)
-        set_target_properties(xzdec PROPERTIES
-            LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc"
-        )
-    endif()
+        if(WIN32)
+            # Add the Windows resource file for xzdec.exe or lzmadec.exe.
+            target_sources("${XZDEC}" PRIVATE src/xzdec/xzdec_w32res.rc)
+            set_target_properties("${XZDEC}" PROPERTIES
+                LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc"
+            )
+        endif()
 
-    if(SANDBOX_COMPILE_DEFINITION)
-        target_compile_definitions(xzdec PRIVATE
-                                   "${SANDBOX_COMPILE_DEFINITION}")
-    endif()
+        if(SANDBOX_COMPILE_DEFINITION)
+            target_compile_definitions("${XZDEC}" PRIVATE
+                                    "${SANDBOX_COMPILE_DEFINITION}")
+        endif()
 
-    tuklib_progname(xzdec)
+        tuklib_progname("${XZDEC}")
 
-    install(TARGETS xzdec
-            RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
-                    COMPONENT xzdec)
+        install(TARGETS "${XZDEC}"
+                RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+                        COMPONENT "${XZDEC}")
+    endforeach()
+
+    # This is the only build-time difference with lzmadec.
+    target_compile_definitions(lzmadec PRIVATE "LZMADEC")
 
     if(UNIX)
-        my_install_man(xzdec src/xzdec/xzdec.1 "")
+        # FIXME? This puts the lzmadec symlinks into xzdec target.
+        # But doing them separately isn't trivial.
+        my_install_man(xzdec src/xzdec/xzdec.1 lzmadec)
     endif()
 endif()