diff options
| author | Stefano Sinigardi <stesinigardi@hotmail.com> | 2019-05-29 01:58:00 +0200 |
|---|---|---|
| committer | Victor Romero <romerosanchezv@gmail.com> | 2019-05-28 16:58:00 -0700 |
| commit | a9303736fdda58cf5ff3ccc969be917580493c91 (patch) | |
| tree | fab5304f58fa8017e982423ee59fbfd386a1dc62 /ports/liblzma | |
| parent | 3d4b4c02ede7b343f4cd9cdfebbd3124ad834045 (diff) | |
| download | vcpkg-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.txt | 94 | ||||
| -rw-r--r-- | ports/liblzma/CONTROL | 6 | ||||
| -rw-r--r-- | ports/liblzma/auto-define-lzma-api-static.patch | 14 | ||||
| -rw-r--r-- | ports/liblzma/portfile.cmake | 66 | ||||
| -rw-r--r-- | ports/liblzma/usage | 5 | ||||
| -rw-r--r-- | ports/liblzma/vcpkg-cmake-wrapper.cmake | 4 |
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) |
