<project name="LWJGL" default="all" basedir=".">
	<!-- ================================================================== -->
	<!-- Global properties for build 																				-->
	<!-- ================================================================== -->
	<property name="lwjgl.src" 			location="src" />
	<property name="lwjgl.src.native" 	location="${lwjgl.src}/native" />
	<property name="lwjgl.src.headers" 	location="${lwjgl.src.native}/common" />
	<property name="lwjgl.src.templates"	location="${lwjgl.src}/templates" />
	<property name="lwjgl.bin" 			location="bin" />
	<property name="lwjgl.lib" 			location="libs" />
	<property name="lwjgl.dist" 			location="dist" />
	<property name="lwjgl.docs" 			location="doc" />
	<property name="lwjgl.temp" 			location="temp" />
	<property name="lwjgl.res" 			location="res" />
	<property name="lwjgl.version" 		value="1.0beta2" />
	<property name="opengl-template-pattern" value="org/lwjgl/opengl/GL*.java,org/lwjgl/opengl/ARB*.java,org/lwjgl/opengl/ATI*.java,org/lwjgl/opengl/EXT*.java,org/lwjgl/opengl/NV*.java,org/lwjgl/opengl/HP*.java,org/lwjgl/opengl/IBM*.java,org/lwjgl/opengl/SUN*.java"/>
	<!-- ================================================================== -->
	<!-- Filesets used for targets 																					-->
	<!-- ================================================================== -->
	<!-- Files to include in the lwjgl.jar file -->
	<fileset id="lwjgl.fileset" dir="${lwjgl.bin}">
		<include name="**" />
		<exclude name="**.*" />
		<exclude name="org/lwjgl/fmod3/**" />
		<exclude name="org/lwjgl/test/**" />
		<exclude name="org/lwjgl/util/**" />
		<exclude name="org/lwjgl/devil/**" />
		<exclude name="org/lwjgl/examples/**" />
	</fileset>
	<fileset id="lwjgl_util_applet.fileset" dir="${lwjgl.bin}">
		<exclude name="**.*"/>
		<include name="org/lwjgl/util/applet/**"/>
	</fileset>
	<!-- Files to include in the lwjgl_test.jar file -->
	<fileset id="lwjgl_test.fileset" dir="${lwjgl.bin}">
		<exclude name="**.*" />
		<include name="org/lwjgl/test/**" />
		<include name="org/lwjgl/examples/**" />
	</fileset>
  
  <!-- More files to include in the lwjgl_test.jar file -->
	<fileset id="lwjgl_test_extra.fileset" dir="${lwjgl.src}/java">
		<exclude name="**.*" />
		<include name="org/lwjgl/test/opengl/shaders/shaderFP.fp" />
    <include name="org/lwjgl/test/opengl/shaders/shaderFP.vp" />
    <include name="org/lwjgl/test/opengl/shaders/shaderFSH.fsh" />
    <include name="org/lwjgl/test/opengl/shaders/shaderFSH.vsh" />
    <include name="org/lwjgl/test/opengl/shaders/shaderVP.vp" />
    <include name="org/lwjgl/test/opengl/shaders/shaderVSH.vsh" />
	</fileset>  
	<!-- Files to include in the lwjgl_util.jar file -->
	<fileset id="lwjgl_util.fileset" dir="${lwjgl.bin}">
		<exclude name="**.*" />
		<exclude name="org/lwjgl/util/generator/**" />
		<exclude name="org/lwjgl/util/applet/**" />
		<include name="org/lwjgl/util/**" />
	</fileset>
	<!-- Files to include in the lwjgl_fmod3.jar file -->
	<fileset id="lwjgl_fmod3.fileset" dir="${lwjgl.bin}">
		<exclude name="**.*" />
		<include name="org/lwjgl/fmod3/**" />
	</fileset>
	
	<!-- Files to include in the lwjgl_devil.jar file -->
	<fileset id="lwjgl_devil.fileset" dir="${lwjgl.bin}">
		<exclude name="**.*"/>
		<include name="org/lwjgl/devil/**"/>
	</fileset>
	
	<!-- Files to include in the lwjgl_applet.jar file -->
	<fileset id="lwjgl_applet.fileset" dir="${lwjgl.bin}">
		<exclude name="**.*"/>
		<include name="org/lwjgl/test/applet/**"/>
	</fileset>
	
	<!-- Files to make Javadoc from -->
	<fileset id="lwjgl.javadoc.fileset" dir="${lwjgl.src}">
		<include name="**/*.java" />
		<exclude name="native/**" />
		<exclude name="templates/**" />
		<exclude name="java/org/lwjgl/test/**" />
		<exclude name="java/org/lwjgl/examples/**" />
		<exclude name="java/org/lwjgl/util/generator/**" />
	</fileset>
	<!-- Files to include in doc package -->
	<patternset id="lwjgl-docs.fileset">
		<include name="CREDITS" />
		<include name="LICENSE" />
		<include name="README" />
		<include name="lwjgl_hidden_switches.text" />
		<include name="3rdparty/*" />
	</patternset>
	<!-- Files to include in win32 package -->
	<patternset id="lwjgl-win32.fileset">
		<include name="lwjgl.dll" />
		<include name="OpenAL32.dll" />
    	<include name="jinput-dx8.dll" />
    	<include name="jinput-raw.dll" />
	</patternset>
	
	<!-- Files to include in win32 optional package -->
	<patternset id="lwjgl-win32_optional.fileset">
		<include name="lwjgl-fmod3.dll" />
		<include name="lwjgl-devil.dll" />
		<include name="DevIL.dll" />
		<include name="ILU.dll" />
		<include name="ILUT.dll" />
	</patternset>	
	<!-- Files to include in linux, glibc2.3 package -->
	<patternset id="lwjgl-linux.fileset">
		<include name="liblwjgl*.so" />
		<include name="libopenal.so" />    
		<include name="libjinput-linux.so" />
	</patternset>
	
	<!-- Files to include in linux optional, glibc2.3 package -->
	<patternset id="lwjgl-linux_optional.fileset">
		<include name="liblwjgl-fmod3.so" />
		<include name="liblwjgl-devil.so" />
		<include name="libIL.so" />
		<include name="libILU.so" />
		<include name="libILUT.so" />
	</patternset>	
	<!-- Files to include in mac os x package -->
	<patternset id="lwjgl-macosx.fileset">
		<include name="liblwjgl.jnilib" />
		<include name="openal.dylib" />
	    <include name="libjinput-osx.jnilib" />
	    <include name="libjinput-osx-legacy.jnilib" />
	</patternset>
	
	<!-- Files to include in mac os x optional package -->
	<patternset id="lwjgl-macosx_optional.fileset">
		<include name="liblwjgl-fmod3.jnilib" />
		<include name="liblwjgl-devil.jnilib" />
		<include name="libIL.dylib" />
		<include name="libILU.dylib" />
		<include name="libILUT.dylib" />
	</patternset>
	<!-- files in the base package -->
	<patternset id="lwjgl_base">
		<include name="**" />
		<exclude name="jar/lwjgl_fmod3.jar" />
		<exclude name="jar/lwjgl_devil.jar" />
		<exclude name="native/win32/lwjgl-*.dll" />
		<exclude name="native/win32/DevIL.dll" />
		<exclude name="native/win32/ILU.dll" />
		<exclude name="native/win32/ILUT.dll" />
		<exclude name="native/linux/libIL*.so" />
		<exclude name="native/linux/liblwjgl-*.so" />
		<exclude name="native/macosx/libIL*.dylib" />
		<exclude name="native/macosx/liblwjgl-*.jnilib" />
		<exclude name="res/ILtest.*" />
		<exclude name="res/Missing_you.mod" />
		<exclude name="res/phero*.*" />
		<exclude name="doc/3rdparty/openil_license.txt" />
	</patternset>
	
	<!-- files in the optional package -->
	<patternset id="lwjgl_optional">
		<include name="jar/lwjgl_fmod3.jar" />
		<include name="jar/lwjgl_devil.jar" />
		<include name="native/win32/lwjgl-*.dll" />
		<include name="native/win32/DevIL.dll" />
		<include name="native/win32/ILU.dll" />
		<include name="native/win32/ILUT.dll" />
		<include name="native/linux/libIL*.so" />
		<include name="native/linux/liblwjgl-*.so" />
		<include name="native/macosx/libIL*.dylib" />
		<include name="native/macosx/liblwjgl-*.jnilib" />
		<include name="res/**" />
		<exclude name="res/logo/**" />
		<exclude name="res/spaceinvaders/**" />
		<exclude name="res/*.wav" />
		<exclude name="res/*.xpm" />
		<include name="doc/3rdparty/openil_license.txt" />
		<include name="doc/CREDITS" />
		<include name="doc/LICENSE" />
		<include name="doc/README" />
	</patternset>	
	
	<uptodate property="lwjgl.main.built" targetfile="${lwjgl.lib}/win32/lwjgl.dll" >
	    <srcfiles dir= "${lwjgl.src.native}/common" includes="*.c*"/>
	    <srcfiles dir= "${lwjgl.src.native}/generated" includes="*.c"/>
	    <srcfiles dir= "${lwjgl.src.native}/windows" includes="*.c"/>
	</uptodate>	
	
	<uptodate property="lwjgl.fmod.built" targetfile="${lwjgl.lib}/win32/lwjgl-fmod3.dll" >
	    <srcfiles dir= "${lwjgl.src.native}/common" includes="*.c"/>
	    <srcfiles dir= "${lwjgl.src.native}/common/fmod3" includes="*.c"/>
	</uptodate>	
	
	<uptodate property="lwjgl.devil.built" targetfile="${lwjgl.lib}/win32/lwjgl-devil.dll" >
	    <srcfiles dir= "${lwjgl.src.native}/common" includes="*.c"/>
	    <srcfiles dir= "${lwjgl.src.native}/common/devil" includes="*.c"/>
	</uptodate>	
	<!-- ================================================================== -->
	<!-- Everything below this line is targets.															-->
	<!-- Do not modify, unless you know what you're doing 									-->
	<!-- ================================================================== -->
	<!-- ================================================================== -->
	<!-- Initialize build			 																							-->
	<!-- ================================================================== -->
	<target name="-initialize">
		<mkdir dir="${lwjgl.bin}" taskname="initialiazing bin folder" />
		<mkdir dir="${lwjgl.bin}/lwjgl" taskname="initialiazing bin folder" />
		<mkdir dir="${lwjgl.bin}/devil" taskname="initialiazing bin folder" />
		<mkdir dir="${lwjgl.bin}/fmod3" taskname="initialiazing bin folder" />
		<mkdir dir="${lwjgl.lib}" taskname="initialiazing lib folder" />
		<mkdir dir="${lwjgl.dist}" taskname="initialiazing dist folder" />
		<mkdir dir="${lwjgl.docs}/javadoc" taskname="initialiazing docs folder" />
		<mkdir dir="${lwjgl.res}" taskname="initialiazing res folder" />
		<mkdir dir="${lwjgl.temp}" taskname="initialiazing temp folder" />
		<mkdir dir="${lwjgl.temp}/jar" taskname="initialiazing temp/jar folder" />
		<mkdir dir="${lwjgl.temp}/doc" taskname="initialiazing temp/doc folder" />
		<mkdir dir="${lwjgl.temp}/res" taskname="initialiazing temp/res folder" />
		<mkdir dir="${lwjgl.temp}/native" taskname="initialiazing temp/native folder" />
		<mkdir dir="${lwjgl.temp}/native/win32" taskname="initialiazing temp/win32 folder" />
		<mkdir dir="${lwjgl.temp}/native/linux" taskname="initialiazing temp/linux folder" />
		<mkdir dir="${lwjgl.temp}/native/macosx" taskname="initialiazing temp/macosx folder" />
	</target>
	<target name="clean-generated" description="Deletes the generated java and native source">
		<delete quiet="true" failonerror="false">
			<fileset dir="${lwjgl.src}/generated" includes="**"/>
			<fileset dir="${lwjgl.src.native}/generated" includes="**"/>
		</delete>
	</target>
	
	<!-- Cleans up any files created during the execution of this script -->
	<target name="clean" description="Cleans the diectories controlled by this ant script">
		<delete dir="${lwjgl.temp}" quiet="true" failonerror="false" taskname="cleaning temp folder" />
		<delete dir="${lwjgl.docs}/javadoc" quiet="true" failonerror="false" taskname="cleaning javadoc folder" />
		<delete dir="${lwjgl.bin}" quiet="true" failonerror="false" taskname="cleaning bin folder" />
	</target>
	
	<!-- Creates a distribution of LWJGL -->
	<target name="release" description="Creates a distribution of LWJGL using supplied native binaries">
		<!-- Warn user -->
		<echo message="Before running the release target, please manually compile all platforms and place required files in ${lwjgl.lib}/win32, ${lwjgl.lib}/linux and ${lwjgl.lib}/macosx${line.separator}Missing files will result in a successfull built, but with incomplete release zips"/>
  	<input 
  		message="All data in the ${lwjgl.dist} folder will be deleted. Continue? "
    	validargs="yes,no"
    	addproperty="do.delete"
  	/>
  	<condition property="do.abort">
    	<equals arg1="no" arg2="${do.delete}"/>
  	</condition>
  	<fail if="do.abort">Build aborted by user.</fail>
  	
  	<!-- prepare -->
  	<delete dir="${lwjgl.dist}" quiet="true" failonerror="false" />
  	<antcall target="clean" />
  	<antcall target="-initialize" />
  	<!-- compile and create jars -->
  	<antcall target="compile" />
	<antcall target="javadoc" />
  	<antcall target="-createjars" />
  	
  	<!-- copy resources to res folder -->
 		<copy todir="${lwjgl.temp}/res">
    	<fileset dir="res"/>
  	</copy>
  	
  	<!-- copy docs -->
 		<copy todir="${lwjgl.temp}/doc">
    	<fileset dir="${lwjgl.docs}">
    		<patternset refid="lwjgl-docs.fileset" />
    	</fileset>
  	</copy>
		
		<!-- create distribution from files in libs/ and temp/ -->
		<antcall target="-distribution_javadoc" />
		<antcall target="-distribute" />
	</target>
	<target name="all" description="Creates the Java archives and the natives for the current platform" depends="jars, compile_native"/>
	<!-- Create ONLY the jar archives -->
	<target name="jars" description="Creates the Java archives ONLY and places them in libs/" depends="-initialize, compile, -createjars">
		<move todir="libs/">
			<fileset dir="${lwjgl.temp}/jar">
				<include name="*.jar"/>
			</fileset>
		</move>
	</target>
	<!-- Packages the java files -->
	<target name="-createjars">
		<!-- Create lwjgl.jar -->
		<jar destfile="${lwjgl.temp}/jar/lwjgl.jar" taskname="lwjgl.jar">
			<fileset refid="lwjgl.fileset" />
			<manifest>
				<attribute name="Sealed" value="true"/>
			</manifest>
		</jar>
		
		<!-- Create lwjgl_util_applet.jar -->
		<jar destfile="${lwjgl.temp}/jar/lwjgl_util_applet.jar" taskname="lwjgl_util_applet.jar">
			<fileset refid="lwjgl_util_applet.fileset" />
			<manifest>
				<attribute name="Sealed" value="true"/>
			</manifest>
		</jar>
		<!-- Create lwjgl_test.jar -->
		<jar destfile="${lwjgl.temp}/jar/lwjgl_test.jar" taskname="lwjgl_test.jar">
			<fileset refid="lwjgl_test.fileset" />
			<fileset refid="lwjgl_test_extra.fileset" />
		</jar>
		<!-- Create lwjgl_util.jar -->
		<jar destfile="${lwjgl.temp}/jar/lwjgl_util.jar" taskname="lwjgl_util.jar">
			<fileset refid="lwjgl_util.fileset" />
		</jar>
		
		<!-- Create lwjgl_fmod.jar -->
		<jar destfile="${lwjgl.temp}/jar/lwjgl_fmod3.jar" taskname="lwjgl_fmod3.jar">
			<fileset refid="lwjgl_fmod3.fileset" />
			<manifest>
				<attribute name="Sealed" value="true"/>
			</manifest>
		</jar>
		
		<!-- Create lwjgl_devil.jar -->
		<jar destfile="${lwjgl.temp}/jar/lwjgl_devil.jar" taskname="lwjgl_devil.jar">
			<fileset refid="lwjgl_devil.fileset" />
			<manifest>
				<attribute name="Sealed" value="false"/>
			</manifest>
		</jar>
	</target>
	<target name="runtest" depends="all">
		<fail message="test.mainclass is not set. Use 'ant -Dtest.mainclass=<main-class> runtest'" unless="test.mainclass"/>
		<condition property="native_path" value="libs/win32">
			<os family="windows" />
		</condition>
		<condition property="native_path" value="libs/linux">
			<os name="Linux" />
		</condition>
		<condition property="native_path" value="libs/macosx">
			<os name="Mac OS X" />
		</condition>
		<java classname="${test.mainclass}" classpath="${lwjgl.lib}/lwjgl.jar:${lwjgl.lib}/lwjgl_util.jar:${lwjgl.lib}/lwjgl_test.jar:${lwjgl.lib}/jinput.jar" fork="true">
			<jvmarg value="-Dorg.lwjgl.util.Debug=true"/>
			<jvmarg value="-Djava.library.path=${native_path}"/>
		</java>
	</target>
	<target name="applet" depends="jars">
		<!-- Create lwjgl_applet.jar -->
		<jar destfile="applet/lwjgl_applet.jar" taskname="lwjgl_applet.jar">
			<fileset refid="lwjgl_applet.fileset" />
		</jar>
		
		<!-- create each of the native jars -->
		<jar destfile="applet/windows_natives.jar" taskname="windows_natives.jar">
			<fileset dir="${lwjgl.lib}/win32">
				<patternset refid="lwjgl-win32.fileset"/>
				<patternset refid="lwjgl-win32_optional.fileset"/>
				<include name="fmod.dll"/>
			</fileset>
		</jar>
		<signjar jar="applet/windows_natives.jar" alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
		
		<jar destfile="applet/linux_natives.jar" taskname="linux_natives.jar">
			<fileset dir="${lwjgl.lib}/linux">
				<patternset refid="lwjgl-linux.fileset"/>
				<patternset refid="lwjgl-linux_optional.fileset"/>
				<include name="libfmod.so"/>
			</fileset>
		</jar>
		<signjar jar="applet/linux_natives.jar" alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
			
		<jar destfile="applet/macosx_natives.jar" taskname="macosx_natives.jar">
			<fileset dir="${lwjgl.lib}/macosx">
				<patternset refid="lwjgl-macosx.fileset"/>
				<patternset refid="lwjgl-macosx_optional.fileset"/>
				<include name="libfmod.dylib"/>
			</fileset>
		</jar>
		<signjar jar="applet/macosx_natives.jar" alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
		
		<!-- add it to a natives jar -->
		<jar destfile="applet/natives.jar" taskname="natives.jar">
			<fileset dir="applet">
				<include name="windows_natives.jar"/>
				<include name="linux_natives.jar"/>
				<include name="macosx_natives.jar"/>					
			</fileset>
		</jar>
		<delete file="applet/windows_natives.jar"/>
		<delete file="applet/linux_natives.jar"/>
		<delete file="applet/macosx_natives.jar"/>
		
		<copy file="${lwjgl.lib}/lwjgl.jar" todir="applet"/>
		<copy file="${lwjgl.lib}/lwjgl_util_applet.jar" todir="applet"/>
		<copy file="${lwjgl.lib}/lwjgl_util.jar" todir="applet"/>
		<copy file="${lwjgl.lib}/lwjgl_fmod3.jar" todir="applet"/>
		<copy file="${lwjgl.lib}/lwjgl_devil.jar" todir="applet"/>
		<copy file="${lwjgl.lib}/jinput.jar" todir="applet"/>
		<zip destfile="applet/res.jar">
		  <zipfileset dir="${lwjgl.res}" includes="Footsteps.wav, ILtest.tga, Missing_you.mod"/>
		</zip>
		<signjar jar="applet/lwjgl.jar" alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
		<signjar jar="applet/jinput.jar" alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
		<signjar jar="applet/lwjgl_util_applet.jar" alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
		<signjar jar="applet/lwjgl_fmod3.jar" alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
		<signjar jar="applet/lwjgl_devil.jar" alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>		
	</target>
	<!-- Distributes files  -->
	<target name="-distribute">
		<delete>
			<fileset dir="${lwjgl.temp}/native/" includes="**/*"/>
		</delete>	
    <copy file="${lwjgl.lib}/jinput.jar" todir="${lwjgl.temp}/jar"/>
		<copy todir="${lwjgl.temp}/native/win32">
			<fileset dir="${lwjgl.lib}/win32">
				<patternset refid="lwjgl-win32.fileset" />
				<patternset refid="lwjgl-win32_optional.fileset" />
			</fileset>
		</copy>
		<copy todir="${lwjgl.temp}/native/linux">
			<fileset dir="${lwjgl.lib}/linux">
				<patternset refid="lwjgl-linux.fileset" />
				<patternset refid="lwjgl-linux_optional.fileset" />
			</fileset>
		</copy>
		<copy todir="${lwjgl.temp}/native/macosx">
			<fileset dir="${lwjgl.lib}/macosx">
				<patternset refid="lwjgl-macosx.fileset" />
				<patternset refid="lwjgl-macosx_optional.fileset" />
			</fileset>
		</copy>
		
		<!-- create base package -->
		<zip destfile="${lwjgl.dist}/lwjgl-${lwjgl.version}.zip">
			<zipfileset dir="${lwjgl.temp}" prefix="lwjgl-${lwjgl.version}/">
				<patternset refid="lwjgl_base"/>
			</zipfileset>			
		</zip>
		
		<!-- create optional package -->
		<zip destfile="${lwjgl.dist}/lwjgl_optional-${lwjgl.version}.zip">
			<zipfileset dir="${lwjgl.temp}" prefix="lwjgl_optional-${lwjgl.version}/">
				<patternset refid="lwjgl_optional"/>
			</zipfileset>			
		</zip>		
	</target>
	<!-- Creates a versioned distribution of javadocs -->
	<target name="-distribution_javadoc">
		<zip destfile="${lwjgl.dist}/lwjgl-docs-${lwjgl.version}.zip" basedir="${lwjgl.docs}" includes="javadoc/**" />
	</target>
	<!-- Compiles the Java source code -->
	<target name="compile" description="Compiles the java source code" depends="-initialize">
		<javac debug="yes" destdir="${lwjgl.bin}" includes="org/lwjgl/opengl/**" source="1.4" target="1.4" classpath="${lwjgl.lib}/jinput.jar" taskname="core">
			<src path="${lwjgl.src}/java/"/>
			<src path="${lwjgl.src}/generated/"/>
			<include name="org/lwjgl/*.java"/>
			<include name="org/lwjgl/input/**"/>
			<include name="org/lwjgl/opengl/**"/>
			<include name="org/lwjgl/openal/**"/>
			<include name="org/lwjgl/util/**"/>
			<exclude name="org/lwjgl/util/generator/**"/>
		</javac>
		<javac debug="yes" srcdir="${lwjgl.src}/java/" destdir="${lwjgl.bin}" includes="org/lwjgl/test/**" source="1.4" target="1.4" taskname="test" />
		<javac debug="yes" srcdir="${lwjgl.src}/java/" destdir="${lwjgl.bin}" includes="org/lwjgl/examples/**" source="1.4" target="1.4" taskname="examples" />
		<javac debug="yes" srcdir="${lwjgl.src}/java/" destdir="${lwjgl.bin}" includes="org/lwjgl/fmod3/**" source="1.4" target="1.4" taskname="fmod" />
		<javac debug="yes" srcdir="${lwjgl.src}/java/" destdir="${lwjgl.bin}" includes="org/lwjgl/devil/**" source="1.4" target="1.4" taskname="devil"/>
	</target>
	
	<!-- Generates the native headers from source files -->
	<target name="headers" description="invokes javah on java classes" depends="compile">
		<!-- platform specific classes -->
		<javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.native}/linux" force="yes">
			<class name="org.lwjgl.opengl.LinuxMouse" />
			<class name="org.lwjgl.opengl.LinuxKeyboard" />
			<class name="org.lwjgl.opengl.LinuxDisplay" />
			<class name="org.lwjgl.opengl.LinuxPeerInfo" />
			<class name="org.lwjgl.opengl.LinuxPbufferPeerInfo" />
			<class name="org.lwjgl.opengl.LinuxDisplayPeerInfo" />
			<class name="org.lwjgl.opengl.LinuxAWTGLCanvasPeerInfo" />
			<class name="org.lwjgl.opengl.LinuxContextImplementation" />
			<class name="org.lwjgl.opengl.LinuxCanvasImplementation" />
		</javah>
		
		<javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.native}/windows" force="yes">
			<class name="org.lwjgl.opengl.WindowsKeyboard" />
			<class name="org.lwjgl.opengl.WindowsDirectInput8" />
			<class name="org.lwjgl.opengl.WindowsDirectInputDevice8" />
			<class name="org.lwjgl.opengl.WindowsDirectInput3" />
			<class name="org.lwjgl.opengl.WindowsDirectInputDevice3" />			
			<class name="org.lwjgl.opengl.WindowsPbufferPeerInfo" />
			<class name="org.lwjgl.opengl.WindowsDisplay" />
			<class name="org.lwjgl.opengl.WindowsRegistry" />
			<class name="org.lwjgl.WindowsSysImplementation" />
			<class name="org.lwjgl.opengl.WindowsAWTGLCanvasPeerInfo" />
			<class name="org.lwjgl.opengl.WindowsPeerInfo" />
			<class name="org.lwjgl.opengl.WindowsDisplayPeerInfo" />
			<class name="org.lwjgl.opengl.WindowsContextImplementation" />
		</javah>
		
		<javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.native}/macosx" force="yes">
			<class name="org.lwjgl.opengl.MacOSXCanvasPeerInfo" />
			<class name="org.lwjgl.opengl.MacOSXPeerInfo" />
			<class name="org.lwjgl.opengl.MacOSXPbufferPeerInfo" />
			<class name="org.lwjgl.opengl.MacOSXDisplay" />
			<class name="org.lwjgl.opengl.MacOSXContextImplementation" />
		</javah>
		
		<!-- lwjgl -->
		<javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.headers}" force="yes">
			<class name="org.lwjgl.opengl.AWTSurfaceLock" />
			<class name="org.lwjgl.DefaultSysImplementation" />
			<class name="org.lwjgl.input.Cursor" />
			<class name="org.lwjgl.input.Keyboard" />
			<class name="org.lwjgl.input.Mouse" />
			<class name="org.lwjgl.openal.ALC" />
			<class name="org.lwjgl.openal.AL" />
			<class name="org.lwjgl.opengl.GLContext" />
			<class name="org.lwjgl.opengl.Pbuffer" />
		</javah>
		<!-- fmod -->
		<javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.headers}/fmod3" force="yes">
			<class name="org.lwjgl.fmod3.FMOD" />
			<class name="org.lwjgl.fmod3.FMusic" />
			<class name="org.lwjgl.fmod3.FSound" />
		</javah>
		
		<!-- DevIL -->
		<javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.headers}/devil" force="yes">
			<class name="org.lwjgl.devil.ILNative" />
		</javah>		
	</target>	
	
	<!-- Creates the Javadoc -->
	<target name="javadoc" description="Creates javadoc from java source code">
		<javadoc destdir="${lwjgl.docs}/javadoc" author="true" version="true" use="true" source="1.4" windowtitle="LWJGL API">
			<fileset refid="lwjgl.javadoc.fileset" />
			<doctitle><![CDATA[<h1>Lightweight Java Game Toolkit</h1>]]></doctitle>
			<bottom><![CDATA[<i>Copyright © 2002-2006 lwjgl.org. All Rights Reserved.</i>]]></bottom>
		</javadoc>
	</target>
	<!-- Compiles the Java source code -->
	<target name="generators" description="Compiles the native method generators">
		<javac debug="yes" srcdir="${lwjgl.src}/java/" destdir="${lwjgl.bin}" includes="org/lwjgl/util/generator/**.java" source="1.5" target="1.5" taskname="generator">
			<compilerarg value="-Xlint:all"/>
		</javac>
	</target>
	<target name="generate-all" depends="generate-openal, generate-opengl, generate-opengl-capabilities, generate-opengl-references" description="Generates java and native source"/>
	<target name="generate-openal" depends="generators" description="Generates java and native source for AL">
		<!-- Generate OpenAL -->
		<apply executable="apt" parallel="true">
			<arg value="-nocompile"/>
			<arg value="-factory"/>
			<arg value="org.lwjgl.util.generator.GeneratorProcessorFactory"/>
			<arg value="-cp"/>
			<arg path="${lwjgl.src}/java:${lwjgl.src.templates}:${lwjgl.bin}:${java.class.path}"/>
			<arg value="-s"/>
			<arg path="${lwjgl.src}/generated"/>
			<arg value="-d"/>
			<arg path="${lwjgl.src.native}/generated"/>
			<arg value="-Atypemap=org.lwjgl.util.generator.ALTypeMap"/>
			<arg value="-Ageneratechecks"/>
			<fileset dir="${lwjgl.src.templates}" includes="org/lwjgl/openal/AL10.java"/>
		</apply>
	</target>
	<target name="generate-opengl" depends="generators" description="Generates java and native source for GL">
		<!-- there's no apt task in ant yet, so we'll just invoke it manually for now -->
		<apply executable="apt" parallel="true">
			<arg value="-nocompile"/>
			<arg value="-factory"/>
			<arg value="org.lwjgl.util.generator.GeneratorProcessorFactory"/>
			<arg value="-cp"/>
			<arg path="${lwjgl.src}/java:${lwjgl.src.templates}:${lwjgl.bin}:${java.class.path}"/>
			<arg value="-s"/>
			<arg path="${lwjgl.src}/generated"/>
			<arg value="-d"/>
			<arg path="${lwjgl.src.native}/generated"/>
			<!--<arg value="-Ageneratechecks"/>-->
			<arg value="-Acontextspecific"/>
			<arg value="-Atypemap=org.lwjgl.util.generator.GLTypeMap"/>
			<fileset dir="${lwjgl.src.templates}" includes="${opengl-template-pattern}"/>
		</apply>
	</target>
	<target name="generate-opengl-references" depends="generators" description="Generates java and native source for GL">
		<!-- Generate context capabilities -->
		<apply executable="apt" parallel="true">
			<arg value="-nocompile"/>
			<arg value="-factory"/>
			<arg value="org.lwjgl.util.generator.ReferencesGeneratorProcessorFactory"/>
			<arg value="-cp"/>
			<arg path="${lwjgl.src}/java:${lwjgl.src.templates}:${lwjgl.bin}:${java.class.path}"/>
			<arg value="-s"/>
			<arg path="${lwjgl.src}/generated"/>
			<fileset dir="${lwjgl.src.templates}" includes="${opengl-template-pattern}"/>
		</apply>
	</target>
	
	<target name="generate-opengl-capabilities" depends="generators" description="Generates java and native source for GL">
		<!-- Generate context capabilities -->
		<apply executable="apt" parallel="true">
			<arg value="-nocompile"/>
			<arg value="-factory"/>
			<arg value="org.lwjgl.util.generator.ContextGeneratorProcessorFactory"/>
			<arg value="-cp"/>
			<arg path="${lwjgl.src}/java:${lwjgl.src.templates}:${lwjgl.bin}:${java.class.path}"/>
			<arg value="-s"/>
			<arg path="${lwjgl.src}/generated"/>
			<arg value="-Acontextspecific"/>
			<fileset dir="${lwjgl.src.templates}" includes="${opengl-template-pattern}"/>
		</apply>
	</target>
	<target name="compile_native_all" depends="compile_native, compile_native_optional" description="Compiles the native files"/>
	<!-- Compiles the native files -->
	<target name="compile_native" depends="headers" description="Compiles the native files">
		<!-- check each platform, and run their build target -->
		<condition property="lwjgl.platform.windows">
			<os family="windows" />
		</condition>
		<antcall target="-compile_native_win32" />
		<condition property="lwjgl.platform.linux">
			<os name="Linux" />
		</condition>
		<antcall target="-compile_native_linux" />
		<condition property="lwjgl.platform.macosx">
			<os name="Mac OS X" />
		</condition>
		<antcall target="-compile_native_macosx" />
	</target>	
	<target name="compile_native_optional" depends="headers" description="Compiles the native files">
		<!-- check each platform, and run their build target -->
		<condition property="lwjgl.platform.windows">
			<os family="windows" />
		</condition>
		<antcall target="-compile_native_win32_optional" />
		<condition property="lwjgl.platform.linux">
			<os name="Linux" />
		</condition>
		<antcall target="-compile_native_linux_optional" />
		<condition property="lwjgl.platform.macosx">
			<os name="Mac OS X" />
		</condition>
		<antcall target="-compile_native_macosx_optional" />
	</target>	
	
	<!-- Compiles LWJGL on Win32 platforms  -->
	<target name="-compile_native_win32" if="lwjgl.platform.windows">
		<ant antfile="platform_build/windows_ant/build.xml" inheritAll="false"/>
		<copy file="${lwjgl.bin}/lwjgl/lwjgl.dll" todir="${lwjgl.lib}/win32"/>
	</target>
	<target name="-compile_native_win32_optional" if="lwjgl.platform.windows">
		<ant antfile="platform_build/windows_ant/build_fmod3.xml" inheritAll="false"/>
		<copy file="${lwjgl.bin}/fmod3/lwjgl-fmod3.dll" todir="${lwjgl.lib}/win32"/>
		<ant antfile="platform_build/windows_ant/build_devil.xml" inheritAll="false"/>
		<copy file="${lwjgl.bin}/devil/lwjgl-devil.dll" todir="${lwjgl.lib}/win32"/>
	</target>	
	<!-- Compiles LWJGL on Linux platforms -->
	<target name="-compile_native_linux" if="lwjgl.platform.linux">
		<ant antfile="platform_build/linux_ant/build.xml" inheritAll="false"/>
		<copy todir="${lwjgl.lib}/linux">
			<fileset dir="${lwjgl.bin}/lwjgl" includes="liblwjgl*.so"/>
		</copy>
	</target>
	<target name="-compile_native_linux_optional" if="lwjgl.platform.linux">
		<ant antfile="platform_build/linux_ant/build_fmod3.xml" inheritAll="false"/>
		<copy file="${lwjgl.bin}/fmod3/liblwjgl-fmod3.so" todir="${lwjgl.lib}/linux"/>
		<ant antfile="platform_build/linux_ant/build_devil.xml" inheritAll="false"/>
		<copy file="${lwjgl.bin}/devil/liblwjgl-devil.so" todir="${lwjgl.lib}/linux"/>
	</target>
	<target name="-compile_native_macosx" if="lwjgl.platform.macosx">
		<ant antfile="platform_build/macosx_ant/build.xml" inheritAll="false"/>
		<copy file="${lwjgl.bin}/liblwjgl.jnilib" todir="${lwjgl.lib}/macosx"/>
	</target>
	<!-- Compiles LWJGL on Mac OS X platforms  -->
	<target name="-compile_native_macosx_optional" if="lwjgl.platform.macosx">
	
		<!-- check for required properties -->
		<property environment="env"/>
		<fail message="Missing AL path environment property" unless="env.AL"/>		
		<fail message="Missing FMOD path environment property" unless="env.FMOD"/>			
	
		<exec executable="make" dir="${lwjgl.src.native}/common/devil">
                        <arg line="-f Makefile.macosx"/>
                </exec>
                <exec executable="make" dir="${lwjgl.src.native}/common/fmod3">
                        <arg line="-f Makefile.macosx"/>
                </exec>
		<move file="${lwjgl.src.native}/common/devil/liblwjgl-devil.jnilib" tofile="${lwjgl.lib}/macosx/liblwjgl-devil.jnilib" />
		<move file="${lwjgl.src.native}/common/fmod3/liblwjgl-fmod3.jnilib" tofile="${lwjgl.lib}/macosx/liblwjgl-fmod3.jnilib" />
  </target>
	
	<!-- -->
	<target name="sign" description="Using released files, creates the necessary files used for jnlp demos">
		<!-- delete existing temp -->
		<delete dir="${lwjgl.temp}"/>		
		
		<!-- unzip common files -->
		<unzip src="${lwjgl.dist}/lwjgl-${lwjgl.version}.zip" dest="${lwjgl.temp}/jnlp/temp" overwrite="true"/>
		<unzip src="${lwjgl.dist}/lwjgl_optional-${lwjgl.version}.zip" dest="${lwjgl.temp}/jnlp/temp" overwrite="true"/>
		
		<!-- move files to unified structure -->
		<move todir="${lwjgl.temp}/jnlp/temp">
			<fileset dir="${lwjgl.temp}/jnlp/temp/lwjgl-${lwjgl.version}/">
				<include name="**"/>
			</fileset>
			<fileset dir="${lwjgl.temp}/jnlp/temp/lwjgl_optional-${lwjgl.version}/">
				<include name="**"/>
			</fileset>
		</move>
		
		<!-- move relevant files to root -->
		<move todir="${lwjgl.temp}/jnlp/" flatten="true">
			<fileset dir="${lwjgl.temp}/jnlp/temp">
				<include name="**/**.jar"/>
			</fileset>
		</move>
		
		<!-- create native jars -->
		<jar destfile="${lwjgl.temp}/jnlp/native_win32.jar" basedir="${lwjgl.temp}/jnlp/temp/native/win32"/>
		<jar destfile="${lwjgl.temp}/jnlp/native_linux.jar" basedir="${lwjgl.temp}/jnlp/temp/native/linux"/>
		<jar destfile="${lwjgl.temp}/jnlp/native_macosx.jar" basedir="${lwjgl.temp}/jnlp/temp/native/macosx"/>
		
		<!-- create media jar -->
		<jar destfile="${lwjgl.temp}/jnlp/media.jar" basedir="${lwjgl.res}"/>	
	
		<!-- sign 'em -->
		<signjar jar="${lwjgl.temp}/jnlp/lwjgl.jar" 		alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
		<signjar jar="${lwjgl.temp}/jnlp/lwjgl_devil.jar" 	alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
		<signjar jar="${lwjgl.temp}/jnlp/lwjgl_fmod3.jar" 	alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
		<signjar jar="${lwjgl.temp}/jnlp/lwjgl_test.jar" 	alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
		<signjar jar="${lwjgl.temp}/jnlp/lwjgl_util.jar" 	alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
		<signjar jar="${lwjgl.temp}/jnlp/media.jar" 		alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
		<signjar jar="${lwjgl.temp}/jnlp/native_linux.jar" 	alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
		<signjar jar="${lwjgl.temp}/jnlp/native_macosx.jar" alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
		<signjar jar="${lwjgl.temp}/jnlp/native_win32.jar" 	alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
		<signjar jar="${lwjgl.temp}/jnlp/jinput.jar" 		alias="lwjgl" keystore="applet/lwjglkeystore" storepass="123456"/>
	</target>
	
	<!-- -->
	<target name="signapplet">
		<input message="Please enter store password:" addproperty="store.pwd" />
		<signjar jar="applet_loader.jar" storetype="pkcs12" keystore="matzon.p12" alias="Brian Matzon's TDC ID" storepass="${store.pwd}"/>
	</target>
	
	<target name="changelog">
		<cvschangelog destfile="changelog.xml"/>
		<style in="changelog.xml" out="changelog.html" style="${ant.home}/etc/changelog.xsl">
			<param name="title" expression="LWJGL ChangeLog"/>
			<param name="module" expression="LWJGL"/>
			<param name="cvsweb" expression="http://cvs.sourceforge.net/viewcvs.py/java-game-lib/"/>
		</style>         
	</target> 	
</project>