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 <41302989+josia...@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()