Skip to content

Commit b8072ea

Browse files
committed
Merge pull request #5566 from AenBleidd/vko_add_custom_liblzma_port
1 parent 40ab075 commit b8072ea

8 files changed

+251
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index 52439b3..0b5e371 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -574,6 +574,7 @@ if(HAVE_GETOPT_LONG)
6+
7+
install(TARGETS xzdec
8+
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
9+
+ BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}"
10+
COMPONENT xzdec)
11+
12+
if(UNIX)
13+
@@ -701,6 +702,7 @@ if(NOT MSVC AND HAVE_GETOPT_LONG)
14+
15+
install(TARGETS xz
16+
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
17+
+ BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}"
18+
COMPONENT xz)
19+
20+
if(UNIX)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index 03b8301..820d08e 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -584,6 +584,7 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/liblzma-config.cmake"
6+
COMPONENT liblzma_Development)
7+
8+
9+
+if(BUILD_TOOLS)
10+
#############################################################################
11+
# getopt_long
12+
#############################################################################
13+
@@ -793,6 +794,7 @@ if(NOT MSVC AND HAVE_GETOPT_LONG)
14+
endforeach()
15+
endif()
16+
endif()
17+
+endif()
18+
19+
20+
#############################################################################
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index 34c6aca00..7b3708ab2 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -413,6 +413,7 @@ if(WIN32)
6+
if(BUILD_SHARED_LIBS)
7+
# Add the Windows resource file for liblzma.dll.
8+
target_sources(liblzma PRIVATE src/liblzma/liblzma_w32res.rc)
9+
+ target_include_directories(liblzma PRIVATE windows/vs2019)
10+
11+
set_target_properties(liblzma PROPERTIES
12+
LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
vcpkg_from_github(
2+
OUT_SOURCE_PATH SOURCE_PATH
3+
REPO bminor/xz
4+
REF "v${VERSION}"
5+
SHA512 c28461123562564e030f3f733f078bc4c840e87598d9f4b718d4bca639120d8133f969c45d7bdc62f33f081d789ec0f14a1791fb7da18515682bfe3c0c7362e0
6+
HEAD_REF master
7+
PATCHES
8+
fix_config_include.patch
9+
win_output_name.patch # Fix output name on Windows. Autotool build does not generate lib prefixed libraries on windows.
10+
add_support_ios.patch # add install bundle info for support ios
11+
build-tools.patch
12+
)
13+
14+
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
15+
FEATURES
16+
tools BUILD_TOOLS
17+
)
18+
19+
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "wasm32")
20+
set(WASM_OPTIONS -DCMAKE_C_BYTE_ORDER=LITTLE_ENDIAN -DCMAKE_CXX_BYTE_ORDER=LITTLE_ENDIAN)
21+
endif()
22+
23+
vcpkg_cmake_configure(
24+
SOURCE_PATH "${SOURCE_PATH}"
25+
OPTIONS
26+
${FEATURE_OPTIONS}
27+
${WASM_OPTIONS}
28+
-DBUILD_TESTING=OFF
29+
-DCREATE_XZ_SYMLINKS=OFF
30+
-DCREATE_LZMA_SYMLINKS=OFF
31+
-DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT= # using flags from (vcpkg) toolchain
32+
MAYBE_UNUSED_VARIABLES
33+
CMAKE_MSVC_DEBUG_INFORMATION_FORMAT
34+
CREATE_XZ_SYMLINKS
35+
CREATE_LZMA_SYMLINKS
36+
)
37+
vcpkg_cmake_install()
38+
vcpkg_copy_pdbs()
39+
40+
set(exec_prefix "\${prefix}")
41+
set(libdir "\${prefix}/lib")
42+
set(includedir "\${prefix}/include")
43+
set(PACKAGE_URL https://tukaani.org/xz/)
44+
set(PACKAGE_VERSION 5.4.3)
45+
if(NOT VCPKG_TARGET_IS_WINDOWS)
46+
set(PTHREAD_CFLAGS -pthread)
47+
endif()
48+
set(prefix "${CURRENT_INSTALLED_DIR}")
49+
configure_file("${SOURCE_PATH}/src/liblzma/liblzma.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/liblzma.pc" @ONLY)
50+
if (NOT VCPKG_BUILD_TYPE)
51+
set(prefix "${CURRENT_INSTALLED_DIR}/debug")
52+
configure_file("${SOURCE_PATH}/src/liblzma/liblzma.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/liblzma.pc" @ONLY)
53+
endif()
54+
vcpkg_fixup_pkgconfig()
55+
56+
vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/liblzma)
57+
58+
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
59+
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/lzma.h" "defined(LZMA_API_STATIC)" "1")
60+
else()
61+
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/lzma.h" "defined(LZMA_API_STATIC)" "0")
62+
endif()
63+
64+
file(REMOVE_RECURSE
65+
"${CURRENT_PACKAGES_DIR}/debug/include"
66+
"${CURRENT_PACKAGES_DIR}/debug/share"
67+
"${CURRENT_PACKAGES_DIR}/share/man"
68+
)
69+
70+
set(TOOLS xz xzdec)
71+
foreach(_tool IN LISTS TOOLS)
72+
if(NOT EXISTS "${CURRENT_PACKAGES_DIR}/bin/${_tool}${VCPKG_TARGET_EXECUTABLE_SUFFIX}")
73+
list(REMOVE_ITEM TOOLS ${_tool})
74+
endif()
75+
endforeach()
76+
if(TOOLS)
77+
vcpkg_copy_tools(TOOL_NAMES ${TOOLS} AUTO_CLEAN)
78+
endif()
79+
80+
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
81+
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
82+
endif()
83+
84+
file(COPY "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
85+
file(COPY "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
86+
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING")
+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
liblzma is compatible with built-in CMake targets:
2+
3+
find_package(LibLZMA REQUIRED)
4+
target_link_libraries(main PRIVATE LibLZMA::LibLZMA)
5+
6+
liblzma provides CMake targets:
7+
8+
find_package(liblzma CONFIG REQUIRED)
9+
target_link_libraries(main PRIVATE liblzma::liblzma)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
cmake_policy(PUSH)
2+
cmake_policy(SET CMP0012 NEW)
3+
cmake_policy(SET CMP0057 NEW)
4+
set(z_vcpkg_liblzma_fixup_needed 0)
5+
if(NOT "CONFIG" IN_LIST ARGS AND NOT "NO_MODULE" IN_LIST ARGS AND NOT CMAKE_DISABLE_FIND_PACKAGE_LibLZMA)
6+
get_filename_component(z_vcpkg_liblzma_prefix "${CMAKE_CURRENT_LIST_DIR}" DIRECTORY)
7+
get_filename_component(z_vcpkg_liblzma_prefix "${z_vcpkg_liblzma_prefix}" DIRECTORY)
8+
find_path(LIBLZMA_INCLUDE_DIR NAMES lzma.h PATHS "${z_vcpkg_liblzma_prefix}/include" NO_DEFAULT_PATH)
9+
# liblzma doesn't use a debug postfix, but FindLibLZMA.cmake expects it
10+
find_library(LIBLZMA_LIBRARY_RELEASE NAMES lzma PATHS "${z_vcpkg_liblzma_prefix}/lib" NO_DEFAULT_PATH)
11+
find_library(LIBLZMA_LIBRARY_DEBUG NAMES lzma PATHS "${z_vcpkg_liblzma_prefix}/debug/lib" NO_DEFAULT_PATH)
12+
unset(z_vcpkg_liblzma_prefix)
13+
if(CMAKE_VERSION VERSION_LESS 3.16)
14+
# Older versions of FindLibLZMA.cmake need a single lib in LIBLZMA_LIBRARY.
15+
set(z_vcpkg_liblzma_fixup_needed 1)
16+
set(LIBLZMA_LIBRARY "${LIBLZMA_LIBRARY_RELEASE}" CACHE INTERNAL "")
17+
elseif(NOT TARGET LibLZMA::LibLZMA)
18+
set(z_vcpkg_liblzma_fixup_needed 1)
19+
endif()
20+
# Known values, and required. Skip expensive tests.
21+
set(LIBLZMA_HAS_AUTO_DECODER 1 CACHE INTERNAL "")
22+
set(LIBLZMA_HAS_EASY_ENCODER 1 CACHE INTERNAL "")
23+
set(LIBLZMA_HAS_LZMA_PRESET 1 CACHE INTERNAL "")
24+
endif()
25+
26+
_find_package(${ARGS})
27+
28+
if(z_vcpkg_liblzma_fixup_needed)
29+
include(SelectLibraryConfigurations)
30+
select_library_configurations(LIBLZMA)
31+
if(NOT TARGET LibLZMA::LibLZMA)
32+
# Backfill LibLZMA::LibLZMA to versions of cmake before 3.14
33+
add_library(LibLZMA::LibLZMA UNKNOWN IMPORTED)
34+
if(DEFINED LIBLZMA_INCLUDE_DIRS)
35+
set_target_properties(LibLZMA::LibLZMA PROPERTIES
36+
INTERFACE_INCLUDE_DIRECTORIES "${LIBLZMA_INCLUDE_DIRS}")
37+
endif()
38+
set_property(TARGET LibLZMA::LibLZMA APPEND PROPERTY
39+
IMPORTED_CONFIGURATIONS RELEASE)
40+
set_target_properties(LibLZMA::LibLZMA PROPERTIES
41+
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
42+
IMPORTED_LOCATION_RELEASE "${LIBLZMA_LIBRARY_RELEASE}")
43+
if(EXISTS "${LIBLZMA_LIBRARY}")
44+
set_target_properties(LibLZMA::LibLZMA PROPERTIES
45+
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
46+
IMPORTED_LOCATION "${LIBLZMA_LIBRARY}")
47+
endif()
48+
endif()
49+
if(LIBLZMA_LIBRARY_DEBUG)
50+
# Backfill debug variant to versions of cmake before 3.16
51+
set_property(TARGET LibLZMA::LibLZMA APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
52+
set_target_properties(LibLZMA::LibLZMA PROPERTIES IMPORTED_LOCATION_DEBUG "${LIBLZMA_LIBRARY_DEBUG}")
53+
endif()
54+
endif()
55+
if(LIBLZMA_LIBRARIES AND NOT "Threads::Threads" IN_LIST LIBLZMA_LIBRARIES)
56+
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
57+
find_package(Threads)
58+
list(APPEND LIBLZMA_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
59+
if(TARGET LibLZMA::LibLZMA)
60+
set_property(TARGET LibLZMA::LibLZMA APPEND PROPERTY INTERFACE_LINK_LIBRARIES Threads::Threads)
61+
endif()
62+
endif()
63+
unset(z_vcpkg_liblzma_fixup_needed)
64+
cmake_policy(POP)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"name": "liblzma",
3+
"version": "5.4.4",
4+
"description": "Compression library with an API similar to that of zlib.",
5+
"homepage": "https://tukaani.org/xz/",
6+
"license": null,
7+
"dependencies": [
8+
{
9+
"name": "vcpkg-cmake",
10+
"host": true
11+
},
12+
{
13+
"name": "vcpkg-cmake-config",
14+
"host": true
15+
}
16+
],
17+
"features": {
18+
"tools": {
19+
"description": "Build tools",
20+
"supports": "!windows, mingw"
21+
}
22+
}
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index 0c6d4b7..62a824a 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -868,8 +868,11 @@ set_target_properties(liblzma PROPERTIES
6+
7+
# It's liblzma.so or liblzma.dll, not libliblzma.so or lzma.dll.
8+
# Avoid the name lzma.dll because it would conflict with LZMA SDK.
9+
- PREFIX ""
10+
+ OUTPUT_NAME lzma
11+
)
12+
+if(WIN32 AND NOT MINGW)
13+
+ set_target_properties(liblzma PROPERTIES RUNTIME_OUTPUT_NAME liblzma)
14+
+endif()
15+
16+
# Create liblzma-config-version.cmake.
17+
#

0 commit comments

Comments
 (0)