From 077c0746be3773fdd443af52cbe5c3cc26379a15 Mon Sep 17 00:00:00 2001 From: Andrei Lebedev Date: Thu, 23 Jul 2020 23:16:01 +0200 Subject: [PATCH] [vcpkg] Add initial s390x support (#12534) Signed-off-by: Andrei Lebedev --- scripts/buildsystems/vcpkg.cmake | 2 ++ toolsrc/include/vcpkg/base/system.h | 1 + toolsrc/src/vcpkg/base/system.cpp | 4 ++++ triplets/community/s390x-linux.cmake | 5 +++++ 4 files changed, 12 insertions(+) create mode 100644 triplets/community/s390x-linux.cmake diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake index 4ee79d179be9c4..b0b4cde3e048e2 100644 --- a/scripts/buildsystems/vcpkg.cmake +++ b/scripts/buildsystems/vcpkg.cmake @@ -151,6 +151,8 @@ else() endif() elseif(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "AMD64") set(_VCPKG_TARGET_TRIPLET_ARCH x64) + elseif(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "s390x") + set(_VCPKG_TARGET_TRIPLET_ARCH s390x) else() if( _CMAKE_IN_TRY_COMPILE ) message(STATUS "Unable to determine target architecture, continuing without vcpkg.") diff --git a/toolsrc/include/vcpkg/base/system.h b/toolsrc/include/vcpkg/base/system.h index 0a2e745c468c11..2340728fd032ce 100644 --- a/toolsrc/include/vcpkg/base/system.h +++ b/toolsrc/include/vcpkg/base/system.h @@ -25,6 +25,7 @@ namespace vcpkg::System X64, ARM, ARM64, + S390X, }; Optional to_cpu_architecture(StringView arch); diff --git a/toolsrc/src/vcpkg/base/system.cpp b/toolsrc/src/vcpkg/base/system.cpp index 63674963e384e3..82e5f914c0313f 100644 --- a/toolsrc/src/vcpkg/base/system.cpp +++ b/toolsrc/src/vcpkg/base/system.cpp @@ -19,6 +19,7 @@ namespace vcpkg if (Strings::case_insensitive_ascii_equals(arch, "amd64")) return CPUArchitecture::X64; if (Strings::case_insensitive_ascii_equals(arch, "arm")) return CPUArchitecture::ARM; if (Strings::case_insensitive_ascii_equals(arch, "arm64")) return CPUArchitecture::ARM64; + if (Strings::case_insensitive_ascii_equals(arch, "s390x")) return CPUArchitecture::S390X; return nullopt; } @@ -30,6 +31,7 @@ namespace vcpkg case CPUArchitecture::X64: return "x64"; case CPUArchitecture::ARM: return "arm"; case CPUArchitecture::ARM64: return "arm64"; + case CPUArchitecture::S390X: return "s390x"; default: Checks::exit_with_message(VCPKG_LINE_INFO, "unexpected vcpkg::System::CPUArchitecture"); } } @@ -51,6 +53,8 @@ namespace vcpkg return CPUArchitecture::ARM; #elif defined(__aarch64__) || defined(_M_ARM64) return CPUArchitecture::ARM64; +#elif defined(__s390x__) + return CPUArchitecture::S390X; #else // choose architecture #error "Unknown host architecture" #endif // choose architecture diff --git a/triplets/community/s390x-linux.cmake b/triplets/community/s390x-linux.cmake new file mode 100644 index 00000000000000..0aaefda4e34d16 --- /dev/null +++ b/triplets/community/s390x-linux.cmake @@ -0,0 +1,5 @@ +set(VCPKG_TARGET_ARCHITECTURE s390x) +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE static) + +set(VCPKG_CMAKE_SYSTEM_NAME Linux)