doc: implement REUSE with SPDX identifiers
[lttng-ust.git] / doc / examples / cmake-multiple-shared-libraries / cmake / FindLTTngUST.cmake
CommitLineData
c2da416a
SB
1#.rst:
2# FindLTTngUST
3# ------------
4#
5# This module finds the `LTTng-UST <http://lttng.org/>`__ library.
6#
7# Imported target
8# ^^^^^^^^^^^^^^^
9#
10# This module defines the following :prop_tgt:`IMPORTED` target:
11#
12# ``LTTng::UST``
13# The LTTng-UST library, if found
14#
15# Result variables
16# ^^^^^^^^^^^^^^^^
17#
18# This module sets the following
19#
20# ``LTTNGUST_FOUND``
21# ``TRUE`` if system has LTTng-UST
22# ``LTTNGUST_INCLUDE_DIRS``
23# The LTTng-UST include directories
24# ``LTTNGUST_LIBRARIES``
25# The libraries needed to use LTTng-UST
26# ``LTTNGUST_VERSION_STRING``
27# The LTTng-UST version
28# ``LTTNGUST_HAS_TRACEF``
29# ``TRUE`` if the ``tracef()`` API is available in the system's LTTng-UST
30# ``LTTNGUST_HAS_TRACELOG``
31# ``TRUE`` if the ``tracelog()`` API is available in the system's LTTng-UST
c2da416a 32#
53f7d0d7
MJ
33# SPDX-FileCopyrightText: 2016 Kitware, Inc.
34# SPDX-FileCopyrightText: 2016 Philippe Proulx <pproulx@efficios.com>
c2da416a 35#
53f7d0d7 36# SPDX-License-Identifier: BSD-3-Clause
c2da416a
SB
37
38find_path(LTTNGUST_INCLUDE_DIRS NAMES lttng/tracepoint.h)
988e748c
JR
39# Must also check for the path of generated header files since out-of-tree
40# build is a possibility (Yocto).
41find_path(LTTNGUST_INCLUDE_DIRS_GENERATED NAMES lttng/ust-config.h)
c2da416a
SB
42find_library(LTTNGUST_LIBRARIES NAMES lttng-ust)
43
988e748c 44if(LTTNGUST_INCLUDE_DIRS AND LTTNGUST_INCLUDE_DIRS_GENERATED AND LTTNGUST_LIBRARIES)
c2da416a
SB
45 # find tracef() and tracelog() support
46 set(LTTNGUST_HAS_TRACEF 0)
47 set(LTTNGUST_HAS_TRACELOG 0)
48
49 if(EXISTS "${LTTNGUST_INCLUDE_DIRS}/lttng/tracef.h")
50 set(LTTNGUST_HAS_TRACEF TRUE)
51 endif()
52
53 if(EXISTS "${LTTNGUST_INCLUDE_DIRS}/lttng/tracelog.h")
54 set(LTTNGUST_HAS_TRACELOG TRUE)
55 endif()
56
57 # get version
988e748c 58 set(lttngust_version_file "${LTTNGUST_INCLUDE_DIRS_GENERATED}/lttng/ust-version.h")
c2da416a
SB
59
60 if(EXISTS "${lttngust_version_file}")
61 file(STRINGS "${lttngust_version_file}" lttngust_version_major_string
62 REGEX "^[\t ]*#define[\t ]+LTTNG_UST_MAJOR_VERSION[\t ]+[0-9]+[\t ]*$")
63 file(STRINGS "${lttngust_version_file}" lttngust_version_minor_string
64 REGEX "^[\t ]*#define[\t ]+LTTNG_UST_MINOR_VERSION[\t ]+[0-9]+[\t ]*$")
65 file(STRINGS "${lttngust_version_file}" lttngust_version_patch_string
66 REGEX "^[\t ]*#define[\t ]+LTTNG_UST_PATCHLEVEL_VERSION[\t ]+[0-9]+[\t ]*$")
67 string(REGEX REPLACE ".*([0-9]+).*" "\\1"
68 lttngust_v_major "${lttngust_version_major_string}")
69 string(REGEX REPLACE ".*([0-9]+).*" "\\1"
70 lttngust_v_minor "${lttngust_version_minor_string}")
71 string(REGEX REPLACE ".*([0-9]+).*" "\\1"
72 lttngust_v_patch "${lttngust_version_patch_string}")
73 set(LTTNGUST_VERSION_STRING
74 "${lttngust_v_major}.${lttngust_v_minor}.${lttngust_v_patch}")
75 unset(lttngust_version_major_string)
76 unset(lttngust_version_minor_string)
77 unset(lttngust_version_patch_string)
78 unset(lttngust_v_major)
79 unset(lttngust_v_minor)
80 unset(lttngust_v_patch)
988e748c
JR
81 else()
82 message(FATAL_ERROR "Missing version header")
c2da416a
SB
83 endif()
84
85 unset(lttngust_version_file)
86
87 if(NOT TARGET LTTng::UST)
88 add_library(LTTng::UST UNKNOWN IMPORTED)
89 set_target_properties(LTTng::UST PROPERTIES
988e748c 90 INTERFACE_INCLUDE_DIRECTORIES "${LTTNGUST_INCLUDE_DIRS};${LTTNGUST_INCLUDE_DIRS_GENERATED}"
c2da416a
SB
91 INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS}
92 IMPORTED_LINK_INTERFACE_LANGUAGES "C"
93 IMPORTED_LOCATION "${LTTNGUST_LIBRARIES}")
94 endif()
95
96 # add libdl to required libraries
97 set(LTTNGUST_LIBRARIES ${LTTNGUST_LIBRARIES} ${CMAKE_DL_LIBS})
98endif()
99
100# handle the QUIETLY and REQUIRED arguments and set LTTNGUST_FOUND to
101# TRUE if all listed variables are TRUE
102include(FindPackageHandleStandardArgs)
103find_package_handle_standard_args(LTTngUST FOUND_VAR LTTNGUST_FOUND
104 REQUIRED_VARS LTTNGUST_LIBRARIES
105 LTTNGUST_INCLUDE_DIRS
106 VERSION_VAR LTTNGUST_VERSION_STRING)
107mark_as_advanced(LTTNGUST_LIBRARIES LTTNGUST_INCLUDE_DIRS)
This page took 0.03232 seconds and 4 git commands to generate.