--- CMakeLists.txt | 3 +- Modules/Findlibarchive.cmake | 41 ++++++++++++++++++++++++++++ Tests/CMakeTests/ModuleNoticesTest.cmake.in | 2 + 3 files changed, 45 insertions(+), 1 deletion(-) Index: b/CMakeLists.txt =================================================================== --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -265,7 +265,8 @@ MACRO (CMAKE_BUILD_UTILITIES) ENDIF() IF(CMAKE_USE_SYSTEM_LIBARCHIVE) FIND_PACKAGE(libarchive) - SET(CMAKE_TAR_LIBRARIES libarchive) + SET(CMAKE_TAR_LIBRARIES ${LIBARCHIVE_LIBRARY}) + SET(CMAKE_TAR_INCLUDES ${LIBARCHIVE_INCLUDE_DIR}) ELSE(CMAKE_USE_SYSTEM_LIBARCHIVE) SET(HAVE_LIBZ 1) SET(HAVE_ZLIB_H 1) Index: b/Modules/Findlibarchive.cmake =================================================================== --- /dev/null +++ b/Modules/Findlibarchive.cmake @@ -0,0 +1,41 @@ +# - Try to find libarchive +# Once done this will define +# +# LIBARCHIVE_FOUND - system has libarchive +# LIBARCHIVE_INCLUDE_DIR - the libarchive include directory +# LIBARCHIVE_LIBRARY - Link this to use libarchive +# HAVE_LIBARCHIVE_GZIP_SUPPORT - whether libarchive has been compiled with gzip support +# HAVE_LIBARCHIVE_LZMA_SUPPORT - whether libarchive has been compiled with lzma support +# HAVE_LIBARCHIVE_XZ_SUPPORT - whether libarchive has been compiled with xz support +# +# Copyright (c) 2006, Pino Toscano, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +include(CheckLibraryExists) + +if (LIBARCHIVE_LIBRARY AND LIBARCHIVE_INCLUDE_DIR) + # in cache already + set(LIBARCHIVE_FOUND TRUE) +else (LIBARCHIVE_LIBRARY AND LIBARCHIVE_INCLUDE_DIR) + find_path(LIBARCHIVE_INCLUDE_DIR archive.h + ${GNUWIN32_DIR}/include + ) + + find_library(LIBARCHIVE_LIBRARY NAMES archive libarchive archive2 libarchive2 + PATHS + ${GNUWIN32_DIR}/lib + ) + + if (LIBARCHIVE_LIBRARY) + check_library_exists(${LIBARCHIVE_LIBRARY} archive_write_set_compression_gzip "" HAVE_LIBARCHIVE_GZIP_SUPPORT) + check_library_exists(${LIBARCHIVE_LIBRARY} archive_write_set_compression_lzma "" HAVE_LIBARCHIVE_LZMA_SUPPORT) + check_library_exists(${LIBARCHIVE_LIBRARY} archive_write_set_compression_xz "" HAVE_LIBARCHIVE_XZ_SUPPORT) + endif (LIBARCHIVE_LIBRARY) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(LibArchive DEFAULT_MSG LIBARCHIVE_INCLUDE_DIR LIBARCHIVE_LIBRARY HAVE_LIBARCHIVE_GZIP_SUPPORT) + + mark_as_advanced(LIBARCHIVE_INCLUDE_DIR LIBARCHIVE_LIBRARY HAVE_LIBARCHIVE_GZIP_SUPPORT HAVE_LIBARCHIVE_LZMA_SUPPORT) +endif (LIBARCHIVE_LIBRARY AND LIBARCHIVE_INCLUDE_DIR) Index: b/Tests/CMakeTests/ModuleNoticesTest.cmake.in =================================================================== --- a/Tests/CMakeTests/ModuleNoticesTest.cmake.in +++ b/Tests/CMakeTests/ModuleNoticesTest.cmake.in @@ -22,6 +22,8 @@ string(REPLACE "\r\r" "\r" notice_regex # Modules that do not require our notice. set(notice_exceptions FindCUDA.cmake # MIT License, distributed here from upstream project + Findlibarchive.cmake # Debian-Patch: taken from kdeutils, different until + # upstream accepts it. ) # Load the list of modules to check.