FindLibArchive.cmake
Go to the documentation of this file.
1 # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 # file Copyright.txt or https://cmake.org/licensing for details.
3 
4 #[=======================================================================[.rst:
5 FindLibArchive
6 --------------
7 
8 Find libarchive library and headers.
9 Libarchive is multi-format archive and compression library.
10 
11 The module defines the following variables:
12 
13 ::
14 
15  LibArchive_FOUND - true if libarchive was found
16  LibArchive_INCLUDE_DIRS - include search path
17  LibArchive_LIBRARIES - libraries to link
18  LibArchive_VERSION - libarchive 3-component version number
19  LibArchive::LibArchive - target for linking against libarchive
20 #]=======================================================================]
21 
22 find_path(LibArchive_INCLUDE_DIR
23  NAMES
24  archive.h
25  PATHS
26  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\LibArchive;InstallPath]/include"
27  DOC "libarchive include directory")
28 mark_as_advanced(LibArchive_INCLUDE_DIR)
29 
30 find_library(LibArchive_LIBRARY
31  NAMES
32  archive libarchive
33  PATHS
34  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\LibArchive;InstallPath]/lib"
35  DOC "libarchive library")
36 mark_as_advanced(LibArchive_LIBRARY)
37 
38 # Extract the version number from the header.
39 if(LibArchive_INCLUDE_DIR AND EXISTS "${LibArchive_INCLUDE_DIR}/archive.h")
40  # The version string appears in one of three known formats in the header:
41  # #define ARCHIVE_LIBRARY_VERSION "libarchive 2.4.12"
42  # #define ARCHIVE_VERSION_STRING "libarchive 2.8.4"
43  # #define ARCHIVE_VERSION_ONLY_STRING "3.2.0"
44  # Match any format.
45  set(_LibArchive_VERSION_REGEX "^#define[ \t]+ARCHIVE[_A-Z]+VERSION[_A-Z]*[ \t]+\"(libarchive +)?([0-9]+)\\.([0-9]+)\\.([0-9]+)[^\"]*\".*$")
46  file(STRINGS "${LibArchive_INCLUDE_DIR}/archive.h" _LibArchive_VERSION_STRING LIMIT_COUNT 1 REGEX "${_LibArchive_VERSION_REGEX}")
47  if(_LibArchive_VERSION_STRING)
48  string(REGEX REPLACE "${_LibArchive_VERSION_REGEX}" "\\2.\\3.\\4" LibArchive_VERSION "${_LibArchive_VERSION_STRING}")
49  endif()
50  unset(_LibArchive_VERSION_REGEX)
51  unset(_LibArchive_VERSION_STRING)
52 endif()
53 
54 include(FindPackageHandleStandardArgs)
55 find_package_handle_standard_args(LibArchive
56  REQUIRED_VARS LibArchive_LIBRARY LibArchive_INCLUDE_DIR
57  VERSION_VAR LibArchive_VERSION
58  )
59 unset(LIBARCHIVE_FOUND)
60 
61 if (LibArchive_FOUND)
62  set(LibArchive_LIBRARIES "${LibArchive_LIBRRAY}")
63  set(LibArchive_INCLUDE_DIRS "${LibArchive_INCLUDE_DIR}")
64 
65  if (NOT TARGET LibArchive::LibArchive)
66  add_library(LibArchive::LibArchive UNKNOWN IMPORTED)
67  set_target_properties(LibArchive::LibArchive PROPERTIES
68  IMPORTED_LOCATION "${LibArchive_LIBRARY}"
69  INTERFACE_INCLUDE_DIRECTORIES "${LibArchive_INCLUDE_DIR}")
70  endif ()
71 endif ()
component
boost::graph_traits< vtkGraph *>::vertex_descriptor target(boost::graph_traits< vtkGraph *>::edge_descriptor e, vtkGraph *)
version
string