| package org.rocksdb.util; |
| |
| 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")); |
| } |
| |
| public static boolean isMac() { |
| return (OS.contains("mac")); |
| } |
| |
| public static boolean isAix() { |
| return OS.contains("aix"); |
| } |
| |
| public static boolean isUnix() { |
| return OS.contains("nix") || |
| OS.contains("nux"); |
| } |
| |
| public static boolean isSolaris() { |
| return OS.contains("sunos"); |
| } |
| |
| public static boolean is64Bit() { |
| if (ARCH.indexOf("sparcv9") >= 0) { |
| return true; |
| } |
| return (ARCH.indexOf("64") > 0); |
| } |
| |
| public static String getSharedLibraryName(final String name) { |
| return name + "jni"; |
| } |
| |
| public static String getSharedLibraryFileName(final String name) { |
| return appendLibOsSuffix("lib" + getSharedLibraryName(name), true); |
| } |
| |
| public static String getJniLibraryName(final String name) { |
| if (isUnix()) { |
| final String arch = is64Bit() ? "64" : "32"; |
| if(isPowerPC()) { |
| return String.format("%sjni-linux-%s", name, ARCH); |
| } else { |
| return String.format("%sjni-linux%s", name, arch); |
| } |
| } else if (isMac()) { |
| return String.format("%sjni-osx", name); |
| } else if (isAix() && is64Bit()) { |
| return String.format("%sjni-aix64", name); |
| } else if (isSolaris()) { |
| 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(String.format("Cannot determine JNI library name for ARCH='%s' OS='%s' name='%s'", ARCH, OS, name)); |
| } |
| |
| public static String getJniLibraryFileName(final String name) { |
| return appendLibOsSuffix("lib" + getJniLibraryName(name), false); |
| } |
| |
| private static String appendLibOsSuffix(final String libraryFileName, final boolean shared) { |
| if (isUnix() || isAix() || isSolaris()) { |
| return libraryFileName + ".so"; |
| } else if (isMac()) { |
| return libraryFileName + (shared ? ".dylib" : ".jnilib"); |
| } else if (isWindows()) { |
| return libraryFileName + ".dll"; |
| } |
| throw new UnsupportedOperationException(); |
| } |
| |
| public static String getJniLibraryExtension() { |
| if (isWindows()) { |
| return ".dll"; |
| } |
| return (isMac()) ? ".jnilib" : ".so"; |
| } |
| } |