FindLibzip.cmake 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. find_package(PkgConfig QUIET)
  2. pkg_check_modules(PC_LIBZIP QUIET libzip)
  3. find_path(LIBZIP_INCLUDE_DIR
  4. NAMES zip.h
  5. PATHS ${PC_LIBZIP_INCLUDE_DIRS}
  6. "$ENV{LIB_DIR}/include"
  7. "$ENV{INCLUDE}"
  8. /usr/local/include
  9. /usr/include
  10. )
  11. find_path(LIBZIP_INCLUDE_DIR_ZIPCONF
  12. NAMES zipconf.h
  13. HINTS ${PC_LIBZIP_INCLUDE_DIRS}
  14. "$ENV{LIB_DIR}/include"
  15. "$ENV{LIB_DIR}/lib/libzip/include"
  16. "$ENV{LIB}/lib/libzip/include"
  17. /usr/local/lib/libzip/include
  18. /usr/lib/libzip/include
  19. /usr/local/include
  20. /usr/include
  21. "$ENV{INCLUDE}"
  22. )
  23. find_library(LIBZIP_LIBRARY
  24. NAMES zip
  25. PATHS ${PC_LIBZIP_LIBRARY_DIRS}
  26. "$ENV{LIB_DIR}/lib" "$ENV{LIB}" /usr/local/lib /usr/lib
  27. )
  28. if (LIBZIP_INCLUDE_DIR_ZIPCONF)
  29. FILE(READ "${LIBZIP_INCLUDE_DIR_ZIPCONF}/zipconf.h" _LIBZIP_VERSION_CONTENTS)
  30. if (_LIBZIP_VERSION_CONTENTS)
  31. STRING(REGEX REPLACE ".*#define LIBZIP_VERSION \"([0-9.]+)\".*" "\\1" LIBZIP_VERSION "${_LIBZIP_VERSION_CONTENTS}")
  32. endif()
  33. unset(_LIBZIP_VERSION_CONTENTS)
  34. endif()
  35. set(LIBZIP_VERSION ${LIBZIP_VERSION} CACHE STRING "Version number of libzip")
  36. include(FindPackageHandleStandardArgs)
  37. find_package_handle_standard_args(Libzip
  38. FOUND_VAR LIBZIP_FOUND
  39. REQUIRED_VARS
  40. LIBZIP_LIBRARY
  41. LIBZIP_INCLUDE_DIR
  42. LIBZIP_INCLUDE_DIR_ZIPCONF
  43. LIBZIP_VERSION
  44. VERSION_VAR LIBZIP_VERSION
  45. )
  46. if(LIBZIP_FOUND)
  47. set(LIBZIP_LIBRARIES ${LIBZIP_LIBRARY})
  48. set(LIBZIP_INCLUDE_DIRS ${LIBZIP_INCLUDE_DIR})
  49. set(LIBZIP_DEFINITIONS ${PC_LIBZIP_CFLAGS_OTHER})
  50. endif()
  51. if(LIBZIP_FOUND AND NOT TARGET libzip::libzip)
  52. add_library(libzip::libzip UNKNOWN IMPORTED)
  53. set_target_properties(libzip::libzip PROPERTIES
  54. IMPORTED_LOCATION "${LIBZIP_LIBRARY}"
  55. INTERFACE_COMPILE_OPTIONS "${PC_LIBZIP_CFLAGS_OTHER}"
  56. INTERFACE_INCLUDE_DIRECTORIES "${LIBZIP_INCLUDE_DIR}"
  57. )
  58. endif()
  59. mark_as_advanced(
  60. LIBZIP_INCLUDE_DIR
  61. LIBZIP_INCLUDE_DIR_ZIPCONF
  62. LIBZIP_LIBRARY
  63. LIBZIP_VERSION
  64. )