Files
CMake/Modules/FindLTTngUST.cmake
Norbert Lange 4ce5765a86 FindLTTngUST: Fix version component extraction
The regex was greedy and slurped away all but the last digit,
so 2.13.1 was for ex. detected as 2.3.1.
Fix this by expecting preceding whitespace.
2022-01-10 17:56:48 -05:00

103 lines
3.6 KiB
CMake

# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
FindLTTngUST
------------
.. versionadded:: 3.6
Find
`Linux Trace Toolkit Next Generation (LTTng-UST) <http://lttng.org/>`__ library.
Imported target
^^^^^^^^^^^^^^^
This module defines the following :prop_tgt:`IMPORTED` target:
``LTTng::UST``
The LTTng-UST library, if found
Result variables
^^^^^^^^^^^^^^^^
This module sets the following
``LTTNGUST_FOUND``
``TRUE`` if system has LTTng-UST
``LTTNGUST_INCLUDE_DIRS``
The LTTng-UST include directories
``LTTNGUST_LIBRARIES``
The libraries needed to use LTTng-UST
``LTTNGUST_VERSION_STRING``
The LTTng-UST version
``LTTNGUST_HAS_TRACEF``
``TRUE`` if the ``tracef()`` API is available in the system's LTTng-UST
``LTTNGUST_HAS_TRACELOG``
``TRUE`` if the ``tracelog()`` API is available in the system's LTTng-UST
#]=======================================================================]
find_path(LTTNGUST_INCLUDE_DIRS NAMES lttng/tracepoint.h)
find_library(LTTNGUST_LIBRARIES NAMES lttng-ust)
if(LTTNGUST_INCLUDE_DIRS AND LTTNGUST_LIBRARIES)
# find tracef() and tracelog() support
set(LTTNGUST_HAS_TRACEF 0)
set(LTTNGUST_HAS_TRACELOG 0)
if(EXISTS "${LTTNGUST_INCLUDE_DIRS}/lttng/tracef.h")
set(LTTNGUST_HAS_TRACEF TRUE)
endif()
if(EXISTS "${LTTNGUST_INCLUDE_DIRS}/lttng/tracelog.h")
set(LTTNGUST_HAS_TRACELOG TRUE)
endif()
# get version
set(lttngust_version_file "${LTTNGUST_INCLUDE_DIRS}/lttng/ust-version.h")
if(EXISTS "${lttngust_version_file}")
file(STRINGS "${lttngust_version_file}" lttngust_version_major_string
REGEX "^[\t ]*#define[\t ]+LTTNG_UST_MAJOR_VERSION[\t ]+[0-9]+[\t ]*$")
file(STRINGS "${lttngust_version_file}" lttngust_version_minor_string
REGEX "^[\t ]*#define[\t ]+LTTNG_UST_MINOR_VERSION[\t ]+[0-9]+[\t ]*$")
file(STRINGS "${lttngust_version_file}" lttngust_version_patch_string
REGEX "^[\t ]*#define[\t ]+LTTNG_UST_PATCHLEVEL_VERSION[\t ]+[0-9]+[\t ]*$")
string(REGEX REPLACE ".*[\t ]+([0-9]+).*" "\\1"
lttngust_v_major "${lttngust_version_major_string}")
string(REGEX REPLACE ".*[\t ]+([0-9]+).*" "\\1"
lttngust_v_minor "${lttngust_version_minor_string}")
string(REGEX REPLACE ".*[\t ]+([0-9]+).*" "\\1"
lttngust_v_patch "${lttngust_version_patch_string}")
set(LTTNGUST_VERSION_STRING
"${lttngust_v_major}.${lttngust_v_minor}.${lttngust_v_patch}")
unset(lttngust_version_major_string)
unset(lttngust_version_minor_string)
unset(lttngust_version_patch_string)
unset(lttngust_v_major)
unset(lttngust_v_minor)
unset(lttngust_v_patch)
endif()
unset(lttngust_version_file)
if(NOT TARGET LTTng::UST)
add_library(LTTng::UST UNKNOWN IMPORTED)
set_target_properties(LTTng::UST PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${LTTNGUST_INCLUDE_DIRS}"
INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS}
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
IMPORTED_LOCATION "${LTTNGUST_LIBRARIES}")
endif()
# add libdl to required libraries
set(LTTNGUST_LIBRARIES ${LTTNGUST_LIBRARIES} ${CMAKE_DL_LIBS})
endif()
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
find_package_handle_standard_args(LTTngUST FOUND_VAR LTTNGUST_FOUND
REQUIRED_VARS LTTNGUST_LIBRARIES
LTTNGUST_INCLUDE_DIRS
VERSION_VAR LTTNGUST_VERSION_STRING)
mark_as_advanced(LTTNGUST_LIBRARIES LTTNGUST_INCLUDE_DIRS)