diff options
Diffstat (limited to 'make')
-rwxr-xr-x | make/build.xml | 59 | ||||
-rwxr-xr-x | make/joal-CustomCCode.c | 44 | ||||
-rwxr-xr-x | make/joal-alc.cfg | 11 | ||||
-rwxr-xr-x | make/joal.cfg | 21 |
4 files changed, 20 insertions, 115 deletions
diff --git a/make/build.xml b/make/build.xml index 8ff3829..99d2802 100755 --- a/make/build.xml +++ b/make/build.xml @@ -207,31 +207,31 @@ <target name="declare.win32.vc6" if="isVC6"> <echo message="Win32.VC6" /> <property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" /> - <property name="linker.cfg.id" value="linker.cfg.win32.msvc.joal" /> + <property name="linker.cfg.id" value="linker.cfg.win32.msvc" /> </target> <target name="declare.win32.vc7" if="isVC7"> <echo message="Win32.VC7" /> <property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" /> - <property name="linker.cfg.id" value="linker.cfg.win32.msvc.joal" /> + <property name="linker.cfg.id" value="linker.cfg.win32.msvc" /> </target> <target name="declare.win32.vc8" if="isVC8"> <echo message="Win32.VC8" /> <property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" /> - <property name="linker.cfg.id" value="linker.cfg.win32.msvc.joal" /> + <property name="linker.cfg.id" value="linker.cfg.win32.msvc" /> </target> <target name="declare.win32.vc8_x64" if="isVC8_X64"> <echo message="Win32.VC8_X64" /> <property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" /> - <property name="linker.cfg.id" value="linker.cfg.win32.msvc.joal" /> + <property name="linker.cfg.id" value="linker.cfg.win32.msvc" /> </target> <target name="declare.win32.mingw" if="isMingw"> <echo message="Win32.MingW" /> <property name="compiler.cfg.id" value="compiler.cfg.win32.mingw" /> - <property name="linker.cfg.id" value="linker.cfg.win32.mingw.joal" /> + <property name="linker.cfg.id" value="linker.cfg.win32.mingw" /> </target> <target name="declare.win32" depends="declare.win32.vc6,declare.win32.vc7,declare.win32.vc8,declare.win32.vc8_x64,declare.win32.mingw" if="isWindows"> @@ -243,7 +243,7 @@ <property name="java.includes.dir.platform" value="${java.includes.dir.linux}" /> <property name="compiler.cfg.id" value="compiler.cfg.linux" /> - <property name="linker.cfg.id" value="linker.cfg.linux.joal" /> + <property name="linker.cfg.id" value="linker.cfg.linux" /> </target> <target name="declare.linux.amd64" if="isLinuxAMD64"> @@ -251,7 +251,7 @@ <property name="java.includes.dir.platform" value="${java.includes.dir.linux}" /> <property name="compiler.cfg.id" value="compiler.cfg.linux.amd64" /> - <property name="linker.cfg.id" value="linker.cfg.linux.amd64.joal" /> + <property name="linker.cfg.id" value="linker.cfg.linux.amd64" /> </target> <target name="declare.linux.ia64" if="isLinuxIA64"> @@ -259,7 +259,7 @@ <property name="java.includes.dir.platform" value="${java.includes.dir.linux}" /> <property name="compiler.cfg.id" value="compiler.cfg.linux" /> - <property name="linker.cfg.id" value="linker.cfg.linux.joal" /> + <property name="linker.cfg.id" value="linker.cfg.linux" /> </target> <target name="declare.linux" depends="declare.linux.x86,declare.linux.amd64,declare.linux.ia64" if="isLinux" /> @@ -269,7 +269,7 @@ <property name="java.includes.dir.platform" value="${java.includes.dir.solaris}" /> <property name="compiler.cfg.id" value="compiler.cfg.solaris" /> - <property name="linker.cfg.id" value="linker.cfg.solaris.joal" /> + <property name="linker.cfg.id" value="linker.cfg.solaris" /> </target> <target name="declare.solaris.sparcv9" if="isSolarisSparcv9"> @@ -277,7 +277,7 @@ <property name="java.includes.dir.platform" value="${java.includes.dir.solaris}" /> <property name="compiler.cfg.id" value="compiler.cfg.solaris.sparcv9" /> - <property name="linker.cfg.id" value="linker.cfg.solaris.sparcv9.joal" /> + <property name="linker.cfg.id" value="linker.cfg.solaris.sparcv9" /> </target> @@ -286,7 +286,7 @@ <property name="java.includes.dir.platform" value="${java.includes.dir.solaris}" /> <property name="compiler.cfg.id" value="compiler.cfg.solaris.amd64" /> - <property name="linker.cfg.id.core" value="linker.cfg.solaris.amd64.joal" /> + <property name="linker.cfg.id.core" value="linker.cfg.solaris.amd64" /> </target> <target name="declare.macosx" if="isOSX"> @@ -302,7 +302,7 @@ <property name="java.includes.dir.platform" value="${java.includes.dir.freebsd}" /> <property name="compiler.cfg.id" value="compiler.cfg.freebsd" /> - <property name="linker.cfg.id" value="linker.cfg.linux.joal" /> + <property name="linker.cfg.id" value="linker.cfg.linux" /> </target> <target name="declare.hpux" if="isHPUX"> @@ -310,7 +310,7 @@ <property name="java.includes.dir.platform" value="${java.includes.dir.hpux}" /> <property name="compiler.cfg.id" value="compiler.cfg.hpux" /> - <property name="linker.cfg.id" value="linker.cfg.hpux.joal" /> + <property name="linker.cfg.id" value="linker.cfg.hpux" /> </target> <!-- ================================================================== --> @@ -447,44 +447,11 @@ <target name="c.configure" depends="gluegen.cpptasks.configure.compiler"> <!-- linker configuration --> - <linker id="linker.cfg.linux.joal" extends="linker.cfg.linux"> - <syslibset dir="${joal.lib.dir}" libs="openal"/> - </linker> - - <linker id="linker.cfg.linux.amd64.joal" extends="linker.cfg.linux.amd64"> - <syslibset dir="${joal.lib.dir}" libs="openal"/> - </linker> - - <linker id="linker.cfg.solaris.joal" extends="linker.cfg.solaris"> - <syslibset dir="${joal.lib.dir}" libs="openal"/> - </linker> - - <linker id="linker.cfg.solaris.sparcv9.joal" extends="linker.cfg.solaris.sparcv9"> - <syslibset dir="${joal.lib.dir}" libs="openal"/> - </linker> - - <linker id="linker.cfg.solaris.amd64.joal" extends="linker.cfg.solaris.amd64"> - <syslibset dir="${joal.lib.dir}" libs="openal"/> - </linker> - - <linker id="linker.cfg.win32.mingw.joal" extends="linker.cfg.win32.mingw"> - <syslibset dir="${joal.lib.dir}" libs="openal32, kernel32"/> - </linker> - - <linker id="linker.cfg.win32.msvc.joal" extends="linker.cfg.win32.msvc"> - <syslibset dir="${joal.lib.dir}" libs="openal32" /> - <syslibset libs="kernel32"/> - </linker> - <linker id="linker.cfg.macosx.joal" extends="linker.cfg.macosx"> <linkerarg value="-framework" /> <linkerarg value="OpenAL" /> </linker> - <linker id="linker.cfg.hpux.joal" extends="linker.cfg.hpux"> - <syslibset dir="${joal.lib.dir}" libs="openal"/> - </linker> - <patternset id="c.src.files.joal"> <include name="${rootrel.src.c}/*.c"/> <include name="${rootrel.generated.c.joal}/*.c"/> diff --git a/make/joal-CustomCCode.c b/make/joal-CustomCCode.c deleted file mode 100755 index 26c9b42..0000000 --- a/make/joal-CustomCCode.c +++ /dev/null @@ -1,44 +0,0 @@ -#if defined(_MSC_VER) /* Windows */ -#include <windows.h> -static HMODULE oalModule = NULL; -#else -/* Hack for Linux */ -#define __USE_GNU -#include <dlfcn.h> -#endif - -/* Java->C glue code: - * Java package: net.java.games.joal.impl.ALImpl - * Java method: long dynamicLookupFunction0(java.lang.String fname) - * C function: ALproc alGetProcAddress(const ALchar * fname); - */ -JNIEXPORT jlong JNICALL -Java_net_java_games_joal_impl_ALImpl_dynamicLookupFunction0__Ljava_lang_String_2(JNIEnv *env, jobject _unused, jstring fname) { - const char* _UTF8fname = NULL; - ALproc _res; - if (fname != NULL) { - if (fname != NULL) { - _UTF8fname = (*env)->GetStringUTFChars(env, fname, (jboolean*)NULL); - if (_UTF8fname == NULL) { - (*env)->ThrowNew(env, (*env)->FindClass(env, "java/lang/OutOfMemoryError"), - "Failed to get UTF-8 chars for argument \"fname\" in native dispatcher for \"alGetProcAddress\""); - return 0; - } - } - } -#if defined(_MSC_VER) /* Windows */ - if (oalModule == NULL) { - oalModule = GetModuleHandle("OpenAL32"); - } - _res = (ALproc) GetProcAddress(oalModule, _UTF8fname); -/* Looks like we can use dlsym on OS X as well as other Unix flavors */ -/* #elif defined(__APPLE__) && defined(__MACH__) */ /* OS X */ -#else /* Assume vanilla Unix */ - _res = (ALproc) dlsym(RTLD_DEFAULT, _UTF8fname); -#endif - - if (fname != NULL) { - (*env)->ReleaseStringUTFChars(env, fname, _UTF8fname); - } - return (jlong) (intptr_t) _res; -} diff --git a/make/joal-alc.cfg b/make/joal-alc.cfg index 5425fec..8bb623c 100755 --- a/make/joal-alc.cfg +++ b/make/joal-alc.cfg @@ -56,14 +56,9 @@ ReturnValueCapacity alcGetCurrentContext 0 ReturnValueCapacity alcGetCurrentDevice 0 ReturnValueCapacity alcOpenDevice 0 -# These routines need to be statically linked for bootstrapping -SkipProcAddressGen alcOpenDevice -SkipProcAddressGen alcCreateContext -SkipProcAddressGen alcMakeContextCurrent - -# Need an epilogue on alcOpenDevice and alcMakeContextCurrent to set -# up the proc address tables the first time -JavaEpilogue alcOpenDevice ALProcAddressLookup.resetALCProcAddressTable(); +# Need a prologue on alcOpenDevice and epilogue on alcMakeContextCurrent +# to set up the proc address tables the first time +JavaPrologue alcOpenDevice ALProcAddressLookup.resetALCProcAddressTable(); JavaEpilogue alcMakeContextCurrent ALProcAddressLookup.resetALProcAddressTable(); # To be able to use alcGetString before a context is created we need diff --git a/make/joal.cfg b/make/joal.cfg index 7e2d594..3bc9350 100755 --- a/make/joal.cfg +++ b/make/joal.cfg @@ -7,8 +7,6 @@ ImplPackage net.java.games.joal.impl ImplJavaClass ALImpl Extends AL ALConstants -Implements ALImpl DynamicLookupHelper - EmitProcAddressTable true ProcAddressTableClassName ALProcAddressTable GetProcAddressTableExpr ALProcAddressLookup.getALProcAddressTable() @@ -26,17 +24,13 @@ Ignore ^AL_.+ # 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. +# can enable the code below, except presumably for the bootstrapping +# routines alcOpenDevice, alcCreateContext, alcMakeContextCurrent, and +# alGetProcAddress itself. 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 @@ -60,12 +54,5 @@ CustomCCode #define __cdecl /* Trim non-standard keyword */ CustomCCode #endif CustomCCode #include "efx.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 + |