From 92f8b5ac2e699ed3fbd6e086dd40007b22c3838f Mon Sep 17 00:00:00 2001 From: Christian Lohmaier Date: Mon, 21 Nov 2022 14:51:32 +0100 Subject: macOS: simplify SDK handling, remove the upper limit of SDK MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …both for building as well as for min-required version The newer versions of XCode/the corresponding SDK it comes with didn't cause any problems in the last years, and checking for a max-sdk version just causes more work when working on a newer system, either forcing to have multiple versions of Xcode around and switching between those for no reason, or always patching configure to accept the currently used version when bisecting stuff. Addition by tml: We still want to default to --with-macosx-version-min-required=10.12 in this branch. Change-Id: I0dac9f90afe7d4490d44a1036fa8d358d29da57f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144206 Tested-by: Tor Lillqvist Reviewed-by: Tor Lillqvist --- configure.ac | 134 +++++++++++++++-------------------------------------------- 1 file changed, 34 insertions(+), 100 deletions(-) diff --git a/configure.ac b/configure.ac index 9793ed40bdd9..4585a22fc362 100644 --- a/configure.ac +++ b/configure.ac @@ -3294,63 +3294,34 @@ if test $_os = Darwin; then # The SDK in the currently selected Xcode should be found. AC_MSG_CHECKING([what macOS SDK to use]) - for macosx_sdk in 13.0 12.3 12.1 12.0 11.3 11.1 11.0 10.15 10.14 10.13; do - MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null` - if test -d "$MACOSX_SDK_PATH"; then - break - else - MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk" - if test -d "$MACOSX_SDK_PATH"; then - break - fi - fi - done + # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not + # really supported anymore, instead you'd use different copies of Xcode, each with their own + # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version + # also restricting the SDK version to "known good" versions doesn't seem necessary anyomre, the + # problems that existed in the PPC days with target versions not being respected or random + # failures seems to be a thing of the past or rather: limiting either the Xcode version or the + # SDK version is enough, no need to do both... + MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null` if test ! -d "$MACOSX_SDK_PATH"; then AC_MSG_ERROR([Could not find an appropriate macOS SDK]) fi - - AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH]) + macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion` MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion) - case $macosx_sdk in - 10.13) - MACOSX_SDK_VERSION=101300 - ;; - 10.14) - MACOSX_SDK_VERSION=101400 - ;; - 10.15) - MACOSX_SDK_VERSION=101500 - ;; - 11.0) - MACOSX_SDK_VERSION=110000 - ;; - 11.1) - MACOSX_SDK_VERSION=110100 - ;; - 11.3) - MACOSX_SDK_VERSION=110300 - ;; - 12.0) - MACOSX_SDK_VERSION=120000 - ;; - 12.1) - MACOSX_SDK_VERSION=120100 - ;; - 12.3) - MACOSX_SDK_VERSION=120300 - ;; - 13.0) - MACOSX_SDK_VERSION=130000 - ;; - *) - AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported]) - ;; - esac - + # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting + # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000, + # 10.10.2 is 101002 + # we don't target the lower versions anymore, so it doesn't matter that we don't generate the + # correct version in case such an old SDK is specified, it will be rejected later anyway + MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }') + if test $MACOSX_SDK_VERSION -lt 101400; then + AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.14]) + fi if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then - AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon]) + AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)]) fi + AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH]) + AC_MSG_CHECKING([what minimum version of macOS to require]) if test "$with_macosx_version_min_required" = "" ; then if test "$host_cpu" = x86_64; then with_macosx_version_min_required="10.12"; @@ -3358,6 +3329,19 @@ if test $_os = Darwin; then with_macosx_version_min_required="11.0"; fi fi + # see same notes about MACOSX_SDK_VERSION above + MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }') + if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101200; then + AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.12]) + fi + AC_MSG_RESULT([$with_macosx_version_min_required]) + + AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk]) + if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then + AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)]) + else + AC_MSG_RESULT([yes]) + fi # export this so that "xcrun" invocations later return matching values DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}" @@ -3379,48 +3363,6 @@ if test $_os = Darwin; then my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1) MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version } - case "$with_macosx_version_min_required" in - 10.12) - MAC_OS_X_VERSION_MIN_REQUIRED="101200" - ;; - 10.13) - MAC_OS_X_VERSION_MIN_REQUIRED="101300" - ;; - 10.14) - MAC_OS_X_VERSION_MIN_REQUIRED="101400" - ;; - 10.15) - MAC_OS_X_VERSION_MIN_REQUIRED="101500" - ;; - 10.16) - MAC_OS_X_VERSION_MIN_REQUIRED="101600" - ;; - 11.0) - MAC_OS_X_VERSION_MIN_REQUIRED="110000" - ;; - 11.1) - MAC_OS_X_VERSION_MIN_REQUIRED="110100" - ;; - 11.3) - MAC_OS_X_VERSION_MIN_REQUIRED="110300" - ;; - 12.0) - MAC_OS_X_VERSION_MIN_REQUIRED="120000" - ;; - 12.1) - MAC_OS_X_VERSION_MIN_REQUIRED="120100" - ;; - 12.3) - MAC_OS_X_VERSION_MIN_REQUIRED="120300" - ;; - 13.0) - MAC_OS_X_VERSION_MIN_REQUIRED="130000" - ;; - *) - AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.12--13.0]) - ;; - esac - LIBTOOL=/usr/bin/libtool INSTALL_NAME_TOOL=install_name_tool if test -z "$save_CC"; then @@ -3456,14 +3398,6 @@ if test $_os = Darwin; then RANLIB=`xcrun -find ranlib` fi - AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk]) - if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then - AC_MSG_ERROR([the version minimum required cannot be greater than the sdk level]) - else - AC_MSG_RESULT([ok]) - fi - AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED]) - AC_MSG_CHECKING([whether to do code signing]) if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then -- cgit