Files
arrow/cpp/cmake_modules/FindOpenSSLAlt.cmake
Sutou Kouhei 9d92ed4dc4 GH-36329: [C++][CI] Use OpenSSL 3 on macOS (#36336)
### Rationale for this change

GitHub Actions self-hosted runner for macOS has
/usr/local/include/openssl/ provided by OpenSSL 3 (`openssl@ 3`). Our include paths have `... -isystem /usr/local/include -isystem /usr/local/opt/openssl@ 1.1/include ...`. It means that `/usr/local/include/openssl/...` is used for `#include <openssl/...>`.

If we mix OpenSSL 3 headers and OpenSSL 1.1 libraries, we may get some problems such as a link error.

### What changes are included in this PR?

This uses OpenSSL 3 instead of OpenSSL 1.1 because GitHub Actions self-hosted runner for macOS provides OpenSSL 3 by /usr/local/include/openssl/. Note that `$(brew --prefix openssl@ 3)/include` isn't linked as /usr/local/include/openssl` by default. So I think that Homebrew GitHub Actions self-hosted runner for macOS does it explicitly.

Other solution: Unlinking `/usr/local/include/openssl` by `brew unlink openssl@ 3`. But there is no reason to use OpenSSL 1.1 for us. So this PR doesn't use this solution.

### Are these changes tested?

Yes.

### Are there any user-facing changes?

Yes.
* Closes: #36329

Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
2023-06-30 09:41:52 +09:00

56 lines
1.8 KiB
CMake

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
if(OpenSSLAlt_FOUND)
return()
endif()
if(APPLE AND NOT OPENSSL_ROOT_DIR)
find_program(BREW brew)
if(BREW)
foreach(BREW_OPENSSL_VERSION "" "3" "3.0" "1.1")
set(BREW_OPENSSL_PACKAGE "openssl")
if(BREW_OPENSSL_VERSION)
string(APPEND BREW_OPENSSL_PACKAGE "@${BREW_OPENSSL_VERSION}")
endif()
execute_process(COMMAND ${BREW} --prefix --installed ${BREW_OPENSSL_PACKAGE}
OUTPUT_VARIABLE BREW_OPENSSL_PREFIX
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(BREW_OPENSSL_PREFIX)
set(OPENSSL_ROOT_DIR ${BREW_OPENSSL_PREFIX})
break()
endif()
endforeach()
endif()
endif()
set(find_package_args)
if(OpenSSLAlt_FIND_VERSION)
list(APPEND find_package_args ${OpenSSLAlt_FIND_VERSION})
endif()
if(OpenSSLAlt_FIND_QUIETLY)
list(APPEND find_package_args QUIET)
endif()
if(ARROW_OPENSSL_USE_SHARED)
set(OPENSSL_USE_STATIC_LIBS OFF)
else()
set(OPENSSL_USE_STATIC_LIBS ON)
endif()
find_package(OpenSSL ${find_package_args})
set(OpenSSLAlt_FOUND ${OPENSSL_FOUND})