405 lines
16 KiB
XML
405 lines
16 KiB
XML
<project name="LWJGL" default="all" basedir=".">
|
|
|
|
<import file="platform_build/build-definitions.xml"/>
|
|
<import file="platform_build/build-generator.xml"/>
|
|
<import file="platform_build/build-applet.xml"/>
|
|
<import file="platform_build/build-webstart.xml"/>
|
|
|
|
<!-- ================================================================== -->
|
|
<!-- 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.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/windows" taskname="initialiazing temp/windows folder" />
|
|
<mkdir dir="${lwjgl.temp}/native/linux" taskname="initialiazing temp/linux folder" />
|
|
<mkdir dir="${lwjgl.temp}/native/macosx" taskname="initialiazing temp/macosx folder" />
|
|
<mkdir dir="${lwjgl.temp}/native/solaris" taskname="initialiazing temp/solaris folder" />
|
|
</target>
|
|
|
|
<!-- Cleans up any files created during the execution of this script -->
|
|
<target name="clean" description="Cleans the diectories controlled by this ant script" depends="clean-generated">
|
|
<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}/windows, ${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="generate-all"/>
|
|
<antcall target="compile" />
|
|
<antcall target="-createjars" />
|
|
<antcall target="generate-debug"/>
|
|
<antcall target="compile" />
|
|
<antcall target="-createdebugjars" />
|
|
<antcall target="jars" />
|
|
<antcall target="javadoc" />
|
|
<antcall target="applet-release" />
|
|
|
|
<!-- 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="-distribution_source" />
|
|
<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, generate-all, compile, -createjars">
|
|
<!-- <target name="jars" description="Creates the Java archives ONLY and places them in libs/" depends="-initialize, compile, -createjars">-->
|
|
<!--<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="-createdebugjars">
|
|
<!-- Create lwjgl.jar -->
|
|
<jar destfile="${lwjgl.temp}/jar/lwjgl-debug.jar" taskname="lwjgl-debug.jar">
|
|
<fileset refid="lwjgl.fileset" />
|
|
<manifest>
|
|
<attribute name="Sealed" value="true"/>
|
|
</manifest>
|
|
</jar>
|
|
</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>
|
|
</target>
|
|
|
|
<!-- Distributes files -->
|
|
<target name="-distribute">
|
|
<delete>
|
|
<fileset dir="${lwjgl.temp}/native/" includes="**/*"/>
|
|
</delete>
|
|
|
|
<copy todir="${lwjgl.temp}/jar">
|
|
<fileset dir="${lwjgl.lib}/" includes="*.jar"/>
|
|
</copy>
|
|
<copy todir="${lwjgl.temp}/native/windows">
|
|
<fileset dir="${lwjgl.lib}/windows">
|
|
<patternset refid="lwjgl-windows.fileset" />
|
|
</fileset>
|
|
</copy>
|
|
<copy todir="${lwjgl.temp}/native/linux">
|
|
<fileset dir="${lwjgl.lib}/linux">
|
|
<patternset refid="lwjgl-linux.fileset" />
|
|
</fileset>
|
|
</copy>
|
|
<copy todir="${lwjgl.temp}/native/macosx">
|
|
<fileset dir="${lwjgl.lib}/macosx">
|
|
<patternset refid="lwjgl-macosx.fileset" />
|
|
</fileset>
|
|
</copy>
|
|
<copy todir="${lwjgl.temp}/native/solaris">
|
|
<fileset dir="${lwjgl.lib}/solaris">
|
|
<patternset refid="lwjgl-solaris.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 applet package -->
|
|
<zip destfile="${lwjgl.dist}/lwjgl_applet-${lwjgl.version}.zip">
|
|
<zipfileset dir="." prefix="lwjgl_applet-${lwjgl.version}/">
|
|
<patternset refid="lwjgl_applet"/>
|
|
</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>
|
|
|
|
<!-- Creates a versioned distribution of the source code -->
|
|
<target name="-distribution_source">
|
|
<zip destfile="${lwjgl.dist}/lwjgl-source-${lwjgl.version}.zip">
|
|
<fileset refid="lwjgl.source.fileset" />
|
|
</zip>
|
|
</target>
|
|
|
|
<!-- Generates the native headers from source files -->
|
|
<target name="headers" description="invokes javah on java classes" depends="compile">
|
|
<javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.native}/linux" force="yes">
|
|
<class name="org.lwjgl.LinuxSysImplementation" />
|
|
<class name="org.lwjgl.opengl.LinuxEvent" />
|
|
<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.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.MacOSXSysImplementation" />
|
|
<class name="org.lwjgl.opengl.MacOSXMouseEventQueue" />
|
|
<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>
|
|
|
|
<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.AL" />
|
|
<class name="org.lwjgl.opengl.GLContext" />
|
|
<class name="org.lwjgl.opengl.Pbuffer" />
|
|
</javah>
|
|
</target>
|
|
|
|
<!-- Compiles the Java source code -->
|
|
<target name="compile" description="Compiles the java source code" depends="-initialize">
|
|
<javac debug="yes" destdir="${lwjgl.bin}" source="1.4" target="1.4" classpath="${lwjgl.lib}/jinput.jar:${lwjgl.lib}/AppleJavaExtensions.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" />
|
|
</target>
|
|
|
|
<target name="compile_native" depends="headers" description="Compiles the native files">
|
|
<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.solaris">
|
|
<os name="SunOS" />
|
|
</condition>
|
|
<antcall target="-compile_native_solaris" />
|
|
|
|
<condition property="lwjgl.platform.macosx">
|
|
<os name="Mac OS X" />
|
|
</condition>
|
|
<antcall target="-compile_native_macosx" />
|
|
</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 todir="${lwjgl.lib}/windows">
|
|
<fileset dir="${lwjgl.bin}/lwjgl" includes="lwjgl*.dll"/>
|
|
</copy>
|
|
</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>
|
|
|
|
<!-- Compiles LWJGL on solaris platforms -->
|
|
<target name="-compile_native_solaris" if="lwjgl.platform.solaris">
|
|
<!-- Reusing the linux ant task, but copy the output to solaris -->
|
|
<ant antfile="platform_build/linux_ant/build.xml" inheritAll="false"/>
|
|
<copy todir="${lwjgl.lib}/solaris">
|
|
<fileset dir="${lwjgl.bin}/lwjgl" includes="liblwjgl*.so"/>
|
|
</copy>
|
|
</target>
|
|
|
|
<!-- Compiles LWJGL on Mac platforms -->
|
|
<target name="-compile_native_macosx" if="lwjgl.platform.macosx">
|
|
<ant antfile="platform_build/macosx_ant/build.xml" inheritAll="false"/>
|
|
<copy file="${lwjgl.bin}/lwjgl/liblwjgl.jnilib" todir="${lwjgl.lib}/macosx"/>
|
|
</target>
|
|
|
|
<target name="repack200" description="Pack200-repack a jar file">
|
|
<pack200 src="${input}" destfile="${output}" repack="true"/>
|
|
</target>
|
|
|
|
<target name="pack200" description="Pack200 a jar file">
|
|
<pack200 src="${input}" destfile="${output}"/>
|
|
</target>
|
|
|
|
<target name="lzma" description="LZMA compress a file">
|
|
<java fork="true" classname="SevenZip.LzmaAlone">
|
|
<classpath>
|
|
<pathelement location="platform_build/JLzma.jar"/>
|
|
</classpath>
|
|
<jvmarg value="-Xmx512m"/>
|
|
<arg value="e"/>
|
|
<arg value="${input}"/>
|
|
<arg value="${output}"/>
|
|
</java>
|
|
</target>
|
|
|
|
<target name="compress-sign-class">
|
|
<antcall target="repack200">
|
|
<param name="input" value="${dir}${jarfile}.jar"/>
|
|
<param name="output" value="${dir}${jarfile}-repack.jar"/>
|
|
</antcall>
|
|
<signjar jar="${dir}${jarfile}-repack.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/>
|
|
<antcall target="pack200">
|
|
<param name="input" value="${dir}${jarfile}-repack.jar"/>
|
|
<param name="output" value="${dir}${jarfile}.jar.pack"/>
|
|
</antcall>
|
|
<antcall target="lzma">
|
|
<param name="input" value="${dir}${jarfile}.jar.pack"/>
|
|
<param name="output" value="${dir}${jarfile}.jar.pack.lzma"/>
|
|
</antcall>
|
|
<delete file="${dir}${jarfile}-repack.jar"/>
|
|
<delete file="${dir}${jarfile}.jar.pack"/>
|
|
<delete file="${dir}${jarfile}.jar"/>
|
|
</target>
|
|
|
|
<target name="compress-resource">
|
|
<antcall target="lzma">
|
|
<param name="input" value="${input}"/>
|
|
<param name="output" value="${output}"/>
|
|
</antcall>
|
|
</target>
|
|
|
|
<target name="applettest" depends="applet">
|
|
<exec executable="appletviewer">
|
|
<arg value="-J-Djava.security.policy=applet/appletviewer.policy"/>
|
|
<arg path="applet/applet.html"/>
|
|
</exec>
|
|
</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/windows">
|
|
<os family="windows" />
|
|
</condition>
|
|
|
|
<condition property="native_path" value="libs/linux">
|
|
<or>
|
|
<os name="Linux" />
|
|
<os name="SunOS" />
|
|
</or>
|
|
</condition>
|
|
|
|
<condition property="native_path" value="libs/macosx">
|
|
<os name="Mac OS X" />
|
|
</condition>
|
|
<property name="native_path_expanded" location="${native_path}"/>
|
|
<java classname="${test.mainclass}" classpath="res:${lwjgl.lib}/lwjgl.jar:${lwjgl.lib}/lwjgl_util.jar:${lwjgl.lib}/lwjgl_test.jar:${lwjgl.lib}/jinput.jar" fork="true">
|
|
<sysproperty key="org.lwjgl.util.Debug" value="true"/>
|
|
<sysproperty key="java.library.path" value="${native_path_expanded}"/>
|
|
<arg line="${args}"/>
|
|
</java>
|
|
</target>
|
|
|
|
<!-- Creates the Javadoc -->
|
|
<target name="javadoc" description="Creates javadoc from java source code">
|
|
<javadoc destdir="${lwjgl.docs}/javadoc" classpath="${lwjgl.lib}/jinput.jar" 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-2009 lwjgl.org. All Rights Reserved.</i>]]></bottom>
|
|
</javadoc>
|
|
</target>
|
|
</project>
|