You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by bn...@apache.org on 2023/10/16 22:01:39 UTC
[trafficserver] branch master updated: Convert ENABLE_POSIX_CAP to auto option (#10613)
This is an automated email from the ASF dual-hosted git repository.
bneradt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new caf8b16f05 Convert ENABLE_POSIX_CAP to auto option (#10613)
caf8b16f05 is described below
commit caf8b16f05cbb49f729274de567514c6cf7f9105
Author: JosiahWI <41...@users.noreply.github.com>
AuthorDate: Mon Oct 16 17:01:32 2023 -0500
Convert ENABLE_POSIX_CAP to auto option (#10613)
The capability library is not available by default even on all UNIX
systems. Making it an auto option should prevent it from being a pain.
---
CMakeLists.txt | 20 ++++++++------------
cmake/AutoOptionHelpers.cmake | 15 ++++++++++++++-
2 files changed, 22 insertions(+), 13 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 59966792ad..bcd49d1d45 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -63,6 +63,11 @@ auto_option(MIMALLOC
DEFAULT OFF
PACKAGE_DEPENDS mimalloc
)
+auto_option(POSIX_CAP
+ FEATURE_VAR TS_USE_POSIX_CAP
+ PACKAGE_DEPENDS cap
+ HEADER_DEPENDS "sys/prctl.h"
+)
auto_option(LUAJIT PACKAGE_DEPENDS LuaJIT)
auto_option(UNWIND FEATURE_VAR TS_USE_REMOTE_UNWINDING PACKAGE_DEPENDS unwind)
@@ -215,20 +220,11 @@ if(brotli_FOUND)
set(HAVE_BROTLI_ENCODE_H TRUE)
endif()
-if(ENABLE_POSIX_CAP)
- find_package(cap REQUIRED)
- set(TS_USE_POSIX_CAP ${cap_FOUND})
- find_path(PRCTL_HEADER NAMES sys/prctl.h)
- # just making sure
- if(NOT PRCTL_HEADER)
- message(FATAL_ERROR "Have cap but sys/prctl.h not found.")
- endif()
+if(TS_USE_POSIX_CAP)
+ # These headers must have been found for capabilites to be enabled.
+ set(HAVE_SYS_CAPABILITY_H TRUE)
set(HAVE_SYS_PRCTL_H TRUE)
- unset(PRCTL_HEADER)
-else()
- find_package(cap QUIET)
endif()
-set(HAVE_SYS_CAPABILITY_H ${cap_FOUND})
find_package(LibLZMA)
if(LibLZMA_FOUND)
diff --git a/cmake/AutoOptionHelpers.cmake b/cmake/AutoOptionHelpers.cmake
index 0fa8640af3..1d9e38d3f5 100644
--- a/cmake/AutoOptionHelpers.cmake
+++ b/cmake/AutoOptionHelpers.cmake
@@ -15,6 +15,8 @@
#
#######################
+include(CheckIncludeFile)
+
set(GLOBAL_AUTO_OPTION_VARS "")
function(_REGISTER_AUTO_OPTION _NAME _FEATURE_VAR _DESCRIPTION _DEFAULT)
@@ -49,6 +51,16 @@ macro(_CHECK_PACKAGE_DEPENDS _OPTION_VAR _PACKAGE_DEPENDS _FEATURE_VAR)
endforeach()
endmacro()
+macro(_CHECK_HEADER_DEPENDS _OPTION_VAR _HEADER_DEPENDS _FEATURE_VAR)
+ foreach(HEADER_NAME ${_HEADER_DEPENDS})
+ check_include_file(${HEADER_NAME} HEADER_FOUND)
+ if(NOT HEADER_FOUND)
+ set(${_FEATURE_VAR} FALSE)
+ break()
+ endif()
+ endforeach()
+endmacro()
+
# auto_option(<feature_name>
# [DESCRIPTION <description>]
# [DEFAULT <default>]
@@ -88,7 +100,7 @@ macro(auto_option _FEATURE_NAME)
cmake_parse_arguments(ARG
""
"DESCRIPTION;DEFAULT;FEATURE_VAR"
- "PACKAGE_DEPENDS"
+ "PACKAGE_DEPENDS;HEADER_DEPENDS"
${ARGN}
)
@@ -114,6 +126,7 @@ macro(auto_option _FEATURE_NAME)
if(${${OPTION_VAR}} MATCHES "(ON)|(AUTO)|(TRUE)|(1)")
set(${FEATURE_VAR} TRUE)
_check_package_depends(${OPTION_VAR} "${ARG_PACKAGE_DEPENDS}" ${FEATURE_VAR})
+ _check_header_depends(${OPTION_VAR} "${ARG_HEADER_DEPENDS}" ${FEATURE_VAR})
else()
set(${FEATURE_VAR} FALSE)
endif()