CMake: Build lzmadec.

This commit is contained in:
Lasse Collin 2024-02-17 15:35:35 +02:00
parent 74e8bc7417
commit 998d0b2953
1 changed files with 44 additions and 36 deletions

View File

@ -25,6 +25,7 @@
# - liblzma_Development # - liblzma_Development
# - xz (on some platforms only) # - xz (on some platforms only)
# - xzdec (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 # To find the target liblzma::liblzma from other packages, use the CONFIG
# option with find_package() to avoid a conflict with the FindLibLZMA module # 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(SUPPORTED_SANDBOX_METHODS ON OFF capsicum pledge landlock)
set(ENABLE_SANDBOX ON CACHE STRING 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 set_property(CACHE ENABLE_SANDBOX
PROPERTY STRINGS "${SUPPORTED_SANDBOX_METHODS}") PROPERTY STRINGS "${SUPPORTED_SANDBOX_METHODS}")
@ -1387,11 +1388,12 @@ endif()
############################################################################# #############################################################################
# xzdec # xzdec and lzmadec
############################################################################# #############################################################################
if(HAVE_DECODERS AND (NOT MSVC OR MSVC_VERSION GREATER_EQUAL 1900)) if(HAVE_DECODERS AND (NOT MSVC OR MSVC_VERSION GREATER_EQUAL 1900))
add_executable(xzdec foreach(XZDEC xzdec lzmadec)
add_executable("${XZDEC}"
src/common/sysdefs.h src/common/sysdefs.h
src/common/tuklib_common.h src/common/tuklib_common.h
src/common/tuklib_config.h src/common/tuklib_config.h
@ -1403,34 +1405,40 @@ if(HAVE_DECODERS AND (NOT MSVC OR MSVC_VERSION GREATER_EQUAL 1900))
src/xzdec/xzdec.c src/xzdec/xzdec.c
) )
target_include_directories(xzdec PRIVATE target_include_directories("${XZDEC}" PRIVATE
src/common src/common
src/liblzma/api src/liblzma/api
) )
target_link_libraries(xzdec PRIVATE liblzma libgnu) target_link_libraries("${XZDEC}" PRIVATE liblzma libgnu)
if(WIN32) if(WIN32)
# Add the Windows resource file for xzdec.exe. # Add the Windows resource file for xzdec.exe or lzmadec.exe.
target_sources(xzdec PRIVATE src/xzdec/xzdec_w32res.rc) target_sources("${XZDEC}" PRIVATE src/xzdec/xzdec_w32res.rc)
set_target_properties(xzdec PROPERTIES set_target_properties("${XZDEC}" PROPERTIES
LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc" LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc"
) )
endif() endif()
if(SANDBOX_COMPILE_DEFINITION) if(SANDBOX_COMPILE_DEFINITION)
target_compile_definitions(xzdec PRIVATE target_compile_definitions("${XZDEC}" PRIVATE
"${SANDBOX_COMPILE_DEFINITION}") "${SANDBOX_COMPILE_DEFINITION}")
endif() endif()
tuklib_progname(xzdec) tuklib_progname("${XZDEC}")
install(TARGETS xzdec install(TARGETS "${XZDEC}"
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT xzdec) COMPONENT "${XZDEC}")
endforeach()
# This is the only build-time difference with lzmadec.
target_compile_definitions(lzmadec PRIVATE "LZMADEC")
if(UNIX) 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()
endif() endif()