Fixes #34. Use canonical os.arch names for native lib folders

This commit is contained in:
Taro L. Saito 2013-06-06 11:35:42 +09:00
parent 41b11f7ebd
commit 8c69129359
7 changed files with 48 additions and 2 deletions

View File

@ -25,6 +25,8 @@
package org.xerial.snappy; package org.xerial.snappy;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap;
import java.util.Locale;
/** /**
* Provides OS name and architecture name. * Provides OS name and architecture name.
@ -34,6 +36,48 @@ import java.io.IOException;
*/ */
public class OSInfo public class OSInfo
{ {
private static HashMap<String, String> archMapping = new HashMap<String, String>();
public static final String X86 = "x86";
public static final String X86_64 = "x86_64";
public static final String IA64_32 = "ia64_32";
public static final String IA64 = "ia64";
public static final String PPC = "ppc";
static {
// x86 mappings
archMapping.put(X86, X86);
archMapping.put("i386", X86);
archMapping.put("i486", X86);
archMapping.put("i586", X86);
archMapping.put("i686", X86);
archMapping.put("pentium", X86);
// x86_64 mappings
archMapping.put(X86_64, X86_64);
archMapping.put("amd64", X86_64);
archMapping.put("em64t", X86_64);
archMapping.put("universal", X86_64); // Needed for openjdk7 in Mac
// Itenium 64-bit mappings
archMapping.put(IA64, IA64);
archMapping.put("ia64w", IA64);
// Itenium 32-bit mappings, usually an HP-UX construct
archMapping.put(IA64_32, IA64_32);
archMapping.put("ia64n", IA64_32);
// PowerPC mappings
archMapping.put(PPC, PPC);
archMapping.put("pwoer", PPC);
archMapping.put("powerpc", PPC);
archMapping.put("power_pc", PPC);
archMapping.put("power_rs", PPC);
// TODO: PowerPC 64bit mappings
}
public static void main(String[] args) { public static void main(String[] args) {
if (args.length >= 1) { if (args.length >= 1) {
if ("--os".equals(args[0])) { if ("--os".equals(args[0])) {
@ -78,8 +122,10 @@ public class OSInfo
// ignored: fall back to "arm" arch (soft-float ABI) // ignored: fall back to "arm" arch (soft-float ABI)
} }
} }
else if(getOSName().equals("Mac") && (osArch.equals("universal") || osArch.equals("amd64"))) { else {
return "x86_64"; // Fix for openjdk7 String lc = osArch.toLowerCase(Locale.US);
if(archMapping.containsKey(lc))
return archMapping.get(lc);
} }
return translateArchNameToFolderName(osArch); return translateArchNameToFolderName(osArch);
} }