|
| 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) |
0 commit comments