From 9d23e2943754afab9741c47ae135037498ad9d34 Mon Sep 17 00:00:00 2001 From: Nicolas Fella Date: Wed, 10 Feb 2021 14:09:01 +0100 Subject: Add FindLibcap.cmake We have identical copies of this in kinit, kwin, ksysguard and powerdevil. This makes it a natural candidate for inclusion in ECM. --- docs/find-module/FindLibcap.rst | 1 + find-modules/FindLibcap.cmake | 44 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 docs/find-module/FindLibcap.rst create mode 100644 find-modules/FindLibcap.cmake diff --git a/docs/find-module/FindLibcap.rst b/docs/find-module/FindLibcap.rst new file mode 100644 index 00000000..352b9fb5 --- /dev/null +++ b/docs/find-module/FindLibcap.rst @@ -0,0 +1 @@ +.. ecm-module:: ../../find-modules/FindLibcap.cmake diff --git a/find-modules/FindLibcap.cmake b/find-modules/FindLibcap.cmake new file mode 100644 index 00000000..a9fc2112 --- /dev/null +++ b/find-modules/FindLibcap.cmake @@ -0,0 +1,44 @@ +#.rst: +# FindLibcap +# ---------- +# Try to find the setcap binary and cap libraries +# +# This will define: +# +# Libcap_FOUND - system has the cap library and setcap binary +# Libcap_LIBRARIES - cap libraries to link against +# SETCAP_EXECUTABLE - path of the setcap binary +# +# In addition, the following targets are defined: +# +# Libcap::SetCapabilities +# +# Since 5.80.0 +# +#===================================================================== +# SPDX-FileCopyrightText: 2014 Hrvoje Senjan +# +# SPDX-License-Identifier: BSD-3-Clause +#===================================================================== + +find_program(SETCAP_EXECUTABLE NAMES setcap DOC "The setcap executable") + +find_library(Libcap_LIBRARIES NAMES cap DOC "The cap (capabilities) library") + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Libcap FOUND_VAR Libcap_FOUND + REQUIRED_VARS SETCAP_EXECUTABLE Libcap_LIBRARIES) + +if(Libcap_FOUND AND NOT TARGET Libcap::SetCapabilities) + add_executable(Libcap::SetCapabilities IMPORTED) + set_target_properties(Libcap::SetCapabilities PROPERTIES + IMPORTED_LOCATION "${SETCAP_EXECUTABLE}" + ) +endif() + +mark_as_advanced(SETCAP_EXECUTABLE Libcap_LIBRARIES) + +include(FeatureSummary) +set_package_properties(Libcap PROPERTIES + URL https://sites.google.com/site/fullycapable/ + DESCRIPTION "Capabilities are a measure to limit the omnipotence of the superuser.") -- cgit v1.2.1