Author: brane Date: Thu May 29 00:27:57 2025 New Revision: 1925924 URL: http://svn.apache.org/viewvc?rev=1925924&view=rev Log: In the CMake build, mix a bunch of renaming stuff with adding support for GSSAPI from Homebrew/MacPorts. Sorry for the mess...
* build/SerfMacOS.cmake: Pretty much everything. (_serf_macos__find_homebrew_package, _serf_macos__find_macports_package): Rename the 'gssapi' package alias to 'krb5' for Homebrew and 'kerberos5' for MacPorts. Modified: serf/trunk/build/SerfMacOS.cmake Modified: serf/trunk/build/SerfMacOS.cmake URL: http://svn.apache.org/viewvc/serf/trunk/build/SerfMacOS.cmake?rev=1925924&r1=1925923&r2=1925924&view=diff ============================================================================== --- serf/trunk/build/SerfMacOS.cmake (original) +++ serf/trunk/build/SerfMacOS.cmake Thu May 29 00:27:57 2025 @@ -21,44 +21,44 @@ cmake_minimum_required(VERSION 3.12) # macOS: Find packages installed in Homebrew or MacPorts. -macro(serf_macos__check_package_manager_) +macro(_serf_macos__check_package_manager) if(USE_HOMEBREW) - serf_macos__check_homebrew_() + _serf_macos__check_homebrew() endif() if(USE_MACPORTS) - serf_macos__check_macports_() + _serf_macos__check_macports() endif() -endmacro(serf_macos__check_package_manager_) +endmacro(_serf_macos__check_package_manager) -macro(serf_macos__find_package_ package variable docstring) +macro(_serf_macos__find_package package variable docstring) if(USE_HOMEBREW) - serf_macos__find_homebrew_package_("${package}" "${variable}" "${docstring}") + _serf_macos__find_homebrew_package("${package}" "${variable}" "${docstring}") endif() if(USE_MACPORTS) - serf_macos__find_macports_package_("${package}" "${variable}" "${docstring}") + _serf_macos__find_macports_package("${package}" "${variable}" "${docstring}") endif() -endmacro(serf_macos__find_package_) +endmacro(_serf_macos__find_package) function(serf_macos_find_packages) - serf_macos__check_package_manager_() - serf_macos__find_package_("apr" APR_ROOT "Path to APR's install area") - serf_macos__find_package_("apr-util" APRUtil_ROOT "Path to APR-Util's install area") - serf_macos__find_package_("openssl" OPENSSL_ROOT_DIR "Path to OpenSSL's install area") + _serf_macos__check_package_manager() + _serf_macos__find_package("apr" APR_ROOT "Path to APR's install area") + _serf_macos__find_package("apr-util" APRUtil_ROOT "Path to APR-Util's install area") + _serf_macos__find_package("openssl" OPENSSL_ROOT_DIR "Path to OpenSSL's install area") if(USE_MACPORTS) # NOTE: MacPorts uses its own version of zlib. Homebrew tends to use # the system zlib, so we won't even look for the Homebrew version. # The user can always override that on the command line. - serf_macos__find_package_("zlib" ZLIB_ROOT "Path to zlib's install area") + _serf_macos__find_package("zlib" ZLIB_ROOT "Path to zlib's install area") endif() - serf_macos__find_package_("brotli" BROTLI_ROOT "Path to GSSAPI's install area") - serf_macos__find_package_("gssapi" GSSAPI_ROOT "Path to GSSAPI's install area") + _serf_macos__find_package("brotli" BROTLI_ROOT "Path to Brotli's install area") + _serf_macos__find_package("gssapi" GSSAPI_ROOT "Path to GSSAPI's install area") endfunction() # # Homebrew # -function(serf_macos__check_homebrew_) - if(NOT DEFINED SERF_MACOS__HAS_HOMEBREW_) +function(_serf_macos__check_homebrew) + if(NOT DEFINED SERF_MACOS__HAS_HOMEBREW) execute_process(COMMAND "brew" "--version" ERROR_VARIABLE shutup OUTPUT_VARIABLE version @@ -70,20 +70,26 @@ function(serf_macos__check_homebrew_) RESULT_VARIABLE failed) endif() if(failed) - set(SERF_MACOS__HAS_HOMEBREW_ FALSE PARENT_SCOPE) + set(SERF_MACOS__HAS_HOMEBREW FALSE PARENT_SCOPE) message(WARNING "Homebrew was not found") else() string(STRIP "${version}" version) string(STRIP "${prefix}" prefix) message(STATUS "Found ${version} at ${prefix}") - set(SERF_MACOS__HAS_HOMEBREW_ TRUE PARENT_SCOPE) + set(SERF_MACOS__HAS_HOMEBREW TRUE PARENT_SCOPE) endif() endif() -endfunction(serf_macos__check_homebrew_) +endfunction(_serf_macos__check_homebrew) -function(serf_macos__find_homebrew_package_ package variable docstring) +function(_serf_macos__find_homebrew_package package variable docstring) # Don't override user's provided values. - if("${${variable}}" STREQUAL "" AND ${SERF_MACOS__HAS_HOMEBREW_}) + if("${${variable}}" STREQUAL "" AND ${SERF_MACOS__HAS_HOMEBREW}) + set(package_alias "${package}") + if("${package_alias}" STREQUAL "gssapi") + # The Homebrew package is called 'krb5' + set(package "krb5") + endif() + execute_process(COMMAND "brew" "--prefix" "--installed" "${package}" ERROR_VARIABLE shutup OUTPUT_VARIABLE prefix @@ -92,59 +98,70 @@ function(serf_macos__find_homebrew_packa message(STATUS "Homebrew: not found: ${package}") else() string(STRIP "${prefix}" prefix) - message(STATUS "Homebrew: found ${package} at ${prefix}") + if("${package_alias}" STREQUAL "${package}") + message(STATUS "Homebrew: found ${package} at ${prefix}") + else() + message(STATUS "Homebrew: found ${package_alias} (${package}) at ${prefix}") + endif() set(${variable} "${prefix}" CACHE PATH "${docstring}" FORCE) endif() endif() -endfunction(serf_macos__find_homebrew_package_) +endfunction(_serf_macos__find_homebrew_package) # # MacPorts # -function(serf_macos__check_macports_) - if(NOT DEFINED SERF_MACOS__HAS_MACPORTS_) +function(_serf_macos__check_macports) + if(NOT DEFINED SERF_MACOS__HAS_MACPORTS) execute_process(COMMAND "port" "version" ERROR_VARIABLE shutup OUTPUT_VARIABLE version RESULT_VARIABLE failed) if(NOT failed) - execute_process(COMMAND "which" "port" - ERROR_VARIABLE shutup - OUTPUT_VARIABLE prefix - RESULT_VARIABLE failed) + find_program(port NAMES "port") endif() - if(failed) - set(SERF_MACOS__HAS_MACPORTS_ FALSE PARENT_SCOPE) + if(failed OR "${port}" STREQUAL "port-NOTFOUND") + set(SERF_MACOS__HAS_MACPORTS FALSE PARENT_SCOPE) message(WARNING "MacPorts was not found") else() + # 'port version' prints "Version: n.n.n" string(REPLACE "Version:" "" version "${version}") string(STRIP "${version}" version) - cmake_path(SET prefix_path NORMALIZE ${prefix}) - cmake_path(GET prefix_path PARENT_PATH prefix_path) - cmake_path(GET prefix_path PARENT_PATH prefix_path) - cmake_path(NATIVE_PATH prefix_path prefix) + + # ${port} will be "/some/path/prefix/bin/port" + get_filename_component(prefix ${port} DIRECTORY) + get_filename_component(prefix ${prefix} DIRECTORY) message(STATUS "Found MacPorts ${version} at ${prefix}") - set(SERF_MACOS__HAS_MACPORTS_ TRUE PARENT_SCOPE) - set(SERF_MACOS__MACPORTS_ROOT_ "${prefix}" PARENT_SCOPE) + set(SERF_MACOS__HAS_MACPORTS TRUE PARENT_SCOPE) + set(SERF_MACOS__MACPORTS_DIR "${prefix}" PARENT_SCOPE) endif() endif() -endfunction(serf_macos__check_macports_) +endfunction(_serf_macos__check_macports) -function(serf_macos__find_macports_package_ package variable docstring) +function(_serf_macos__find_macports_package package variable docstring) # Don't override user's provided values. - if("${${variable}}" STREQUAL "" AND ${SERF_MACOS__HAS_MACPORTS_}) - ##!message(WARNING "MacPorts dependencies are not implemented (${package})") + if("${${variable}}" STREQUAL "" AND ${SERF_MACOS__HAS_MACPORTS}) + set(package_alias "${package}") + if("${package_alias}" STREQUAL "gssapi") + # The MacPorts package is called 'kerberos5' + set(package "kerberos5") + endif() + execute_process(COMMAND "port" "echo" "active" "and" "name:^${package}$" ERROR_VARIABLE shutup OUTPUT_VARIABLE output RESULT_VARIABLE failed) if(failed OR "${output}" STREQUAL "") - message(STATUS "MacPorts: not found: ${package}") + message(STATUS "MacPorts: not found: ${package_alias}") else() # TODO: Invoke "port contents ${package}" and calculate the common # prefix of the installed files instead? - message(STATUS "MacPorts: found ${package} at ${SERF_MACOS__MACPORTS_ROOT_}") - set(${variable} "${SERF_MACOS__MACPORTS_ROOT_}" CACHE PATH "${docstring}" FORCE) + if("${package_alias}" STREQUAL "${package}") + message(STATUS "MacPorts: found ${package} at ${SERF_MACOS__MACPORTS_DIR}") + else() + message(STATUS "MacPorts: found ${package_alias} (${package}) at ${SERF_MACOS__MACPORTS_DIR}") + endif() + set(${variable} "${SERF_MACOS__MACPORTS_DIR}" CACHE PATH "${docstring}" FORCE) endif() endif() -endfunction(serf_macos__find_macports_package_) +endfunction(_serf_macos__find_macports_package)