aboutsummaryrefslogtreecommitdiffstats
path: root/make/joal.cfg
diff options
context:
space:
mode:
Diffstat (limited to 'make/joal.cfg')
-rwxr-xr-xmake/joal.cfg41
1 files changed, 40 insertions, 1 deletions
diff --git a/make/joal.cfg b/make/joal.cfg
index 9b19b8b..c6894d9 100755
--- a/make/joal.cfg
+++ b/make/joal.cfg
@@ -7,22 +7,61 @@ ImplPackage net.java.games.joal.impl
ImplJavaClass ALImpl
Extends AL ALConstants
+Implements ALImpl DynamicLookupHelper
+
+EmitProcAddressTable true
+ProcAddressTableClassName ALProcAddressTable
+GetProcAddressTableExpr ALProcAddressLookup.getALProcAddressTable()
+ProcAddressNameExpr LP $UPPERCASE({0})
+
Import net.java.games.joal.*
Import net.java.games.joal.impl.*
+Import com.sun.gluegen.runtime.*
# Factor out the OpenAL constants into their own interface
Ignore ^AL_.+
-# These routines are ignored
+# alGetProcAddress is broken for core OpenAL routines at least up
+# through OpenAL 1.1, so we have to implement our own dlsym()
+# operation in order to populate the ALProcAddressTable and
+# ALCProcAddressTable. If / when it is fixed and we don't need
+# compatibility with preexisting OpenAL 1.0 and 1.1 installations we
+# can enable the code below and delete the custom C code for
+# dynamicLookupFunction0.
Ignore alGetProcAddress
+# This routine is not exposed in the public API
+# AccessControl alGetProcAddress PACKAGE_PRIVATE
+# And it's also statically linked for bootstrapping
+# (could also consider looking it up via dlsym to more fully allow
+# unloading of OpenAL, but that doesn't seem necessary and requires
+# more native code to load/unload libraries)
+# SkipProcAddressGen alGetProcAddress
+# We also have to hack its return type for now because we can't make
+# just that void* opaque
+# Opaque long ALproc
+
# This routine doesn't seem to exist
Ignore alHint
+# Mappings for data types
+Opaque boolean ALboolean
+
# These routines use or return strings
ReturnsString alGetString
ArgumentIsString alIsExtensionPresent 0
ArgumentIsString alGetEnumValue 0
+ArgumentIsString alGetProcAddress 0
# Provide #includes to native code
CustomCCode #include "al.h"
+
+CustomJavaCode ALImpl /** Provides dlsym() capabilities because alGetProcAddress is
+CustomJavaCode ALImpl broken for core OpenAL routines at least up through OpenAL 1.1. */
+CustomJavaCode ALImpl public long dynamicLookupFunction(String functionName) {
+CustomJavaCode ALImpl return dynamicLookupFunction0(functionName);
+CustomJavaCode ALImpl }
+CustomJavaCode ALImpl private native long dynamicLookupFunction0(String functionName);
+
+IncludeAs CustomCCode joal-common-CustomCCode.c
+IncludeAs CustomCCode joal-CustomCCode.c