Merge bitcoin/bitcoin#31849: depends: set CMAKE_*_COMPILER_TARGET in toolchain

963355037f depends: set CMAKE_*_COMPILER_TARGET in toolchain (fanquake)

Pull request description:

  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=$ARCH-apple-darwin` on the compiler line, given we are already setting `--target` for Darwin builds.

  Would fix #31748.

ACKs for top commit:
  hebasto:
    ACK 963355037f, tested on Ubuntu 24.10.

Tree-SHA512: 1aa0c5d9cb069ce277e53b5551baf5249c449331b0a160edb9a8ceb56209f886a9e2051e2ba63e0874904f652ace0280b7483dd5d81bfff9e993eb18abb961ad
This commit is contained in:
merge-script 2025-03-27 15:35:04 +08:00
commit e563cb5c60
No known key found for this signature in database
GPG key ID: 2EEB9F5CC09526C1
2 changed files with 5 additions and 0 deletions

View file

@ -203,6 +203,7 @@ endif
$(host_prefix)/toolchain.cmake : toolchain.cmake.in $(host_prefix)/.stamp_$(final_build_id) $(host_prefix)/toolchain.cmake : toolchain.cmake.in $(host_prefix)/.stamp_$(final_build_id)
@mkdir -p $(@D) @mkdir -p $(@D)
sed -e 's|@depends_crosscompiling@|$(crosscompiling)|' \ sed -e 's|@depends_crosscompiling@|$(crosscompiling)|' \
-e 's|@host@|$(host)|' \
-e 's|@host_system_name@|$($(host_os)_cmake_system_name)|' \ -e 's|@host_system_name@|$($(host_os)_cmake_system_name)|' \
-e 's|@host_system_version@|$($(host_os)_cmake_system_version)|' \ -e 's|@host_system_version@|$($(host_os)_cmake_system_version)|' \
-e 's|@host_arch@|$(host_arch)|' \ -e 's|@host_arch@|$(host_arch)|' \

View file

@ -13,6 +13,10 @@ if(@depends_crosscompiling@)
set(CMAKE_SYSTEM_NAME @host_system_name@) set(CMAKE_SYSTEM_NAME @host_system_name@)
set(CMAKE_SYSTEM_VERSION @host_system_version@) set(CMAKE_SYSTEM_VERSION @host_system_version@)
set(CMAKE_SYSTEM_PROCESSOR @host_arch@) 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() endif()
if(NOT DEFINED CMAKE_C_FLAGS_INIT) if(NOT DEFINED CMAKE_C_FLAGS_INIT)