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()