source: trunk/j/build.xml @ 8579

Last change on this file since 8579 was 8579, checked in by piso, 16 years ago

0.21.0.2

File size: 11.5 KB
Line 
1<project name="j" default="compile" basedir="./src">
2
3  <!-- Set global properties for this build -->
4  <property name="version" value="0.21.0.2"/>
5  <property name="topdir" value="${basedir}/.."/>
6  <property name="distdir" value="/tmp/j-${version}"/>
7  <property file="${topdir}/build.properties"/>
8  <property name="java" value="${jdk}/jre/bin/java"/>
9  <property name="java_options" value=""/>
10  <property name="extensions" value=""/>
11  <property name="junit" value=""/>
12  <property name="datadir" value="/usr/local/share"/>
13  <property name="bindir" value="/usr/local/bin"/>
14
15  <property name="build.compiler.emacs" value="yes"/>
16
17  <property name="JAVA" value="${java}"/>
18  <property name="JAVA_OPTIONS" value="${java_options}"/>
19
20  <property name="debug" value="no"/>
21
22  <path id="classpath">
23    <pathelement location="${basedir}"/>
24    <pathelement location="${datadir}/j/j.jar"/>
25    <pathelement path="${extensions}"/>
26    <pathelement path="${jdk}/lib/tools.jar"/>
27  </path>
28
29  <property name="CLASSPATH" refid="classpath"/>
30
31  <path id="abcl_classpath">
32    <pathelement location="${basedir}"/>
33  </path>
34
35  <property name="ABCL_CLASSPATH" refid="abcl_classpath"/>
36
37  <target name="prepare">
38    <!-- Create the time stamp -->
39    <tstamp>
40      <format property="build" pattern="EEE MMM dd yyyy HH:mm:ss zzz"/>
41    </tstamp>
42    <condition property="unix">
43      <os family="unix"/>
44    </condition>
45    <condition property="windows">
46      <os family="windows"/>
47    </condition>
48    <available
49      classname="com.sun.jdi.Bootstrap"
50      classpath="${jdk}/jre/lib/rt.jar:${extensions}:${jdk}/lib/tools.jar"
51      property="jpda.present"
52    />
53    <available file="org/armedbear/lisp/Interpreter.java" property="lisp.present"/>
54  </target>
55
56  <target
57    name="compile"
58    depends="classes, jdbclasses, lispclasses, stamp, stamp.hostname"
59  />
60
61  <target name="lisp" depends="lispclasses"/>
62
63  <target name="classes" depends="prepare">
64    <echo message="debug=${debug}" />
65    <javac
66      srcdir="."
67      destdir="${basedir}"
68      classpath="${basedir}:${jdk}/jre/lib/rt.jar:${extensions}"
69      includeAntRuntime="no"
70      excludes="org/armedbear/lisp/**/*, org/armedbear/j/jdb/**/*"
71      debug="${debug}"
72    />
73  </target>
74
75  <target name="jdbclasses" depends="prepare" if="jpda.present">
76    <echo message="debug=${debug}" />
77    <javac
78      srcdir="."
79      destdir="${basedir}"
80      classpath="${basedir}:${jdk}/jre/lib/rt.jar:${extensions}:${jdk}/lib/tools.jar"
81      includeAntRuntime="no"
82      includes="org/armedbear/j/jdb/*"
83      debug="${debug}"
84    />
85  </target>
86
87  <target name="lispclasses" depends="prepare" if="lisp.present">
88    <echo message="debug=${debug}" />
89    <javac
90      srcdir="."
91      destdir="${basedir}"
92      classpath="${basedir}:${jdk}/jre/lib/rt.jar:${junit}"
93      includeAntRuntime="no"
94      includes="org/armedbear/lisp/**/*"
95      excludes="org/armedbear/lisp/Test*"
96      debug="${debug}"
97    />
98    <echo message="${build}&#10;" file="${basedir}/org/armedbear/lisp/build"/>
99  </target>
100
101  <target name="stamp">
102    <echo message="${version}&#10;" file="${basedir}/org/armedbear/j/version"/>
103    <echo message="${build}&#10;" file="${basedir}/org/armedbear/j/build"/>
104    <exec executable="hostname" os="Linux" outputproperty="hostname"/>
105  </target>
106
107  <target name="stamp.hostname" if="unix">
108    <exec executable="hostname" outputproperty="hostname"/>
109    <echo message="${hostname}&#10;" file="${basedir}/org/armedbear/j/build" append="yes"/>
110  </target>
111
112  <!-- FIXME If snapshots have version numbers, we don't need this any more. -->
113  <target name="stamp.snapshot">
114    <echo message="${build}&#10;" file="${basedir}/org/armedbear/j/snapshot"/>
115  </target>
116
117  <target name="all" depends="all.unix, all.windows"/>
118
119  <target name="all.unix" depends="j.jar, jpty" if="unix">
120    <filter token="JAVA" value="${JAVA}"/>
121    <filter token="JAVA_OPTIONS" value="${JAVA_OPTIONS}"/>
122    <filter token="CLASSPATH" value="${CLASSPATH}"/>
123    <copy file="${topdir}/j.in" tofile="${topdir}/j" filtering="yes" overwrite="yes"/>
124    <chmod file="${topdir}/j" perm="ugo+rx"/>
125  </target>
126
127  <target name="all.windows" depends="j.jar, jpty" if="windows">
128    <filter token="JAVA" value="${JAVA}"/>
129    <filter token="JAVA_OPTIONS" value="${JAVA_OPTIONS}"/>
130    <filter token="CLASSPATH" value="${CLASSPATH}"/>
131    <filter token="ABCL_CLASSPATH" value="${ABCL_CLASSPATH}"/>
132    <copy file="${topdir}/j.bat.in" tofile="${topdir}/j.bat" filtering="yes" overwrite="yes"/>
133    <copy file="${topdir}/abcl.bat.in" tofile="${topdir}/abcl.bat" filtering="yes" overwrite="yes"/>
134  </target>
135
136  <target name="j.jar" depends="compile, fasls">
137    <jar jarfile="../j.jar" manifest="manifest" basedir="${basedir}">
138      <exclude name="pg.class"/>
139      <exclude name="SampleExtension.class"/>
140      <exclude name="org/armedbear/lisp/Tests.class"/>
141      <include name="**/*.class"/>
142      <include name="**/*.keywords"/>
143      <include name="org/armedbear/j/version"/>
144      <include name="org/armedbear/j/build"/>
145      <include name="org/armedbear/j/snapshot"/>
146      <include name="org/armedbear/j/images/*.png"/>
147      <include name="gnu/regexp/MessagesBundle.properties"/>
148      <include name="org/armedbear/lisp/build"/>
149      <include name="org/armedbear/lisp/*.lisp"/>
150      <include name="org/armedbear/lisp/*.abcl"/>
151      <include name="org/armedbear/lisp/*.cls"/>
152    </jar>
153  </target>
154
155  <target name="jpty" if="jpty">
156    <ant antfile="jpty/build.xml"/>
157  </target>
158
159  <target name="fasls">
160    <exec executable="${java}" dir="${basedir}">
161      <!-- Use the server VM to avoid stack overflow (Java 1.5, Windows).-->
162      <arg line="-server -cp . org.armedbear.lisp.Main --eval '(progn (compile-system) (quit))'"/>
163    </exec>
164  </target>
165
166  <!-- Install -->
167  <target name="install" depends="install.unix, install.windows"/>
168
169  <target name="install.unix" depends="all" if="unix">
170    <mkdir dir="${datadir}/j"/>
171    <mkdir dir="${datadir}/j/themes"/>
172    <mkdir dir="${datadir}/doc/j" />
173    <copy file="${topdir}/j.jar" todir="${datadir}/j"/>
174    <copy file="${topdir}/j" todir="${bindir}"/>
175    <chmod file="${bindir}/j" perm="ugo+rx"/>
176    <copy file="${basedir}/jpty/jpty" todir="${bindir}"/>
177    <chmod file="${bindir}/jpty" perm="ugo+rx"/>
178    <copy todir="${datadir}/j/themes">
179      <fileset dir="${topdir}/themes"/>
180    </copy>
181    <copy todir="${datadir}/doc/j">
182      <fileset dir="${topdir}/doc"/>
183    </copy>
184  </target>
185
186  <target name="install.windows" depends="all" if="windows">
187    <mkdir dir="${datadir}/j"/>
188    <mkdir dir="${datadir}/j/themes"/>
189    <mkdir dir="${datadir}/doc/j" />
190    <copy file="${topdir}/j.jar" todir="${datadir}/j"/>
191    <copy file="${topdir}/j.bat" todir="${bindir}"/>
192    <copy file="${basedir}/jpty/jpty.exe" todir="${bindir}"/>
193    <copy todir="${datadir}/j/themes">
194      <fileset dir="${topdir}/themes"/>
195    </copy>
196    <copy todir="${datadir}/doc/j">
197      <fileset dir="${topdir}/doc"/>
198    </copy>
199  </target>
200
201  <!-- Uninstall -->
202  <target name="uninstall">
203    <delete file="${datadir}/j/j.jar" verbose="true"/>
204    <delete file="${bindir}/j" verbose="true"/>
205    <delete file="${bindir}/jpty" verbose="true"/>
206    <delete file="${bindir}/jpty.exe" verbose="true"/>
207    <delete verbose="true">
208      <fileset dir="${datadir}/j/themes"/>
209    </delete>
210    <delete verbose="true">
211      <fileset dir="${datadir}/doc/j"/>
212    </delete>
213  </target>
214
215  <target name="clean">
216    <delete>
217      <fileset dir="${topdir}" includes="**/*.zip"/>
218      <fileset dir="${topdir}" includes="**/*.tar.gz"/>
219      <fileset dir="${topdir}" includes="**/*.jar"/>
220      <fileset dir="${topdir}" includes="**/*.class"/>
221      <fileset dir="${topdir}" includes="**/*.abcl"/>
222      <fileset dir="${topdir}" includes="**/*.cls"/>
223      <fileset dir="${topdir}" includes="**/*~"/>
224      <fileset dir="${topdir}" includes="**/.#*"/>
225      <fileset dir="${topdir}" includes="**/TEST-*.txt"/>
226    </delete>
227    <delete dir="${topdir}/autom4te.cache"/>
228    <delete file="${topdir}/j"/>
229    <delete file="${topdir}/j.bat"/>
230    <delete file="${basedir}/jpty/jpty"/>
231    <delete file="${basedir}/jpty/jpty.exe"/>
232    <delete file="${basedir}/org/armedbear/j/version"/>
233    <delete file="${basedir}/org/armedbear/j/build"/>
234  </target>
235
236  <!-- Distribution -->
237  <target name="dist" depends="prepare, distdir" if="unix">
238    <tar tarfile="${topdir}/j-${version}.tar" basedir="/tmp">
239      <include name="j-${version}/**"/>
240    </tar>
241    <gzip zipfile="${topdir}/j-${version}.tar.gz" src="${topdir}/j-${version}.tar"/>
242    <delete file="${topdir}/j-${version}.tar"/>
243    <zip zipfile="${topdir}/j-${version}.zip" basedir="/tmp">
244      <include name="j-${version}/**"/>
245    </zip>
246  </target>
247
248  <target name="distdir" depends="prepare" if="unix">
249    <delete dir="${distdir}"/>
250    <mkdir dir="${distdir}"/>
251    <copy todir="${distdir}">
252      <fileset dir="${topdir}">
253        <exclude name="**/*.orig"/>
254        <exclude name="**/*.class"/>
255        <exclude name="**/*.jar"/>
256        <exclude name="**/*.zip"/>
257        <exclude name="**/*.tar"/>
258        <exclude name="**/*.tar.gz"/>
259        <exclude name="src/test/**"/>
260        <exclude name="src/org/armedbear/lisp/lisp"/>
261        <exclude name="**/Makefile"/>
262        <exclude name="config.*"/>
263        <exclude name="autom4te.cache/**"/>
264        <exclude name="**/classes.stamp"/>
265        <exclude name="**/build"/>
266        <exclude name="**/version"/>
267        <exclude name="**/j"/>
268        <exclude name="**/j.bat"/>
269        <exclude name="**/jpty"/>
270        <exclude name="**/ChangeLog"/>
271      </fileset>
272    </copy>
273  </target>
274
275  <target name="bindist" depends="prepare, bindistdir" if="unix">
276    <tar tarfile="${topdir}/j-${version}-binary.tar" basedir="/tmp">
277      <include name="j-${version}/**"/>
278    </tar>
279    <gzip zipfile="${topdir}/j-${version}-binary.tar.gz" src="${topdir}/j-${version}-binary.tar"/>
280    <delete file="${topdir}/j-${version}-binary.tar"/>
281    <zip zipfile="${topdir}/j-${version}-binary.zip" basedir="/tmp">
282      <include name="j-${version}/**"/>
283    </zip>
284  </target>
285
286  <target name="bindistdir" depends="release" if="unix">
287    <delete dir="${distdir}"/>
288    <mkdir dir="${distdir}"/>
289    <copy todir="${distdir}">
290      <fileset dir="${topdir}">
291        <include name="j.jar"/>
292        <include name="COPYING"/>
293        <include name="doc/*.html"/>
294        <include name="doc/*.css"/>
295        <include name="themes/*"/>
296        <include name="examples/*"/>
297      </fileset>
298    </copy>
299  </target>
300
301  <!-- Build j.jar from scratch without debug information -->
302  <target name="release" depends="prepare, clean">
303    <antcall target="j.jar">
304      <param name="debug" value="no"/>
305      <param name="build.compiler" value="javac1.4"/>
306    </antcall>
307  </target>
308
309  <target name="snapshot" depends="clean, prepare, stamp.snapshot, j.zip, j-jar.zip">
310    <delete file="${basedir}/org/armedbear/j/snapshot"/>
311  </target>
312
313  <target name="j.zip">
314    <delete file="${topdir}/j.zip"/>
315    <zip
316      zipfile="${topdir}/j.zip"
317      basedir="${topdir}"
318      excludes="src/TEST-*.txt, **/*.orig, **/*.class, **/*.jar, **/*.zip,
319        src/test/**, **/Makefile,
320        config.status, config.cache, config.log, autom4te.cache/**,
321        **/classes.stamp, **/build, **/version,
322        **/j, **/j.bat, **/jpty, **/ChangeLog, src/org/armedbear/lisp/lisp"
323    />
324  </target>
325
326  <target name="j-jar.zip">
327    <delete file="${topdir}/j-jar.zip"/>
328    <delete file="${topdir}/j.jar"/>
329    <antcall target="j.jar">
330      <param name="debug" value="yes"/>
331      <param name="build.compiler" value="javac1.4"/>
332    </antcall>
333    <zip zipfile="${topdir}/j-jar.zip" basedir="${topdir}" includes="j.jar"/>
334  </target>
335
336</project>
Note: See TracBrowser for help on using the repository browser.