From c0756b758fc1a458f18ccfb01127769ed39d744e Mon Sep 17 00:00:00 2001 From: fanquake Date: Mon, 3 Feb 2025 12:20:31 +0000 Subject: [PATCH] depends: set CMAKE_*_COMPILER_TARGET in toolchain According to the CMake docs, this is the correct way to setup a toolchain file for cross-compilation using Clang. See https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-using-clang Internally it looks like CMake will only take this variable into account if it detects the compiler to be Clang, so this shouldn't effect other builds, but in the case of our Apple cross builds, we'd end up with a duplicated `--target=arm64-apple-darwin` on the compiler line, given we are already setting `--target` for Darwin builds. Would fix #31748. Github-Pull: #31849 Rebased-From: 963355037fe78eb4fbdda8631ac05a7b07fcec8c --- depends/Makefile | 1 + depends/toolchain.cmake.in | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/depends/Makefile b/depends/Makefile index 25c86467394..3dbd69221aa 100644 --- a/depends/Makefile +++ b/depends/Makefile @@ -206,6 +206,7 @@ endif $(host_prefix)/toolchain.cmake : toolchain.cmake.in $(host_prefix)/.stamp_$(final_build_id) @mkdir -p $(@D) sed -e 's|@depends_crosscompiling@|$(crosscompiling)|' \ + -e 's|@host@|$(host)|' \ -e 's|@host_system_name@|$($(host_os)_cmake_system_name)|' \ -e 's|@host_system_version@|$($(host_os)_cmake_system_version)|' \ -e 's|@host_arch@|$(host_arch)|' \ diff --git a/depends/toolchain.cmake.in b/depends/toolchain.cmake.in index 89a6e369690..65036d07a9e 100644 --- a/depends/toolchain.cmake.in +++ b/depends/toolchain.cmake.in @@ -13,6 +13,10 @@ if(@depends_crosscompiling@) set(CMAKE_SYSTEM_NAME @host_system_name@) set(CMAKE_SYSTEM_VERSION @host_system_version@) set(CMAKE_SYSTEM_PROCESSOR @host_arch@) + + set(CMAKE_C_COMPILER_TARGET @host@) + set(CMAKE_CXX_COMPILER_TARGET @host@) + set(CMAKE_OBJCXX_COMPILER_TARGET @host@) endif() if(NOT DEFINED CMAKE_C_FLAGS_INIT)