From e1369aa7d6577d4bc787bc5743a611971052c45b Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Mon, 21 Apr 2025 14:57:06 -0600 Subject: [PATCH] CMake: Explicitly set CMAKE_OSX_SYSROOT to macosx for macOS host builds The implicit default CMAKE_OSX_SYSROOT was a workaround in CMake for macOS ~10.8. As of CMake 4.x, CMake expects macOS host compilers to have their own default sysroot detection logic. However, upstream llvm does not actually do this, only Apple Clang does. To keep supporting homebrew clang and manually compiled clang from llvm/llvm-project, we need to set the sysroot explicitly. The behavior difference and lack of default detection logic in the clang driver is tracked at https://gitlab.kitware.com/cmake/cmake/-/issues/26863 --- CMakeLists.txt | 4 ++++ Meta/CMake/vcpkg/base-triplets/arm64-osx.cmake | 1 + Meta/CMake/vcpkg/base-triplets/x64-osx.cmake | 1 + Meta/Lagom/BuildFuzzers.sh | 1 - Meta/Lagom/CMakeLists.txt | 4 ++++ 5 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c60f39ec97e..ca14984c69a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,10 @@ if (CMAKE_TOOLCHAIN_FILE MATCHES "vcpkg.cmake$") set(CMAKE_PROJECT_ladybird_INCLUDE_BEFORE "Meta/CMake/vcpkg/generate_vcpkg_toolchain_variables.cmake") endif() +if (APPLE AND NOT CMAKE_OSX_SYSROOT) + set(CMAKE_OSX_SYSROOT macosx) +endif() + project(ladybird VERSION 0.1.0 LANGUAGES C CXX diff --git a/Meta/CMake/vcpkg/base-triplets/arm64-osx.cmake b/Meta/CMake/vcpkg/base-triplets/arm64-osx.cmake index 312c49acc42..8fac22a5532 100644 --- a/Meta/CMake/vcpkg/base-triplets/arm64-osx.cmake +++ b/Meta/CMake/vcpkg/base-triplets/arm64-osx.cmake @@ -2,5 +2,6 @@ set(VCPKG_CMAKE_SYSTEM_NAME Darwin) set(VCPKG_TARGET_ARCHITECTURE arm64) set(VCPKG_OSX_ARCHITECTURES arm64) set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_OSX_SYSROOT macosx) include(${CMAKE_CURRENT_LIST_DIR}/base.cmake) diff --git a/Meta/CMake/vcpkg/base-triplets/x64-osx.cmake b/Meta/CMake/vcpkg/base-triplets/x64-osx.cmake index ce125bc4ede..6ea0c2f1dfc 100644 --- a/Meta/CMake/vcpkg/base-triplets/x64-osx.cmake +++ b/Meta/CMake/vcpkg/base-triplets/x64-osx.cmake @@ -2,5 +2,6 @@ set(VCPKG_CMAKE_SYSTEM_NAME Darwin) set(VCPKG_TARGET_ARCHITECTURE x64) set(VCPKG_OSX_ARCHITECTURES x86_64) set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_OSX_SYSROOT macosx) include(${CMAKE_CURRENT_LIST_DIR}/base.cmake) diff --git a/Meta/Lagom/BuildFuzzers.sh b/Meta/Lagom/BuildFuzzers.sh index b6f9aa48d77..73118108769 100755 --- a/Meta/Lagom/BuildFuzzers.sh +++ b/Meta/Lagom/BuildFuzzers.sh @@ -60,7 +60,6 @@ cmake -GNinja --preset=Distribution -B Build/tools \ -DCMAKE_INSTALL_PREFIX=Build/tool-install \ -DCMAKE_C_COMPILER=$BEST_CLANG_CANDIDATE \ -DCMAKE_CXX_COMPILER="${BEST_CLANG_CANDIDATE/clang/clang++}" \ - -DCMAKE_OSX_SYSROOT=macosx \ -Dpackage=LagomTools ninja -C Build/tools install diff --git a/Meta/Lagom/CMakeLists.txt b/Meta/Lagom/CMakeLists.txt index d343477b3ab..4c06f850f6d 100644 --- a/Meta/Lagom/CMakeLists.txt +++ b/Meta/Lagom/CMakeLists.txt @@ -1,5 +1,9 @@ cmake_minimum_required (VERSION 3.21) +if (APPLE AND NOT CMAKE_OSX_SYSROOT) + set(CMAKE_OSX_SYSROOT macosx) +endif() + project( Lagom VERSION 0.0.0