aboutsummaryrefslogtreecommitdiff
path: root/find-modules/FindUDev.cmake
diff options
context:
space:
mode:
authorVolker Krause <vkrause@kde.org>2019-03-03 10:25:41 +0100
committerVolker Krause <vkrause@kde.org>2019-03-04 21:04:27 +0100
commit8999b7bd6f6d1505c1b59b48432a3cfa4a90a2f8 (patch)
treebb2595cba48be446b264058c80422a771d44930c /find-modules/FindUDev.cmake
parent4c78221d13eefc497ff046f79e2c452913c27f6b (diff)
downloadextra-cmake-modules-8999b7bd6f6d1505c1b59b48432a3cfa4a90a2f8.tar.gz
extra-cmake-modules-8999b7bd6f6d1505c1b59b48432a3cfa4a90a2f8.tar.bz2
Add UDev find module
Summary: This one is originally coming from Solid, but there are several more copies in our repositories (plasma-desktop, kwin, powerdevil, etc). Reviewers: cgiboudeaux Reviewed By: cgiboudeaux Subscribers: cgiboudeaux, kde-frameworks-devel, kde-buildsystem Tags: #frameworks, #build_system Differential Revision: https://phabricator.kde.org/D19486
Diffstat (limited to 'find-modules/FindUDev.cmake')
-rw-r--r--find-modules/FindUDev.cmake92
1 files changed, 92 insertions, 0 deletions
diff --git a/find-modules/FindUDev.cmake b/find-modules/FindUDev.cmake
new file mode 100644
index 00000000..b7557415
--- /dev/null
+++ b/find-modules/FindUDev.cmake
@@ -0,0 +1,92 @@
+#.rst:
+# FindUDev
+# --------
+#
+# Try to find the UDev library, once done this will define:
+#
+# ``UDev_FOUND``
+# System has UDev.
+#
+# ``UDev_INCLUDE_DIRS``
+# The libudev include directory.
+#
+# ``UDev_LIBRARIES``
+# The libudev libraries.
+#
+# ``UDev_VERSION``
+# The libudev version.
+#
+# If ``UDev_FOUND`` is TRUE, the following imported target
+# will be available:
+#
+# ``UDev::UDev``
+# The UDev library
+#
+# Since 5.57.0.
+
+#=============================================================================
+# Copyright (c) 2010, Rafael Fernández López, <ereslibre@kde.org>
+# Copyright (c) 2019, Volker Krause, <vkrause@kde.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#=============================================================================
+
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_UDEV QUIET libudev)
+
+find_path(UDev_INCLUDE_DIRS NAMES libudev.h HINTS ${PC_UDEV_INCLUDE_DIRS})
+find_library(UDev_LIBRARIES NAMES udev HINTS ${PC_UDEV_LIBRARY_DIRS})
+
+set(UDev_VERSION ${PC_UDEV_VERSION})
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(UDev
+ FOUND_VAR UDev_FOUND
+ REQUIRED_VARS UDev_INCLUDE_DIRS UDev_LIBRARIES
+ VERSION_VAR UDev_VERSION
+)
+
+mark_as_advanced(UDev_INCLUDE_DIRS UDev_LIBRARIES)
+
+if(UDev_FOUND AND NOT TARGET UDev::UDev)
+ add_library(UDev::UDev UNKNOWN IMPORTED)
+ set_target_properties(UDev::UDev PROPERTIES
+ IMPORTED_LOCATION "${UDev_LIBRARIES}"
+ INTERFACE_INCLUDE_DIRECTORIES "${UDev_INCLUDE_DIRS}"
+ INTERFACE_COMPILE_DEFINITIONS "${PC_UDEV_CFLAGS_OTHER}"
+ )
+endif()
+
+# backward compat variables, remove for KF6
+set(UDEV_FOUND ${UDev_FOUND})
+set(UDEV_LIBS ${UDev_LIBRARIES})
+set(UDEV_INCLUDE_DIR ${UDev_INCLUDE_DIRS})
+mark_as_advanced(UDEV_FOUND UDEV_LIBS UDEV_INCLUDE_DIR)
+
+include(FeatureSummary)
+set_package_properties(UDev PROPERTIES
+ DESCRIPTION "API for enumerating and introspecting local devices (part of systemd)"
+ URL "https://freedesktop.org/wiki/Software/systemd/"
+)