aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Lebedev <lebdron@gmail.com>2020-07-23 23:16:01 +0200
committerGitHub <noreply@github.com>2020-07-23 14:16:01 -0700
commit077c0746be3773fdd443af52cbe5c3cc26379a15 (patch)
treed40ab5c6c10906a572d34a8cdb65967b89ead0b2
parent0896cfcc301843b455bf14497a15b0e775735198 (diff)
downloadvcpkg-077c0746be3773fdd443af52cbe5c3cc26379a15.tar.gz
vcpkg-077c0746be3773fdd443af52cbe5c3cc26379a15.zip
[vcpkg] Add initial s390x support (#12534)
Signed-off-by: Andrei Lebedev <lebdron@gmail.com>
-rw-r--r--scripts/buildsystems/vcpkg.cmake2
-rw-r--r--toolsrc/include/vcpkg/base/system.h1
-rw-r--r--toolsrc/src/vcpkg/base/system.cpp4
-rw-r--r--triplets/community/s390x-linux.cmake5
4 files changed, 12 insertions, 0 deletions
diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake
index 4ee79d179..b0b4cde3e 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 0a2e745c4..2340728fd 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<CPUArchitecture> to_cpu_architecture(StringView arch);
diff --git a/toolsrc/src/vcpkg/base/system.cpp b/toolsrc/src/vcpkg/base/system.cpp
index 63674963e..82e5f914c 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 000000000..0aaefda4e
--- /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)