root/trunk/ProjectFortress/build.xml @ 3385

Revision 3385, 45.4 KB (checked in by EricAllen, 10 months ago)

Added TypeCheckerLibrary? and TypeCheckerBuiltin?; threaded through front-end.
Modified compile target to compileAll; added compileJava target.

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