@@ -21,44 +21,44 @@ cmake_minimum_required(VERSION 3.12)
2121
2222# macOS: Find packages installed in Homebrew or MacPorts.
2323
24- macro (serf_macos__check_package_manager_ )
24+ macro (_serf_macos__check_package_manager )
2525 if (USE_HOMEBREW)
26- serf_macos__check_homebrew_ ()
26+ _serf_macos__check_homebrew ()
2727 endif ()
2828 if (USE_MACPORTS)
29- serf_macos__check_macports_ ()
29+ _serf_macos__check_macports ()
3030 endif ()
31- endmacro (serf_macos__check_package_manager_ )
31+ endmacro (_serf_macos__check_package_manager )
3232
33- macro (serf_macos__find_package_ package variable docstring)
33+ macro (_serf_macos__find_package package variable docstring)
3434 if (USE_HOMEBREW)
35- serf_macos__find_homebrew_package_ ("${package} " "${variable} " "${docstring} " )
35+ _serf_macos__find_homebrew_package ("${package} " "${variable} " "${docstring} " )
3636 endif ()
3737 if (USE_MACPORTS)
38- serf_macos__find_macports_package_ ("${package} " "${variable} " "${docstring} " )
38+ _serf_macos__find_macports_package ("${package} " "${variable} " "${docstring} " )
3939 endif ()
40- endmacro (serf_macos__find_package_ )
40+ endmacro (_serf_macos__find_package )
4141
4242function (serf_macos_find_packages)
43- serf_macos__check_package_manager_ ()
44- serf_macos__find_package_ ("apr" APR_ROOT "Path to APR's install area" )
45- serf_macos__find_package_ ("apr-util" APRUtil_ROOT "Path to APR-Util's install area" )
46- serf_macos__find_package_ ("openssl" OPENSSL_ROOT_DIR "Path to OpenSSL's install area" )
43+ _serf_macos__check_package_manager ()
44+ _serf_macos__find_package ("apr" APR_ROOT "Path to APR's install area" )
45+ _serf_macos__find_package ("apr-util" APRUtil_ROOT "Path to APR-Util's install area" )
46+ _serf_macos__find_package ("openssl" OPENSSL_ROOT_DIR "Path to OpenSSL's install area" )
4747 if (USE_MACPORTS)
4848 # NOTE: MacPorts uses its own version of zlib. Homebrew tends to use
4949 # the system zlib, so we won't even look for the Homebrew version.
5050 # The user can always override that on the command line.
51- serf_macos__find_package_ ("zlib" ZLIB_ROOT "Path to zlib's install area" )
51+ _serf_macos__find_package ("zlib" ZLIB_ROOT "Path to zlib's install area" )
5252 endif ()
53- serf_macos__find_package_ ("brotli" BROTLI_ROOT "Path to GSSAPI 's install area" )
54- serf_macos__find_package_ ("gssapi" GSSAPI_ROOT "Path to GSSAPI's install area" )
53+ _serf_macos__find_package ("brotli" BROTLI_ROOT "Path to Brotli 's install area" )
54+ _serf_macos__find_package ("gssapi" GSSAPI_ROOT "Path to GSSAPI's install area" )
5555endfunction ()
5656
5757#
5858# Homebrew
5959#
60- function (serf_macos__check_homebrew_ )
61- if (NOT DEFINED SERF_MACOS__HAS_HOMEBREW_ )
60+ function (_serf_macos__check_homebrew )
61+ if (NOT DEFINED SERF_MACOS__HAS_HOMEBREW )
6262 execute_process (COMMAND "brew" "--version"
6363 ERROR_VARIABLE shutup
6464 OUTPUT_VARIABLE version
@@ -70,20 +70,26 @@ function(serf_macos__check_homebrew_)
7070 RESULT_VARIABLE failed)
7171 endif ()
7272 if (failed)
73- set (SERF_MACOS__HAS_HOMEBREW_ FALSE PARENT_SCOPE)
73+ set (SERF_MACOS__HAS_HOMEBREW FALSE PARENT_SCOPE)
7474 message (WARNING "Homebrew was not found" )
7575 else ()
7676 string (STRIP "${version} " version )
7777 string (STRIP "${prefix} " prefix )
7878 message (STATUS "Found ${version} at ${prefix} " )
79- set (SERF_MACOS__HAS_HOMEBREW_ TRUE PARENT_SCOPE)
79+ set (SERF_MACOS__HAS_HOMEBREW TRUE PARENT_SCOPE)
8080 endif ()
8181 endif ()
82- endfunction (serf_macos__check_homebrew_ )
82+ endfunction (_serf_macos__check_homebrew )
8383
84- function (serf_macos__find_homebrew_package_ package variable docstring)
84+ function (_serf_macos__find_homebrew_package package variable docstring)
8585 # Don't override user's provided values.
86- if ("${${variable} }" STREQUAL "" AND ${SERF_MACOS__HAS_HOMEBREW_} )
86+ if ("${${variable} }" STREQUAL "" AND ${SERF_MACOS__HAS_HOMEBREW} )
87+ set (package_alias "${package} " )
88+ if ("${package_alias} " STREQUAL "gssapi" )
89+ # The Homebrew package is called 'krb5'
90+ set (package "krb5" )
91+ endif ()
92+
8793 execute_process (COMMAND "brew" "--prefix" "--installed" "${package} "
8894 ERROR_VARIABLE shutup
8995 OUTPUT_VARIABLE prefix
@@ -92,59 +98,70 @@ function(serf_macos__find_homebrew_package_ package variable docstring)
9298 message (STATUS "Homebrew: not found: ${package} " )
9399 else ()
94100 string (STRIP "${prefix} " prefix )
95- message (STATUS "Homebrew: found ${package} at ${prefix} " )
101+ if ("${package_alias} " STREQUAL "${package} " )
102+ message (STATUS "Homebrew: found ${package} at ${prefix} " )
103+ else ()
104+ message (STATUS "Homebrew: found ${package_alias} (${package} ) at ${prefix} " )
105+ endif ()
96106 set (${variable} "${prefix} " CACHE PATH "${docstring} " FORCE)
97107 endif ()
98108 endif ()
99- endfunction (serf_macos__find_homebrew_package_ )
109+ endfunction (_serf_macos__find_homebrew_package )
100110
101111#
102112# MacPorts
103113#
104- function (serf_macos__check_macports_ )
105- if (NOT DEFINED SERF_MACOS__HAS_MACPORTS_ )
114+ function (_serf_macos__check_macports )
115+ if (NOT DEFINED SERF_MACOS__HAS_MACPORTS )
106116 execute_process (COMMAND "port" "version"
107117 ERROR_VARIABLE shutup
108118 OUTPUT_VARIABLE version
109119 RESULT_VARIABLE failed)
110120 if (NOT failed)
111- execute_process (COMMAND "which" "port"
112- ERROR_VARIABLE shutup
113- OUTPUT_VARIABLE prefix
114- RESULT_VARIABLE failed)
121+ find_program (port NAMES "port" )
115122 endif ()
116- if (failed)
117- set (SERF_MACOS__HAS_MACPORTS_ FALSE PARENT_SCOPE)
123+ if (failed OR " ${port} " STREQUAL "port-NOTFOUND" )
124+ set (SERF_MACOS__HAS_MACPORTS FALSE PARENT_SCOPE)
118125 message (WARNING "MacPorts was not found" )
119126 else ()
127+ # 'port version' prints "Version: n.n.n"
120128 string (REPLACE "Version:" "" version "${version} " )
121129 string (STRIP "${version} " version )
122- cmake_path(SET prefix_path NORMALIZE ${prefix} )
123- cmake_path( GET prefix_path PARENT_PATH prefix_path )
124- cmake_path( GET prefix_path PARENT_PATH prefix_path )
125- cmake_path(NATIVE_PATH prefix_path prefix )
130+
131+ # ${port} will be "/some/path/prefix/bin/port"
132+ get_filename_component ( prefix ${port} DIRECTORY )
133+ get_filename_component ( prefix ${ prefix} DIRECTORY )
126134 message (STATUS "Found MacPorts ${version} at ${prefix} " )
127- set (SERF_MACOS__HAS_MACPORTS_ TRUE PARENT_SCOPE)
128- set (SERF_MACOS__MACPORTS_ROOT_ "${prefix} " PARENT_SCOPE)
135+ set (SERF_MACOS__HAS_MACPORTS TRUE PARENT_SCOPE)
136+ set (SERF_MACOS__MACPORTS_DIR "${prefix} " PARENT_SCOPE)
129137 endif ()
130138 endif ()
131- endfunction (serf_macos__check_macports_ )
139+ endfunction (_serf_macos__check_macports )
132140
133- function (serf_macos__find_macports_package_ package variable docstring)
141+ function (_serf_macos__find_macports_package package variable docstring)
134142 # Don't override user's provided values.
135- if ("${${variable} }" STREQUAL "" AND ${SERF_MACOS__HAS_MACPORTS_} )
136- ##!message(WARNING "MacPorts dependencies are not implemented (${package})")
143+ if ("${${variable} }" STREQUAL "" AND ${SERF_MACOS__HAS_MACPORTS} )
144+ set (package_alias "${package} " )
145+ if ("${package_alias} " STREQUAL "gssapi" )
146+ # The MacPorts package is called 'kerberos5'
147+ set (package "kerberos5" )
148+ endif ()
149+
137150 execute_process (COMMAND "port" "echo" "active" "and" "name:^${package} $"
138151 ERROR_VARIABLE shutup
139152 OUTPUT_VARIABLE output
140153 RESULT_VARIABLE failed)
141154 if (failed OR "${output} " STREQUAL "" )
142- message (STATUS "MacPorts: not found: ${package } " )
155+ message (STATUS "MacPorts: not found: ${package_alias } " )
143156 else ()
144157 # TODO: Invoke "port contents ${package}" and calculate the common
145158 # prefix of the installed files instead?
146- message (STATUS "MacPorts: found ${package} at ${SERF_MACOS__MACPORTS_ROOT_} " )
147- set (${variable} "${SERF_MACOS__MACPORTS_ROOT_} " CACHE PATH "${docstring} " FORCE)
159+ if ("${package_alias} " STREQUAL "${package} " )
160+ message (STATUS "MacPorts: found ${package} at ${SERF_MACOS__MACPORTS_DIR} " )
161+ else ()
162+ message (STATUS "MacPorts: found ${package_alias} (${package} ) at ${SERF_MACOS__MACPORTS_DIR} " )
163+ endif ()
164+ set (${variable} "${SERF_MACOS__MACPORTS_DIR} " CACHE PATH "${docstring} " FORCE)
148165 endif ()
149166 endif ()
150- endfunction (serf_macos__find_macports_package_ )
167+ endfunction (_serf_macos__find_macports_package )
0 commit comments