summaryrefslogtreecommitdiffstats
path: root/src/java/com/jogamp/common/os
diff options
context:
space:
mode:
authorMark Rothwell <[email protected]>2010-06-26 15:36:02 +0000
committerMark Rothwell <[email protected]>2010-06-26 15:36:02 +0000
commitffde1f44409bc7d49ceb18554c660bf9091cac42 (patch)
tree97642dddd8c2d14b9caef962ee9a75114d2ef66a /src/java/com/jogamp/common/os
parent198cccab882db0409ee8b18fcafb20f079d9e01e (diff)
parentae37ac16a13aa62cd6e7a6ff0346403c5aa6b3e5 (diff)
Merge branch 'master' of git://github.com/mbien/gluegen into freebsd-fixes
Diffstat (limited to 'src/java/com/jogamp/common/os')
-rwxr-xr-xsrc/java/com/jogamp/common/os/DynamicLibraryBundle.java14
-rw-r--r--src/java/com/jogamp/common/os/Platform.java76
2 files changed, 48 insertions, 42 deletions
diff --git a/src/java/com/jogamp/common/os/DynamicLibraryBundle.java b/src/java/com/jogamp/common/os/DynamicLibraryBundle.java
index 8e138ef..6c00afe 100755
--- a/src/java/com/jogamp/common/os/DynamicLibraryBundle.java
+++ b/src/java/com/jogamp/common/os/DynamicLibraryBundle.java
@@ -28,10 +28,8 @@
package com.jogamp.common.os;
import java.util.*;
-import java.security.*;
import com.jogamp.common.jvm.JNILibLoaderBase;
-import com.jogamp.common.util.MiscUtils;
/**
* Provides bundling of:<br>
@@ -87,10 +85,10 @@ public class DynamicLibraryBundle implements DynamicLookupHelper {
}
if(DEBUG) {
System.out.println("DynamicLibraryBundle.init Summary: "+info.getClass().getName());
- System.out.println(" toolGetProcAddressFuncNameList: "+MiscUtils.toString(toolGetProcAddressFuncNameList));
- System.out.println(" Tool Lib Names : "+MiscUtils.toString(toolLibNames));
+ System.out.println(" toolGetProcAddressFuncNameList: "+toolGetProcAddressFuncNameList);
+ System.out.println(" Tool Lib Names : "+toolLibNames);
System.out.println(" Tool Lib Loaded: "+getToolLibLoadedNumber()+"/"+getToolLibNumber()+", complete "+isToolLibComplete());
- System.out.println(" Glue Lib Names : "+MiscUtils.toString(glueLibNames));
+ System.out.println(" Glue Lib Names : "+glueLibNames);
System.out.println(" Glue Lib Loaded: "+getGlueLibLoadedNumber()+"/"+getGlueLibNumber()+", complete "+isGlueLibComplete());
System.out.println(" All Complete: "+isLibComplete());
}
@@ -209,13 +207,13 @@ public class DynamicLibraryBundle implements DynamicLookupHelper {
libNames = new ArrayList();
libNames.add((String)listObj);
} else {
- throw new RuntimeException("List element "+i+" must be either a List or String: "+MiscUtils.toString(toolLibNames));
+ throw new RuntimeException("List element "+i+" must be either a List or String: "+toolLibNames);
}
if( null != libNames && libNames.size() > 0 ) {
lib = loadFirstAvailable(libNames, loader, info.shallLinkGlobal());
if ( null == lib ) {
if(DEBUG) {
- System.out.println("Unable to load any Tool library of: "+MiscUtils.toString(libNames));
+ System.out.println("Unable to load any Tool library of: "+libNames);
}
} else {
nativeLibraries.add(lib);
@@ -283,7 +281,7 @@ public class DynamicLibraryBundle implements DynamicLookupHelper {
if(0!=addr) {
System.err.println("Lookup-Native: <" + funcName + "> 0x" + Long.toHexString(addr) + " in lib " + libName );
} else {
- System.err.println("Lookup-Native: <" + funcName + "> ** FAILED ** in libs " + MiscUtils.toString(nativeLibraries));
+ System.err.println("Lookup-Native: <" + funcName + "> ** FAILED ** in libs " + nativeLibraries);
}
}
return addr;
diff --git a/src/java/com/jogamp/common/os/Platform.java b/src/java/com/jogamp/common/os/Platform.java
index b6298a7..0d8b276 100644
--- a/src/java/com/jogamp/common/os/Platform.java
+++ b/src/java/com/jogamp/common/os/Platform.java
@@ -34,20 +34,21 @@ import com.jogamp.common.nio.Buffers;
import java.nio.ByteBuffer;
import java.nio.IntBuffer;
import java.nio.ShortBuffer;
-import java.security.*;
/**
* Utility class for querying platform specific properties.
- * @author Michael Bien, Sven Gothel
+ * @author Michael Bien
+ * @author Sven Gothel
*/
public class Platform {
public static final boolean JAVA_SE;
public static final boolean LITTLE_ENDIAN;
+ public static final String OS;
+ public static final String ARCH;
- private final static boolean is32Bit;
- private final static int pointerSizeInBits;
- private final static String os, arch;
+ private static final boolean is32Bit;
+ private static final int pointerSizeInBits;
static {
NativeLibrary.ensureNativeLibLoaded();
@@ -55,17 +56,24 @@ public class Platform {
// We don't seem to need an AccessController.doPrivileged() block
// here as these system properties are visible even to unsigned
// applets
- os = System.getProperty("os.name");
- arch = System.getProperty("os.arch");
+ OS = System.getProperty("os.name");
+ ARCH = System.getProperty("os.arch");
pointerSizeInBits = getPointerSizeInBitsImpl();
+ is32Bit = initAch();
+ JAVA_SE = initIsJavaSE();
+ LITTLE_ENDIAN = initByteOrder();
+ }
+
+ private Platform() {}
- // Try to use Sun's sun.arch.data.model first ..
+ private static boolean initAch() throws RuntimeException {
+ // Try to use Sun's sun.ARCH.data.model first ..
if ( 32 == pointerSizeInBits || 64 == pointerSizeInBits ) {
- is32Bit = ( 32 == pointerSizeInBits );
+ return 32 == pointerSizeInBits;
}else {
- String os_lc = os.toLowerCase();
- String arch_lc = arch.toLowerCase();
+ String os_lc = OS.toLowerCase();
+ String arch_lc = ARCH.toLowerCase();
if ((os_lc.startsWith("windows") && arch_lc.equals("x86")) ||
(os_lc.startsWith("windows") && arch_lc.equals("arm")) ||
@@ -79,7 +87,7 @@ public class Platform {
(os_lc.startsWith("sunos_lc") && arch_lc.equals("x86")) ||
(os_lc.startsWith("freebsd") && arch_lc.equals("i386")) ||
(os_lc.startsWith("hp-ux") && arch_lc.equals("pa_risc2.0"))) {
- is32Bit = true;
+ return true;
} else if ((os_lc.startsWith("windows") && arch_lc.equals("amd64")) ||
(os_lc.startsWith("linux") && arch_lc.equals("amd64")) ||
(os_lc.startsWith("linux") && arch_lc.equals("x86_64")) ||
@@ -88,44 +96,41 @@ public class Platform {
(os_lc.startsWith("darwin") && arch_lc.equals("x86_64")) ||
(os_lc.startsWith("sunos_lc") && arch_lc.equals("sparcv9")) ||
(os_lc.startsWith("sunos_lc") && arch_lc.equals("amd64"))) {
- is32Bit = false;
+ return false;
}else{
throw new RuntimeException("Please port CPU detection (32/64 bit) to your platform (" + os_lc + "/" + arch_lc + ")");
}
}
+ }
+
+ private static boolean initIsJavaSE() {
+
+ // fast path for desktop
+ if(System.getSecurityManager() == null && System.getProperty("java.runtime.name").indexOf("Java SE") != -1) {
+ return true;
+ }
- boolean se;
+ // probe for classes we need on a SE environment
try{
Class.forName("java.nio.LongBuffer");
Class.forName("java.nio.DoubleBuffer");
- se = true;
+ return true;
}catch(ClassNotFoundException ex) {
- se = false;
+ return false;
}
+ }
- if(!se) {
- // no more the fast path, due to access controller ..
- String java_runtime_name = (String) AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- return System.getProperty("java.runtime.name");
- }
- });
- se = java_runtime_name.indexOf("Java SE") != -1;
- }
- JAVA_SE = se;
-
- // byte order
+ private static boolean initByteOrder() {
ByteBuffer tst_b = Buffers.newDirectByteBuffer(Buffers.SIZEOF_INT); // 32bit in native order
IntBuffer tst_i = tst_b.asIntBuffer();
ShortBuffer tst_s = tst_b.asShortBuffer();
tst_i.put(0, 0x0A0B0C0D);
- LITTLE_ENDIAN = 0x0C0D == tst_s.get(0);
+ return 0x0C0D == tst_s.get(0);
}
- private Platform() {}
-
private static native int getPointerSizeInBitsImpl();
+
/**
* Returns true only if this program is running on the Java Standard Edition.
*/
@@ -144,14 +149,14 @@ public class Platform {
* Returns the OS name.
*/
public static String getOS() {
- return os;
+ return OS;
}
/**
* Returns the CPU architecture String.
*/
public static String getArch() {
- return arch;
+ return ARCH;
}
/**
@@ -165,6 +170,9 @@ public class Platform {
return pointerSizeInBits;
}
-}
+ public static int getPointerSizeInBytes() {
+ return pointerSizeInBits/8;
+ }
+}