release 0.1.7
[liba.git] / cmake / FindTalloc.cmake
blob254a8ffaa6f5005354aef91940df61350ce48958
1 #.rst:
2 # FindTalloc
3 # ----------
5 # Find Talloc include dirs and libraries.
7 # Imported Targets
8 # ^^^^^^^^^^^^^^^^
10 # This module defines the following :ref:`Imported Targets <Imported Targets>`:
12 # ``Talloc::talloc``
14 # Result Variables
15 # ^^^^^^^^^^^^^^^^
17 # This module defines the following variables:
19 # ``TALLOC_FOUND``
21 # ``TALLOC_INCLUDE_DIRS``
23 # ``TALLOC_LIBRARIES``
25 # ``TALLOC_VERSION``
27 # ``TALLOC_VERSION_MAJOR``
29 # ``TALLOC_VERSION_MINOR``
31 # Cache variables
32 # ^^^^^^^^^^^^^^^
34 # Search results are saved persistently in CMake cache entries:
36 # ``TALLOC_INCLUDE_DIR``
38 # ``TALLOC_LIBRARY``
40 include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
41 find_package(PkgConfig QUIET)
43 if(PKG_CONFIG_FOUND)
44   if(CMAKE_VERSION VERSION_GREATER 3.6)
45     pkg_check_modules(talloc QUIET IMPORTED_TARGET talloc)
46   else()
47     pkg_check_modules(talloc QUIET talloc)
48   endif()
49   if(talloc_FOUND)
50     if(talloc_VERSION)
51       set(TALLOC_VERSION ${talloc_VERSION})
52     endif()
53   endif()
54 endif()
56 find_library(TALLOC_LIBRARY
57   NAMES talloc NAMES_PER_DIR
58   HINTS ${talloc_LIBRARY_DIRS}
60 mark_as_advanced(TALLOC_LIBRARY)
61 if(EXISTS "${TALLOC_LIBRARY}")
62   list(APPEND TALLOC_LIBRARIES ${TALLOC_LIBRARY})
63 endif()
65 find_path(TALLOC_INCLUDE_DIR
66   NAMES talloc.h
67   HINTS ${talloc_INCLUDE_DIRS}
69 mark_as_advanced(TALLOC_INCLUDE_DIR)
70 if(EXISTS "${TALLOC_INCLUDE_DIR}")
71   list(APPEND TALLOC_INCLUDE_DIRS ${TALLOC_INCLUDE_DIR})
72 endif()
74 if(NOT TALLOC_VERSION AND EXISTS "${TALLOC_INCLUDE_DIR}/talloc.h")
75   file(STRINGS ${TALLOC_INCLUDE_DIR}/talloc.h text REGEX "TALLOC_VERSION")
76   string(REGEX REPLACE ".*VERSION_MAJOR[^0-9]+([0-9]+).*" "\\1" TALLOC_VERSION_MAJOR ${text})
77   string(REGEX REPLACE ".*VERSION_MINOR[^0-9]+([0-9]+).*" "\\1" TALLOC_VERSION_MINOR ${text})
78   set(TALLOC_VERSION ${TALLOC_VERSION_MAJOR}.${TALLOC_VERSION_MINOR})
79   set(text)
80 endif()
82 find_package_handle_standard_args(Talloc
83   FOUND_VAR
84     TALLOC_FOUND
85   REQUIRED_VARS
86     TALLOC_LIBRARY
87     TALLOC_INCLUDE_DIR
88   VERSION_VAR
89     TALLOC_VERSION
92 if(TARGET PkgConfig::talloc)
93   add_library(Talloc::talloc ALIAS PkgConfig::talloc)
94 endif()
95 if(NOT TARGET Talloc::talloc AND EXISTS "${TALLOC_LIBRARY}")
96   add_library(Talloc::talloc UNKNOWN IMPORTED)
97   set_target_properties(Talloc::talloc PROPERTIES
98     INTERFACE_INCLUDE_DIRECTORIES "${TALLOC_INCLUDE_DIR}"
99     IMPORTED_LOCATION "${TALLOC_LIBRARY}"
100     IMPORTED_LINK_INTERFACE_LANGUAGES C
101   )
102 endif()