From 64a9e9a9aee44b281cbac339abde74779e65c242 Mon Sep 17 00:00:00 2001 From: Russell Greene Date: Fri, 18 Oct 2024 18:23:20 -0600 Subject: [PATCH] configure_make: use CMAKE_C_COMPILER_TARGET to detect cross-compilation Currently, the only way to cross-compile using vcpkg_configure_make is to use a gcc cross toolchain with the target as the prefix. This is not how you cross compile with clang--with clang you set CMAKE__COMPILER_TARGET. This detects this from the toolchain file and passes it along --- scripts/cmake/vcpkg_configure_make.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 73d94f956eadb2..a1dd2b496c1392 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -399,7 +399,9 @@ function(vcpkg_configure_make) # This is used via --host as a prefix for all other bin tools as well. # Setting the compiler directly via CC=arm-linux-gnueabihf-gcc does not work acording to: # https://www.gnu.org/software/autoconf/manual/autoconf-2.65/html_node/Specifying-Target-Triplets.html - if(VCPKG_DETECTED_CMAKE_C_COMPILER MATCHES "([^\/]*)-gcc$" AND CMAKE_MATCH_1) + if (VCPKG_DETECTED_CMAKE_C_COMPILER_TARGET) + set(arg_BUILD_TRIPLET "--host=${VCPKG_DETECTED_CMAKE_C_COMPILER_TARGET}") # (Host activates crosscompilation; The name given here is just the prefix of the host tools for the target) + elseif(VCPKG_DETECTED_CMAKE_C_COMPILER MATCHES "([^\/]*)-gcc$" AND CMAKE_MATCH_1) set(arg_BUILD_TRIPLET "--host=${CMAKE_MATCH_1}") # (Host activates crosscompilation; The name given here is just the prefix of the host tools for the target) endif() debug_message("Using make triplet: ${arg_BUILD_TRIPLET}") @@ -441,7 +443,7 @@ function(vcpkg_configure_make) # Remove full filepaths due to spaces and prepend filepaths to PATH (cross-compiling tools are unlikely on path by default) set(progs VCPKG_DETECTED_CMAKE_C_COMPILER VCPKG_DETECTED_CMAKE_CXX_COMPILER VCPKG_DETECTED_CMAKE_AR VCPKG_DETECTED_CMAKE_LINKER VCPKG_DETECTED_CMAKE_RANLIB VCPKG_DETECTED_CMAKE_OBJDUMP - VCPKG_DETECTED_CMAKE_STRIP VCPKG_DETECTED_CMAKE_NM VCPKG_DETECTED_CMAKE_DLLTOOL VCPKG_DETECTED_CMAKE_RC_COMPILER) + VCPKG_DETECTED_CMAKE_STRIP VCPKG_DETECTED_CMAKE_NM VCPKG_DETECTED_CMAKE_DLLTOOL VCPKG_DETECTED_CMAKE_RC_COMPILER VCPKG_DETECTED_CMAKE_C_COMPILER_TARGET) foreach(prog IN LISTS progs) set(filepath "${${prog}}") if(filepath MATCHES " ")