summaryrefslogtreecommitdiffstats
path: root/src/java/com/sun/gluegen/runtime/MacOSXDynamicLinkerImpl.java
diff options
context:
space:
mode:
authorKenneth Russel <[email protected]>2006-08-01 23:22:54 +0000
committerKenneth Russel <[email protected]>2006-08-01 23:22:54 +0000
commit5f3f32052969e8133c8fe7c50835763cedfebb43 (patch)
tree6ccd8ac7f94ee02ce16b5568d8c965b1c74c9a09 /src/java/com/sun/gluegen/runtime/MacOSXDynamicLinkerImpl.java
parentff5fa954165c45037849b986f41f4a192cad163e (diff)
Added NativeLibrary helper class to com.sun.gluegen.runtime package,
principally to generally solve the problem of downloading dependent libraries of GlueGen-generated native code, as in the case of JOAL and OpenAL reported recently by Shawn Kendall on JOAL forums. Autogenerated Java and native code associated with this new NativeLibrary helper class is currently checked in to the GlueGen workspace to make it easier to build across multiple platforms; it can be regenerated by running the generate.nativelibrary.sources Ant target in the GlueGen workspace. Building of the native code in the GlueGen workspace is currently disabled by default and can be enabled by specifying -Dbuild.native=1 on the ant command line. Use of the new NativeLibrary class in JOAL is currently disabled by default and can be enabled by specifying -Djoal.use.gluegen=1 to applications using JOAL. New functionality has been lightly tested with JOAL on Windows and appears to be working. More testing, including build and Java Web Start deployment testing, to follow on other platforms. git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/../svn-server-sync/gluegen/trunk@37 a78bb65f-1512-4460-ba86-f6dc96a7bf27
Diffstat (limited to 'src/java/com/sun/gluegen/runtime/MacOSXDynamicLinkerImpl.java')
-rwxr-xr-xsrc/java/com/sun/gluegen/runtime/MacOSXDynamicLinkerImpl.java49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/java/com/sun/gluegen/runtime/MacOSXDynamicLinkerImpl.java b/src/java/com/sun/gluegen/runtime/MacOSXDynamicLinkerImpl.java
new file mode 100755
index 0000000..37e3cd0
--- /dev/null
+++ b/src/java/com/sun/gluegen/runtime/MacOSXDynamicLinkerImpl.java
@@ -0,0 +1,49 @@
+/* !---- DO NOT EDIT: This file autogenerated by com\sun\gluegen\JavaEmitter.java on Mon Jul 31 16:27:00 PDT 2006 ----! */
+
+package com.sun.gluegen.runtime;
+
+import com.sun.gluegen.runtime.*;
+
+public class MacOSXDynamicLinkerImpl implements DynamicLinker
+{
+
+ public static final int RTLD_LAZY = 0x1;
+ public static final int RTLD_NOW = 0x2;
+ public static final int RTLD_LOCAL = 0x4;
+ public static final int RTLD_GLOBAL = 0x8;
+
+ /** Interface to C language function: <br> <code> int dlclose(void * __handle); </code> */
+ private static native int dlclose(long __handle);
+
+ /** Interface to C language function: <br> <code> char * dlerror(void); </code> */
+ private static native java.lang.String dlerror();
+
+ /** Interface to C language function: <br> <code> void * dlopen(const char * __path, int __mode); </code> */
+ private static native long dlopen(java.lang.String __path, int __mode);
+
+ /** Interface to C language function: <br> <code> void * dlsym(void * __handle, const char * __symbol); </code> */
+ private static native long dlsym(long __handle, java.lang.String __symbol);
+
+
+ // --- Begin CustomJavaCode .cfg declarations
+ public long openLibrary(String pathname) {
+ // Note we use RTLD_GLOBAL visibility to allow this functionality to
+ // be used to pre-resolve dependent libraries of JNI code without
+ // requiring that all references to symbols in those libraries be
+ // looked up dynamically via the ProcAddressTable mechanism; in
+ // other words, one can actually link against the library instead of
+ // having to dlsym all entry points. System.loadLibrary() uses
+ // RTLD_LOCAL visibility so can't be used for this purpose.
+ return dlopen(pathname, RTLD_GLOBAL);
+ }
+
+ public long lookupSymbol(long libraryHandle, String symbolName) {
+ return dlsym(libraryHandle, symbolName);
+ }
+
+ public void closeLibrary(long libraryHandle) {
+ dlclose(libraryHandle);
+ }
+ // ---- End CustomJavaCode .cfg declarations
+
+} // end of class MacOSXDynamicLinkerImpl