# Allow user to manually specify libzip paths # LIBZIP_ROOT: root directory for libzip (optional) # LIBZIP_INCLUDE_DIR: path to zip.h (optional) # LIBZIP_LIBRARY: path to libzip library (optional) find_package(ZLIB REQUIRED) if(NOT LIBZIP_INCLUDE_DIR AND LIBZIP_ROOT) find_path(LIBZIP_INCLUDE_DIR NAMES zip.h HINTS "${LIBZIP_ROOT}/include") endif() if(NOT LIBZIP_INCLUDE_DIR) find_path(LIBZIP_INCLUDE_DIR NAMES zip.h) endif() mark_as_advanced(LIBZIP_INCLUDE_DIR) if(NOT LIBZIP_LIBRARY AND LIBZIP_ROOT) find_library(LIBZIP_LIBRARY NAMES zip HINTS "${LIBZIP_ROOT}/lib") endif() if(NOT LIBZIP_LIBRARY) find_library(LIBZIP_LIBRARY NAMES zip) endif() mark_as_advanced(LIBZIP_LIBRARY) if(LIBZIP_LIBRARY) get_filename_component(_libzip_libdir ${LIBZIP_LIBRARY} DIRECTORY) endif() if(NOT _libzip_pkgcfg AND LIBZIP_ROOT) find_file(_libzip_pkgcfg libzip.pc HINTS "${LIBZIP_ROOT}/lib/pkgconfig" "${LIBZIP_ROOT}/libdata/pkgconfig" NO_DEFAULT_PATH ) endif() if(NOT _libzip_pkgcfg AND LIBZIP_LIBRARY) find_file(_libzip_pkgcfg libzip.pc HINTS ${_libzip_libdir} ${LIBZIP_INCLUDE_DIR}/.. PATH_SUFFIXES pkgconfig lib/pkgconfig libdata/pkgconfig NO_DEFAULT_PATH ) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args( LIBZIP REQUIRED_VARS LIBZIP_LIBRARY LIBZIP_INCLUDE_DIR _libzip_pkgcfg ) if(LIBZIP_FOUND) if(NOT TARGET libzip::zip) add_library(libzip::zip UNKNOWN IMPORTED) set_target_properties(libzip::zip PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${LIBZIP_INCLUDE_DIR} INTERFACE_LINK_LIBRARIES ZLIB::ZLIB IMPORTED_LOCATION ${LIBZIP_LIBRARY} ) # (Ab)use the (always) installed pkgconfig file to check if BZip2 is required file(STRINGS ${_libzip_pkgcfg} _have_extra_libs REGEX Libs) if(_have_extra_libs MATCHES "-lbz2") find_package(BZip2 REQUIRED) set_property(TARGET libzip::zip APPEND PROPERTY INTERFACE_LINK_LIBRARIES BZip2::BZip2) endif() if(_have_extra_libs MATCHES "-lcrypto") find_package(OpenSSL REQUIRED) set_property(TARGET libzip::zip APPEND PROPERTY INTERFACE_LINK_LIBRARIES OpenSSL::Crypto) endif() if(_have_extra_libs MATCHES "-lgnutls") find_package(GnuTLS REQUIRED) set_property(TARGET libzip::zip APPEND PROPERTY INTERFACE_LINK_LIBRARIES GnuTLS::GnuTLS) endif() if(_have_extra_libs MATCHES "-lnettle") find_package(Nettle REQUIRED) set_property(TARGET libzip::zip APPEND PROPERTY INTERFACE_LINK_LIBRARIES Nettle::Nettle) endif() if(_have_extra_libs MATCHES "-llzma") find_package(LibLZMA REQUIRED) set_property(TARGET libzip::zip APPEND PROPERTY INTERFACE_LINK_LIBRARIES LibLZMA::LibLZMA) endif() if(_have_extra_libs MATCHES "-lz") find_package(ZLIB REQUIRED) set_property(TARGET libzip::zip APPEND PROPERTY INTERFACE_LINK_LIBRARIES ZLIB::ZLIB) endif() endif() endif()