From 68d2bb4070f8f1af5e216b2d82f50b8f30320541 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 19 Jul 2022 18:26:30 +0200 Subject: [PATCH] [Backport release-0.7] build(macos): use consistent MACOSX_DEPLOYMENT_TARGET (#19435) build(macos): use consistent MACOSX_DEPLOYMENT_TARGET Use the same logic for both deps (including LuaJIT, for which setting this variable is mandatory) and Nvim: either the eponymous environment variable if set, or the current software version if not. Removes annoying warnings when building locally on macOS. (cherry picked from commit aefccc613c049be0ab7be24518d9f6043f9b88da) Co-authored-by: Christian Clason --- CMakeLists.txt | 10 ++++++++++ third-party/CMakeLists.txt | 12 ++++++++++++ third-party/cmake/BuildLuajit.cmake | 13 +++---------- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9e2a071d92..a1aaf89187 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,6 +86,16 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") # them be included as one of the first places to look for dependencies. list(APPEND CMAKE_PREFIX_PATH /sw /opt/local) + # If the macOS deployment target is not set manually (via $MACOSX_DEPLOYMENT_TARGET), + # fall back to local system version. Needs to be done both here and in cmake.deps. + if(NOT CMAKE_OSX_DEPLOYMENT_TARGET) + execute_process(COMMAND sw_vers -productVersion + OUTPUT_VARIABLE MACOS_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) + set(CMAKE_OSX_DEPLOYMENT_TARGET "${MACOS_VERSION}") + endif() + message("Using deployment target ${CMAKE_OSX_DEPLOYMENT_TARGET}") + # Work around some old, broken detection by CMake for knowing when to use the # isystem flag. Apple's compilers have supported this for quite some time # now. diff --git a/third-party/CMakeLists.txt b/third-party/CMakeLists.txt index f5ad49b8a7..6605b487b5 100644 --- a/third-party/CMakeLists.txt +++ b/third-party/CMakeLists.txt @@ -137,6 +137,18 @@ if(CMAKE_OSX_ARCHITECTURES) endforeach() endif() +# If the macOS deployment target is not set manually (via $MACOSX_DEPLOYMENT_TARGET), +# fall back to local system version. Needs to be done here and in top-level CMakeLists.txt. +if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") + if(NOT CMAKE_OSX_DEPLOYMENT_TARGET) + execute_process(COMMAND sw_vers -productVersion + OUTPUT_VARIABLE MACOS_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) + set(CMAKE_OSX_DEPLOYMENT_TARGET "${MACOS_VERSION}") + endif() + message("-- Using deployment target ${CMAKE_OSX_DEPLOYMENT_TARGET}") +endif() + set(HOSTDEPS_INSTALL_DIR "${DEPS_INSTALL_DIR}") set(HOSTDEPS_BIN_DIR "${DEPS_BIN_DIR}") set(HOSTDEPS_LIB_DIR "${DEPS_LIB_DIR}") diff --git a/third-party/cmake/BuildLuajit.cmake b/third-party/cmake/BuildLuajit.cmake index c8d5b39398..9b393310d6 100644 --- a/third-party/cmake/BuildLuajit.cmake +++ b/third-party/cmake/BuildLuajit.cmake @@ -60,17 +60,10 @@ set(BUILDCMD_UNIX ${MAKE_PRG} CFLAGS=-fPIC CCDEBUG+=-g Q=) +# Setting MACOSX_DEPLOYMENT_TARGET is mandatory for LuaJIT; use version set by +# cmake.deps/CMakeLists.txt (either environment variable or current system version). if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") - if(CMAKE_OSX_DEPLOYMENT_TARGET) - set(DEPLOYMENT_TARGET "MACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}") - else() - execute_process(COMMAND sw_vers -productVersion - OUTPUT_VARIABLE MACOS_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE) - set(DEPLOYMENT_TARGET "MACOSX_DEPLOYMENT_TARGET=${MACOS_VERSION}") - endif() -else() - set(DEPLOYMENT_TARGET "") + set(DEPLOYMENT_TARGET "MACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}") endif() if((UNIX AND NOT APPLE) OR (APPLE AND NOT CMAKE_OSX_ARCHITECTURES))