1 <project name="jME" default="compile" basedir=".">
3 Ant Build File for the jME API.
6 <import file="build-import.xml"/>
8 <property name="class" location="${build}" />
9 <property name="jars" location="${release}" />
10 <property name="webstart" location="${seg}/jnlp" />
12 <property file="build.properties"/>
13 <!-- defaults for build.properties:-->
14 <property name="keyStore" value="jmeKeyStore"/>
15 <property name="storepass" value="..."/>
16 <property name="ftpuser" value="..."/>
17 <property name="ftppassword" value="..."/>
18 <!-- end of defaults -->
21 <echo message="${keyStore}"/>
22 <mkdir dir="${src}" />
23 <mkdir dir="${class}" />
24 <mkdir dir="${data}" />
25 <mkdir dir="${doc}" />
28 <!-- Compiles all the jME classes, including com.jmex.* -->
29 <target name="compile" depends="init" description="generate jme classes">
30 <mkdir dir="${class}" />
31 <mkdir dir="${class}/com" />
32 <copy todir="${class}/com">
33 <fileset dir="${src}/com">
34 <exclude name="**/*.java" />
37 <javac source="1.4" target="1.4"
40 classpath="${seg}/lib/lwjgl.jar:${seg}/lib/lwjgl_fmod3.jar:${seg}/lib/jogg-0.0.5.jar:${seg}/lib/jorbis-0.0.12.jar"
45 <!-- Jar files for different parts of the jME API -->
47 <target name="dist-core" depends="compile" description="generate jme jar file">
48 <jar jarfile="${jars}/jme.jar" basedir="${class}" update="no" compress="false" includes="**/com/jme/**/*.class, **/com/jme/**/*.tga, **/com/jme/**/*.png, **/com/jme/**/*.glf" />
50 <target name="dist-effects" depends="compile" description="generate jme jar file (effects)">
51 <jar jarfile="${jars}/jme-effects.jar" basedir="${class}" update="no" compress="false" includes="**/com/jmex/effects/**/*.class" />
53 <target name="dist-terrain" depends="compile" description="generate jme jar file (terrain)">
54 <jar jarfile="${jars}/jme-terrain.jar" basedir="${class}" update="no" compress="false" includes="**/com/jmex/terrain/**/*.class" />
56 <target name="dist-model" depends="compile" description="generate jme jar file (model)">
57 <jar jarfile="${jars}/jme-model.jar" basedir="${class}" update="no" compress="false" includes="**/com/jmex/model/**/*.class" />
59 <target name="dist-sound" depends="compile" description="generate jme jar file (sound)">
60 <jar jarfile="${jars}/jme-sound.jar" basedir="${class}" update="no" compress="false" includes="**/com/jmex/sound/**/*.class" />
62 <target name="dist-ui" depends="compile" description="generate jme jar file (ui)">
63 <jar jarfile="${jars}/jme-ui.jar" basedir="${class}" update="no" compress="false" includes="**/com/jmex/ui/**/*.class" />
66 <!-- Creates all the jME jars -->
67 <target name="dist-all" depends="dist-core, dist-terrain, dist-effects, dist-model, dist-sound, dist-ui" description="Generate all jar files" />
69 <target name="webdist-all" depends="dist-all" description="sign JARs for JNLP distribution">
70 <signjar jar="${jars}/jme.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
71 <signjar jar="${jars}/jme-effects.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
72 <signjar jar="${jars}/jme-terrain.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
73 <signjar jar="${jars}/jme-model.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
74 <signjar jar="${jars}/jme-sound.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
75 <signjar jar="${jars}/jme-ui.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
78 <!-- Generats javadoc -->
79 <target name="doc" depends="compile" description="generate the javadoc documentation">
80 <javadoc destdir="${doc}" useExternalFile="yes" author="true" version="true" use="true" package="yes" windowtitle="jME API">
81 <fileset dir="${src}/com">
82 <include name="**/*.java" />
87 <!-- Removes all compiled files and documentation, but leaves any created jars -->
88 <target name="clean" description="clean up">
89 <delete dir="${class}" />
90 <delete dir="${doc}" />
92 <fileset dir="${src}" includes="**/*.class" />
93 <fileset dir="${release}" includes="jme*.jar"/>
94 <fileset dir="${webstart}" includes="*.jar"/>
98 <target name="rebuild" depends="clean" description="build from clean">
102 <!-- *** jmetest-related build targets -->
104 <target name="compile-test" depends="init" description="generate jme test classes">
105 <javac source="1.4" target="1.4"
106 srcdir="${src}/jmetest"
108 classpath="${jars}/jme.jar:${jars}/jme-effects.jar:${jars}/jme-model.jar:${jars}/jme-terrain.jar:${jars}/jme-ui.jar:${jars}/jme-sound.jar:${seg}/lib/lwjgl.jar:${seg}/lib/lwjgl_fmod3.jar:${seg}/lib/jogg-0.0.5.jar:${seg}/lib/jorbis-0.0.12.jar"
110 <!-- copy the resources into the build directory -->
111 <copy todir="${class}/jmetest/data">
112 <fileset dir="${src}/jmetest/data"/>
116 <target name="dist-test" depends="compile-test" description="generate jme test class and data jars" >
117 <!-- Jar the demo classes -->
119 <pathconvert property="jarclasspathlibs" pathsep=" " dirsep="/">
121 <fileset dir="${libs}">
122 <include name="*.jar"/>
125 <mapper type="regexp" from=".*(lib.*)" to="\1"/>
127 <pathconvert property="jarclasspathrelease" pathsep=" " dirsep="/">
129 <fileset dir="${jars}">
130 <include name="*.jar"/>
131 <exclude name="jmetest.jar"/>
134 <mapper type="regexp" from=".*target.(.*)" to="\1"/>
136 <echo>${jarclasspathlibs} ${jarclasspathrelease}</echo>
138 <jar jarfile="${jars}/jmetest.jar"
140 excludes="**/jmetest/data/**,**/com/**"
143 <attribute name="Implementation-Title" value="${name}"/>
144 <attribute name="Implementation-Vendor" value="${vendor}"/>
145 <attribute name="Version" value="${major}.${minor}"/>
146 <attribute name="Class-Path" value="${jarclasspathlibs} ${jarclasspathrelease}"/>
147 <attribute name="Main-Class" value="${mainclass}"/>
151 <!-- Jar the demo data -->
152 <jar jarfile="${jars}/jmetest-data.jar"
154 includes="**/jmetest/data/**"
158 <target name="webdist-test" depends="dist-test" description="sign test jars for Webstart distribution" >
159 <signjar jar="${jars}/jmetest.jar"
161 keystore="${webstart}/${keyStore}"
162 storepass="${storepass}"
164 <signjar jar="${jars}/jmetest-data.jar"
166 keystore="${webstart}/${keyStore}"
167 storepass="${storepass}"
171 <!-- Jar and sign all the libraries required by jME -->
172 <target name="webdist-nativelibs" description="jar and sign native libraries for Webstart distribution" >
173 <!-- Jar and sign the Windows libraries -->
174 <jar jarfile="${webstart}/lwjgl-windows.jar"
179 <jar jarfile="${webstart}/openal-windows.jar"
181 includes="lwjglaudio.dll"
184 <signjar jar="${webstart}/lwjgl-windows.jar"
186 keystore="${webstart}/${keyStore}"
187 storepass="${storepass}"
189 <signjar jar="${webstart}/openal-windows.jar"
191 keystore="${webstart}/${keyStore}"
192 storepass="${storepass}"
195 <!-- Jar and sign Linux native libraries -->
196 <jar jarfile="${webstart}/lwjgl-linux.jar"
198 includes="liblwjgl.so"
201 <jar jarfile="${webstart}/openal-linux.jar"
203 includes="libopenal.so"
206 <signjar jar="${webstart}/lwjgl-linux.jar"
208 keystore="${webstart}/${keyStore}"
209 storepass="${storepass}"
211 <signjar jar="${webstart}/openal-linux.jar"
213 keystore="${webstart}/${keyStore}"
214 storepass="${storepass}"
217 <!-- Jar (eventually) and sign Mac native libraries -->
218 <jar jarfile="${webstart}/lwjgl-mac.jar"
220 includes="liblwjgl.jnilib"
223 <jar jarfile="${webstart}/openal-mac.jar"
225 includes="openal.dylib"
227 /><!--fix me: shouldn't it be a jnilib?-->
229 <signjar jar="${webstart}/lwjgl-mac.jar"
231 keystore="${webstart}/${keyStore}"
232 storepass="${storepass}"
234 <signjar jar="${webstart}/openal-mac.jar"
236 keystore="${webstart}/${keyStore}"
237 storepass="${storepass}"
240 <!-- Sign the lwjgl jar -->
241 <signjar jar="${seg}/lib/lwjgl.jar"
243 keystore="${webstart}/${keyStore}"
244 storepass="${storepass}"
247 <!-- Sign the lwjgl fmod3 jar -->
248 <signjar jar="${seg}/lib/lwjgl_fmod3.jar"
250 keystore="${webstart}/${keyStore}"
251 storepass="${storepass}"
255 <target name="nightly" depends="webdist-all, webdist-nativelibs, webdist-test">
256 <!-- <target name="nightly">-->
257 <echo>${libs}/*.jar</echo>
258 <zip zipfile="${release}/jME.zip">
259 <zipfileset dir="${libs}" prefix="lib">
260 <include name="*.jar"/>
261 <include name="*.dll"/>
262 <include name="*.so"/>
263 <include name="*.*lib"/>
265 <fileset dir="${release}" >
266 <include name="*.jar"/>
269 <!-- <mkdir dir="ftp"/>-->
270 <!-- <copy todir="ftp">-->
271 <ftp server="ftp.jmonkeyengine.com" userid="${ftpuser}" password="${ftppassword}" remotedir="nightly" >
272 <fileset dir="${webstart}" >
273 <include name="*.jar"/>
274 <include name="*.jnlp"/>
276 <fileset dir="${libs}" >
277 <include name="*.jar"/>
279 <fileset dir="${release}" >
280 <include name="*.jar"/>
281 <include name="jME.zip"/>