diff options
Diffstat (limited to 'toolsrc/src')
| -rw-r--r-- | toolsrc/src/vcpkg.cpp | 7 | ||||
| -rw-r--r-- | toolsrc/src/vcpkg/base/system.cpp | 7 | ||||
| -rw-r--r-- | toolsrc/src/vcpkg/triplet.cpp | 7 |
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 |
