diff options
Diffstat (limited to 'make/joal.cfg')
-rwxr-xr-x | make/joal.cfg | 41 |
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 |