root/trunk/ProjectFortress/build.xml @ 3393

Revision 3393, 45.6 KB (checked in by dr2chase, 10 months ago)

Don't ask for java source versions we don't need

Line 
1<?xml version="1.0" ?>
2
3<!--
4Copyright 2009 Sun Microsystems, Inc.,
54150 Network Circle, Santa Clara, California 95054, U.S.A.
6All rights reserved.
7
8U.S. Government Rights - Commercial software.
9Government users are subject to the Sun Microsystems, Inc. standard
10license agreement and applicable provisions of the FAR and its supplements.
11
12Use is subject to license terms.
13
14This distribution may include materials developed by third parties.
15
16Sun, Sun Microsystems, the Sun logo and Java are trademarks or registered
17trademarks of Sun Microsystems, Inc. in the U.S. and other countries.
18-->
19
20<!--
21This is the main Ant build file for the Fortress reference
22implementation. Declarations are separated by type (e.g., taskdefs,
23properties, targets, etc.). To add a new declaration, please find the
24appropriate place in the file. For the sake of readability, please
25maintain proper indentation.
26-->
27
28<project name="Fortress" default="help">
29  <description>
30    A reference implementation of the Fortress programming language.
31  </description>
32
33
34  <!--
35       Properties
36  -->
37
38  <!-- Global properties for this build. -->
39  <property name="packagePrefix" value="com/sun/fortress"/>
40  <property name="package.prefix" value="com.sun.fortress"/>
41  <property name="interpreterPrefix" value="com/sun/fortress/interpreter"/>
42  <property name="interpreter.prefix" value="com.sun.fortress.interpreter"/>
43  <property name="blahblahblah" value="com/sun/fortress"/>
44
45  <!-- Directories in the ${basedir} directory -->
46  <property name="cache0" location="${basedir}/../default_repository/caches"/>
47  <property name="cache1" location="${basedir}/../.fortress_cache"/>
48  <property name="cache2" location="${basedir}/../.interpreter_cache"/>
49  <property name="cache3" location="${basedir}/.interpreter_cache"/>
50  <property name="cache4" location="${basedir}/../.syntax_cache"/>
51  <property name="cache5" location="${basedir}/.syntax_cache"/>
52  <property name="cache6" location="${basedir}/../.analyzed_cache"/>
53  <property name="cache7" location="${basedir}/.analyzed_cache"/>
54  <property name="cache8" location="${basedir}/../.presyntax_cache"/>
55  <property name="cache9" location="${basedir}/.presyntax_cache"/>
56  <property name="cache10" location="${basedir}/../.bytecode_cache"/>
57  <property name="cache11" location="${basedir}/.bytecode_cache"/>
58  <property name="cache12" location="${basedir}/../local_repository/caches"/>
59  <property name="astgen.src" location="${basedir}/astgen"/>
60  <property name="build" location="${basedir}/build"/>
61  <property name="docs" location="${basedir}/docs"/>
62  <property name="src" location="${basedir}/src"/>
63  <property name="library" location="${basedir}/../Library"/>
64  <property name="astgen.generators.src"
65            location="${src}/${packagePrefix}/astgen"/>
66
67  <!-- Third party jar files -->
68  <property name="asm" location="${basedir}/third_party/asm"/>
69  <property name="astgen.third" location="${basedir}/third_party/astgen"/>
70  <property name="jsr166y" location="${basedir}/third_party/jsr166y"/>
71  <property name="junit" location="${basedir}/third_party/junit"/>
72  <property name="plt" location="${basedir}/third_party/plt"/>
73  <property name="unicode.third" location="${basedir}/third_party/unicode"/>
74  <property name="xtc" location="${basedir}/third_party/xtc"/>
75  <property name="unsigned" location="${basedir}/third_party/unsigned"/>
76
77  <!-- Scala jar files -->
78  <property name="scala-compiler.jar"
79            value="${basedir}/third_party/scala/scala-compiler-2.7.2.jar"/>
80  <property name="scala-library.jar"
81            value="${basedir}/third_party/scala/scala-library-2.7.2.jar"/>
82
83  <!-- ASTGen -->
84  <property name="generate-sourcefile" value="${astgen.src}/Fortress.ast" />
85
86  <!-- Package nodes -->
87  <property name="nodesPackage" value="${packagePrefix}/nodes"/>
88  <property name="scala.nodes.package" value="${packagePrefix}/scala_src/nodes"/>
89  <property name="nodes"  location="${src}/${nodesPackage}"/>
90  <property name="scala.nodes"  location="${src}/${scala.nodes.package}"/>
91  <property name="nodesBuild" location="${build}/${nodesPackage}"/>
92
93  <!-- Package nodes_util -->
94  <property name="nodesUtil"  location="${src}/${packagePrefix}/nodes_util"/>
95
96  <!-- Parser packages -->
97  <property name="parser"  location="${src}/${packagePrefix}/parser"/>
98  <property name="preparser" location="${src}/${packagePrefix}/parser/preparser"/>
99  <property name="templateparser"
100            location="${src}/${packagePrefix}/parser/templateparser"/>
101  <property name="parserUtil"  location="${src}/${packagePrefix}/parser_util"/>
102  <property name="precedence" location="${parserUtil}/precedence"/>
103  <property name="precedenceResolver"
104            location="${parserUtil}/precedence_resolver"/>
105
106  <!-- Unicode packages -->
107  <property name="unicodePackage" value="${packagePrefix}/unicode"/>
108  <property name="unicode" location="${src}/${packagePrefix}/unicode"/>
109  <property name="unicodeBuild" location="${build}/${unicodePackage}"/>
110
111  <!-- Package useful -->
112  <property name="usefulPackage" value="${packagePrefix}/useful"/>
113
114  <!-- For fortress installation -->
115  <property name="testFortress" location=".TEST_FORTRESS"/>
116  <property name="installerDir" location=".installer"/>
117  <property name="protofortress" location="${basedir}/fortress/FORTRESS"/>
118  <property name="protofortress.lib" location="${protofortress}/lib"/>
119
120  <!-- Instrumentation -->
121  <property name="instrumentation.package"
122            value="${package.prefix}.parser_util.instrumentation"/>
123  <property name="instrumentationPackage"
124            value="${packagePrefix}/parser_util/instrumentation"/>
125  <property name="instrumentation.outfile"
126            location="${parserUtil}/instrumentation/coverage-report.txt"/>
127  <property name="instrumentation.transient"
128            location="${parserUtil}/instrumentation/transient.txt"/>
129
130  <!-- For tests -->
131  <property name="test.results" location="${basedir}/TEST-RESULTS"/>
132
133  <!-- Other settings -->
134  <property name="junitMem" value="768m"/>
135  <property name="junit.dir" value="junit-results"/>
136  <property name="javaSourceVersion" value="1.5"/>
137  <property environment="env"/>
138  <condition property="correct.environment">
139    <and>
140      <equals arg1="${ant.java.version}" arg2="1.6"/>
141      <equals arg1="${env.ANT_CALLED_FROM_SCRIPT}" arg2='yes'/>
142    </and>
143  </condition>
144
145
146  <!--
147       Paths
148  -->
149  <path id="scala.classpath">
150    <pathelement location="${scala-compiler.jar}"/>
151    <pathelement location="${scala-library.jar}"/>
152  </path>
153
154  <path id="astgen.path">
155    <path refid="scala.classpath"/>
156    <pathelement location="${astgen.third}/astgen.jar" />
157    <pathelement location="${build}" />
158  </path>
159
160  <path id="astgen.classpath">
161    <path refid="scala.classpath"/>
162    <pathelement location="${build}"/>
163    <pathelement location="${astgen.third}/astgen.jar"/>
164  </path>
165
166  <path id="instrumentedparser.classpath">
167    <path refid="scala.classpath"/>
168    <pathelement location="${build}"/>
169    <pathelement location="${xtc}/xtc.jar"/>
170    <pathelement location="${plt}/plt.jar"/>
171  </path>
172
173  <path id="compile.classpath">
174    <path refid="scala.classpath"/>
175    <pathelement location="${build}"/>
176    <pathelement location="${asm}/asm-3.1.jar"/>
177    <pathelement location="${asm}/asm-tree-3.1.jar"/>
178    <pathelement location="${xtc}/xtc.jar"/>
179    <pathelement location ="${unsigned}/unsigned.jar"/>
180    <pathelement location="${jsr166y}/jsr166y.jar"/>
181    <pathelement location="${plt}/plt.jar"/>
182    <pathelement location="${astgen.third}/astgen.jar" />
183    <pathelement location="${junit}/junit.jar"/>
184    <pathelement location="${ant.home}/lib/ant.jar"/>
185    <pathelement location="${java.home}/../lib/tools.jar"/>
186  </path>
187
188  <!--
189       Taskdefs
190  -->
191  <taskdef resource="scala/tools/ant/antlib.xml">
192    <classpath refid="scala.classpath"/>
193  </taskdef>
194
195
196  <!--
197       Targets
198  -->
199  <target name="help">
200    <echo message="ant checkEnv, checkNodesUptodate, checkOperatorsUptodate,
201                   checkParserUptodate, clean, cleanCache, compileJava, compileAll,
202                   compileCommon, compileCommonLint, compileLint, doc,
203                   grammarCoverage, help, init, interpreter-jar,
204                   makeAST, operatorsGen, fortressparser, preparser,
205                   parser, reportNotPassing, systemProperties, test,
206                   testAll, testDemos, testSystem, testOnly
207                   -DtestPattern='some pattern', testCruiseControl"/>
208    <echo message="If you are building Fortress, you want ant compile or ant test."/>
209  </target>
210
211  <target name="systemProperties">
212    <echo message="Environment variables set correctly? ${correct.environment}"/>
213    <echo message="basedir: ${basedir}"/>
214    <echo message="Ant Java version: ${ant.java.version}"/>
215    <echo message="Ant called from script? ${env.ANT_CALLED_FROM_SCRIPT}"/>
216    <echo message="ANT_ARGS: ${env.ANT_ARGS}"/>
217    <echo message="ANT_OPTS: ${env.ANT_OPTS}"/>
218    <echo message="Scala version: ${scalac.version}" />
219    <echo message="Java Runtime Environment
220                   version: ${java.version}"/>
221    <echo message="Java Runtime Environment
222                   vendor: ${java.vendor}"/>
223    <echo message="Java Runtime Environment
224                   vendor URL: ${java.vendor.url}"/>
225    <echo message="Java installation
226                   directory: ${java.home}"/>
227    <echo message="Java Virtual Machine
228                   specification version:
229                   ${java.vm.specification.version}"/>
230    <echo message="Java Virtual Machine
231                   specification vendor:
232                   ${java.vm.specification.vendor}"/>
233    <echo message="Java Virtual Machine
234                   specification name:
235                   ${java.vm.specification.name}"/>
236    <echo message="Java Virtual Machine
237                   implementation version:
238                   ${java.vm.version}"/>
239    <echo message="Java Virtual Machine
240                   implementation vendor:
241                   ${java.vm.vendor}"/>
242    <echo message="Java Virtual Machine
243                   implementation name: ${java.vm.name}"/>
244    <echo message="Java Runtime Environment
245                   specification version:
246                   ${java.specification.version}"/>
247    <echo message="Java Runtime Environment
248                   specification vendor:
249                   ${java.specification.vendor}"/>
250    <echo message="Java Runtime Environment
251                   specification name:
252                   ${java.specification.name}"/>
253    <echo message="Java class format version
254                   number: ${java.class.version}"/>
255    <echo message="Java class path:
256                   ${java.class.path}"/>
257    <echo message="List of paths to search when
258                   loading libraries: ${java.library.path}"/>
259    <echo message="Path of extension directory
260                   or directories: ${java.ext.dirs}"/>
261    <echo message="Default temp file path:
262                   ${java.io.tmpdir}"/>
263    <echo message="Operating system name:
264                   ${os.name}"/>
265    <echo message="Operating system
266                   architecture: ${os.arch}"/>
267    <echo message="Operating system version:
268                   ${os.version}"/>
269  </target>
270
271  <target name="checkEnv">
272    <echo message="Environment variables set correctly? ${correct.environment}"/>
273    <fail unless="correct.environment"
274          message="ERROR: This build script requires specific command-line arguments to Ant. Please call it using the script provided at ${basedir}/ant."/>
275  </target>
276
277  <target name="init">
278    <echo message="basedir: ${basedir}"/>
279    <!-- Create the time stamp. -->
280    <tstamp/>
281    <!-- Create the build directory structure used by compile. -->
282    <mkdir dir="${build}"/>
283    <mkdir dir="${junit.dir}"/>
284  </target>
285
286  <target name="cleanAst" depends="cleanCache"
287          description="Delete the ${nodes} directory tree and cached asts.">
288    <delete dir="${nodes}"/>
289  </target>
290
291  <target name="clean" depends="cleanAst"
292          description="Delete the ${build} directory tree and generated files.">
293    <delete dir="${build}"/>
294    <delete dir="${nodes}"/>
295    <delete dir="${junit.dir}"/>
296
297    <!-- No longer needed, but eases the upgrade-->
298    <delete file="${nodesUtil}/BaseNodeMaker.java"/>
299    <!-- No longer needed, but eases the upgrade-->
300    <delete file="${nodesUtil}/InterfaceMaker.java"/>
301    <delete file="${parser}/Fortress.java"/>
302    <delete file="${parser}/FortressInstrumented.java"/>
303    <delete file="${preparser}/PreFortress.java"/>
304    <delete file="${templateparser}/TemplateParser.java"/>
305    <delete file="${precedenceResolver}/Operators.java"/>
306    <!-- No longer needed, but eases the upgrade-->
307    <delete file="${src}/com/sun/fortress/parser/precedence/resolver/Operators.java"/>
308    <delete file="${instrumentation.outfile}"/>
309    <delete file="${library}/FortressAst.fsi" />
310    <delete file="${library}/FortressAst.fss" />
311    <delete file="${astgen.src}/FortressAst.scala" />
312    <delete file="FortressLibrary.ast"/>
313    <delete file="FortressLibrary.tfs"/>
314    <delete file="${basedir}/tests/printing/test_output.txt" />
315    <delete file="testFile.txt"/>
316    <delete file="${src}/com/sun/fortress/scala_src/nodes/FortressAst.scala" />
317    <delete dir="${src}/com/sun/fortress/scalasrc" />
318    <delete dir="${basedir}/test-tmp" />
319    <delete>
320      <fileset dir="src" includes="**/*.class" />
321    </delete>
322  </target>
323
324  <target name="cleanCache"
325          description="Delete any cached Fortress ASTs in the development tree">
326    <delete dir="${cache0}"/>
327    <delete dir="${cache1}"/>
328    <delete dir="${cache2}"/>
329    <delete dir="${cache3}"/>
330    <delete dir="${cache4}"/>
331    <delete dir="${cache5}"/>
332    <delete dir="${cache6}"/>
333    <delete dir="${cache7}"/>
334    <delete dir="${cache8}"/>
335    <delete dir="${cache9}"/>
336    <delete dir="${cache10}"/>
337    <delete dir="${cache11}"/>
338    <delete dir="${cache12}"/>
339  </target>
340
341  <!-- Generation of Operators.java depends only on the files listed below.
342       Note that there are class files it depends on; if these class files are
343       not up to date with respect to their sources, they are themselves
344       recompiled by the compileCommon target.-->
345  <target name="checkOperatorsUptodate" depends="init, compileCommon">
346    <condition property="operators.uptodate">
347      <and>
348        <uptodate srcfile="${unicode.third}/UnicodeData.500.txt"
349                  targetfile="${precedenceResolver}/Operators.java"/>
350        <uptodate srcfile="${precedenceResolver}/operators.txt"
351                  targetfile="${precedenceResolver}/Operators.java"/>
352        <uptodate srcfile="${unicodeBuild}/OperatorStuffGenerator.class"
353                  targetfile="${precedenceResolver}/Operators.java"/>
354        <uptodate srcfile="${unicodeBuild}/Element.class"
355                  targetfile="${precedenceResolver}/Operators.java"/>
356      </and>
357    </condition>
358    <echo message="Operators up to date? ${operators.uptodate}"/>
359  </target>
360
361  <target name="operatorsGen"  unless="operators.uptodate"
362          depends="init, compileCommon, checkOperatorsUptodate"
363          description="Automatically generate visitors for AST nodes.">
364    <echo message="Regenerating operators"/>
365    <java classname="${package.prefix}.unicode.OperatorStuffGenerator"
366          fork="true">
367      <classpath>
368        <pathelement location="${build}"/>
369        <pathelement location="${basedir}/third_party/plt/plt.jar"/>
370      </classpath>
371    </java>
372  </target>
373
374  <target name="DumpProperties"
375          description="Dump properties as seen by a Java program.">
376    <java classname="${package.prefix}.repository.DumpProperties"
377          fork="true">
378      <sysproperty key="DEBUG" value="true"/>
379      <classpath>
380        <pathelement location="${build}"/>
381      </classpath>
382    </java>
383  </target>
384
385  <target name="checkAstgen">
386    <condition property="astgenerators.uptodate">
387      <uptodate targetfile="${basedir}/build/com/sun/fortress/astgen/FortressAstGenerator.class">
388        <srcfiles dir="${basedir}/src/com/sun/fortress/astgen/" includes="*.java"/>
389      </uptodate>
390    </condition>
391  </target>
392
393  <target name="astGenerators"
394          unless="astgenerators.uptodate"
395          depends="init,checkAstgen"
396          description="Compile all ASTGen custom generators.">
397    <depend srcdir="${astgen.generators.src}"
398            destdir="${build}"
399            closure="yes"
400            cache="${basedir}/.dependencies"/>
401    <javac
402        srcdir="${astgen.generators.src}"
403        destdir="${build}"
404        source="${javaSourceVersion}"
405        debug="true"
406        includeantruntime="false"
407        fork="true"
408        memorymaximumsize="${junitMem}">
409      <!-- Uncomment the following line to print unchecked warnings
410           (here and in the 'compileCommon' target. -->
411      <!-- <compilerarg value="-Xlint:unchecked"/> -->
412      <classpath refid="astgen.classpath"/>
413      <include name="**/*.java"/>
414      <exclude name="${usefulPackage}/*.java"/>
415      <exclude name="${unicodePackage}/*.java"/>
416    </javac>
417    <scalac
418        srcdir="${astgen.generators.src}"
419        destdir="${build}"
420        classpathref="astgen.classpath"
421        addparams="">
422      <include name="**/*.scala"/>
423      <exclude name="${usefulPackage}/*.scala"/>
424      <exclude name="${unicodePackage}/*.scala"/>
425    </scalac>
426  </target>
427
428  <target name="checkNodesUptodate" depends="astGenerators">
429    <condition property="nodes.uptodate">
430      <and>
431        <available file="${nodes}/AbstractNode.java"/>
432        <uptodate srcfile="${astgen.src}/Fortress.ast"
433                  targetfile="${nodes}/AbstractNode.java"/>
434        <available file="${library}/FortressAst.fsi" />
435        <uptodate srcfile="${astgen.src}/Fortress.ast"
436                  targetfile="${library}/FortressAst.fsi" />
437        <available file="${library}/FortressAst.fss" />
438        <uptodate srcfile="${astgen.src}/Fortress.ast"
439                  targetfile="${library}/FortressAst.fss" />
440        <uptodate targetfile="${library}/FortressAst.fsi">
441          <srcfiles dir="${basedir}/src/com/sun/fortress/astgen/" includes="**/*.java"/>
442        </uptodate>
443      </and>
444    </condition>
445    <echo message="Nodes up to date? ${nodes.uptodate}"/>
446  </target>
447
448  <taskdef name="astgen" classpath="${astgen.third}/astgen.jar;${build}"
449           classname="edu.rice.cs.astgen.AntTask"/>
450
451  <target name="makeAST" unless="nodes.uptodate" depends="checkNodesUptodate"
452          description="Automatically generate AST nodes.">
453    <echo message="Processing ${generate-sourcefile}" />
454    <astgen file="${generate-sourcefile}" />
455    <move todir="${nodes}">
456      <fileset dir="${astgen.src}">
457        <include name="**/*.java"/>
458        <exclude name="**/Fortress.ast"/>
459      </fileset>
460    </move>
461    <move todir="${library}">
462      <fileset dir="${astgen.src}">
463        <include name="FortressAst.fss" />
464        <include name="FortressAst.fsi" />
465      </fileset>
466    </move>
467    <move todir="${scala.nodes}">
468      <fileset dir="${astgen.src}">
469        <include name="FortressAst.scala" />
470      </fileset>
471    </move>
472  </target>
473
474  <target name="compileJava" depends="compileCommon, makeAST, parser, operatorsGen"
475          description="Compile all Fortress code written in Java (Scala code is ignored).">
476    <depend srcdir="${src}"
477            destdir="${build}"
478            closure="yes"
479            cache="${basedir}/.dependencies"/>
480    <javac
481        srcdir="${src}"
482        destdir="${build}"
483        debug="true"
484        includeantruntime="false"
485        fork="true"
486        memorymaximumsize="${junitMem}">
487      <!-- Uncomment the following line to print unchecked warnings
488           (here and in the 'compileCommon' target. -->
489      <!-- <compilerarg value="-Xlint:unchecked"/> -->
490      <classpath refid="compile.classpath"/>
491      <include name="**/*.java"/>
492      <exclude name="${usefulPackage}/*.java"/>
493      <exclude name="${unicodePackage}/*.java"/>
494    </javac>
495  </target>
496
497  <target name="compileAll" depends="compileCommon, makeAST, parser, operatorsGen"
498          description="Compile all Fortress code.">
499    <scalac
500        srcdir="${src}"
501        destdir="${build}"
502        classpathref="compile.classpath">
503      <include name="**/*.java"/>
504      <include name="**/*.scala"/>
505      <exclude name="${usefulPackage}/*.java"/>
506      <exclude name="${unicodePackage}/*.java"/>
507    </scalac>
508    <javac
509        srcdir="${src}"
510        destdir="${build}"
511        debug="true"
512        includeantruntime="false"
513        fork="true"
514        memorymaximumsize="${junitMem}">
515      <!-- Uncomment the following line to print unchecked warnings
516           (here and in the 'compileCommon' target. -->
517      <!-- <compilerarg value="-Xlint:unchecked"/> -->
518      <classpath refid="compile.classpath"/>
519      <include name="**/*.java"/>
520      <exclude name="${usefulPackage}/*.java"/>
521      <exclude name="${unicodePackage}/*.java"/>
522    </javac>
523  </target>
524
525  <target name="compile" depends="compileAll"/>
526
527  <target name="check.blas" depends="init">
528    <javac destdir="${build}" srcdir="${src}/com/sun/fortress/numerics">
529      <classpath refid="compile.classpath"/>
530    </javac>
531
532    <java failonerror="true"
533          classname="com.sun.fortress.numerics.CheckBlasEnvironment">
534      <classpath refid="compile.classpath"/>
535    </java>
536  </target>
537
538  <target name="check.linux">
539    <condition property="blas.islinux">
540      <equals arg1="${os.name}" arg2="Linux" />
541    </condition>
542  </target>
543
544  <target name="blas.linux" depends="check.linux" if="blas.islinux">
545    <echo message="Generating C header and stub files." />
546    <javah class="com.sun.fortress.numerics.Blas"
547           destdir="c"
548           classpath="build"
549           />
550    <echo message="Now compiling C stubs for blas on arch linux."/>
551    <exec executable="gcc" failonerror="true">
552      <arg value="-fPIC" />
553      <arg value="-Ic" />
554      <arg value="-I${env.BLAS_INCLUDE}" />
555      <arg value="-L${env.BLAS_LIB}" />
556      <arg value="-I${env.JAVA_HOME}/include" />
557      <arg value="-I${env.JAVA_HOME}/include/linux" />
558      <arg value="c/blas.c" />
559      <arg value="-lcblas" />
560      <arg value="-lblas" />
561      <arg value="-shared" />
562      <arg value="-olibblas.so" />
563    </exec>
564  </target>
565
566  <target name="check.osx">
567    <condition property="blas.is.osx">
568      <equals arg1="${os.name}" arg2="Mac OS X" />
569    </condition>
570  </target>
571
572  <target name="blas.osx" depends="check.osx" if="blas.is.osx">
573    <echo message="Generating C header and stub files." />
574    <javah class="com.sun.fortress.numerics.Blas"
575           destdir="c"
576           classpath="build"
577           />
578    <echo message="Now compiling C stubs for blas on arch OS X."/>
579    <exec executable="gcc" failonerror="true">
580      <arg line="-D OSX" />
581      <arg value="-fPIC" />
582      <arg value="-Ic" />
583      <arg line="-framework Accelerate" />
584      <arg value="-I${env.JAVA_LIB}/Headers" />
585      <arg value="c/blas.c" />
586      <arg value="-lcblas" />
587      <arg value="-lblas" />
588      <arg value="-shared" />
589      <arg value="-bundle" />
590      <arg line="-o libblas.dylib" />
591    </exec>
592  </target>
593
594  <target name="check.sunos">
595    <condition property="blas.is.sunos">
596      <equals arg1="${os.name}" arg2="SunOS" />
597    </condition>
598  </target>
599
600  <target name="blas.sunos" depends="check.sunos" if="blas.is.sunos">
601    <echo message="Generating C header and stub files." />
602    <javah class="com.sun.fortress.numerics.Blas"
603           destdir="c"
604           classpath="build"
605           />
606    <echo message="Now compiling C stubs for blas on arch SunOS."/>
607    <exec executable="cc" failonerror="true">
608      <arg line="-D SUNOS" />
609      <arg value="-fPIC" />
610      <arg value="-Ic" />
611      <arg value="-I${env.JAVA_HOME}/include" />
612      <arg value="-I${env.JAVA_HOME}/include/solaris" />
613      <arg value="c/sunperf_blas.c" />
614      <arg value="-shared" />
615      <arg value="-dalign" />
616      <arg value="-xlic_lib=sunperf" />
617      <arg value="-olibblas.so" />
618    </exec>
619  </target>
620
621  <target name="blas" depends="check.blas,blas.linux,blas.osx,blas.sunos"></target>
622
623  <target name="compileLint"
624          depends="compileCommonLint, makeAST, parser, operatorsGen"
625          description="Compile all interpreter code.">
626    <depend srcdir="${src}"
627            destdir="${build}"
628            closure="yes"
629            cache="${basedir}/.dependencies"/>
630    <javac
631        srcdir="${src}"
632        destdir="${build}"
633        source="${javaSourceVersion}"
634        debug="true"
635        includeantruntime="false"
636        fork="true"
637        memorymaximumsize="${junitMem}">
638      <!-- Uncomment the following line to print unchecked warnings. -->
639      <classpath refid="compile.classpath"/>
640      <compilerarg value="-Xlint:unchecked"/>
641      <include name="**/*.java"/>
642      <exclude name="${usefulPackage}/*.java"/>
643      <exclude name="${unicodePackage}/*.java"/>
644    </javac>
645  </target>
646
647  <target name="compileCommon" depends="init"
648          description="Compile interpreter-indepedent code.">
649    <depend srcdir="${src}"
650            destdir="${build}"
651            closure="yes"
652            cache="${basedir}/.dependencies"/>
653    <javac
654        srcdir="${src}"
655        destdir="${build}"
656        source="${javaSourceVersion}"
657        debug="true"
658        includeantruntime="false"
659        fork="true">
660      <!-- Uncomment the following line to print unchecked warnings. -->
661      <!-- <compilerarg value="-Xlint:unchecked"/>  -->
662      <classpath refid="compile.classpath"/>
663      <include name="${blahblahblah}/useful/*.java"/>
664      <include name="${blahblahblah}/unicode/*.java"/>
665    </javac>
666  </target>
667
668  <target name="compileCommonLint" depends="init"
669          description="Compile interpreter-indepedent code.">
670    <depend srcdir="${src}"
671            destdir="${build}"
672            closure="yes"
673            cache="${basedir}/.dependencies"/>
674    <javac
675        srcdir="${src}"
676        destdir="${build}"
677        source="${javaSourceVersion}"
678        debug="true"
679        includeantruntime="false"
680        fork="true">
681      <classpath refid="compile.classpath"/>
682      <!-- Uncomment the following line to print unchecked warnings. -->
683      <compilerarg value="-Xlint:unchecked"/>
684      <include name="${usefulPackage}/*.java"/>
685      <include name="${unicodePackage}/*.java"/>
686    </javac>
687  </target>
688
689
690  <target name="interpreter-jar" depends="compileAll"
691          description="Package up the interpreter in a jar.">
692    <jar
693        destfile="../bin/interpreter.jar"
694        basedir="${build}"
695        includes="**/*"/>
696  </target>
697
698  <target name="testOnly" depends="compileAll"
699          description="Run specific tests (use -DtestPattern=...).">
700    <mkdir dir="${test.results}"/>
701    <mkdir dir="${basedir}/test-tmp" />
702    <junit printsummary="off"
703           haltonerror="off"
704           haltonfailure="off"
705           showoutput="yes"
706           fork="true"
707           maxmemory="${junitMem}"
708           errorProperty="tests.failed"
709           failureProperty="tests.failed">
710      <classpath refid="compile.classpath"/>
711      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
712      <formatter type="plain" usefile="false"/>
713      <syspropertyset>
714        <propertyref prefix="plt." />
715      </syspropertyset>
716      <batchtest fork="true" todir="${test.results}">
717        <fileset dir="${build}">
718          <and>
719            <filename name="**/*${testPattern}*/**" />
720            <or>
721              <filename name="**/*JUTest.class" />
722              <filename name="**/*JUTestAll.class" />
723              <filename name="**/*JxTest.class" />
724            </or>
725          </and>
726          <exclude name="**/*$*.class"/>
727        </fileset>
728      </batchtest>
729    </junit>
730    <delete dir="${basedir}/test-tmp" />
731    <fail message="Tests expected to pass are failing!" if="tests.failed"/>
732  </target>
733
734  <target name="test" depends="compileAll, testFast"
735          description="Clean, compile everything, and run all unit and system tests.">
736  </target>
737
738  <target name="testFast"
739          description="Run all unit and system tests expected to pass.">
740    <mkdir dir="${test.results}"/>
741    <mkdir dir="${basedir}/test-tmp" />
742    <junit printsummary="on"
743           haltonerror="off"
744           haltonfailure="off"
745           showoutput="yes"
746           fork="true"
747           maxmemory="${junitMem}"
748           errorProperty="tests.failed"
749           failureProperty="tests.failed">
750      <classpath refid="compile.classpath"/>
751      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
752      <formatter type="plain" usefile="true"/>
753      <batchtest fork="true" todir="${test.results}">
754        <fileset dir="${build}">
755          <include name="**/*JUTest.class"/>
756          <include name="**/*JUTests.class"/>
757          <exclude name="**/*$*.class"/>
758          <exclude name="**/SyntaxAbstractionJUTestAll.class"/>
759          <exclude name="**/tools/AstJUTest.class"/>
760        </fileset>
761      </batchtest>
762    </junit>
763    <delete dir="${basedir}/test-tmp" />
764    <fail message="Tests expected to pass are failing!" if="tests.failed"/>
765  </target>
766
767  <target name="testCruiseControl" depends="compileAll"
768          description="Run all unit and system tests expected to pass.">
769    <mkdir dir="${test.results}"/>
770    <mkdir dir="${basedir}/test-tmp" />
771    <junit printsummary="on"
772           haltonerror="off"
773           haltonfailure="off"
774           showoutput="yes"
775           fork="true"
776           maxmemory="${junitMem}"
777           errorProperty="tests.failed"
778           failureProperty="tests.failed">
779      <classpath refid="compile.classpath"/>
780      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
781      <formatter type="plain" usefile="true"/>
782      <batchtest fork="true" todir="${junit.dir}">
783        <formatter type="brief" usefile="false" />
784        <formatter type="xml" />
785        <fileset dir="${build}">
786          <include name="**/*JUTest.class"/>
787          <include name="**/*JUTests.class"/>
788          <exclude name="**/*$*.class"/>
789          <exclude name="**/SyntaxAbstractionJUTestAll.class"/>
790          <exclude name="**/tools/AstJUTest.class"/>
791        </fileset>
792      </batchtest>
793    </junit>
794    <delete dir="${basedir}/test-tmp" />
795    <fail message="Tests expected to pass are failing!" if="tests.failed"/>
796  </target>
797
798  <target name="testNotPassing" depends="compileAll"
799          description="Run system tests that aren't passing yet.">
800    <mkdir dir="${test.results}"/>
801    <mkdir dir="${basedir}/test-tmp" />
802    <junit printsummary="on"
803           haltonerror="off"
804           haltonfailure="off"
805           showoutput="yes"
806           fork="true"
807           maxmemory="${junitMem}"
808           errorProperty="tests.failed"
809           failureProperty="tests.failed">
810      <classpath refid="compile.classpath"/>
811      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
812      <formatter type="brief" usefile="true"/>
813      <batchtest fork="true" todir="${test.results}">
814        <fileset dir="${build}">
815          <include name="**/*NotPassingYet.class"/>
816        </fileset>
817      </batchtest>
818    </junit>
819    <delete dir="${basedir}/test-tmp" />
820    <fail message="Tests expected to fail are failing!" if="tests.failed"/>
821  </target>
822
823  <target name="testSpecData" depends="compileAll"
824          description="Run SpecDataJUTests.">
825    <mkdir dir="${test.results}"/>
826    <mkdir dir="${basedir}/test-tmp" />
827    <junit printsummary="on"
828           haltonerror="off"
829           haltonfailure="off"
830           showoutput="yes"
831           fork="true"
832           maxmemory="${junitMem}"
833           errorProperty="tests.failed"
834           failureProperty="tests.failed">
835      <classpath refid="compile.classpath"/>
836      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
837      <formatter type="plain" usefile="true"/>
838      <batchtest fork="true" todir="${test.results}">
839        <fileset dir="${build}">
840          <include name="**/SpecDataJUTest.class"/>
841        </fileset>
842      </batchtest>
843    </junit>
844    <delete dir="${basedir}/test-tmp" />
845    <fail message="Tests expected to pass are failing!" if="tests.failed"/>
846  </target>
847
848  <target name="testSystem" depends="compileAll"
849          description="Run SystemJUTests.">
850    <mkdir dir="${test.results}"/>
851    <mkdir dir="${basedir}/test-tmp" />
852    <junit printsummary="on"
853           haltonerror="off"
854           haltonfailure="off"
855           showoutput="yes"
856           fork="true"
857           maxmemory="${junitMem}"
858           errorProperty="tests.failed"
859           failureProperty="tests.failed">
860      <classpath refid="compile.classpath"/>
861      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
862      <formatter type="plain" usefile="true"/>
863      <batchtest fork="true" todir="${test.results}">
864        <fileset dir="${build}">
865          <include name="**/SystemJUTest.class"/>
866        </fileset>
867      </batchtest>
868    </junit>
869    <delete dir="${basedir}/test-tmp" />
870    <fail message="Tests expected to pass are failing!" if="tests.failed"/>
871  </target>
872
873  <target name="testblas" depends="compile,blas" description="Test blas">
874    <mkdir dir="${basedir}/test-tmp" />
875    <junit printsummary="on"
876           haltonerror="off"
877           haltonfailure="off"
878           showoutput="yes"
879           fork="true"
880           maxmemory="${junitMem}"
881           errorProperty="tests.failed"
882           failureProperty="tests.failed">
883      <classpath refid="compile.classpath"/>
884      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
885      <formatter type="plain" usefile="true"/>
886      <batchtest fork="true" todir="${test.results}">
887        <fileset dir="${build}">
888          <include name="**/BlasJxTest.class"/>
889        </fileset>
890      </batchtest>
891    </junit>
892    <delete dir="${basedir}/test-tmp" />
893    <fail message="Tests expected to pass are failing!" if="tests.failed"/>
894  </target>
895
896  <target name="testsyntax" depends="compileAll"
897          description="Run SyntaxAbstractionJUTests.">
898    <mkdir dir="${test.results}"/>
899    <mkdir dir="${basedir}/test-tmp" />
900    <junit printsummary="on"
901           haltonerror="off"
902           haltonfailure="off"
903           showoutput="yes"
904           fork="true"
905           maxmemory="${junitMem}"
906           errorProperty="tests.failed"
907           failureProperty="tests.failed">
908      <classpath refid="compile.classpath"/>
909      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
910      <formatter type="plain" usefile="true"/>
911      <batchtest fork="true" todir="${test.results}">
912        <fileset dir="${build}">
913          <include name="**/SyntaxAbstractionJUTest.class"/>
914          <include name="**/SyntaxAbstractionJUTestAll.class"/>
915        </fileset>
916      </batchtest>
917    </junit>
918    <delete dir="${basedir}/test-tmp" />
919    <fail message="Tests expected to pass are failing!" if="tests.failed"/>
920  </target>
921
922  <target name="testDemos" depends="compileAll"
923          description="Run demos in a test harness.">
924    <mkdir dir="${test.results}"/>
925    <mkdir dir="${basedir}/test-tmp" />
926    <junit printsummary="on"
927           haltonerror="off"
928           haltonfailure="off"
929           showoutput="yes"
930           fork="true"
931           maxmemory="${junitMem}"
932           errorProperty="tests.failed"
933           failureProperty="tests.failed">
934      <classpath refid="compile.classpath"/>
935      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
936      <formatter type="brief" usefile="true"/>
937      <batchtest fork="true" todir="${test.results}">
938        <fileset dir="${build}">
939          <include name="**/DemoTests.class"/>
940        </fileset>
941      </batchtest>
942    </junit>
943    <delete dir="${basedir}/test-tmp" />
944    <fail message="Tests expected to pass are failing!" if="tests.failed"/>
945  </target>
946
947  <target name="testAll"
948          depends="test, testNotPassing, testDemos, reportNotPassing"
949          description="Run all tests, including those known not to pass yet.">
950  </target>
951
952  <target name="testNightly" depends="test, testDemos, testsyntax"
953          description="Run tests, demos, and syntax abstraction tests.">
954  </target>
955
956  <target name="reportNotPassing"
957          if="not.passing.yet"
958          depends="test,testNotPassing">
959    <echo message="Some tests expected to fail still aren't passing."/>
960  </target>
961
962  <!-- If the generated file Fortress.java is no older than all rats files
963       in the parser directory, then the parser must be up to date.
964       This is a conservative test; a more precise test would perform a
965       dependency analysis over Rats! code.-->
966  <target name="checkParserUptodate" depends="init">
967    <condition property="parser.uptodate">
968      <and>
969        <uptodate targetfile="${parser}/Fortress.java">
970          <srcfiles dir="${parser}" includes="**/*.rats"/>
971        </uptodate>
972        <uptodate targetfile="${preparser}/PreFortress.java">
973          <srcfiles dir="${parser}" includes="**/*.rats"/>
974          <srcfiles dir="${preparser}" includes="**/*.rats"/>
975        </uptodate>
976        <uptodate targetfile="${templateparser}/TemplateParser.java">
977          <srcfiles dir="${parser}" includes="**/*.rats"/>
978          <srcfiles dir="${templateparser}" includes="**/*.rats"/>
979        </uptodate>
980      </and>
981    </condition>
982    <echo>Parser up to date? ${parser.uptodate}</echo>
983  </target>
984
985  <target name="checkFortressParserUptodate" depends="init">
986    <uptodate property="fortressparser.uptodate"
987              targetfile="${parser}/Fortress.java">
988      <srcfiles dir="${parser}" includes="**/*.rats"/>
989    </uptodate>
990    <echo>Fortress parser up to date? ${parser.uptodate}</echo>
991  </target>
992
993  <target name="checkPreparserUptodate" depends="init">
994    <uptodate property="preparser.uptodate"
995              targetfile="${preparser}/PreFortress.java">
996      <srcfiles dir="${parser}" includes="**/*.rats"/>
997      <srcfiles dir="${preparser}" includes="**/*.rats"/>
998    </uptodate>
999    <echo>Preparser up to date? ${preparser.uptodate}</echo>
1000  </target>
1001
1002  <target name="checkTemplateparserUptodate" depends="init">
1003    <uptodate property="templateparser.uptodate"
1004              targetfile="${templateparser}/TemplateParser.java">
1005      <srcfiles dir="${parser}" includes="**/*.rats"/>
1006      <srcfiles dir="${templateparser}" includes="**/*.rats"/>
1007    </uptodate>
1008    <echo>Templateparser up to date? ${templateparser.uptodate}</echo>
1009  </target>
1010
1011  <target name="checkInstrumentedParserUptodate" depends="init">
1012    <uptodate property="instrumentedparser.uptodate"
1013              targetfile="${parser}/FortressInstrumented.java">
1014      <srcfiles dir="${parser}" includes="**/*.rats"/>
1015      <srcfiles dir="${src}/${instrumentationPackage}"
1016                includes="*.java"/>
1017    </uptodate>
1018    <echo>Fortress parser up to date? ${parser.uptodate}</echo>
1019  </target>
1020
1021  <macrodef name="buildparser">
1022    <attribute name="name" />
1023    <attribute name="file" />
1024    <attribute name="dir" />
1025    <sequential>
1026      <echo message="Rebuilding @{name}..."/>
1027      <java fork="yes"
1028            failonerror="yes"
1029            dir="@{dir}"
1030            classname="xtc.parser.Rats"
1031            classpath="${xtc}/xtc.jar">
1032        <arg value="-in"/>
1033        <arg value="${src}"/>
1034        <arg value="@{file}"/>
1035      </java>
1036    </sequential>
1037  </macrodef>
1038
1039  <target name="fortressparser" unless="fortressparser.uptodate"
1040          depends="checkFortressParserUptodate"
1041          description="Fortress Parser">
1042    <buildparser name="Fortress" dir="${parser}" file="Fortress.rats" />
1043  </target>
1044
1045  <target name="preparser" unless="preparser.uptodate"
1046          depends="checkPreparserUptodate"
1047          description="Preparser">
1048    <buildparser name="preparser" dir="${preparser}" file="PreFortress.rats" />
1049  </target>
1050
1051  <target name="templateparser" unless="templateparser.uptodate"
1052          depends="checkTemplateparserUptodate"
1053          description="Templateparser">
1054    <buildparser name="template parser" dir="${templateparser}"
1055                 file="TemplateParser.rats" />
1056  </target>
1057
1058  <target name="instrumentedparser" unless="instrumentedparser.uptodate"
1059          depends="compile, checkInstrumentedParserUptodate"
1060          description="Instrumented Parser">
1061    <java fork="yes"
1062          maxmemory="512m"
1063          failonerror="yes"
1064          classname="${instrumentation.package}.InstrumentedParserGenerator">
1065      <classpath refid="instrumentedparser.classpath"/>
1066      <arg value="${parser}"/> <!-- input dir -->
1067      <arg value="${parser}"/> <!-- output dir for FortressInstrumented.java -->
1068    </java>
1069  </target>
1070
1071  <target name="optimizeParser"
1072          depends="compile"
1073          description="Optimized Parser">
1074    <java fork="yes"
1075          maxmemory="512m"
1076          failonerror="yes"
1077          classname="${instrumentation.package}.OptimizedParserGenerator">
1078      <classpath refid="instrumentedparser.classpath"/>
1079      <arg value="${parser}"/> <!-- input dir -->
1080      <arg value="${parser}"/> <!-- output dir for Fortress.java -->
1081      <arg value="${instrumentation.transient}"/>
1082    </java>
1083    <ant target="compile"/>
1084  </target>
1085
1086  <target name="parser" unless="parser.uptodate"
1087          depends="checkParserUptodate, operatorsGen"
1088          description="Fortress Parser">
1089    <ant target="fortressparser" />
1090    <ant target="preparser" />
1091    <ant target="templateparser" />
1092  </target>
1093
1094  <target name="compileGrammarCoverage" depends="compile, instrumentedparser">
1095    <depend srcdir="${src}"
1096            destdir="${build}"
1097            closure="yes"
1098            cache="${basedir}/.dependencies"/>
1099    <javac
1100        srcdir="${src}"
1101        destdir="${build}"
1102        source="${javaSourceVersion}"
1103        debug="true"
1104        includeantruntime="false"
1105        fork="true"
1106        memorymaximumsize="${junitMem}">
1107      <!-- Uncomment the following line to print unchecked warnings
1108           (here and in the 'compileCommon' target. -->
1109      <!-- <compilerarg value="-Xlint:unchecked"/> -->
1110      <classpath refid="compile.classpath"/>
1111      <include name="${packagePrefix}/parser/FortressInstrumented.java"/>
1112    </javac>
1113  </target>
1114
1115  <target name="grammarCoverage" depends="compileGrammarCoverage">
1116    <java fork="yes"
1117          failonerror="yes"
1118          classname="${instrumentation.package}.Coverage"
1119          output="${instrumentation.outfile}">
1120      <classpath refid="compile.classpath"/>
1121    </java>
1122    <echo message="Wrote grammar coverage report to ${instrumentation.outfile}"/>
1123  </target>
1124
1125  <target name="doc" depends="compileAll">
1126    <javadoc overview="${src}/overview.html" destdir="${docs}" maxmemory="${junitMem}">
1127      <classpath refid="compile.classpath"/>
1128      <packageset dir="${src}">
1129        <include name="**/*"/>
1130      </packageset>
1131      <header><![CDATA[Fortress Interpreter]]></header>
1132      <doctitle><![CDATA[<h1>Fortress Interpreter Source Code</h1>]]></doctitle>
1133      <group title="Evaluator Packages"
1134             packages="com.sun.fortress.interpreter.evaluator.*"/>
1135      <link href="http://junit.org/junit/javadoc/3.8.1/"/>
1136      <link href="http://java.sun.com/j2se/1.5/docs/api/"/>
1137      <link href="http://drjava.org/javadoc/plt/"/>
1138    </javadoc>
1139  </target>
1140
1141  <target name="jar"
1142          depends="compileAll"
1143          description="Package up a Fortress distribution as a self-extracting jar.">
1144    <tstamp>
1145      <format
1146          property="jar.DSTAMP"
1147          timezone="GMT"
1148          pattern="yyyy_MMdd_hhmm"/>
1149    </tstamp>
1150
1151    <!-- Extract Ant jars into build directory to be packaged up.-->
1152    <unjar src="${protofortress}/lib/ant.jar" dest="${build}"/>
1153    <unjar src="${protofortress}/lib/ant-launcher.jar" dest="${build}"/>
1154
1155    <!-- Place anthooks.jar in the protofortress. -->
1156    <copy file="${src}/com/sun/fortress/shell/anthooks.xml"
1157          todir="${protofortress}/bin"/>
1158
1159    <!-- Package up class files as a new shell.jar,
1160         and place them in the protofortress. -->
1161    <jar
1162        destfile="fortress/FORTRESS/lib/shell.jar"
1163        basedir="${build}"
1164        includes="**/*"/>
1165
1166    <!-- Then package up the protofortress and place it
1167         in the build directory (so it can be extracted later). -->
1168    <jar
1169        destfile="${build}/com/sun/fortress/shell/fortress.jar"
1170        basedir="fortress"
1171        includes="**/*" />
1172
1173    <!-- Write timestamp of jar creation to a file for retrieval during
1174         extraction. -->
1175    <echo message="${jar.DSTAMP}" file="${build}/TIMESTAMP"/>
1176
1177    <!-- Finally, package up the build directory into a jar that
1178         extracts the protofortress at a destination site. -->
1179    <jar
1180        destfile="Fortress_${jar.DSTAMP}.jar"
1181        basedir="${build}"
1182        includes="**/*" >
1183      <manifest>
1184        <attribute name="Manifest-Version" value="${jar.DSTAMP}"/>
1185        <attribute name="Created-By" value="Sun Microsystems, Inc."/>
1186        <attribute name="Main-Class" value="com.sun.fortress.shell.Extractor"/>
1187        <section name="common/class1.class">
1188          <attribute name="Sealed" value="false"/>
1189        </section>
1190      </manifest>
1191    </jar>
1192  </target>
1193
1194  <target name="copy.anthooks" depends="init" unless="anthooks.uptodate">
1195    <copy file="${src}/com/sun/fortress/shell/anthooks.xml"
1196          todir="${build}/com/sun/fortress/shell"
1197          overwrite="false"/>
1198  </target>
1199
1200  <target name="installer" depends="compileAll"
1201          description="build a new installer as a jar">
1202    <delete dir="${installerDir}"/>
1203    <mkdir dir="${installerDir}/fortress"/>
1204    <copy todir="${installerDir}/fortress/FORTRESS">
1205      <fileset dir="FORTRESS"/>
1206    </copy>
1207    <copy todir="${installerDir}/fortress/bin">
1208      <fileset dir="bin"/>
1209    </copy>
1210    <copy file="docs/installer/README.txt" todir="${installerDir}/fortress"/>
1211    <tar
1212        destfile="fortress.tar.gz"
1213        basedir="${installerDir}"
1214        longfile="fail"
1215        compression="gzip"
1216        />
1217    <delete dir="${installerDir}"/>
1218  </target>
1219
1220  <target name="createNestedJarUpgrade"
1221          description="wrap up a jar for inclusion in a mock upgrade">
1222    <jar
1223        destfile="jars/fortress_mock_upgrade/java/mock_upgrade.jar"
1224        basedir="jars/nested_jar_upgrade"
1225        includes="**/*"
1226        />
1227  </target>
1228
1229  <target name="createMockUpgrade" depends="createNestedJarUpgrade"
1230          description="build a mock upgrade file for testing selfupgrade">
1231    <jar
1232        destfile="FORTRESS/test/fortress_mock_upgrade.jar"
1233        basedir="jars/fortress_mock_upgrade"
1234        includes="**/*"
1235        />
1236  </target>
1237</project>
Note: See TracBrowser for help on using the browser.