diff options
Diffstat (limited to 'make/joal.cfg')
-rwxr-xr-x | make/joal.cfg | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/make/joal.cfg b/make/joal.cfg new file mode 100755 index 0000000..c6894d9 --- /dev/null +++ b/make/joal.cfg @@ -0,0 +1,67 @@ +# This .cfg file is used to generate the JOAL interface. +Include joal-common.cfg + +Style InterfaceAndImpl +JavaClass AL +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_.+ + +# 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 |