aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/vcpkg.cpp7
-rw-r--r--toolsrc/src/vcpkg/base/system.cpp7
-rw-r--r--toolsrc/src/vcpkg/triplet.cpp7
3 files changed, 18 insertions, 3 deletions
diff --git a/toolsrc/src/vcpkg.cpp b/toolsrc/src/vcpkg.cpp
index 250bca52a..ccc951f10 100644
--- a/toolsrc/src/vcpkg.cpp
+++ b/toolsrc/src/vcpkg.cpp
@@ -210,13 +210,16 @@ int main(const int argc, const char* const* const argv)
load_config(fs);
-#if (defined(__aarch64__) || defined(__arm__) || defined(__s390x__) || defined(_M_ARM) || defined(_M_ARM64)) && \
+#if (defined(__aarch64__) || defined(__arm__) || defined(__s390x__) || \
+ ((defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || defined(__PPC64LE__)) && \
+ defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)) || \
+ defined(_M_ARM) || defined(_M_ARM64)) && \
!defined(_WIN32) && !defined(__APPLE__)
if (!System::get_environment_variable("VCPKG_FORCE_SYSTEM_BINARIES").has_value())
{
Checks::exit_with_message(
VCPKG_LINE_INFO,
- "Environment variable VCPKG_FORCE_SYSTEM_BINARIES must be set on arm and s390x platforms.");
+ "Environment variable VCPKG_FORCE_SYSTEM_BINARIES must be set on arm, s390x, and ppc64le platforms.");
}
#endif
diff --git a/toolsrc/src/vcpkg/base/system.cpp b/toolsrc/src/vcpkg/base/system.cpp
index 687f6fa9c..b18a41e6d 100644
--- a/toolsrc/src/vcpkg/base/system.cpp
+++ b/toolsrc/src/vcpkg/base/system.cpp
@@ -27,6 +27,7 @@ namespace vcpkg
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;
+ if (Strings::case_insensitive_ascii_equals(arch, "ppc64le")) return CPUArchitecture::PPC64LE;
return nullopt;
}
@@ -39,7 +40,8 @@ namespace vcpkg
case CPUArchitecture::ARM: return "arm";
case CPUArchitecture::ARM64: return "arm64";
case CPUArchitecture::S390X: return "s390x";
- default: Checks::unreachable(VCPKG_LINE_INFO);
+ case CPUArchitecture::PPC64LE: return "ppc64le";
+ default: Checks::exit_with_message(VCPKG_LINE_INFO, "unexpected vcpkg::System::CPUArchitecture");
}
}
@@ -62,6 +64,9 @@ namespace vcpkg
return CPUArchitecture::ARM64;
#elif defined(__s390x__)
return CPUArchitecture::S390X;
+#elif (defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || defined(__PPC64LE__)) && \
+ defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
+ return CPUArchitecture::PPC64LE;
#else // choose architecture
#error "Unknown host architecture"
#endif // choose architecture
diff --git a/toolsrc/src/vcpkg/triplet.cpp b/toolsrc/src/vcpkg/triplet.cpp
index dbb82e3c8..e69f75b11 100644
--- a/toolsrc/src/vcpkg/triplet.cpp
+++ b/toolsrc/src/vcpkg/triplet.cpp
@@ -65,6 +65,10 @@ namespace vcpkg
{
return CPUArchitecture::S390X;
}
+ if (Strings::starts_with(this->canonical_name(), "ppc64le-"))
+ {
+ return CPUArchitecture::PPC64LE;
+ }
return nullopt;
}
@@ -99,6 +103,9 @@ namespace vcpkg
return Triplet::from_canonical_name("arm-linux");
#elif defined(__s390x__)
return Triplet::from_canonical_name("s390x-linux");
+#elif (defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || defined(__PPC64LE__)) && \
+ defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
+ return Triplet::from_canonical_name("ppc64le-linux");
#else
return Triplet::from_canonical_name("x64-linux");
#endif