OSDN Git Service

Eliminated derived Collada XML/Java binding .java source files.
[mikumikustudio/MikuMikuStudio.git] / build.xml
1 <?xml version="1.0"?>
2 <project name="jME" default="compile">
3   <description>
4     Ant Build File for the jME API.
5     $Id$
6   </description>
7   <!-- Since we have developers who use different tab-stop settings in their
8        editors and IDE's, please us spaces, not tabs, for indentation.
9        (Your editor or IDE has a setting to automatically change your tab
10        keystrokes into spaces). -->
11
12   <import file="build-import.xml" />
13
14   <property name="class" location="${build}" />
15   <property name="jars" location="${release}" />
16   <property name="webstart" location="${seg}/jnlp" />
17
18   <property file="build.properties" />
19   <!--    defaults for build.properties:-->
20   <property name="keyStore" value="jmeKeyStore" />
21   <property name="storepass" value="..." />
22   <property name="ftpuser" value="..." />
23   <property name="ftppassword" value="..." />
24   <property name="ftphost" value="ftp.jmonkeyengine.com" />
25     <!-- You may prefer to set javac.debug to false to reduce size. -->
26   <property name="javac.debug" value="true" />
27   <property name="javac.maxmem" value="256m" />
28   <property name="javac.source" value="1.5" />
29   <property name="javac.target" value="1.5" />
30     <!-- N.b. the .source and .target setting are NOT for source and target
31          directories, but for source and target JVM versions. -->
32   <property name="javac.debuglevel" value="lines,source" />
33     <!-- Having line numbers in debug output is useful for the 99.9%
34          of non-public builds, esp. for custom-builders who have
35          runtime problems.   - blaine  -->
36   <!--    end of defaults -->
37
38   <path id="classpath">
39     <fileset dir="${libs}">
40       <include name="**/*.jar" />
41     </fileset>
42     <pathelement path="${class}" />
43   </path>
44
45   <target name="init">
46     <echo message="${keyStore}" />
47     <mkdir dir="${src}" />
48     <mkdir dir="${class}" />
49     <mkdir dir="${data}" />
50     <mkdir dir="${doc}" />
51     <available property="_rtlp.param" value="_rtlogprops.present"
52                file="logging.properties"/>
53     <property name="_rtlp.param" value="_dummy"/>
54     <antcall target="-gen-rtlogprops">
55       <param name="${_trlp.param}" value="true"/>
56     </antcall>
57   </target>
58
59   <!-- Compiles all the jME classes, including com.jmex.* -->
60   <target name="compile" depends="init" description="generate jme classes">
61     <copy todir="${class}">
62       <fileset dir="${src}" includes="com/**" excludes="**/.*/**, **/*.java"/>
63     </copy>
64     <javac source="${javac.source}" target="${javac.target}"
65            debuglevel="${javac.debuglevel}"
66       srcdir="${src}" destdir="${class}" includes="com/**/*.java"
67       classpathref="classpath" listfiles="no" fork="true"
68       memoryMaximumSize="${javac.maxmem}" debug="${javac.debug}"/>
69   </target>
70
71   <target name="run-testchooser" depends="compile-test" description="Runs the TestChooser">
72     <java classname="jmetest.TestChooser" fork="true" classpathref="classpath">
73       <jvmarg value=  "-Djava.library.path=${libs}/jogl/native/windows_amd64;${libs}/jogl/native/macosx;${libs}/jogl/native/linux_i586;${libs}/jogl/native/linux_amd64;${libs}/jogl/native/windows_i586;${libs}/lwjgl/native/linux;${libs}/lwjgl/native/macosx;${libs}/lwjgl/native/windows;${libs}/swt/linux;${libs}/swt/macosx-carbon;${libs}/swt/macosx-cocoa;${libs}/swt/windows"/>
74     </java>
75   </target>
76
77   <target name="-enforce.jar.deps">
78     <dependset>
79       <srcfileset dir="build" includes="com/**"/>
80       <targetfileset dir="${jars}" excludes="**/.*/**" includes="*.jar"/>
81     </dependset>
82   </target>
83
84   <!-- Jar files for different parts of the jME API -->
85
86   <target name="dist-core" depends="compile, -enforce.jar.deps"
87          description="generate jme jar file">
88     <jar destfile="${jars}/jme.jar" basedir="${class}" update="no"
89          duplicate="fail" compress="true" includes="com/jme/**/*.class, com/jme/**/*.tga, com/jme/**/*.png, com/jme/**/*.glf, com/jme/**/*.vert, com/jme/**/*.frag" />
90   </target>
91   <target name="dist-audio" depends="compile, -enforce.jar.deps"
92           description="generate jme jar file (audio)">
93     <jar destfile="${jars}/jme-audio.jar" basedir="${class}" update="no"
94          duplicate="fail" compress="true"
95          includes="com/jmex/audio/**/*.class" />
96   </target>
97   <target name="dist-awt" depends="compile, -enforce.jar.deps"
98           description="generate jme jar file (awt)">
99     <jar destfile="${jars}/jme-awt.jar" basedir="${class}" update="no"
100          duplicate="fail" compress="true" includes="com/jmex/awt/**/*.class" />
101   </target>
102   <target name="dist-swt" depends="compile, -enforce.jar.deps"
103           description="generate jme jar file (swt)">
104     <jar destfile="${jars}/jme-swt.jar" basedir="${class}" update="no"
105          duplicate="fail" compress="true" includes="com/jmex/swt/**/*.class" />
106   </target>
107   <target name="dist-editors" depends="compile, -enforce.jar.deps"
108           description="generate jme jar file (editors)">
109     <jar destfile="${jars}/jme-editors.jar" basedir="${class}" update="no"
110          duplicate="fail" compress="true" includes="com/jmex/editors/**/*.class" />
111   </target>
112   <target name="dist-effects" depends="compile, -enforce.jar.deps"
113           description="generate jme jar file (effects)">
114     <jar destfile="${jars}/jme-effects.jar" basedir="${class}" update="no"
115          duplicate="fail" compress="true"
116          includes="com/jmex/effects/**/*.class, com/jmex/effects/**/data/*" />
117   </target>
118   <target name="dist-font" depends="compile, -enforce.jar.deps"
119           description="generate jme jar file (font)">
120     <jar destfile="${jars}/jme-font.jar" basedir="${class}" update="no"
121          duplicate="fail" compress="true" includes="com/jmex/font2d/**/*.class, com/jmex/font3d/**/*.class" />
122   </target>
123   <target name="dist-gamestates" depends="compile, -enforce.jar.deps"
124           description="generate jme jar file (gamestates)">
125     <jar destfile="${jars}/jme-gamestates.jar" basedir="${class}" update="no"
126          duplicate="fail" compress="true" includes="com/jmex/game/**/*.class" />
127   </target>
128   <target name="dist-model" depends="compile, -enforce.jar.deps"
129           description="generate jme jar file (model)">
130     <jar destfile="${jars}/jme-model.jar" basedir="${class}" update="no"
131          duplicate="fail" compress="true" includes="com/jmex/model/**/*.class"
132          excludes="com/jmex/model/collada/**, com/jmex/model/ogrexml/**" />
133   </target>
134   <target name="dist-collada" depends="compile, -enforce.jar.deps"
135           description="generate jme jar file (collada)">
136     <jar destfile="${jars}/jme-collada.jar" basedir="${class}" update="no"
137          duplicate="fail" compress="true"
138          includes="com/jmex/model/collada/*.class">
139       <zipfileset src="lib/jme-colladabinding.jar"
140                   excludes="META-INF/readme.txt"/>
141     </jar>
142   </target>
143   <target name="dist-scene" depends="compile, -enforce.jar.deps"
144           description="generate jme jar file (scene)">
145     <jar destfile="${jars}/jme-scene.jar" basedir="${class}" update="no"
146          duplicate="fail" compress="true" includes="com/jmex/scene/**/*.class" />
147   </target>
148   <target name="dist-terrain" depends="compile, -enforce.jar.deps"
149           description="generate jme jar file (terrain)">
150     <jar destfile="${jars}/jme-terrain.jar" basedir="${class}" update="no"
151          duplicate="fail" compress="true"
152          includes="com/jmex/terrain/**/*.class" />
153   </target>
154   <target name="dist-ogrexml" depends="compile, -enforce.jar.deps"
155           description="generate jme jar file (ogrexml)">
156     <jar destfile="${jars}/jme-ogrexml.jar" basedir="${class}" update="no"
157          duplicate="fail" compress="true"
158          includes="com/jmex/model/ogrexml/**/*.class" />
159   </target>
160
161   <!-- Creates all the jME jars -->
162   <target name="dist-all" depends="dist-core, dist-terrain, dist-ogrexml, dist-audio, dist-awt, dist-swt, dist-effects, dist-model, dist-collada, dist-editors, dist-font, dist-gamestates, dist-scene" description="Generate all jar files" />
163
164   <target name="webdist-all" depends="dist-all" description="sign JARs for JNLP distribution">
165     <signjar jar="${jars}/jme.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
166     <signjar jar="${jars}/jme-awt.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
167     <signjar jar="${jars}/jme-swt.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
168     <signjar jar="${jars}/jme-audio.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
169     <signjar jar="${jars}/jme-editors.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
170     <signjar jar="${jars}/jme-effects.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
171     <signjar jar="${jars}/jme-font.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
172     <signjar jar="${jars}/jme-gamestates.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
173     <signjar jar="${jars}/jme-model.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
174     <signjar jar="${jars}/jme-collada.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
175     <signjar jar="${jars}/jme-scene.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
176     <signjar jar="${jars}/jme-terrain.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
177     <signjar jar="${jars}/jme-ogrexml.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
178   </target>
179
180   <target name="doc" depends="compile"
181           description="generate the javadoc documentation">
182     <dependset>
183       <srcfileset dir="${src}/com" excludes="**/.*/**"/>
184       <targetfileset dir="${doc}"/>
185     </dependset>
186     <available property="_passname" value="_docs.uptodate"
187                file="${doc}/index.html"/>
188     <property name="_passname" value="dummy"/>
189     <antcall target="-doc">
190       <param name="${_passname}" value="true"/>
191     </antcall>
192   </target>
193
194   <!-- Generates javadoc unless param is set -->
195   <target name="-doc" unless="_docs.uptodate">
196     <delete dir="${doc}"/>  <!-- The dependset leaves empty directories -->
197     <javadoc destdir="${doc}" useExternalFile="yes" author="true" version="true" use="true" package="yes" windowtitle="jME API" maxmemory="256m">
198       <fileset dir="${src}/com" excludes="**/.*/**" includes="**/*.java" />
199     </javadoc>
200   </target>
201
202   <!-- Removes all compiled files and documentation, but leaves any created jars -->
203   <target name="clean" description="clean up">
204     <delete dir="${class}" />
205     <delete dir="${doc}" />
206     <delete>
207       <fileset dir="${src}" includes="**/*.class" />
208       <fileset dir="${release}" includes="jme*.jar" />
209       <fileset dir="${webstart}" includes="*.jar" />
210     </delete>
211   </target>
212
213   <target name="rebuild" depends="clean, compile"
214           description="build from clean"/>
215
216   <!-- *** jmetest-related build targets -->
217
218   <target name="compile-test" depends="compile" description="generate jme test classes">
219     <javac source="${javac.source}" target="${javac.target}"
220            debuglevel="${javac.debuglevel}"
221       srcdir="${src}" destdir="${class}" includes="jmetest/**/*.java"
222       classpathref="classpath" fork="true" memoryMaximumSize="${javac.maxmem}"
223       debug="${javac.debug}"/>
224     <!-- copy the resources into the build directory -->
225     <copy todir="${class}">
226       <fileset dir="${src}" includes="jmetest/**"
227                excludes="**/.*/**, **/*.java"/>
228     </copy>
229   </target>
230
231   <target name="dist-test" depends="dist-all, compile-test"
232     description="generate jme test class and data jars + dependent distro jars">
233     <!-- Jar the demo classes -->
234
235     <pathconvert property="jarclasspathlibs" pathsep=" " dirsep="/">
236       <path>
237         <fileset dir="${libs}">
238           <include name="*.jar" />
239         </fileset>
240       </path>
241       <mapper type="regexp" from=".*(lib.*)" to="\1" />
242     </pathconvert>
243     <pathconvert property="jarclasspathrelease" pathsep=" " dirsep="/">
244       <path>
245         <fileset dir="${jars}">
246           <include name="*.jar" />
247           <exclude name="jmetest.jar" />
248         </fileset>
249       </path>
250       <mapper type="regexp" from=".*target.(.*)" to="\1" />
251     </pathconvert>
252     <echo>${jarclasspathlibs} ${jarclasspathrelease}</echo>
253
254     <dependset>
255       <srcfileset dir="build"/>
256       <targetfileset dir="${jars}" excludes="**/.*/**" includes="jmetest*.jar"/>
257     </dependset>
258
259     <jar destfile="${jars}/jmetest.jar" basedir="${class}"
260          duplicate="fail" compress="true"
261          excludes="jmetest/**/data/**, com/**" index="yes">
262       <manifest>
263         <attribute name="Implementation-Title" value="${name}" />
264         <attribute name="Implementation-Vendor" value="${vendor}" />
265         <attribute name="Version" value="${major}.${minor}" />
266         <attribute name="Class-Path" value="${jarclasspathlibs} ${jarclasspathrelease}" />
267         <attribute name="Main-Class" value="${mainclass}" />
268       </manifest>
269     </jar>
270
271     <!-- Jar the demo data -->
272     <jar destfile="${jars}/jmetest-data-cursor.jar" basedir="${class}"
273          duplicate="fail" compress="true" includes="jmetest/data/cursor/**" />
274     <jar destfile="${jars}/jmetest-data-images.jar" basedir="${class}"
275          duplicate="fail" compress="true" includes="jmetest/data/images/**" />
276     <jar destfile="${jars}/jmetest-data-model.jar" basedir="${class}"
277          duplicate="fail" compress="true" includes="jmetest/data/model/**" />
278     <jar destfile="${jars}/jmetest-data-skybox1.jar" basedir="${class}"
279          duplicate="fail" compress="true" includes="jmetest/data/skybox1/**" />
280     <jar destfile="${jars}/jmetest-data-sound.jar" basedir="${class}"
281          duplicate="fail" compress="true" includes="jmetest/data/sound/**" />
282     <jar destfile="${jars}/jmetest-data-texture.jar" basedir="${class}"
283          duplicate="fail" compress="true" includes="jmetest/data/texture/**" />
284   </target>
285
286   <target name="webdist-test" depends="dist-test" description="sign test jars for Webstart distribution">
287     <signjar jar="${jars}/jmetest.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
288     <signjar jar="${jars}/jmetest-data-cursor.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
289     <signjar jar="${jars}/jmetest-data-images.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
290     <signjar jar="${jars}/jmetest-data-model.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
291     <signjar jar="${jars}/jmetest-data-skybox1.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
292     <signjar jar="${jars}/jmetest-data-sound.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
293     <signjar jar="${jars}/jmetest-data-texture.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
294   </target>
295
296   <!-- Jar and sign all the libraries required by jME -->
297   <target name="webdist-nativelibs" description="jar and sign native libraries for Webstart distribution">
298     <dependset>
299       <srcfileset dir="lib"/>
300       <targetfileset dir="${webstart}" excludes="**/.*/**" includes="*.jar"/>
301     </dependset>
302
303     <!-- WHY ARE ALL THE NATIVE FILES update="yes"?
304          We are specifying exactly what we want in them, so we should not be
305          recreating them. -->
306
307     <!--  Jar and sign the Windows libraries -->
308     <jar destfile="${webstart}/lwjgl-windows.jar" duplicate="fail" update="yes"
309          basedir="lib/lwjgl/native/windows" includes="lwjgl.dll" />
310         <jar destfile="${webstart}/lwjgl-windows.jar" duplicate="fail" update="yes"
311          basedir="lib/lwjgl/native/windows" includes="lwjgl64.dll" />
312     <jar destfile="${webstart}/openal-windows.jar" duplicate="fail" update="yes"
313          basedir="lib/lwjgl/native/windows" includes="OpenAL32.dll" />
314         <jar destfile="${webstart}/openal-windows.jar" duplicate="fail"
315          basedir="lib/lwjgl/native/windows" includes="OpenAL64.dll" update="yes" />
316     <jar destfile="${webstart}/jinput-windows.jar" duplicate="fail"
317          basedir="lib/lwjgl/native/windows" includes="jinput-dx8.dll" update="yes" />
318     <jar destfile="${webstart}/jinput-windows.jar" duplicate="fail"
319          basedir="lib/lwjgl/native/windows" includes="jinput-raw.dll" update="yes" />
320     <signjar jar="${webstart}/lwjgl-windows.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
321     <signjar jar="${webstart}/openal-windows.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
322     <signjar jar="${webstart}/jinput-windows.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
323
324     <!-- Jar and sign Linux native libraries -->
325     <jar destfile="${webstart}/lwjgl-linux.jar" duplicate="fail"
326          basedir="lib/lwjgl/native/linux" includes="liblwjgl.so" update="yes" />
327     <jar destfile="${webstart}/lwjgl-linux.jar" duplicate="fail"
328          basedir="lib/lwjgl/native/linux" includes="liblwjgl64.so" update="yes" />
329     <jar destfile="${webstart}/openal-linux.jar" duplicate="fail"
330          basedir="lib/lwjgl/native/linux" includes="libopenal.so" update="yes" />
331     <jar destfile="${webstart}/openal-linux.jar" duplicate="fail"
332          basedir="lib/lwjgl/native/linux" includes="libopenal64.so" update="yes" />
333     <jar destfile="${webstart}/jinput-linux.jar" duplicate="fail"
334          basedir="lib/lwjgl/native/linux" includes="libjinput-linux.so" update="yes" />
335     <jar destfile="${webstart}/jinput-linux.jar" duplicate="fail"
336          basedir="lib/lwjgl/native/linux" includes="libjinput-linux64.so" update="yes" />
337     <signjar jar="${webstart}/lwjgl-linux.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
338     <signjar jar="${webstart}/openal-linux.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
339     <signjar jar="${webstart}/jinput-linux.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
340
341     <!-- Jar (eventually) and sign Mac native libraries -->
342     <jar destfile="${webstart}/lwjgl-mac.jar" duplicate="fail"
343          basedir="lib/lwjgl/native/macosx" includes="liblwjgl.jnilib" update="yes" />
344     <jar destfile="${webstart}/jinput-mac.jar" duplicate="fail"
345          basedir="lib/lwjgl/native/macosx" includes="libjinput-osx.jnilib" update="yes" />
346     <jar destfile="${webstart}/openal-mac.jar" duplicate="fail"
347          basedir="lib/lwjgl/native/macosx" includes="openal.dylib" update="yes" />
348
349     <signjar jar="${webstart}/lwjgl-mac.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
350     <signjar jar="${webstart}/openal-mac.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
351     <signjar jar="${webstart}/jinput-mac.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
352
353     <!-- Sign the lwjgl jar -->
354     <signjar jar="${seg}/lib/lwjgl/lwjgl.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
355     <signjar jar="${seg}/lib/lwjgl/lwjgl_util.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
356     <signjar jar="${seg}/lib/jorbis/jorbis-0.0.17.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
357     <signjar jar="${seg}/lib/lwjgl/jinput.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
358   </target>
359
360   <target name="nightly" depends="webdist-all, webdist-nativelibs, webdist-test">
361     <echo>${libs}/*.jar</echo>
362     <zip zipfile="${release}/jME.zip">
363       <zipfileset dir="${libs}" prefix="lib">
364         <include name="*.jar" />
365         <include name="*.dll" />
366         <include name="*.so" />
367         <include name="*.*lib" />
368       </zipfileset>
369       <fileset dir="${release}">
370         <include name="*.jar" />
371       </fileset>
372     </zip>
373     <zip zipfile="${release}/src.zip">
374       <zipfileset dir="${src}" prefix="src" excludes="**/.*/**"/>
375     </zip>
376     <!--        <mkdir dir="ftp"/>-->
377     <!--        <copy todir="ftp">-->
378     <ftp server="${ftphost}" userid="${ftpuser}" password="${ftppassword}" remotedir="nightly">
379       <fileset dir="${webstart}">
380         <include name="*.jar" />
381         <include name="*.jnlp" />
382       </fileset>
383       <fileset dir="${libs}">
384         <include name="*.jar" />
385       </fileset>
386       <fileset dir="${release}">
387         <include name="*.jar" />
388         <include name="jME.zip" />
389         <include name="src.zip" />
390       </fileset>
391     </ftp>
392     <!--        </copy>-->
393   </target>
394
395   <target name="-gen-rtlogprops" unless="_rtlogprops.present">
396     <copy file="logging-template.properties" tofile="logging.properties"/>
397   </target>
398 </project>