aboutsummaryrefslogtreecommitdiff
path: root/ports/liblzma
diff options
context:
space:
mode:
authorStefano Sinigardi <stesinigardi@hotmail.com>2019-05-29 01:58:00 +0200
committerVictor Romero <romerosanchezv@gmail.com>2019-05-28 16:58:00 -0700
commita9303736fdda58cf5ff3ccc969be917580493c91 (patch)
treefab5304f58fa8017e982423ee59fbfd386a1dc62 /ports/liblzma
parent3d4b4c02ede7b343f4cd9cdfebbd3124ad834045 (diff)
downloadvcpkg-a9303736fdda58cf5ff3ccc969be917580493c91.tar.gz
vcpkg-a9303736fdda58cf5ff3ccc969be917580493c91.zip
[LibLZMA] automatic configuration (#6000)
* [LibLZMA] add a config-generated by CMake * bump control files of LibLZMA and dependent ports * [tiff] use proper liblzma target [OpenCV] add an explicit dependency on LibLZMA for static linking * [liblzma] fix header install path * [LibLZMA] avoid using targets in old symbols * fixes for windows-static and trying to see if CI is happier with a share/lib folder written in lowercase * [LibLZMA] use only modern CMake language, remove patch in favour of target public definition * [lzma] put symbols in cmake cache * [libxmlpp] remove CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS regression * [lzma] fix header install path * [liblzma] install wrapper to force config mode * [liblzma] remove function check inside cmake config since we know it will pass * [liblzma] wrapper fix * [tiff,geotiff] general cleanup and patch fixes * [libgeotiff] remove debug tools * [tesseract] modernize * [tiff] fix also tiff_library symbol * [pdal,libgeotiff] better library integration * [tiff] restore using unix i/o on UWP, since it was working... for sure win32 one cannot work * [tiff] enable lzma also on uwp, since it works and is requested by many dependencies * [selene] enable build on arm/arm64-windows, which was surely broken before * [lzma] uniform naming with cmake 3.14 * [podofo] fix regression, it requires openssl which was disabled in dependencies * [many ports] remove unnecessary mods * [boost-iostream] chmod * [openssl] fix regression due to missing architecture * [podofo] fix regression on uwp due to missing include * [libpq] explicitly fail on UWP, it should avoid being marked as regression * [shiva] fix regression on linux
Diffstat (limited to 'ports/liblzma')
-rw-r--r--ports/liblzma/CMakeLists.txt94
-rw-r--r--ports/liblzma/CONTROL6
-rw-r--r--ports/liblzma/auto-define-lzma-api-static.patch14
-rw-r--r--ports/liblzma/portfile.cmake66
-rw-r--r--ports/liblzma/usage5
-rw-r--r--ports/liblzma/vcpkg-cmake-wrapper.cmake4
6 files changed, 123 insertions, 66 deletions
diff --git a/ports/liblzma/CMakeLists.txt b/ports/liblzma/CMakeLists.txt
index 6b84c004a..a9927c2b6 100644
--- a/ports/liblzma/CMakeLists.txt
+++ b/ports/liblzma/CMakeLists.txt
@@ -1,22 +1,15 @@
cmake_minimum_required(VERSION 3.0)
-project(liblzma)
+project(LibLZMA)
-add_definitions(-DHAVE_CONFIG_H)
-if(BUILD_SHARED_LIBS)
- add_definitions(-DLIBLZMADLL_EXPORTS)
- add_definitions(-DDLL_EXPORT)
-endif()
-
-if(NOT MSVC)
- add_definitions(-DHAVE_VISIBILITY=1)
-endif()
+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(WIN32)
- include_directories(windows/vs2017)
-else()
- include_directories(${CMAKE_CURRENT_BINARY_DIR})
+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
@@ -58,19 +51,10 @@ else()
#define PACKAGE_NAME \"XZ Utils\"
#define PACKAGE_URL \"http://tukaani.org/xz/\"
#define SIZEOF_SIZE_T (sizeof(size_t))
-""")
+")
endif()
-include_directories(src/liblzma/common)
-include_directories(src/common)
-include_directories(src/liblzma/api)
-include_directories(src/liblzma/check)
-include_directories(src/liblzma/delta)
-include_directories(src/liblzma/lz)
-include_directories(src/liblzma/lzma)
-include_directories(src/liblzma/rangecoder)
-include_directories(src/liblzma/simple)
-add_library(lzma
+add_library(LibLZMA
src/common/tuklib_cpucores.c
src/common/tuklib_physmem.c
src/liblzma/check/check.c
@@ -143,14 +127,56 @@ add_library(lzma
src/liblzma/simple/simple_decoder.c
src/liblzma/simple/simple_encoder.c
src/liblzma/simple/sparc.c
- src/liblzma/simple/x86.c)
+ src/liblzma/simple/x86.c
+)
-install(TARGETS lzma
- RUNTIME DESTINATION bin
- ARCHIVE DESTINATION lib
- LIBRARY DESTINATION lib)
+if(MSVC)
+ target_include_directories(LibLZMA PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/windows/vs2017>)
+else()
+ target_compile_definitions(LibLZMA PRIVATE -DHAVE_VISIBILITY=1)
+endif()
-if(NOT LIBLZMA_SKIP_HEADERS)
- install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma DESTINATION include)
- install(FILES ${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma.h DESTINATION include)
+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 PUBLIC -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 c94576a3f..1a2ee8147 100644
--- a/ports/liblzma/CONTROL
+++ b/ports/liblzma/CONTROL
@@ -1,3 +1,3 @@
-Source: liblzma
-Version: 5.2.4-1
-Description: Compression library with an API similar to that of zlib.
+Source: liblzma
+Version: 5.2.4-2
+Description: Compression library with an API similar to that of zlib.
diff --git a/ports/liblzma/auto-define-lzma-api-static.patch b/ports/liblzma/auto-define-lzma-api-static.patch
deleted file mode 100644
index d897e2457..000000000
--- a/ports/liblzma/auto-define-lzma-api-static.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/lzma.h b/lzma.h
-index ce675a7..ac0fc98 100644
---- a/lzma.h
-+++ b/lzma.h
-@@ -187,6 +187,9 @@
- * need to worry about LZMA_API_STATIC. Also the calling convention is
- * omitted on Cygwin but not on MinGW.
- */
-+
-+#define LZMA_API_STATIC
-+
- #ifndef LZMA_API_IMPORT
- # if !defined(LZMA_API_STATIC) && defined(_WIN32) && !defined(__GNUC__)
- # define LZMA_API_IMPORT __declspec(dllimport)
diff --git a/ports/liblzma/portfile.cmake b/ports/liblzma/portfile.cmake
index 5534b10e4..e7260309b 100644
--- a/ports/liblzma/portfile.cmake
+++ b/ports/liblzma/portfile.cmake
@@ -15,21 +15,67 @@ file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
- OPTIONS_DEBUG
- -DLIBLZMA_SKIP_HEADERS=ON
)
vcpkg_install_cmake()
vcpkg_copy_pdbs()
+vcpkg_fixup_cmake_targets()
-if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
- vcpkg_apply_patches(
- SOURCE_PATH ${CURRENT_PACKAGES_DIR}/include
- PATCHES
- ${CMAKE_CURRENT_LIST_DIR}/auto-define-lzma-api-static.patch)
+file(APPEND ${CURRENT_PACKAGES_DIR}/share/liblzma/LibLZMAConfig.cmake
+"
+include(\${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake)
+find_path(LibLZMA_INCLUDE_DIR
+ NAMES lzma.h
+ 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/)
+ select_library_configurations(LibLZMA)
+endif()
+set(LibLZMA_INCLUDE_DIRS \${LibLZMA_INCLUDE_DIR} CACHE PATH \"\")
+set(LibLZMA_LIBRARIES \${LibLZMA_LIBRARY} CACHE STRING \"\")
+set(LZMA_INCLUDE_DIR \${LibLZMA_INCLUDE_DIR} CACHE PATH \"\")
+set(LZMA_LIBRARY \${LibLZMA_LIBRARY} CACHE STRING \"\")
+set(LZMA_INCLUDE_DIRS \${LibLZMA_INCLUDE_DIR} CACHE PATH \"\")
+set(LZMA_LIBRARIES \${LibLZMA_LIBRARY} CACHE STRING \"\")
+set(LIBLZMA_INCLUDE_DIRS \${LibLZMA_INCLUDE_DIR} CACHE PATH \"\")
+set(LIBLZMA_LIBRARIES \${LibLZMA_LIBRARY} CACHE STRING \"\")
+set(LIBLZMA_INCLUDE_DIR \${LibLZMA_INCLUDE_DIR} CACHE PATH \"\")
+set(LIBLZMA_LIBRARY \${LibLZMA_LIBRARY} CACHE STRING \"\")
+
+if(LIBLZMA_INCLUDE_DIR AND EXISTS \"\${LIBLZMA_INCLUDE_DIR}/lzma/version.h\")
+ file(STRINGS \"\${LIBLZMA_INCLUDE_DIR}/lzma/version.h\" LIBLZMA_HEADER_CONTENTS REGEX \"#define LZMA_VERSION_[A-Z]+ [0-9]+\")
+
+ string(REGEX REPLACE \".*#define LZMA_VERSION_MAJOR ([0-9]+).*\" \"\\\\1\" LIBLZMA_VERSION_MAJOR \"\${LIBLZMA_HEADER_CONTENTS}\")
+ string(REGEX REPLACE \".*#define LZMA_VERSION_MINOR ([0-9]+).*\" \"\\\\1\" LIBLZMA_VERSION_MINOR \"\${LIBLZMA_HEADER_CONTENTS}\")
+ string(REGEX REPLACE \".*#define LZMA_VERSION_PATCH ([0-9]+).*\" \"\\\\1\" LIBLZMA_VERSION_PATCH \"\${LIBLZMA_HEADER_CONTENTS}\")
+
+ set(LIBLZMA_VERSION_STRING \"\${LIBLZMA_VERSION_MAJOR}.\${LIBLZMA_VERSION_MINOR}.\${LIBLZMA_VERSION_PATCH}\")
+ unset(LIBLZMA_HEADER_CONTENTS)
endif()
-file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/liblzma)
-file(RENAME ${CURRENT_PACKAGES_DIR}/share/liblzma/COPYING ${CURRENT_PACKAGES_DIR}/share/liblzma/copyright)
+## We're using new code known now as XZ, even library still been called LZMA
+## it can be found in http://tukaani.org/xz/
+## Avoid using old codebase
+#if (LIBLZMA_LIBRARY)
+# include(\${CMAKE_ROOT}/Modules/CheckLibraryExists.cmake)
+# CHECK_LIBRARY_EXISTS(\${LibLZMA_LIBRARY_RELEASE} lzma_auto_decoder \"\" LIBLZMA_HAS_AUTO_DECODER)
+# CHECK_LIBRARY_EXISTS(\${LibLZMA_LIBRARY_RELEASE} lzma_easy_encoder \"\" LIBLZMA_HAS_EASY_ENCODER)
+# CHECK_LIBRARY_EXISTS(\${LibLZMA_LIBRARY_RELEASE} lzma_lzma_preset \"\" LIBLZMA_HAS_LZMA_PRESET)
+#endif ()
+
+set(LibLZMA_FOUND TRUE CACHE BOOL \"\")
+set(LZMA_FOUND TRUE CACHE BOOL \"\")
+set(LIBLZMA_FOUND TRUE CACHE BOOL \"\")
+")
+
+if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
+ file(APPEND ${CURRENT_PACKAGES_DIR}/share/liblzma/LibLZMAConfig.cmake "add_definitions(-DLZMA_API_STATIC)")
+endif()
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/liblzma)
-file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/liblzma)
+file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/liblzma RENAME copyright)
diff --git a/ports/liblzma/usage b/ports/liblzma/usage
deleted file mode 100644
index 6f5a281a5..000000000
--- a/ports/liblzma/usage
+++ /dev/null
@@ -1,5 +0,0 @@
-The package liblzma is compatible with built-in CMake targets:
-
- find_package(LibLZMA REQUIRED)
- target_include_directories(main PRIVATE ${LIBLZMA_INCLUDE_DIRS})
- target_link_libraries(main PRIVATE ${LIBLZMA_LIBRARIES})
diff --git a/ports/liblzma/vcpkg-cmake-wrapper.cmake b/ports/liblzma/vcpkg-cmake-wrapper.cmake
new file mode 100644
index 000000000..b7572d736
--- /dev/null
+++ b/ports/liblzma/vcpkg-cmake-wrapper.cmake
@@ -0,0 +1,4 @@
+list(REMOVE_ITEM ARGS "NO_MODULE")
+list(REMOVE_ITEM ARGS "CONFIG")
+list(REMOVE_ITEM ARGS "MODULE")
+_find_package(${ARGS} CONFIG)