From 83af530a42011130b20a5080bbd298abaa77be59 Mon Sep 17 00:00:00 2001 From: Tsukasa Sugiura Date: Wed, 21 Nov 2018 08:51:32 +0900 Subject: WIP [vcpkg] Fix CMAKE_SYSTEM_PROCESSOR with UWP and Linux triplets (#4688) * [vcpkg] Fix CMAKE_SYSTEM_PROCESSOR Add CMAKE_SYSTEM_PROCESSOR setting under UWP, Linux, and Darwin. If explicitly specified VCPKG_CMAKE_SYSTEM_PROCESSOR in triplet files, CMAKE_SYSTEM_PROCESSOR is set to specified architecture. * [vcpkg-toolchains] Move logic out of vcpkg_configure_cmake and into the toolchains. --- scripts/cmake/vcpkg_configure_cmake.cmake | 8 +++++--- scripts/toolchains/linux.cmake | 5 +++++ scripts/toolchains/windows.cmake | 16 ++++++++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_configure_cmake.cmake b/scripts/cmake/vcpkg_configure_cmake.cmake index 617fe1a0f..b5dfb6d02 100644 --- a/scripts/cmake/vcpkg_configure_cmake.cmake +++ b/scripts/cmake/vcpkg_configure_cmake.cmake @@ -128,13 +128,15 @@ function(vcpkg_configure_cmake) if(DEFINED VCPKG_CMAKE_SYSTEM_NAME) list(APPEND _csc_OPTIONS "-DCMAKE_SYSTEM_NAME=${VCPKG_CMAKE_SYSTEM_NAME}") - if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" AND NOT DEFINED VCPKG_CMAKE_SYSTEM_VERSION) - set(VCPKG_CMAKE_SYSTEM_VERSION 10.0) - endif() endif() if(DEFINED VCPKG_CMAKE_SYSTEM_VERSION) list(APPEND _csc_OPTIONS "-DCMAKE_SYSTEM_VERSION=${VCPKG_CMAKE_SYSTEM_VERSION}") endif() + if(DEFINED VCPKG_CMAKE_SYSTEM_PROCESSOR) + list(APPEND _csc_OPTIONS "-DCMAKE_SYSTEM_PROCESSOR=${VCPKG_CMAKE_SYSTEM_PROCESSOR}") + endif() + + list(APPEND _csc_OPTIONS "-DVCPKG_TARGET_ARCHITECTURE=${VCPKG_TARGET_ARCHITECTURE}") if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") list(APPEND _csc_OPTIONS -DBUILD_SHARED_LIBS=ON) diff --git a/scripts/toolchains/linux.cmake b/scripts/toolchains/linux.cmake index ade9db90b..d740a5b8c 100644 --- a/scripts/toolchains/linux.cmake +++ b/scripts/toolchains/linux.cmake @@ -1,5 +1,10 @@ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") set(CMAKE_CROSSCOMPILING OFF CACHE BOOL "") + + # TODO: This should be replaced with a switch on VCPKG_TARGET_ARCHITECTURE once we know what linux systems "natively" define for each of the targets + set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_HOST_SYSTEM_PROCESSOR}" CACHE STRING "") +else() + set(CMAKE_SYSTEM_PROCESSOR "x86_64" CACHE STRING "") endif() set(CMAKE_SYSTEM_NAME Linux CACHE STRING "") diff --git a/scripts/toolchains/windows.cmake b/scripts/toolchains/windows.cmake index 266e023b1..bb52e0d19 100644 --- a/scripts/toolchains/windows.cmake +++ b/scripts/toolchains/windows.cmake @@ -1,3 +1,19 @@ +if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") + set(CMAKE_SYSTEM_VERSION 10.0 CACHE STRING "") +endif() + +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") + set(CMAKE_SYSTEM_PROCESSOR ARM CACHE STRING "") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(CMAKE_SYSTEM_PROCESSOR ARM64 CACHE STRING "") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(CMAKE_SYSTEM_PROCESSOR AMD64 CACHE STRING "") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(CMAKE_SYSTEM_PROCESSOR X86 CACHE STRING "") +else() + message(FATAL_ERROR "Unknown target architecture: ${VCPKG_TARGET_ARCHITECTURE}") +endif() + get_property( _CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE ) if(NOT _CMAKE_IN_TRY_COMPILE) -- cgit v1.2.3