diff options
author | Sven Gothel <[email protected]> | 2010-12-13 12:28:06 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2010-12-13 12:28:06 +0100 |
commit | 70b648f9c8fa9c9cb302b9bbb06820a3cf23d71f (patch) | |
tree | ce9f711cce66a93d9562402107e5d11b247445d4 | |
parent | 57ef6b5648cc3f95a490477627c5a350251a09bf (diff) |
Window Support added ; Win64 libs & license files
- plays on linux/window now
- ant build files fixed -> Windows support
- windows OpenAL 32/64 bit: see make/lib/FILES.txt make/lib/oalinst-license.txt)
- linux libs: added .1 to suffix
- added Debug impl
- catch EAX init exception (ie unsatisfied link error)
- EAX proper blocked init
TODO:
- check on osx
- joal-demos
17 files changed, 335 insertions, 384 deletions
diff --git a/make/142-packages/package-list b/make/142-packages/package-list deleted file mode 100755 index fecd4d4..0000000 --- a/make/142-packages/package-list +++ /dev/null @@ -1,135 +0,0 @@ -java.applet -java.awt -java.awt.color -java.awt.datatransfer -java.awt.dnd -java.awt.event -java.awt.font -java.awt.geom -java.awt.im -java.awt.im.spi -java.awt.image -java.awt.image.renderable -java.awt.print -java.beans -java.beans.beancontext -java.io -java.lang -java.lang.ref -java.lang.reflect -java.math -java.net -java.nio -java.nio.channels -java.nio.channels.spi -java.nio.charset -java.nio.charset.spi -java.rmi -java.rmi.activation -java.rmi.dgc -java.rmi.registry -java.rmi.server -java.security -java.security.acl -java.security.cert -java.security.interfaces -java.security.spec -java.sql -java.text -java.util -java.util.jar -java.util.logging -java.util.prefs -java.util.regex -java.util.zip -javax.accessibility -javax.crypto -javax.crypto.interfaces -javax.crypto.spec -javax.imageio -javax.imageio.event -javax.imageio.metadata -javax.imageio.plugins.jpeg -javax.imageio.spi -javax.imageio.stream -javax.naming -javax.naming.directory -javax.naming.event -javax.naming.ldap -javax.naming.spi -javax.net -javax.net.ssl -javax.print -javax.print.attribute -javax.print.attribute.standard -javax.print.event -javax.rmi -javax.rmi.CORBA -javax.security.auth -javax.security.auth.callback -javax.security.auth.kerberos -javax.security.auth.login -javax.security.auth.spi -javax.security.auth.x500 -javax.security.cert -javax.sound.midi -javax.sound.midi.spi -javax.sound.sampled -javax.sound.sampled.spi -javax.sql -javax.swing -javax.swing.border -javax.swing.colorchooser -javax.swing.event -javax.swing.filechooser -javax.swing.plaf -javax.swing.plaf.basic -javax.swing.plaf.metal -javax.swing.plaf.multi -javax.swing.table -javax.swing.text -javax.swing.text.html -javax.swing.text.html.parser -javax.swing.text.rtf -javax.swing.tree -javax.swing.undo -javax.transaction -javax.transaction.xa -javax.xml.parsers -javax.xml.transform -javax.xml.transform.dom -javax.xml.transform.sax -javax.xml.transform.stream -org.ietf.jgss -org.omg.CORBA -org.omg.CORBA.DynAnyPackage -org.omg.CORBA.ORBPackage -org.omg.CORBA.TypeCodePackage -org.omg.CORBA.portable -org.omg.CORBA_2_3 -org.omg.CORBA_2_3.portable -org.omg.CosNaming -org.omg.CosNaming.NamingContextExtPackage -org.omg.CosNaming.NamingContextPackage -org.omg.Dynamic -org.omg.DynamicAny -org.omg.DynamicAny.DynAnyFactoryPackage -org.omg.DynamicAny.DynAnyPackage -org.omg.IOP -org.omg.IOP.CodecFactoryPackage -org.omg.IOP.CodecPackage -org.omg.Messaging -org.omg.PortableInterceptor -org.omg.PortableInterceptor.ORBInitInfoPackage -org.omg.PortableServer -org.omg.PortableServer.CurrentPackage -org.omg.PortableServer.POAManagerPackage -org.omg.PortableServer.POAPackage -org.omg.PortableServer.ServantLocatorPackage -org.omg.PortableServer.portable -org.omg.SendingContext -org.omg.stub.java.rmi -org.w3c.dom -org.xml.sax -org.xml.sax.ext -org.xml.sax.helpers diff --git a/make/build-test.xml b/make/build-test.xml index cf47fbf..889b910 100644 --- a/make/build-test.xml +++ b/make/build-test.xml @@ -59,15 +59,15 @@ <property name="java.dir.junit" value="${java.dir.test}/junit"/> <property name="java.dir.manual" value="${java.dir.test}/manual"/> - <property name="obj.all.paths" value="${gluegen.root}/build/obj${path.separator}${obj}"/> - <property name="classpath.test" value="${gluegen.root}/build/gluegen-rt.jar${path.separator}${build}/joal.jar${path.separator}${build}/joal-test.jar${path.separator}${junit.path}"/> + <property name="obj.all.paths" value="${gluegen.build}/obj${path.separator}${obj}${path.separator}lib/${os.and.arch}"/> + <property name="classpath.test" value="${gluegen-rt.jar}${path.separator}${build}/joal.jar${path.separator}${build}/joal-test.jar${path.separator}${junit.path}"/> <property name="batchtest.timeout" value="1800000"/> <!-- 30 min --> </target> <target name="test.compile" depends="test.init"> <javac debug="true" srcdir="${src.test}" destdir="${classes}" includeantruntime="false" - classpath="${gluegen.root}/build/gluegen-rt.jar;../build/joal.jar;${junit.path}"/> + classpath="${gluegen-rt.jar};../build/joal.jar;${junit.path}"/> <copy todir="${classes}"> <fileset dir="${src.test}" includes="**/*.wav"/> </copy> @@ -93,6 +93,7 @@ <jvmarg value="-Djogamp.debug.NativeLibrary=true"/> <jvmarg value="-Djogamp.debug.NativeLibrary.Lookup=true"/> <jvmarg value="-Djogamp.debug.ProcAddressHelper=true"/> --> + <jvmarg value="-Djoal.debug.Factory"/> <batchtest todir="${results.test}"> <fileset dir="${classes}"> <include name="${java.dir.junit}/**/*Test*"/> @@ -139,6 +140,7 @@ <arg line="-Djogamp.debug.NativeLibrary=true"/> <arg line="-Djogamp.debug.NativeLibrary.Lookup=true"/> <arg line="-Djogamp.debug.ProcAddressHelper=true"/> --> + <arg line="-Djoal.debug.Factory"/> <srcfile/> <mappedresources> <fileset dir="${classes}" includes="${test.class.path}"/> diff --git a/make/build.xml b/make/build.xml index 54bed16..ec0ca0d 100755 --- a/make/build.xml +++ b/make/build.xml @@ -39,7 +39,9 @@ <property name="joal.version" value="${joal_base_version}-${version.timestamp}" /> <property name="project.root" value=".." /> - <property name="gluegen.root" value="${project.root}/../gluegen" /> + + <property name="gluegen.root" value="${project.root}/../gluegen" /> + <property name="gluegen.build" value="${gluegen.root}/${rootrel.build}" /> <condition property="rootrel.build" value="build"> <not> @@ -65,39 +67,17 @@ <property name="user.properties.file" value="${user.home}/joal.properties" /> <property file="${user.properties.file}" /> <echo message="Loaded ${user.properties.file}. (optionally)" /> - </target> - - <!-- ================================================================== --> - <!-- - - Base initialization and detection of operating system. - --> - <target name="base.init" depends="load.user.properties,gluegen.properties.load.user,gluegen.cpptasks.detect.os"> - - <!-- Set the project root directory to be up one directory. --> - <property name="project.root" value=".." /> - - <!-- Set the configuration and build files to this directory. --> - <property name="make" value="." /> - </target> - <!-- ================================================================== --> - <!-- - - Set up java.home.dir appropriately on all platforms. - --> - <target name="setup.java.home.dir.nonmacosx" depends="base.init" unless="isOSX"> - <!-- java home dir is up one directory as java.home points to '<java-install-dir>/jre' --> - <property name="java.home.dir" value="${java.home}/.." /> + <property file="${user.home}/gluegen.properties" /> + <echo message="Loaded ${user.home}/gluegen.properties." /> </target> - <target name="setup.java.home.dir.macosx" depends="base.init" if="isOSX"> - <property name="java.home.dir" value="/System/Library/Frameworks/JavaVM.framework/Home" /> - </target> - <target name="setup.java.home.dir" depends="setup.java.home.dir.nonmacosx,setup.java.home.dir.macosx"/> <!-- ================================================================== --> <!-- - Declare all paths and user defined variables. --> - <target name="declare.common" description="Declare properties" depends="setup.java.home.dir, gluegen.cpptasks.detect.compiler"> + <target name="init" depends="gluegen.cpptasks.detect.os"> + <!-- The location and name of the configuration ANT file that will - validate to ensure that all user-define variables are set. --> <property name="validate.user.properties" value="${make}/validate-properties.xml" /> @@ -107,8 +87,8 @@ <!-- sibling of the JOAL workspace. --> <property name="gluegen.make.dir" value="${gluegen.root}/make" /> <property name="gluegen.build.xml" value="${gluegen.make.dir}/build.xml" /> - <property name="gluegen.jar" value="${gluegen.root}/${rootrel.build}/gluegen.jar" /> - <property name="gluegen-rt.jar" value="${gluegen.root}/${rootrel.build}/gluegen-rt.jar" /> + <property name="gluegen.jar" value="${gluegen.build}/gluegen.jar" /> + <property name="gluegen-rt.jar" value="${gluegen.build}/gluegen-rt.jar" /> <!-- Create the classpath that includes GlueGen and - ANTLR. This requires the user-defined "antlr.jar" @@ -165,14 +145,6 @@ <include name="*.c" /> </fileset> - <property name="java.includes.dir" value="${java.home.dir}/include" /> <!-- NOTE: this MUST be relative for FileSet --> - <property name="java.includes.dir.win32" value="${java.includes.dir}/win32" /> - <property name="java.includes.dir.linux" value="${java.includes.dir}/linux" /> - <property name="java.includes.dir.solaris" value="${java.includes.dir}/solaris" /> - <property name="java.includes.dir.macosx" value="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers" /> - <property name="java.includes.dir.freebsd" value="${java.includes.dir}/freebsd" /> - <property name="java.includes.dir.hpux" value="${java.includes.dir}/hp-ux" /> - <!-- The resulting joal.jar. --> <property name="joal.jar" value="${build}/joal.jar" /> @@ -186,121 +158,6 @@ <property name="joal.constants.cfg" value="${config}/joal-constants.cfg" /> <property name="joal.alc.cfg" value="${config}/joal-alc.cfg" /> <property name="joal.alc.constants.cfg" value="${config}/joal-alc-constants.cfg" /> - </target> - - <!-- ================================================================== --> - <!-- - - Platform specific declares. - --> - <target name="c.configure.win.mingw32" if="isMingW32"> - <echo message="Win.Ming32W" /> - <property name="java.includes.dir.platform" value="${java.includes.dir.win32}" /> - - <property name="compiler.cfg.id" value="compiler.cfg.win32.mingw" /> - <property name="linker.cfg.id" value="linker.cfg.win32.mingw" /> - </target> - - <target name="c.configure.win.mingw64" if="isMingW64"> - <echo message="Win.Ming64W" /> - <property name="java.includes.dir.platform" value="${java.includes.dir.win64}" /> - - <property name="compiler.cfg.id" value="compiler.cfg.win64.mingw" /> - <property name="linker.cfg.id" value="linker.cfg.win64.mingw" /> - </target> - - <target name="declare.win32" depends="c.configure.win.mingw32,c.configure.win.mingw64" if="isWindows"/> - - <target name="declare.linux.x86" if="isLinux" unless="isLinuxAMD64"> - <echo message="Linux.x86" /> - <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" /> - </target> - - <target name="declare.linux.amd64" if="isLinuxAMD64"> - <echo message="Linux.AMD64" /> - <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" /> - </target> - - <target name="declare.linux.ia64" if="isLinuxIA64"> - <echo message="Linux.IA64" /> - <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" /> - </target> - - <target name="declare.linux" depends="declare.linux.x86,declare.linux.amd64,declare.linux.ia64" if="isLinux" /> - - <target name="declare.solaris32" if="isSolaris32Bit"> - <echo message="Solaris" /> - <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" /> - </target> - - <target name="declare.solaris.sparcv9" if="isSolarisSparcv9"> - <echo message="SolarisSparcv9" /> - <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" /> - </target> - - - <target name="declare.solaris.amd64" if="isSolarisAMD64"> - <echo message="SolarisAMD64" /> - <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" /> - </target> - - <target name="declare.macosx.ppc" if="isOSXPPC"> - <echo message="MacOSX PPC" /> - </target> - - <target name="declare.macosx.universal" if="isOSXUniversal"> - <echo message="MacOSX Universal" /> - </target> - - <target name="declare.macosx" if="isOSX" depends="declare.macosx.ppc,declare.macosx.universal"> - <echo message="MacOSX" /> - <property name="java.includes.dir.platform" value="${java.includes.dir.macosx}" /> - - <property name="compiler.cfg.id" value="compiler.cfg.macosx" /> - <property name="linker.cfg.id" value="linker.cfg.macosx" /> - </target> - - <target name="declare.freebsd" if="isFreeBSD"> - <echo message="FreeBSD" /> - <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" /> - </target> - - <target name="declare.hpux" if="isHPUX"> - <echo message="HP-UX" /> - <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" /> - </target> - - <!-- ================================================================== --> - <!-- - - Initialize all parameters required for the build and create any - - required directories. - --> - <target name="init" depends="declare.common"> - <!-- Call the external config validator script to make sure the config is ok and consistent --> - <ant antfile="${validate.user.properties}" inheritall="true"/> <!-- Create the required output directories. --> <mkdir dir="${src.generated.java}" /> @@ -313,8 +170,6 @@ <property name="archive" value="${build}/${archive.name}" /> </target> - <target name="declare" depends="init,declare.win32,declare.linux,declare.solaris32,declare.macosx,declare.freebsd" /> - <!-- ================================================================== --> <!-- GlueGen and BuildStaticGLInfo creation, task setup and Java file generation --> <!-- @@ -425,79 +280,84 @@ - Compile the native C code for JOAL. --> - <target name="c.configure" depends="gluegen.cpptasks.configure.compiler"> - <!-- linker configuration --> - - <patternset id="c.src.files.joal"> - <include name="${rootrel.src.c}/*.c"/> - <include name="${rootrel.generated.c.joal}/*.c"/> - </patternset> - - </target> - - <target name="c.build" depends="c.configure"> - <fail message="Requires '${c.compiler.src.files}'" unless="c.compiler.src.files"/> - <fail message="Requires '${compiler.cfg.id}'" unless="compiler.cfg.id"/> - <fail message="Requires '${linker.cfg.id}'" unless="linker.cfg.id"/> - <fail message="Requires '${output.lib.name}'" unless="output.lib.name"/> - - <echo message="Output lib name = ${output.lib.name}" /> - - <!-- NOTE: the value of the debug and optimise attributes will not be overridden if already set externally --> - <property name="c.compiler.debug" value="false" /> - <!-- Optimise flags one of { none, size, speed, minimal, full, aggressive, extreme, unsafe } --> - <property name="c.compiler.optimise" value="none" /> - - <condition property="c.compiler.use-debug"><istrue value="${c.compiler.debug}"/></condition> - - <cc outtype="shared" - objdir="${obj.joal}" - outfile="${obj}/${output.lib.name}" - optimize="${c.compiler.optimise}" - debug="${c.compiler.debug}" - multithreaded="true" - exceptions="false" - rtti="false"> - - <!-- TODO: versioninfo companyname="java.net" - legalcopyright="Copyright" - productname="JOAL" - productversion="x.y.z" - description="Description" - fileversion="x.y.z" - filecomments="File Comment" /--> - - <fileset dir="${project.root}"><patternset refid="${c.compiler.src.files}"/></fileset> - - <compiler extends="${compiler.cfg.id}" > - <sysincludepath path="${java.includes.dir}"/> - <sysincludepath path="${java.includes.dir.platform}"/> - <includepath path="stub_includes/openal"/> - </compiler> - - <linker extends="${linker.cfg.id}" /> - </cc> - </target> - - <target name="c.rename.joal.lib.mingw" if="isMingw"> - <!-- FIXME: this is a hack; the cpptask should have an option to change the - suffix or at least understand the override from .so to .dll --> - <move file="${obj}/libjoal.so" tofile="${obj}/joal.dll" failonerror="false" /> - </target> - - <target name="c.rename.joal.lib.macosx" if="isOSX"> - <!-- FIXME: this is a hack; the cpptask should have an option to change the - suffix or at least understand the override from dylib to jnilib --> - <move file="${obj}/libjoal.dylib" tofile="${obj}/libjoal.jnilib" /> - </target> + <target name="rename.mingw.dll" if="isMingW"> + <move file="${src}" tofile="${dest}" /> + </target> + + <target name="rename.dylib" if="isOSX"> + <move file="${src}" tofile="${dest}" /> + </target> + + <macrodef name="c.build"> + <attribute name="compiler.cfg.id" /> + <attribute name="linker.cfg.id" /> + <attribute name="output.lib.name" /> + <attribute name="c.compiler.use-jawt" default="false"/> + <sequential> + <echo message="Output lib name = @{output.lib.name}" /> + + <echo message="compiler.cfg.id.base: @{compiler.cfg.id}"/> + <echo message="linker.cfg.id.base: @{linker.cfg.id}"/> + + <!-- NOTE: the value of the debug and optimise attributes will not be overridden if already set externally --> + <property name="c.compiler.debug" value="false" /> + <!-- Optimise flags one of { none, size, speed, minimal, full, aggressive, extreme, unsafe } --> + <property name="c.compiler.optimise" value="none" /> + + <condition property="c.compiler.use-debug"><istrue value="${c.compiler.debug}"/></condition> + + <patternset id="c.src.files"> + <include name="${rootrel.src.c}/*.c"/> + <include name="${rootrel.generated.c.joal}/*.c"/> + </patternset> + + <echo message="Compiling @{output.lib.name}" /> + + <cc outtype="shared" + objdir="${obj}" + outfile="${obj}/@{output.lib.name}" + optimize="${c.compiler.optimise}" + debug="${c.compiler.debug}" + multithreaded="true" + exceptions="false" + rtti="false"> + + <fileset dir="${project.root}"><patternset refid="c.src.files"/></fileset> + + <compiler extends="@{compiler.cfg.id}" > + <sysincludepath path="${java.includes.dir}"/> + <sysincludepath path="${java.includes.dir.platform}"/> + <includepath path="stub_includes/openal"/> + <!-- This is for the generated headers for handwritten C code --> + <includepath path="${src.generated.c}" /> + <includepath path="${src.c}"/> + + <!-- This must come last to not override real include paths --> + <!-- includepath path="stub_includes/macosx" if="isOSX" / --> + </compiler> + + <linker extends="@{linker.cfg.id}" /> + </cc> + + <antcall target="rename.dylib" inheritRefs="true"> + <param name="src" value="${obj}/lib@{output.lib.name}.dylib" /> + <param name="dest" value="${obj}/lib@{output.lib.name}.jnilib" /> + </antcall> + + <antcall target="rename.mingw.dll" inheritRefs="true"> + <param name="src" value="${obj}/lib@{output.lib.name}.so" /> + <param name="dest" value="${obj}/@{output.lib.name}.dll" /> + </antcall> + </sequential> + </macrodef> + + <target name="c.build.joal" depends="init, gluegen.cpptasks.detect.os, gluegen.cpptasks.setup.compiler"> + <echo message="compiler.cfg.id.base: ${compiler.cfg.id.base}"/> + <echo message="linker.cfg.id.base: ${linker.cfg.id.base}"/> + <c.build compiler.cfg.id="${compiler.cfg.id.base}" + output.lib.name="joal" + linker.cfg.id="${linker.cfg.id.base}"/> - <target name="c.build.joal"> - <antcall target="c.build" inheritRefs="true"> - <param name="c.compiler.src.files" value="c.src.files.joal"/> - <param name="output.lib.name" value="joal"/> - </antcall> - <antcall target="c.rename.joal.lib.mingw" inheritRefs="true" /> - <antcall target="c.rename.joal.lib.macosx" inheritRefs="true" /> <!-- Create Java Web Start jar file from built file --> <jar destfile="${build}/joal-natives-${os.and.arch}.jar"> <fileset dir="../${rootrel.build}/obj"> @@ -593,10 +453,10 @@ <!-- if gluegen-javadoc.path is not set, check in default location, ${gluegen.root}/${rootrel.build}/javadoc/gluegen --> - <available file="${gluegen.root}/${rootrel.build}/javadoc/gluegen/javadoc/package-list" + <available file="${gluegen.build}/javadoc/gluegen/javadoc/package-list" type="file" property="gluegen-javadoc.path" - value="${gluegen.root}/${rootrel.build}/javadoc/gluegen" /> + value="${gluegen.build}/javadoc/gluegen" /> <antcall target="javadoc.gluegen" inheritRefs="true" /> </target> @@ -606,7 +466,7 @@ includes="joal/**" /> </target> - <target name="javadoc.public" depends="setup.java.home.dir,init"> + <target name="javadoc.public" depends="javadoc.init"> <javadoc packagenames="${javadoc.packagenames}" sourcepath="${src.java};${src.generated.java}" destdir="${javadoc.joal.public.path}" windowtitle="JOAL API" @@ -617,7 +477,7 @@ </javadoc> </target> - <target name="javadoc.dev" depends="init"> + <target name="javadoc.dev" depends="javadoc.init"> <!-- Build the internal developer Javadoc --> <javadoc packagenames="${javadoc.dev.packagenames},${javadoc.dev.packagenames.platform}" sourcepath="${src.java};${src.generated.java}" @@ -665,7 +525,7 @@ <!-- - Clean up all that is built. --> - <target name="clean" depends="declare.common"> + <target name="clean" depends="init"> <delete includeEmptyDirs="true" quiet="true"> <fileset dir="${build}" /> <fileset dir="${javadoc}" /> @@ -680,7 +540,7 @@ --> <target name="all" depends="joal.compile, test.compile, tag.build, developer-zip-archive"/> - <target name="joal.compile" depends="init, declare"> + <target name="joal.compile" depends="init"> <!-- Generate, compile, and build the jar for the Java sources. --> <antcall target="jar" inheritRefs="true" /> @@ -689,7 +549,7 @@ </target> <target name="tag.build"> - <copy file="${gluegen.root}/${rootrel.build}/artifact.properties" todir="${build}" overwrite="true"/> + <copy file="${gluegen.build}/artifact.properties" todir="${build}" overwrite="true"/> <echo message='joal.build.number=${joal.build.number}${line.separator}' file="${build}/artifact.properties" append="true"/> <echo message='joal.build.id=${joal.build.id}${line.separator}' file="${build}/artifact.properties" append="true"/> <echo message='joal.build.branch=${joal.build.branch}${line.separator}' file="${build}/artifact.properties" append="true"/> diff --git a/make/lib/FILES.txt b/make/lib/FILES.txt new file mode 100644 index 0000000..1b8d9c0 --- /dev/null +++ b/make/lib/FILES.txt @@ -0,0 +1,9 @@ + +Windows x32 and x64: + oalinst: + http://connect.creativelabs.com/openal/Downloads/oalinst.zip + LICENSE: oalinst-license.txt + + Summer 2009 : Version 2.0.7.0 + * OpenAL32.dll version 6.14.357.24 + * wrap_oal.dll version 2.2.0.5 diff --git a/make/lib/linux-amd64/libopenal.so b/make/lib/linux-amd64/libopenal.so.1 Binary files differindex 4ed39f2..4ed39f2 100644 --- a/make/lib/linux-amd64/libopenal.so +++ b/make/lib/linux-amd64/libopenal.so.1 diff --git a/make/lib/linux-i586/libopenal.so b/make/lib/linux-i586/libopenal.so.1 Binary files differindex ebcaee5..ebcaee5 100755 --- a/make/lib/linux-i586/libopenal.so +++ b/make/lib/linux-i586/libopenal.so.1 diff --git a/make/lib/oalinst-license.txt b/make/lib/oalinst-license.txt new file mode 100755 index 0000000..8c95a86 --- /dev/null +++ b/make/lib/oalinst-license.txt @@ -0,0 +1,24 @@ +Creative Labs, Inc. is providing you with this OpenAL32.dll installer and other OpenAL files ("Software").
+You may use and freely integrate with your software applications and distribute such throughout the world at no cost or further obligation to Creative.
+
+NO WARRANTY
+ ANY USE BY YOU OF THE SOFTWARE IS AT YOUR OWN RISK.
+ THE SOFTWARE IS PROVIDED FOR USE "AS IS" WITHOUT WARRANTY OF ANY KIND.
+ TO THE MAXIMUM EXTENT PERMITTED BY LAW, CREATIVE DISCLAIMS ALL WARRANTIES OF ANY KIND,
+ EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, IMPLIED WARRANTIES OR CONDITIONS
+ OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ CREATIVE IS NOT OBLIGATED TO PROVIDE ANY UPDATES OR UPGRADES TO THE SOFTWARE.
+
+ No other entity or person is authorized to expand or alter this warranty or any other provisions herein.
+ Creative does not warrant that the functions contained in the Software will meet your requirements
+ or that the operation of the Software will be uninterrupted or error-free or free from malicious code.
+ For purposes of this paragraph, "malicious code" means any program code designed to contaminate other computer programs or computer data,
+ consume computer resources, modify, destroy, record, or transmit data, or in some other fashion usurp the normal operation of the computer,
+ computer system, or computer network, including viruses, Trojan horses, droppers, worms, logic bombs, and the like.
+
+ You assume full responsibility for the selection of the Software to achieve your intended results,
+ and for the downloading, use and results obtained from the Software.
+ You also assume the entire risk as it applies to the quality and performance of the Software.
+
+ IN NO EVENT WILL CREATIVE'S LIABILITY TO YOU OR ANY OTHER PERSON EVER EXCEED THE AMOUNT PAID BY YOU TO USE THE SOFTWARE,
+ REGARDLESS OF THE FORM OF THE CLAIM.
diff --git a/make/lib/windows-amd64/OpenAL32.dll b/make/lib/windows-amd64/OpenAL32.dll Binary files differnew file mode 100755 index 0000000..259177a --- /dev/null +++ b/make/lib/windows-amd64/OpenAL32.dll diff --git a/make/lib/windows-amd64/wrap_oal.dll b/make/lib/windows-amd64/wrap_oal.dll Binary files differnew file mode 100755 index 0000000..2713dae --- /dev/null +++ b/make/lib/windows-amd64/wrap_oal.dll diff --git a/make/lib/windows-i586/OpenAL32.dll b/make/lib/windows-i586/OpenAL32.dll Binary files differindex a2e77f2..d0ee3cc 100755 --- a/make/lib/windows-i586/OpenAL32.dll +++ b/make/lib/windows-i586/OpenAL32.dll diff --git a/make/lib/windows-i586/wrap_oal.dll b/make/lib/windows-i586/wrap_oal.dll Binary files differindex 22697eb..91e90fc 100755 --- a/make/lib/windows-i586/wrap_oal.dll +++ b/make/lib/windows-i586/wrap_oal.dll diff --git a/make/scripts/make.jogl.all.win32.bat b/make/scripts/make.jogl.all.win32.bat new file mode 100755 index 0000000..e404460 --- /dev/null +++ b/make/scripts/make.jogl.all.win32.bat @@ -0,0 +1,12 @@ +set J2RE_HOME=c:\jre1.6.0_22_x32
+set JAVA_HOME=c:\jdk1.6.0_22_x32
+set ANT_PATH=C:\apache-ant-1.8.0
+
+set PATH=%JAVA_HOME%\bin;%ANT_PATH%\bin;c:\mingw\bin;%PATH%
+
+set LIB_GEN=%THISDIR%\lib
+set CLASSPATH=.;%THISDIR%\build-win32\classes
+REM -Dc.compiler.debug=true
+REM -Dbuild.noarchives=true
+
+ant -Dbuild.noarchives=true -Drootrel.build=build-win32 %1 %2 %3 %4 %5 %6 %7 %8 %9 > make.joal.all.win32.log 2>&1
diff --git a/make/scripts/make.jogl.all.win64.bat b/make/scripts/make.jogl.all.win64.bat new file mode 100755 index 0000000..0890b44 --- /dev/null +++ b/make/scripts/make.jogl.all.win64.bat @@ -0,0 +1,12 @@ +set J2RE_HOME=c:\jre1.6.0_22_x64
+set JAVA_HOME=c:\jdk1.6.0_22_x64
+set ANT_PATH=C:\apache-ant-1.8.0
+
+set PATH=%JAVA_HOME%\bin;%ANT_PATH%\bin;c:\mingw64\bin;c:\mingw\bin;%PATH%
+
+set LIB_GEN=%THISDIR%\lib
+set CLASSPATH=.;%THISDIR%\build-win64\classes
+REM -Dc.compiler.debug=true
+REM -Dbuild.noarchives=true
+
+ant -Dc.compiler.debug=true -Dbuild.noarchives=true -Drootrel.build=build-win64 %1 %2 %3 %4 %5 %6 %7 %8 %9 > make.joal.all.win64.log 2>&1
diff --git a/src/java/com/jogamp/openal/ALFactory.java b/src/java/com/jogamp/openal/ALFactory.java index 64da325..e7ec774 100644 --- a/src/java/com/jogamp/openal/ALFactory.java +++ b/src/java/com/jogamp/openal/ALFactory.java @@ -44,6 +44,8 @@ import com.jogamp.openal.impl.*; * @author Kenneth Russell */ public class ALFactory { + public static final boolean DEBUG = Debug.debug("Factory"); + private static boolean initialized = false; private static AL al; private static ALC alc; @@ -54,9 +56,12 @@ public class ALFactory { try { if (!initialized) { if(null == ALImpl.getALProcAddressTable()) { - throw new RuntimeException("AL not initialized (ProcAddressTable null)"); + throw new ALException("AL not initialized (ProcAddressTable null)"); } initialized = true; + if(DEBUG) { + System.err.println("AL initialized"); + } } } catch (UnsatisfiedLinkError e) { throw new ALException(e); @@ -72,7 +77,7 @@ public class ALFactory { public static AL getAL() throws ALException { initialize(); if (al == null) { - al = new ALImpl(); + al = new ALImpl(); } return al; } @@ -86,7 +91,7 @@ public class ALFactory { public static ALC getALC() throws ALException{ initialize(); if (alc == null) { - alc = new ALCImpl(); + alc = new ALCImpl(); } return alc; } diff --git a/src/java/com/jogamp/openal/eax/EAXFactory.java b/src/java/com/jogamp/openal/eax/EAXFactory.java index 0e305a5..01d336c 100644 --- a/src/java/com/jogamp/openal/eax/EAXFactory.java +++ b/src/java/com/jogamp/openal/eax/EAXFactory.java @@ -39,20 +39,33 @@ import com.jogamp.openal.ALFactory; * */ public final class EAXFactory { + public static final boolean DEBUG; static { //initializes JOAL ALFactory.getAL(); + DEBUG = ALFactory.DEBUG; } - private static EAX eax; + private static EAX eax = null; + private static boolean eaxTried = false; private static native void init(); - public static EAX getEAX() { - if (eax == null) { - init(); - eax = new EAX(EAX.SOURCE, EAX.LISTENER); + public static synchronized EAX getEAX() { + try { + if (!eaxTried) { + eaxTried = true; + init(); + eax = new EAX(EAX.SOURCE, EAX.LISTENER); + if(DEBUG) { + System.err.println("EAX initialized"); + } + } + } catch (UnsatisfiedLinkError e) { + if(DEBUG) { + e.printStackTrace(); + } } return eax; } diff --git a/src/java/com/jogamp/openal/impl/Debug.java b/src/java/com/jogamp/openal/impl/Debug.java new file mode 100644 index 0000000..be57b70 --- /dev/null +++ b/src/java/com/jogamp/openal/impl/Debug.java @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2003-2005 Sun Microsystems, Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistribution of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistribution in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of Sun Microsystems, Inc. or the names of + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * This software is provided "AS IS," without a warranty of any kind. ALL + * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, + * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN + * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR + * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR + * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR + * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR + * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE + * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, + * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF + * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * You acknowledge that this software is not designed or intended for use + * in the design, construction, operation or maintenance of any nuclear + * facility. + * + * Sun gratefully acknowledges that this software was originally authored + * and developed by Kenneth Bradley Russell and Christopher John Kline. + */ + +package com.jogamp.openal.impl; + +import java.security.*; + +/** Helper routines for logging and debugging. */ + +public class Debug { + // Some common properties + private static boolean verbose; + private static boolean debugAll; + private static AccessControlContext localACC; + + static { + localACC=AccessController.getContext(); + verbose = isPropertyDefined("joal.verbose", true); + debugAll = isPropertyDefined("joal.debug", true); + } + + static int getIntProperty(final String property, final boolean jnlpAlias) { + return getIntProperty(property, jnlpAlias, localACC, 0); + } + + public static int getIntProperty(final String property, final boolean jnlpAlias, final AccessControlContext acc, int defaultValue) { + int i=defaultValue; + try { + String sv = Debug.getProperty(property, jnlpAlias, acc); + if(null!=sv) { + Integer iv = Integer.valueOf(sv); + i = iv.intValue(); + } + } catch (NumberFormatException nfe) {} + return i; + } + + public static long getLongProperty(final String property, final boolean jnlpAlias, final AccessControlContext acc, long defaultValue) { + long l=defaultValue; + try { + String sv = Debug.getProperty(property, jnlpAlias, acc); + if(null!=sv) { + Long lv = Long.valueOf(sv); + l = lv.longValue(); + } + } catch (NumberFormatException nfe) {} + return l; + } + + static boolean getBooleanProperty(final String property, final boolean jnlpAlias) { + return getBooleanProperty(property, jnlpAlias, localACC); + } + + public static boolean getBooleanProperty(final String property, final boolean jnlpAlias, final AccessControlContext acc) { + Boolean b = Boolean.valueOf(Debug.getProperty(property, jnlpAlias, acc)); + return b.booleanValue(); + } + + static boolean isPropertyDefined(final String property, final boolean jnlpAlias) { + return isPropertyDefined(property, jnlpAlias, localACC); + } + + public static boolean isPropertyDefined(final String property, final boolean jnlpAlias, final AccessControlContext acc) { + return (Debug.getProperty(property, jnlpAlias, acc) != null) ? true : false; + } + + static String getProperty(final String property, final boolean jnlpAlias) { + return getProperty(property, jnlpAlias, localACC); + } + + public static String getProperty(final String property, final boolean jnlpAlias, final AccessControlContext acc) { + String s=null; + if(null!=acc && acc.equals(localACC)) { + s = (String) AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + String val=null; + try { + val = System.getProperty(property); + } catch (Exception e) {} + if(null==val && jnlpAlias && !property.startsWith(jnlp_prefix)) { + try { + val = System.getProperty(jnlp_prefix + property); + } catch (Exception e) {} + } + return val; + } + }); + } else { + try { + s = System.getProperty(property); + } catch (Exception e) {} + if(null==s && jnlpAlias && !property.startsWith(jnlp_prefix)) { + try { + s = System.getProperty(jnlp_prefix + property); + } catch (Exception e) {} + } + } + return s; + } + public static final String jnlp_prefix = "jnlp." ; + + public static boolean verbose() { + return verbose; + } + + public static boolean debugAll() { + return debugAll; + } + + public static boolean debug(String subcomponent) { + return debugAll() || isPropertyDefined("joal.debug." + subcomponent, true); + } +} diff --git a/src/test/com/jogamp/openal/test/manual/OpenALTest.java b/src/test/com/jogamp/openal/test/manual/OpenALTest.java index abd335c..864a9fd 100644 --- a/src/test/com/jogamp/openal/test/manual/OpenALTest.java +++ b/src/test/com/jogamp/openal/test/manual/OpenALTest.java @@ -72,7 +72,8 @@ public class OpenALTest { boolean eaxPresent = al.alIsExtensionPresent("EAX2.0"); - System.out.println("EAX present:" + eaxPresent); + EAX eax = ( eaxPresent ) ? EAXFactory.getEAX() : null; + System.err.println("EAX present:" + eaxPresent + ", EAX retrieved: "+ (null != eax)); int[] buffers = new int[1]; al.alGenBuffers(1, buffers, 0); @@ -86,14 +87,13 @@ public class OpenALTest { int[] loopArray = new int[1]; al.alGetSourcei(sources[0], AL.AL_LOOPING, loopArray, 0); - System.out.println("Looping 1: " + (loopArray[0] == AL.AL_TRUE)); + System.err.println("Looping 1: " + (loopArray[0] == AL.AL_TRUE)); int[] loopBuffer = new int[1]; al.alGetSourcei(sources[0], AL.AL_LOOPING, loopBuffer, 0); - System.out.println("Looping 2: " + (loopBuffer[0] == AL.AL_TRUE)); + System.err.println("Looping 2: " + (loopBuffer[0] == AL.AL_TRUE)); - if (eaxPresent) { - EAX eax = EAXFactory.getEAX(); + if (eaxPresent && null!=eax) { IntBuffer env = Buffers.newDirectIntBuffer(1); env.put(EAX.EAX_ENVIRONMENT_BATHROOM); eax.setListenerProperty(EAX.DSPROPERTY_EAXLISTENER_ENVIRONMENT, env); |