FindLibLZMA.cmake 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. # file Copyright.txt or https://cmake.org/licensing for details.
  3. #[=======================================================================[.rst:
  4. FindLibLZMA
  5. -----------
  6. Find LibLZMA
  7. Find LibLZMA headers and library
  8. ::
  9. LIBLZMA_FOUND - True if liblzma is found.
  10. LIBLZMA_INCLUDE_DIRS - Directory where liblzma headers are located.
  11. LIBLZMA_LIBRARIES - Lzma libraries to link against.
  12. LIBLZMA_HAS_AUTO_DECODER - True if lzma_auto_decoder() is found (required).
  13. LIBLZMA_HAS_EASY_ENCODER - True if lzma_easy_encoder() is found (required).
  14. LIBLZMA_HAS_LZMA_PRESET - True if lzma_lzma_preset() is found (required).
  15. LIBLZMA_VERSION_MAJOR - The major version of lzma
  16. LIBLZMA_VERSION_MINOR - The minor version of lzma
  17. LIBLZMA_VERSION_PATCH - The patch version of lzma
  18. LIBLZMA_VERSION_STRING - version number as a string (ex: "5.0.3")
  19. #]=======================================================================]
  20. find_path(LIBLZMA_INCLUDE_DIR lzma.h )
  21. find_library(LIBLZMA_LIBRARY NAMES lzma liblzma)
  22. if(LIBLZMA_INCLUDE_DIR AND EXISTS "${LIBLZMA_INCLUDE_DIR}/lzma/version.h")
  23. file(STRINGS "${LIBLZMA_INCLUDE_DIR}/lzma/version.h" LIBLZMA_HEADER_CONTENTS REGEX "#define LZMA_VERSION_[A-Z]+ [0-9]+")
  24. string(REGEX REPLACE ".*#define LZMA_VERSION_MAJOR ([0-9]+).*" "\\1" LIBLZMA_VERSION_MAJOR "${LIBLZMA_HEADER_CONTENTS}")
  25. string(REGEX REPLACE ".*#define LZMA_VERSION_MINOR ([0-9]+).*" "\\1" LIBLZMA_VERSION_MINOR "${LIBLZMA_HEADER_CONTENTS}")
  26. string(REGEX REPLACE ".*#define LZMA_VERSION_PATCH ([0-9]+).*" "\\1" LIBLZMA_VERSION_PATCH "${LIBLZMA_HEADER_CONTENTS}")
  27. set(LIBLZMA_VERSION_STRING "${LIBLZMA_VERSION_MAJOR}.${LIBLZMA_VERSION_MINOR}.${LIBLZMA_VERSION_PATCH}")
  28. unset(LIBLZMA_HEADER_CONTENTS)
  29. endif()
  30. # We're using new code known now as XZ, even library still been called LZMA
  31. # it can be found in http://tukaani.org/xz/
  32. # Avoid using old codebase
  33. if (LIBLZMA_LIBRARY)
  34. include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake)
  35. set(CMAKE_REQUIRED_QUIET_SAVE ${CMAKE_REQUIRED_QUIET})
  36. set(CMAKE_REQUIRED_QUIET ${LibLZMA_FIND_QUIETLY})
  37. CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARY} lzma_auto_decoder "" LIBLZMA_HAS_AUTO_DECODER)
  38. CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARY} lzma_easy_encoder "" LIBLZMA_HAS_EASY_ENCODER)
  39. CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARY} lzma_lzma_preset "" LIBLZMA_HAS_LZMA_PRESET)
  40. set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE})
  41. endif ()
  42. include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
  43. FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibLZMA REQUIRED_VARS LIBLZMA_INCLUDE_DIR
  44. LIBLZMA_LIBRARY
  45. LIBLZMA_HAS_AUTO_DECODER
  46. LIBLZMA_HAS_EASY_ENCODER
  47. LIBLZMA_HAS_LZMA_PRESET
  48. VERSION_VAR LIBLZMA_VERSION_STRING
  49. )
  50. if (LIBLZMA_FOUND)
  51. set(LIBLZMA_LIBRARIES ${LIBLZMA_LIBRARY})
  52. set(LIBLZMA_INCLUDE_DIRS ${LIBLZMA_INCLUDE_DIR})
  53. endif ()
  54. mark_as_advanced( LIBLZMA_INCLUDE_DIR LIBLZMA_LIBRARY )