From 19f5c30e6f55dc459e6c0cf2377d3ff04d6551df Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Wed, 4 Sep 2024 17:38:27 +0100 Subject: [PATCH] Fix cross-compilation using MinGW-w64 --- CMakeLists.txt | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e6c103a9..8c85a928 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,19 +47,21 @@ set(Boost_USE_STATIC_LIBS ON) set(Boost_USE_MULTITHREADED ON) set(Boost_USE_STATIC_RUNTIME OFF) -if(CMAKE_SYSTEM_NAME STREQUAL "Windows") - if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") - if(CMAKE_GENERATOR_PLATFORM STREQUAL "Win32") - set(RUST_TARGET i686-pc-windows-msvc) - elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "x64") - set(RUST_TARGET x86_64-pc-windows-msvc) - endif() - else() - if(CMAKE_GENERATOR_PLATFORM STREQUAL "Win32") - set(RUST_TARGET i686-pc-windows-gnu) - elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "x64") - set(RUST_TARGET x86_64-pc-windows-gnu) - endif() +if(NOT DEFINED RUST_TARGET AND WIN32) + if(MSVC) + set(RUST_TARGET_ENV "msvc") + elseif(MINGW) + set(RUST_TARGET_ENV "gnu") + endif() + + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(RUST_TARGET_ARCH "i686") + elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(RUST_TARGET_ARCH "x86_64") + endif() + + if(DEFINED RUST_TARGET_ENV AND DEFINED RUST_TARGET_ARCH) + set(RUST_TARGET "${RUST_TARGET_ARCH}-pc-windows-${RUST_TARGET_ENV}") endif() endif()