From 421ce7c2ba7b263b47430a2ff2ad4ceeb783e4d3 Mon Sep 17 00:00:00 2001 From: Adam Retter Date: Fri, 10 Feb 2017 14:58:07 -0800 Subject: [PATCH] Add support for JNI Library on Linux on PowerPC. Summary: Closes https://github.com/facebook/rocksdb/issues/1317 Closes https://github.com/facebook/rocksdb/pull/1845 Differential Revision: D4546491 Pulled By: siying fbshipit-source-id: 86190b4 --- .../java/org/rocksdb/util/Environment.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/java/src/main/java/org/rocksdb/util/Environment.java b/java/src/main/java/org/rocksdb/util/Environment.java index 6fccc43bb..764aa964d 100644 --- a/java/src/main/java/org/rocksdb/util/Environment.java +++ b/java/src/main/java/org/rocksdb/util/Environment.java @@ -4,6 +4,10 @@ public class Environment { private static String OS = System.getProperty("os.name").toLowerCase(); private static String ARCH = System.getProperty("os.arch").toLowerCase(); + public static boolean isPowerPC() { + return ARCH.contains("ppc"); + } + public static boolean isWindows() { return (OS.contains("win")); } @@ -36,16 +40,22 @@ public class Environment { public static String getJniLibraryName(final String name) { if (isUnix()) { - final String arch = (is64Bit()) ? "64" : "32"; - return String.format("%sjni-linux%s", name, arch); + final String arch = is64Bit() ? "64" : "32"; + if(isPowerPC()) { + return String.format("%sjni-linux-ppc%s", name, arch); + } else { + return String.format("%sjni-linux%s", name, arch); + } } else if (isMac()) { return String.format("%sjni-osx", name); } else if (isSolaris()) { - return String.format("%sjni-solaris%d", name, is64Bit() ? 64 : 32); + final String arch = is64Bit() ? "64" : "32"; + return String.format("%sjni-solaris%s", name, arch); } else if (isWindows() && is64Bit()) { return String.format("%sjni-win64", name); } - throw new UnsupportedOperationException(); + + throw new UnsupportedOperationException(String.format("Cannot determine JNI library name for ARCH='%s' OS='%s' name='%s'", ARCH, OS, name)); } public static String getJniLibraryFileName(final String name) {