OSDN Git Service

Preliminary support for new Ogreloader classes
[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       srcdir="${src}" destdir="${class}" includes="com/**/*.java"
66       classpathref="classpath" listfiles="no" fork="true"
67       memoryMaximumSize="${javac.maxmem}" debug="${javac.debug}"/>
68   </target>
69
70   <target name="run-testchooser" depends="compile-test" description="Runs the TestChooser">
71     <java classname="jmetest.TestChooser" fork="true" classpathref="classpath">
72       <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"/>
73     </java>
74   </target>
75
76   <target name="-enforce.jar.deps">
77     <dependset>
78       <srcfileset dir="build" includes="com/**"/>
79       <targetfileset dir="${jars}" excludes="**/.*/**" includes="*.jar"/>
80     </dependset>
81   </target>
82
83   <!-- Jar files for different parts of the jME API -->
84
85   <target name="dist-core" depends="compile, -enforce.jar.deps"
86          description="generate jme jar file">
87     <jar destfile="${jars}/jme.jar" basedir="${class}" update="no" compress="true" includes="**/com/jme/**/*.class, **/com/jme/**/*.tga, **/com/jme/**/*.png, **/com/jme/**/*.glf, **/com/jme/**/*.vert, **/com/jme/**/*.frag" />
88   </target>
89   <target name="dist-audio" depends="compile, -enforce.jar.deps"
90           description="generate jme jar file (audio)">
91     <jar destfile="${jars}/jme-audio.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/audio/**/*.class" />
92   </target>
93   <target name="dist-awt" depends="compile, -enforce.jar.deps"
94           description="generate jme jar file (awt)">
95     <jar destfile="${jars}/jme-awt.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/awt/**/*.class" />
96   </target>
97   <target name="dist-swt" depends="compile, -enforce.jar.deps"
98           description="generate jme jar file (swt)">
99     <jar destfile="${jars}/jme-swt.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/swt/**/*.class" />
100   </target>
101   <target name="dist-editors" depends="compile, -enforce.jar.deps"
102           description="generate jme jar file (editors)">
103     <jar destfile="${jars}/jme-editors.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/editors/**/*.class" />
104   </target>
105   <target name="dist-effects" depends="compile, -enforce.jar.deps"
106           description="generate jme jar file (effects)">
107     <jar destfile="${jars}/jme-effects.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/effects/**/*.class, **/com/jmex/effects/**/data/*" />
108   </target>
109   <target name="dist-font" depends="compile, -enforce.jar.deps"
110           description="generate jme jar file (font)">
111     <jar destfile="${jars}/jme-font.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/font2d/**/*.class,**/com/jmex/font3d/**/*.class" />
112   </target>
113   <target name="dist-gamestates" depends="compile, -enforce.jar.deps"
114           description="generate jme jar file (gamestates)">
115     <jar destfile="${jars}/jme-gamestates.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/game/**/*.class" />
116   </target>
117   <target name="dist-model" depends="compile, -enforce.jar.deps"
118           description="generate jme jar file (model)">
119     <jar destfile="${jars}/jme-model.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/model/**/*.class" excludes="**/com/jmex/model/collada/**" />
120   </target>
121   <target name="dist-collada" depends="compile, -enforce.jar.deps"
122           description="generate jme jar file (collada)">
123     <jar destfile="${jars}/jme-collada.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/model/collada/**/*.class" />
124   </target>
125   <target name="dist-scene" depends="compile, -enforce.jar.deps"
126           description="generate jme jar file (scene)">
127     <jar destfile="${jars}/jme-scene.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/scene/**/*.class" />
128   </target>
129   <target name="dist-terrain" depends="compile, -enforce.jar.deps"
130           description="generate jme jar file (terrain)">
131     <jar destfile="${jars}/jme-terrain.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/terrain/**/*.class" />
132   </target>
133   <target name="dist-ogreloader" depends="compile, -enforce.jar.deps"
134           description="generate jme jar file (ogreloader)">
135     <jar destfile="${jars}/jme-ogreloader.jar" basedir="${class}" update="no" compress="true" includes="**/com/radakan/**/*.class, **/com/radakan/**/*.material, **/com/radakan/**/*.xml, **/com/radakan/**/*.png, **/com/radakan/**/*.jpg" />
136   </target>
137   <target name="dist-xml" depends="compile, -enforce.jar.deps"
138           description="generate jme jar file (xml)">
139     <jar destfile="${jars}/jme-xml.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/xml/**/*.class" />
140   </target>
141
142   <!-- Creates all the jME jars -->
143   <target name="dist-all" depends="dist-core, dist-terrain, dist-ogreloader, dist-audio, dist-awt, dist-swt, dist-effects, dist-model, dist-collada, dist-editors, dist-font, dist-gamestates, dist-scene, dist-xml" description="Generate all jar files" />
144
145   <target name="webdist-all" depends="dist-all" description="sign JARs for JNLP distribution">
146     <signjar jar="${jars}/jme.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
147     <signjar jar="${jars}/jme-awt.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
148     <signjar jar="${jars}/jme-swt.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
149     <signjar jar="${jars}/jme-audio.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
150     <signjar jar="${jars}/jme-editors.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
151     <signjar jar="${jars}/jme-effects.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
152     <signjar jar="${jars}/jme-font.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
153     <signjar jar="${jars}/jme-gamestates.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
154     <signjar jar="${jars}/jme-model.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
155     <signjar jar="${jars}/jme-collada.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
156     <signjar jar="${jars}/jme-scene.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
157     <signjar jar="${jars}/jme-terrain.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
158     <signjar jar="${jars}/jme-ogreloader.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
159     <signjar jar="${jars}/jme-xml.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
160   </target>
161
162   <target name="doc" depends="compile"
163           description="generate the javadoc documentation">
164     <dependset>
165       <srcfileset dir="${src}/com" excludes="**/.*/**"/>
166       <targetfileset dir="${doc}"/>
167     </dependset>
168     <available property="_passname" value="_docs.uptodate"
169                file="${doc}/index.html"/>
170     <property name="_passname" value="dummy"/>
171     <antcall target="-doc">
172       <param name="${_passname}" value="true"/>
173     </antcall>
174   </target>
175
176   <!-- Generates javadoc unless param is set -->
177   <target name="-doc" unless="_docs.uptodate">
178     <delete dir="${doc}"/>  <!-- The dependset leaves empty directories -->
179     <javadoc destdir="${doc}" useExternalFile="yes" author="true" version="true" use="true" package="yes" windowtitle="jME API" maxmemory="256m">
180       <fileset dir="${src}/com"
181                excludes="**/.*/**, **/jmex/model/collada/schema/**"
182                includes="**/*.java" />
183     </javadoc>
184   </target>
185
186   <!-- Removes all compiled files and documentation, but leaves any created jars -->
187   <target name="clean" description="clean up">
188     <delete dir="${class}" />
189     <delete dir="${doc}" />
190     <delete>
191       <fileset dir="${src}" includes="**/*.class" />
192       <fileset dir="${release}" includes="jme*.jar" />
193       <fileset dir="${webstart}" includes="*.jar" />
194     </delete>
195   </target>
196
197   <target name="rebuild" depends="clean, compile"
198           description="build from clean"/>
199
200   <!-- *** jmetest-related build targets -->
201
202   <target name="compile-test" depends="compile" description="generate jme test classes">
203     <javac source="${javac.source}" target="${javac.target}"
204       srcdir="${src}" destdir="${class}" includes="jmetest/**/*.java"
205       classpathref="classpath" fork="true" memoryMaximumSize="${javac.maxmem}"
206       debug="${javac.debug}"/>
207     <!-- copy the resources into the build directory -->
208     <copy todir="${class}">
209       <fileset dir="${src}" includes="jmetest/**"
210                excludes="**/.*/**, **/*.java"/>
211     </copy>
212   </target>
213
214   <target name="dist-test" depends="dist-all, compile-test"
215     description="generate jme test class and data jars + dependent distro jars">
216     <!-- Jar the demo classes -->
217
218     <pathconvert property="jarclasspathlibs" pathsep=" " dirsep="/">
219       <path>
220         <fileset dir="${libs}">
221           <include name="*.jar" />
222         </fileset>
223       </path>
224       <mapper type="regexp" from=".*(lib.*)" to="\1" />
225     </pathconvert>
226     <pathconvert property="jarclasspathrelease" pathsep=" " dirsep="/">
227       <path>
228         <fileset dir="${jars}">
229           <include name="*.jar" />
230           <exclude name="jmetest.jar" />
231         </fileset>
232       </path>
233       <mapper type="regexp" from=".*target.(.*)" to="\1" />
234     </pathconvert>
235     <echo>${jarclasspathlibs} ${jarclasspathrelease}</echo>
236
237     <dependset>
238       <srcfileset dir="build"/>
239       <targetfileset dir="${jars}" excludes="**/.*/**" includes="jmetest*.jar"/>
240     </dependset>
241
242     <jar destfile="${jars}/jmetest.jar" basedir="${class}" compress="true" excludes="**/jmetest/**/data/**,**/com/**" index="yes">
243       <manifest>
244         <attribute name="Implementation-Title" value="${name}" />
245         <attribute name="Implementation-Vendor" value="${vendor}" />
246         <attribute name="Version" value="${major}.${minor}" />
247         <attribute name="Class-Path" value="${jarclasspathlibs} ${jarclasspathrelease}" />
248         <attribute name="Main-Class" value="${mainclass}" />
249       </manifest>
250     </jar>
251
252     <!-- Jar the demo data -->
253     <jar destfile="${jars}/jmetest-data-cursor.jar" basedir="${class}" compress="true" includes="**/jmetest/data/cursor/**" />
254     <jar destfile="${jars}/jmetest-data-images.jar" basedir="${class}" compress="true" includes="**/jmetest/data/images/**" />
255     <jar destfile="${jars}/jmetest-data-model.jar" basedir="${class}" compress="true" includes="**/jmetest/data/model/**" />
256     <jar destfile="${jars}/jmetest-data-skybox1.jar" basedir="${class}" compress="true" includes="**/jmetest/data/skybox1/**" />
257     <jar destfile="${jars}/jmetest-data-sound.jar" basedir="${class}" compress="true" includes="**/jmetest/data/sound/**" />
258     <jar destfile="${jars}/jmetest-data-texture.jar" basedir="${class}" compress="true" includes="**/jmetest/data/texture/**" />
259   </target>
260
261   <target name="webdist-test" depends="dist-test" description="sign test jars for Webstart distribution">
262     <signjar jar="${jars}/jmetest.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
263     <signjar jar="${jars}/jmetest-data-cursor.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
264     <signjar jar="${jars}/jmetest-data-images.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
265     <signjar jar="${jars}/jmetest-data-model.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
266     <signjar jar="${jars}/jmetest-data-skybox1.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
267     <signjar jar="${jars}/jmetest-data-sound.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
268     <signjar jar="${jars}/jmetest-data-texture.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
269   </target>
270
271   <!-- Jar and sign all the libraries required by jME -->
272   <target name="webdist-nativelibs" description="jar and sign native libraries for Webstart distribution">
273     <dependset>
274       <srcfileset dir="lib"/>
275       <targetfileset dir="${webstart}" excludes="**/.*/**" includes="*.jar"/>
276     </dependset>
277
278     <!--  Jar and sign the Windows libraries -->
279     <jar destfile="${webstart}/lwjgl-windows.jar" basedir="lib/lwjgl/native/windows" includes="lwjgl.dll" update="yes" />
280         <jar destfile="${webstart}/lwjgl-windows.jar" basedir="lib/lwjgl/native/windows" includes="lwjgl64.dll" update="yes" />
281     <jar destfile="${webstart}/openal-windows.jar" basedir="lib/lwjgl/native/windows" includes="OpenAL32.dll" update="yes" />
282         <jar destfile="${webstart}/openal-windows.jar" basedir="lib/lwjgl/native/windows" includes="OpenAL64.dll" update="yes" />
283     <jar destfile="${webstart}/jinput-windows.jar" basedir="lib/lwjgl/native/windows" includes="jinput-dx8.dll" update="yes" />
284     <jar destfile="${webstart}/jinput-windows.jar" basedir="lib/lwjgl/native/windows" includes="jinput-raw.dll" update="yes" />
285     <signjar jar="${webstart}/lwjgl-windows.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
286     <signjar jar="${webstart}/openal-windows.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
287     <signjar jar="${webstart}/jinput-windows.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
288
289     <!-- Jar and sign Linux native libraries -->
290     <jar destfile="${webstart}/lwjgl-linux.jar" basedir="lib/lwjgl/native/linux" includes="liblwjgl.so" update="yes" />
291     <jar destfile="${webstart}/lwjgl-linux.jar" basedir="lib/lwjgl/native/linux" includes="liblwjgl64.so" update="yes" />
292     <jar destfile="${webstart}/openal-linux.jar" basedir="lib/lwjgl/native/linux" includes="libopenal.so" update="yes" />
293     <jar destfile="${webstart}/openal-linux.jar" basedir="lib/lwjgl/native/linux" includes="libopenal64.so" update="yes" />
294     <jar destfile="${webstart}/jinput-linux.jar" basedir="lib/lwjgl/native/linux" includes="libjinput-linux.so" update="yes" />
295     <jar destfile="${webstart}/jinput-linux.jar" basedir="lib/lwjgl/native/linux" includes="libjinput-linux64.so" update="yes" />
296     <signjar jar="${webstart}/lwjgl-linux.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
297     <signjar jar="${webstart}/openal-linux.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
298     <signjar jar="${webstart}/jinput-linux.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
299
300     <!-- Jar (eventually) and sign Mac native libraries -->
301     <jar destfile="${webstart}/lwjgl-mac.jar" basedir="lib/lwjgl/native/macosx" includes="liblwjgl.jnilib" update="yes" />
302     <jar destfile="${webstart}/jinput-mac.jar" basedir="lib/lwjgl/native/macosx" includes="libjinput-osx.jnilib" update="yes" />
303     <jar destfile="${webstart}/openal-mac.jar" basedir="lib/lwjgl/native/macosx" includes="openal.dylib" update="yes" />
304
305     <signjar jar="${webstart}/lwjgl-mac.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
306     <signjar jar="${webstart}/openal-mac.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
307     <signjar jar="${webstart}/jinput-mac.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
308
309     <!-- Sign the lwjgl jar -->
310     <signjar jar="${seg}/lib/lwjgl/lwjgl.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
311     <signjar jar="${seg}/lib/lwjgl/lwjgl_util.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
312     <signjar jar="${seg}/lib/jorbis/jorbis-0.0.17.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
313     <signjar jar="${seg}/lib/lwjgl/jinput.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
314   </target>
315
316   <target name="nightly" depends="webdist-all, webdist-nativelibs, webdist-test">
317     <echo>${libs}/*.jar</echo>
318     <zip zipfile="${release}/jME.zip">
319       <zipfileset dir="${libs}" prefix="lib">
320         <include name="*.jar" />
321         <include name="*.dll" />
322         <include name="*.so" />
323         <include name="*.*lib" />
324       </zipfileset>
325       <fileset dir="${release}">
326         <include name="*.jar" />
327       </fileset>
328     </zip>
329     <zip zipfile="${release}/src.zip">
330       <zipfileset dir="${src}" prefix="src" excludes="**/.*/**"/>
331     </zip>
332     <!--        <mkdir dir="ftp"/>-->
333     <!--        <copy todir="ftp">-->
334     <ftp server="${ftphost}" userid="${ftpuser}" password="${ftppassword}" remotedir="nightly">
335       <fileset dir="${webstart}">
336         <include name="*.jar" />
337         <include name="*.jnlp" />
338       </fileset>
339       <fileset dir="${libs}">
340         <include name="*.jar" />
341       </fileset>
342       <fileset dir="${release}">
343         <include name="*.jar" />
344         <include name="jME.zip" />
345         <include name="src.zip" />
346       </fileset>
347     </ftp>
348     <!--        </copy>-->
349   </target>
350
351   <target name="-gen-rtlogprops" unless="_rtlogprops.present">
352     <copy file="logging-template.properties" tofile="logging.properties"/>
353   </target>
354 </project>