aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Neumann <30894796+Neumann-A@users.noreply.github.com>2020-11-20 21:23:19 +0100
committerGitHub <noreply@github.com>2020-11-20 12:23:19 -0800
commiteb895b95aac6fd7485373702f29f508c42a180a0 (patch)
tree9c02ffa27c80d74e7ab3266ee4428bddd2386e30
parent878d7ea830412dcda31a4d4c6589fe9e0015fe5a (diff)
downloadvcpkg-eb895b95aac6fd7485373702f29f508c42a180a0.tar.gz
vcpkg-eb895b95aac6fd7485373702f29f508c42a180a0.zip
[liblzma] use upstream CMakeLists.txt + Add pkgconfig. (#14615)
* [liblzma] use upstream CMakeLists.txt + Add pkgconfig. * fixing regressions * add debug suffix. fix pkgconfig * fix cmake path * remove empty lines * fix wrapper * more fixes * fix findLibLZMA * fix patch for static builds
-rw-r--r--ports/liblzma/CMakeLists.txt182
-rw-r--r--ports/liblzma/CONTROL2
-rw-r--r--ports/liblzma/fix_config_include.patch12
-rw-r--r--ports/liblzma/portfile.cmake53
-rw-r--r--ports/liblzma/usage9
-rw-r--r--ports/liblzma/vcpkg-cmake-wrapper.cmake6
-rw-r--r--ports/liblzma/win_output_name.patch17
7 files changed, 90 insertions, 191 deletions
diff --git a/ports/liblzma/CMakeLists.txt b/ports/liblzma/CMakeLists.txt
deleted file mode 100644
index c87b0b611..000000000
--- a/ports/liblzma/CMakeLists.txt
+++ /dev/null
@@ -1,182 +0,0 @@
-cmake_minimum_required(VERSION 3.0)
-project(LibLZMA)
-
-set(INSTALL_BIN_DIR "bin" CACHE PATH "Path where exe and dll will be installed")
-set(INSTALL_LIB_DIR "lib" CACHE PATH "Path where lib will be installed")
-set(INSTALL_INCLUDE_DIR "include" CACHE PATH "Path where headers will be installed")
-set(INSTALL_CMAKE_DIR "share/liblzma" CACHE PATH "Path where cmake configs will be installed")
-set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Append a suffix to debug libraries")
-
-if(NOT WIN32)
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/config.h
- "
-#define TUKLIB_SYMBOL_PREFIX lzma_
-#define ASSUME_RAM 128
-#define HAVE_CHECK_CRC32 1
-#define HAVE_CHECK_CRC64 1
-#define HAVE_CHECK_SHA256 1
-#define HAVE_DECODERS 1
-#define HAVE_DECODER_ARM 1
-#define HAVE_DECODER_ARMTHUMB 1
-#define HAVE_DECODER_DELTA 1
-#define HAVE_DECODER_IA64 1
-#define HAVE_DECODER_LZMA1 1
-#define HAVE_DECODER_LZMA2 1
-#define HAVE_DECODER_POWERPC 1
-#define HAVE_DECODER_SPARC 1
-#define HAVE_DECODER_X86 1
-#define HAVE_ENCODERS 1
-#define HAVE_ENCODER_ARM 1
-#define HAVE_ENCODER_ARMTHUMB 1
-#define HAVE_ENCODER_DELTA 1
-#define HAVE_ENCODER_IA64 1
-#define HAVE_ENCODER_LZMA1 1
-#define HAVE_ENCODER_LZMA2 1
-#define HAVE_ENCODER_POWERPC 1
-#define HAVE_ENCODER_SPARC 1
-#define HAVE_ENCODER_X86 1
-#define HAVE_INTTYPES_H 1
-#define HAVE_LIMITS_H 1
-#define HAVE_MF_BT2 1
-#define HAVE_MF_BT3 1
-#define HAVE_MF_BT4 1
-#define HAVE_MF_HC3 1
-#define HAVE_MF_HC4 1
-#define HAVE_STDBOOL_H 1
-#define HAVE_STDINT_H 1
-#define HAVE_STDLIB_H 1
-#define HAVE_STRING_H 1
-#define HAVE_VISIBILITY 1
-#define MYTHREAD_POSIX 1
-#define PACKAGE_NAME \"XZ Utils\"
-#define PACKAGE_URL \"http://tukaani.org/xz/\"
-#define SIZEOF_SIZE_T (sizeof(size_t))
-")
-endif()
-
-add_library(LibLZMA
- src/common/tuklib_cpucores.c
- src/common/tuklib_physmem.c
- src/liblzma/check/check.c
- src/liblzma/check/crc32_fast.c
- src/liblzma/check/crc32_table.c
- src/liblzma/check/crc64_fast.c
- src/liblzma/check/crc64_table.c
- src/liblzma/check/sha256.c
- src/liblzma/common/alone_decoder.c
- src/liblzma/common/alone_encoder.c
- src/liblzma/common/auto_decoder.c
- src/liblzma/common/block_buffer_decoder.c
- src/liblzma/common/block_buffer_encoder.c
- src/liblzma/common/block_decoder.c
- src/liblzma/common/block_encoder.c
- src/liblzma/common/block_header_decoder.c
- src/liblzma/common/block_header_encoder.c
- src/liblzma/common/block_util.c
- src/liblzma/common/common.c
- src/liblzma/common/easy_buffer_encoder.c
- src/liblzma/common/easy_decoder_memusage.c
- src/liblzma/common/easy_encoder.c
- src/liblzma/common/easy_encoder_memusage.c
- src/liblzma/common/easy_preset.c
- src/liblzma/common/filter_buffer_decoder.c
- src/liblzma/common/filter_buffer_encoder.c
- src/liblzma/common/filter_common.c
- src/liblzma/common/filter_decoder.c
- src/liblzma/common/filter_encoder.c
- src/liblzma/common/filter_flags_decoder.c
- src/liblzma/common/filter_flags_encoder.c
- src/liblzma/common/hardware_cputhreads.c
- src/liblzma/common/hardware_physmem.c
- src/liblzma/common/index.c
- src/liblzma/common/index_decoder.c
- src/liblzma/common/index_encoder.c
- src/liblzma/common/index_hash.c
- src/liblzma/common/outqueue.c
- src/liblzma/common/stream_buffer_decoder.c
- src/liblzma/common/stream_buffer_encoder.c
- src/liblzma/common/stream_decoder.c
- src/liblzma/common/stream_encoder.c
- src/liblzma/common/stream_encoder_mt.c
- src/liblzma/common/stream_flags_common.c
- src/liblzma/common/stream_flags_decoder.c
- src/liblzma/common/stream_flags_encoder.c
- src/liblzma/common/vli_decoder.c
- src/liblzma/common/vli_encoder.c
- src/liblzma/common/vli_size.c
- src/liblzma/delta/delta_common.c
- src/liblzma/delta/delta_decoder.c
- src/liblzma/delta/delta_encoder.c
- src/liblzma/lzma/fastpos_table.c
- src/liblzma/lzma/lzma2_decoder.c
- src/liblzma/lzma/lzma2_encoder.c
- src/liblzma/lzma/lzma_decoder.c
- src/liblzma/lzma/lzma_encoder.c
- src/liblzma/lzma/lzma_encoder_optimum_fast.c
- src/liblzma/lzma/lzma_encoder_optimum_normal.c
- src/liblzma/lzma/lzma_encoder_presets.c
- src/liblzma/lz/lz_decoder.c
- src/liblzma/lz/lz_encoder.c
- src/liblzma/lz/lz_encoder_mf.c
- src/liblzma/rangecoder/price_table.c
- src/liblzma/simple/arm.c
- src/liblzma/simple/armthumb.c
- src/liblzma/simple/ia64.c
- src/liblzma/simple/powerpc.c
- src/liblzma/simple/simple_coder.c
- src/liblzma/simple/simple_decoder.c
- src/liblzma/simple/simple_encoder.c
- src/liblzma/simple/sparc.c
- src/liblzma/simple/x86.c
-)
-
-if(WIN32)
- target_include_directories(LibLZMA PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/windows/vs2019>)
-else()
- target_compile_definitions(LibLZMA PRIVATE -DHAVE_VISIBILITY=1)
-endif()
-
-if(BUILD_SHARED_LIBS)
- target_compile_definitions(LibLZMA PRIVATE -DDLL_EXPORT)
- target_compile_definitions(LibLZMA PUBLIC -DLIBLZMADLL_EXPORTS)
-else()
- target_compile_definitions(LibLZMA PUBLIC -DLZMA_API_STATIC)
-endif()
-target_compile_definitions(LibLZMA PRIVATE -DHAVE_CONFIG_H)
-
-target_include_directories(LibLZMA PUBLIC
- $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
- $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/liblzma/common>
- $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/common>
- $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/liblzma/check>
- $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/liblzma/delta>
- $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/liblzma/lz>
- $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/liblzma/rangecoder>
- $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/liblzma/simple>
- $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/liblzma/lzma>
- $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/liblzma/api>
- $<INSTALL_INTERFACE:${INSTALL_INCLUDE_DIR}>
-)
-
-set_target_properties(LibLZMA PROPERTIES OUTPUT_NAME "lzma")
-
-set_target_properties(LibLZMA PROPERTIES PUBLIC_HEADER
-"${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/base.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/bcj.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/block.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/check.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/container.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/delta.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/filter.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/hardware.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/index.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/index_hash.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/lzma12.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/stream_flags.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/version.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/vli.h"
-)
-
-install(TARGETS LibLZMA EXPORT LibLZMATargets
- RUNTIME DESTINATION "${INSTALL_BIN_DIR}"
- ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
- LIBRARY DESTINATION "${INSTALL_LIB_DIR}"
- PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}/lzma"
-)
-
-install(FILES "${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma.h"
- DESTINATION "${INSTALL_INCLUDE_DIR}"
-)
-
-install(EXPORT LibLZMATargets
- FILE LibLZMAConfig.cmake
- NAMESPACE LibLZMA::
- DESTINATION "${INSTALL_CMAKE_DIR}"
-)
diff --git a/ports/liblzma/CONTROL b/ports/liblzma/CONTROL
index dc9d0fda8..da00befc3 100644
--- a/ports/liblzma/CONTROL
+++ b/ports/liblzma/CONTROL
@@ -1,5 +1,5 @@
Source: liblzma
Version: 5.2.5
-Port-Version: 1
+Port-Version: 2
Homepage: https://github.com/xz-mirror/xz
Description: Compression library with an API similar to that of zlib.
diff --git a/ports/liblzma/fix_config_include.patch b/ports/liblzma/fix_config_include.patch
new file mode 100644
index 000000000..20b32895a
--- /dev/null
+++ b/ports/liblzma/fix_config_include.patch
@@ -0,0 +1,12 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 34c6aca00..7b3708ab2 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -401,6 +401,7 @@ if(WIN32)
+ if(BUILD_SHARED_LIBS)
+ # Add the Windows resource file for liblzma.dll.
+ target_sources(liblzma PRIVATE src/liblzma/liblzma_w32res.rc)
++ target_include_directories(liblzma PRIVATE windows/vs2019)
+
+ # Export the public API symbols with __declspec(dllexport).
+ target_compile_definitions(liblzma PRIVATE DLL_EXPORT)
diff --git a/ports/liblzma/portfile.cmake b/ports/liblzma/portfile.cmake
index c29dbafed..e58a0e543 100644
--- a/ports/liblzma/portfile.cmake
+++ b/ports/liblzma/portfile.cmake
@@ -6,20 +6,43 @@ vcpkg_from_github(
HEAD_REF master
PATCHES
enable-uwp-builds.patch
+ fix_config_include.patch
+ win_output_name.patch # Fix output name on Windows. Autotool build does not generate lib prefixed libraries on windows.
)
-file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
-
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
+ OPTIONS
+ "-DCMAKE_DEBUG_POSTFIX=d" # This was in the old vcpkg CMakeLists.txt and I don't intend to fix it all over vcpkg
)
-
vcpkg_install_cmake()
vcpkg_copy_pdbs()
-vcpkg_fixup_cmake_targets()
-file(APPEND ${CURRENT_PACKAGES_DIR}/share/liblzma/LibLZMAConfig.cmake
+set(exec_prefix "\${prefix}")
+set(libdir "\${prefix}/lib")
+set(includedir "\${prefix}/include")
+set(PACKAGE_URL https://tukaani.org/xz/)
+set(PACKAGE_VERSION 5.2.5)
+if(NOT VCPKG_TARGET_IS_WINDOWS)
+ set(PTHREAD_CFLAGS -pthread)
+endif()
+if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
+ set(prefix "${CURRENT_INSTALLED_DIR}")
+ configure_file("${SOURCE_PATH}/src/liblzma/liblzma.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/liblzma.pc" @ONLY)
+endif()
+if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
+ set(prefix "${CURRENT_INSTALLED_DIR}/debug")
+ configure_file("${SOURCE_PATH}/src/liblzma/liblzma.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/liblzma.pc" @ONLY)
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/liblzma.pc" "-llzma" "-llzmad")
+endif()
+vcpkg_fixup_pkgconfig()
+
+
+vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/liblzma)
+
+file(WRITE "${CURRENT_PACKAGES_DIR}/share/liblzma/liblzma-config.cmake" "include(\"\${CMAKE_CURRENT_LIST_DIR}/liblzmaConfig.cmake\")")
+file(APPEND "${CURRENT_PACKAGES_DIR}/share/liblzma/liblzmaConfig.cmake"
"
include(\${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake)
find_path(LibLZMA_INCLUDE_DIR
@@ -27,8 +50,8 @@ find_path(LibLZMA_INCLUDE_DIR
PATH_SUFFIXES lzma
)
if(NOT LibLZMA_LIBRARY)
- find_library(LibLZMA_LIBRARY_RELEASE NAMES lzma LZMA LibLZMA PATHS \${_IMPORT_PREFIX}/lib/)
- find_library(LibLZMA_LIBRARY_DEBUG NAMES lzmad LZMAd LibLZMAd PATHS \${_IMPORT_PREFIX}/debug/lib/)
+ find_library(LibLZMA_LIBRARY_RELEASE NAMES lzma LZMA LibLZMA liblzma PATHS \${_IMPORT_PREFIX}/lib/)
+ find_library(LibLZMA_LIBRARY_DEBUG NAMES lzmad LZMAd LibLZMAd lzma LZMA LibLZMA liblzma PATHS \${_IMPORT_PREFIX}/debug/lib/)
select_library_configurations(LibLZMA)
endif()
set(LibLZMA_INCLUDE_DIRS \${LibLZMA_INCLUDE_DIR} CACHE PATH \"\")
@@ -91,5 +114,21 @@ if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
endif()
file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
+
+set(TOOLS xz xzdec)
+foreach(_tool IN LISTS TOOLS)
+ if(NOT EXISTS "${CURRENT_PACKAGES_DIR}/bin/${_tool}${VCPKG_TARGET_EXECUTABLE_SUFFIX}")
+ list(REMOVE_ITEM TOOLS ${_tool})
+ endif()
+endforeach()
+if(TOOLS)
+ vcpkg_copy_tools(TOOL_NAMES ${TOOLS} AUTO_CLEAN)
+endif()
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
+endif()
file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") \ No newline at end of file
diff --git a/ports/liblzma/usage b/ports/liblzma/usage
new file mode 100644
index 000000000..8d70b5804
--- /dev/null
+++ b/ports/liblzma/usage
@@ -0,0 +1,9 @@
+The package liblzma provides CMake targets:
+
+ find_package(LibLZMA REQUIRED)
+ target_link_libraries(main PRIVATE LibLZMA::LibLZMA)
+
+ or
+
+ find_package(liblzma CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE liblzma::liblzma)
diff --git a/ports/liblzma/vcpkg-cmake-wrapper.cmake b/ports/liblzma/vcpkg-cmake-wrapper.cmake
index b7572d736..cf22af021 100644
--- a/ports/liblzma/vcpkg-cmake-wrapper.cmake
+++ b/ports/liblzma/vcpkg-cmake-wrapper.cmake
@@ -1,4 +1,8 @@
list(REMOVE_ITEM ARGS "NO_MODULE")
list(REMOVE_ITEM ARGS "CONFIG")
-list(REMOVE_ITEM ARGS "MODULE")
+list(REMOVE_ITEM ARGS "MODULE") # Always call CONFIG.
_find_package(${ARGS} CONFIG)
+if(NOT TARGET LibLZMA::LibLZMA AND TARGET liblzma::liblzma)
+ add_library(LibLZMA::LibLZMA INTERFACE IMPORTED) # Too lazy to fix wrong target usage all over vcpkg.
+ set_target_properties(LibLZMA::LibLZMA PROPERTIES INTERFACE_LINK_LIBRARIES liblzma::liblzma)
+endif()
diff --git a/ports/liblzma/win_output_name.patch b/ports/liblzma/win_output_name.patch
new file mode 100644
index 000000000..b6e3cd8ee
--- /dev/null
+++ b/ports/liblzma/win_output_name.patch
@@ -0,0 +1,17 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 120dc7548..728ca3591 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -398,11 +398,12 @@ else()
+ endif()
+
+ if(WIN32)
++ set_target_properties(liblzma PROPERTIES OUTPUT_NAME lzma)
+ if(BUILD_SHARED_LIBS)
+ # Add the Windows resource file for liblzma.dll.
+ target_sources(liblzma PRIVATE src/liblzma/liblzma_w32res.rc)
+ target_include_directories(liblzma PRIVATE windows/vs2019)
+
+ # Export the public API symbols with __declspec(dllexport).
+ target_compile_definitions(liblzma PRIVATE DLL_EXPORT)
+ else()