summaryrefslogtreecommitdiffstats
path: root/make/config
diff options
context:
space:
mode:
Diffstat (limited to 'make/config')
-rwxr-xr-xmake/config/joal-alc-CustomJavaCode.java7
-rwxr-xr-xmake/config/joal-alc-constants.cfg8
-rwxr-xr-xmake/config/joal-alc-impl-CustomCCode.c16
-rwxr-xr-xmake/config/joal-alc.cfg54
-rwxr-xr-xmake/config/joal-alcabstract-CustomJavaCode.java16
-rw-r--r--make/config/joal-alext-constants.cfg14
-rw-r--r--make/config/joal-alext.cfg54
-rw-r--r--make/config/joal-alextabstract-CustomJavaCode.java16
-rwxr-xr-xmake/config/joal-common-CustomCCode.c3
-rw-r--r--make/config/joal-common-CustomJavaCode.java38
-rwxr-xr-xmake/config/joal-common.cfg61
-rwxr-xr-xmake/config/joal-constants.cfg8
-rwxr-xr-xmake/config/joal.cfg42
13 files changed, 337 insertions, 0 deletions
diff --git a/make/config/joal-alc-CustomJavaCode.java b/make/config/joal-alc-CustomJavaCode.java
new file mode 100755
index 0000000..be28d8c
--- /dev/null
+++ b/make/config/joal-alc-CustomJavaCode.java
@@ -0,0 +1,7 @@
+/** Fetches the names of the available ALC device specifiers.
+ Equivalent to the C call alcGetString(NULL, ALC_DEVICE_SPECIFIER). */
+public java.lang.String[] alcGetDeviceSpecifiers();
+
+/** Fetches the names of the available ALC capture device specifiers.
+ Equivalent to the C call alcGetString(NULL, ALC_CAPTURE_DEVICE_SPECIFIER). */
+public java.lang.String[] alcGetCaptureDeviceSpecifiers();
diff --git a/make/config/joal-alc-constants.cfg b/make/config/joal-alc-constants.cfg
new file mode 100755
index 0000000..83ea061
--- /dev/null
+++ b/make/config/joal-alc-constants.cfg
@@ -0,0 +1,8 @@
+# This .cfg file is used to generate the ALCConstants interface.
+Include joal-common.cfg
+
+Style InterfaceOnly
+JavaClass ALCConstants
+
+# Factor out the OpenAL constants into their own interface
+IgnoreNot ^ALC_.+
diff --git a/make/config/joal-alc-impl-CustomCCode.c b/make/config/joal-alc-impl-CustomCCode.c
new file mode 100755
index 0000000..9207210
--- /dev/null
+++ b/make/config/joal-alc-impl-CustomCCode.c
@@ -0,0 +1,16 @@
+int strlen_alc(ALCdevice *device, int param, const char* str) {
+ int len = 0;
+ if ((device == NULL) && (param == ALC_DEVICE_SPECIFIER)) {
+ while (*str != 0) {
+ while (*str != 0) {
+ ++str;
+ ++len;
+ }
+ ++str;
+ ++len;
+ }
+ return len;
+ } else {
+ return strlen(str);
+ }
+}
diff --git a/make/config/joal-alc.cfg b/make/config/joal-alc.cfg
new file mode 100755
index 0000000..efba5a6
--- /dev/null
+++ b/make/config/joal-alc.cfg
@@ -0,0 +1,54 @@
+# This .cfg file is used to generate the JOAL interface.
+Include joal-common.cfg
+
+Style InterfaceAndImpl
+JavaClass ALC
+ImplPackage jogamp.openal
+ImplJavaClass ALCAbstractImpl
+AccessControl ALCAbstractImpl PUBLIC_ABSTRACT
+Extends ALC ALCConstants
+
+EmitProcAddressTable true
+ProcAddressTableClassName ALCProcAddressTable
+GetProcAddressTableExpr alcProcAddressTable
+ProcAddressNameExpr LP $UPPERCASE({0})
+
+# Force all of the methods to be emitted using dynamic linking so we
+# don't need to link against any emulation library on the desktop or
+# depend on the presence of an import library for a particular device
+ForceProcAddressGen __ALL__
+
+# Also force the calling conventions of the locally generated function
+# pointer typedefs for these routines to ALC_APIENTRY
+LocalProcAddressCallingConvention __ALL__ ALC_APIENTRY
+
+Import java.io.UnsupportedEncodingException
+Import java.util.*
+Import com.jogamp.openal.*
+Import jogamp.openal.*
+Import java.security.AccessController
+Import java.security.PrivilegedAction
+
+# Factor out the OpenAL constants into their own interface
+Ignore ^AL_.+
+Ignore ^ALC_.+
+
+# Manually implement alcGetString so we can
+# implement alcGetString(NULL, ALC_DEVICE_SPECIFIER) in another method
+ReturnsString alcGetString
+ManuallyImplement alcGetString
+
+# Note that we don't declare this as "ReturnsString" because we're
+# going to wrap it in another method
+IncludeAs CustomJavaCode ALC joal-alc-CustomJavaCode.java
+IncludeAs CustomJavaCode ALCAbstractImpl joal-alcabstract-CustomJavaCode.java
+
+# These routines use strings
+ArgumentIsString alcIsExtensionPresent 1
+ArgumentIsString alcOpenDevice 0
+
+# Provide #includes to native code
+CustomCCode #include "alc.h"
+
+IncludeAs CustomCCode joal-common-CustomCCode.c
+IncludeAs CustomCCode joal-alc-impl-CustomCCode.c
diff --git a/make/config/joal-alcabstract-CustomJavaCode.java b/make/config/joal-alcabstract-CustomJavaCode.java
new file mode 100755
index 0000000..debadad
--- /dev/null
+++ b/make/config/joal-alcabstract-CustomJavaCode.java
@@ -0,0 +1,16 @@
+private static final ALCProcAddressTable alcProcAddressTable;
+
+static {
+ alcProcAddressTable = AccessController.doPrivileged(new PrivilegedAction<ALCProcAddressTable>() {
+ public ALCProcAddressTable run() {
+ final ALCProcAddressTable alcProcAddressTable = new ALCProcAddressTable();
+ if(null==alcProcAddressTable) {
+ throw new RuntimeException("Couldn't instantiate ALCProcAddressTable");
+ }
+ alcProcAddressTable.reset(ALImpl.alDynamicLookupHelper);
+ return alcProcAddressTable;
+ } } );
+}
+
+public static ALCProcAddressTable getALCProcAddressTable() { return alcProcAddressTable; }
+
diff --git a/make/config/joal-alext-constants.cfg b/make/config/joal-alext-constants.cfg
new file mode 100644
index 0000000..4cd8cf0
--- /dev/null
+++ b/make/config/joal-alext-constants.cfg
@@ -0,0 +1,14 @@
+# This .cfg file is used to generate the ALCConstants interface.
+Include joal-common.cfg
+
+Style InterfaceOnly
+JavaClass ALExtConstants
+
+ExtendedIntfAndImplSymbolsIgnore ../build-temp/gensrc/classes/com/jogamp/openal/AL.java
+ExtendedIntfAndImplSymbolsIgnore ../build-temp/gensrc/classes/com/jogamp/openal/ALConstants.java
+ExtendedIntfAndImplSymbolsIgnore ../build-temp/gensrc/classes/com/jogamp/openal/ALC.java
+ExtendedIntfAndImplSymbolsIgnore ../build-temp/gensrc/classes/com/jogamp/openal/ALCConstants.java
+
+# Factor out the OpenAL constants into their own interface
+#IgnoreNot ^ALC_.+
+IgnoreNot ^AL.+
diff --git a/make/config/joal-alext.cfg b/make/config/joal-alext.cfg
new file mode 100644
index 0000000..da63612
--- /dev/null
+++ b/make/config/joal-alext.cfg
@@ -0,0 +1,54 @@
+# This .cfg file is used to generate the JOAL interface.
+Include joal-common.cfg
+
+Style InterfaceAndImpl
+JavaClass ALExt
+ImplPackage jogamp.openal
+ImplJavaClass ALExtAbstractImpl
+AccessControl ALExtAbstractImpl PUBLIC_ABSTRACT
+Extends ALExt ALExtConstants
+
+ExtendedIntfAndImplSymbolsIgnore ../build-temp/gensrc/classes/com/jogamp/openal/AL.java
+ExtendedIntfAndImplSymbolsIgnore ../build-temp/gensrc/classes/com/jogamp/openal/ALConstants.java
+ExtendedIntfAndImplSymbolsIgnore ../build-temp/gensrc/classes/com/jogamp/openal/ALC.java
+ExtendedIntfAndImplSymbolsIgnore ../build-temp/gensrc/classes/com/jogamp/openal/ALCConstants.java
+
+EmitProcAddressTable true
+ProcAddressTableClassName ALExtProcAddressTable
+GetProcAddressTableExpr alExtProcAddressTable
+ProcAddressNameExpr LP $UPPERCASE({0})
+
+# Force all of the methods to be emitted using dynamic linking so we
+# don't need to link against any emulation library on the desktop or
+# depend on the presence of an import library for a particular device
+ForceProcAddressGen __ALL__
+
+# Also force the calling conventions of the locally generated function
+# pointer typedefs for these routines to AL_APIENTRY
+LocalProcAddressCallingConvention __ALL__ AL_APIENTRY
+
+Import java.io.UnsupportedEncodingException
+Import java.util.*
+Import com.jogamp.openal.*
+Import jogamp.openal.*
+Import java.security.AccessController
+Import java.security.PrivilegedAction
+
+# Factor out the OpenAL constants into their own interface
+Ignore ^AL_.+
+Ignore ^ALC_.+
+
+IncludeAs CustomJavaCode ALExtAbstractImpl joal-alextabstract-CustomJavaCode.java
+
+# These routines use or return strings
+ArgumentIsString alcLoopbackOpenDeviceSOFT 0
+
+# Provide #includes to native code
+CustomCCode #include "alext.h"
+
+# Indicate that the direct buffers for ALCcontext, etc. are "opaque",
+# i.e., the user shouldn't be poking around in them
+ReturnValueCapacity alcLoopbackOpenDeviceSOFT 0
+
+IncludeAs CustomCCode joal-common-CustomCCode.c
+
diff --git a/make/config/joal-alextabstract-CustomJavaCode.java b/make/config/joal-alextabstract-CustomJavaCode.java
new file mode 100644
index 0000000..e467fc7
--- /dev/null
+++ b/make/config/joal-alextabstract-CustomJavaCode.java
@@ -0,0 +1,16 @@
+private static final ALExtProcAddressTable alExtProcAddressTable;
+
+static {
+ alExtProcAddressTable = AccessController.doPrivileged(new PrivilegedAction<ALExtProcAddressTable>() {
+ public ALExtProcAddressTable run() {
+ final ALExtProcAddressTable alExtProcAddressTable = new ALExtProcAddressTable();
+ if(null==alExtProcAddressTable) {
+ throw new RuntimeException("Couldn't instantiate ALExtProcAddressTable");
+ }
+ alExtProcAddressTable.reset(ALImpl.alDynamicLookupHelper);
+ return alExtProcAddressTable;
+ } } );
+}
+
+public static ALExtProcAddressTable getALExtProcAddressTable() { return alExtProcAddressTable; }
+
diff --git a/make/config/joal-common-CustomCCode.c b/make/config/joal-common-CustomCCode.c
new file mode 100755
index 0000000..e620735
--- /dev/null
+++ b/make/config/joal-common-CustomCCode.c
@@ -0,0 +1,3 @@
+#include <al-types.h>
+#include <alc-types.h>
+#include <string.h>
diff --git a/make/config/joal-common-CustomJavaCode.java b/make/config/joal-common-CustomJavaCode.java
new file mode 100644
index 0000000..5df6cfd
--- /dev/null
+++ b/make/config/joal-common-CustomJavaCode.java
@@ -0,0 +1,38 @@
+static final DynamicLibraryBundle alDynamicLookupHelper;
+private static final ALProcAddressTable alProcAddressTable;
+
+static {
+ alProcAddressTable = new ALProcAddressTable();
+ if(null==alProcAddressTable) {
+ throw new RuntimeException("Couldn't instantiate ALProcAddressTable");
+ }
+
+ alDynamicLookupHelper = AccessController.doPrivileged(new PrivilegedAction<DynamicLibraryBundle>() {
+ public DynamicLibraryBundle run() {
+ final DynamicLibraryBundle bundle = new DynamicLibraryBundle(new ALDynamicLibraryBundleInfo());
+ if(null==bundle) {
+ throw new RuntimeException("Null ALDynamicLookupHelper");
+ }
+ if(!bundle.isToolLibLoaded()) {
+ throw new RuntimeException("Couln't load native AL library");
+ }
+ if(!bundle.isLibComplete()) {
+ throw new RuntimeException("Couln't load native AL/JNI glue library");
+ }
+ alProcAddressTable.reset(bundle);
+ return bundle;
+ } } );
+}
+
+public static ALProcAddressTable getALProcAddressTable() { return alProcAddressTable; }
+
+static long alGetProcAddress(long alGetProcAddressHandle, java.lang.String procname)
+{
+ if (alGetProcAddressHandle == 0) {
+ throw new RuntimeException("Passed null pointer for method \"alGetProcAddress\"");
+ }
+ return dispatch_alGetProcAddressStatic(procname, alGetProcAddressHandle);
+}
+
+static native long dispatch_alGetProcAddressStatic(String fname, long procAddress);
+
diff --git a/make/config/joal-common.cfg b/make/config/joal-common.cfg
new file mode 100755
index 0000000..36a8e8b
--- /dev/null
+++ b/make/config/joal-common.cfg
@@ -0,0 +1,61 @@
+Package com.jogamp.openal
+
+# Specify output directories
+HierarchicalNativeOutput false
+JavaOutputDir gensrc/classes
+NativeOutputDir gensrc/native/joal
+
+# Raise ALException instead of RuntimeException in glue code
+RuntimeExceptionType ALException
+
+# We also have to hack its return type for now because we can't make
+# just that void* opaque
+Opaque long ALproc
+Opaque long ALCproc
+
+# ALCdevice and ALCcontext are 'typesafe' opaque instances,
+# i.e., using Java class instance without allowing the user poking around in them.
+#Opaque long ALCdevice*
+#Opaque long ALCcontext*
+ReturnValueCapacity alcGetContextsDevice 0
+ReturnValueCapacity alcOpenDevice 0
+ReturnValueCapacity alcCaptureOpenDevice 0
+ReturnValueCapacity alcLoopbackOpenDeviceSOFT 0
+ReturnValueCapacity alcCreateContext 0
+ReturnValueCapacity alcGetCurrentContext 0
+ReturnValueCapacity alcGetThreadContext 0
+#ReturnValueCapacity alcGetCurrentDevice 0 ?? does not exist ??
+
+# Mappings for data types
+Opaque boolean ALboolean
+Opaque boolean ALCboolean
+
+# This routine is not exposed in the public API
+AccessControl alGetProcAddress PACKAGE_PRIVATE
+
+# This routine is ignored. The analogous routine alGetProcAddress is
+# broken at least up through OpenAL 1.1 so there is no point in trying
+# to use this routine to look up the ALC function pointers.
+#Ignore alcGetProcAddress
+AccessControl alcGetProcAddress PACKAGE_PRIVATE
+
+# This routine doesn't seem to exist
+Ignore alHint
+
+# These routines use or return strings
+ReturnsString alGetString
+ArgumentIsString alIsExtensionPresent 0
+ArgumentIsString alGetEnumValue 0
+ArgumentIsString alGetProcAddress 0
+
+ReturnsString alcGetString
+ArgumentIsString alcOpenDevice 0
+ArgumentIsString alcIsExtensionPresent 1
+ArgumentIsString alcGetProcAddress 1
+ArgumentIsString alcGetEnumValue 1
+ArgumentIsString alcCaptureOpenDevice 0
+ArgumentIsString alcLoopbackOpenDeviceSOFT 0
+
+## Specify the return length of this function with our own custom strlen
+##ReturnValueCapacity alcGetStringImpl strlen_alc(_device_ptr, {1}, _res)
+
diff --git a/make/config/joal-constants.cfg b/make/config/joal-constants.cfg
new file mode 100755
index 0000000..1385370
--- /dev/null
+++ b/make/config/joal-constants.cfg
@@ -0,0 +1,8 @@
+# This .cfg file is used to generate the ALConstants interface.
+Include joal-common.cfg
+
+Style InterfaceOnly
+JavaClass ALConstants
+
+# Factor out the OpenAL constants into their own interface
+IgnoreNot ^AL_.+
diff --git a/make/config/joal.cfg b/make/config/joal.cfg
new file mode 100755
index 0000000..661b84e
--- /dev/null
+++ b/make/config/joal.cfg
@@ -0,0 +1,42 @@
+# This .cfg file is used to generate the JOAL interface.
+Include joal-common.cfg
+
+Style InterfaceAndImpl
+JavaClass AL
+ImplPackage jogamp.openal
+ImplJavaClass ALImpl
+Extends AL ALConstants
+
+EmitProcAddressTable true
+ProcAddressTableClassName ALProcAddressTable
+GetProcAddressTableExpr alProcAddressTable
+ProcAddressNameExpr LP $UPPERCASE({0})
+
+# Force all of the methods to be emitted using dynamic linking so we
+# don't need to link against any emulation library on the desktop or
+# depend on the presence of an import library for a particular device
+ForceProcAddressGen __ALL__
+
+# Also force the calling conventions of the locally generated function
+# pointer typedefs for these routines to AL_APIENTRY
+LocalProcAddressCallingConvention __ALL__ AL_APIENTRY
+
+Import com.jogamp.openal.*
+Import jogamp.openal.*
+Import java.security.AccessController
+Import java.security.PrivilegedAction
+
+# Factor out the OpenAL constants into their own interface
+Ignore ^AL_.+
+
+IncludeAs CustomJavaCode ALImpl joal-common-CustomJavaCode.java
+
+# Provide #includes to native code
+CustomCCode #include "al.h"
+CustomCCode #ifndef _MSC_VER /* Non-Windows platforms */
+CustomCCode #define __cdecl /* Trim non-standard keyword */
+CustomCCode #endif
+CustomCCode #include "efx.h"
+
+IncludeAs CustomCCode joal-common-CustomCCode.c
+