root/trunk/ProjectFortress/build.xml @ 3390

Revision 3390, 45.5 KB (checked in by sukyoungryu, 10 months ago)

[tests] Made the syntac abstraction tests (in hourly builds) run FileTests?.FSSTest.

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="**/*JUTestAll.class" />
722              <filename name="**/*JxTest.class" />
723            </or>
724          </and>
725          <exclude name="**/*$*.class"/>
726        </fileset>
727      </batchtest>
728    </junit>
729    <delete dir="${basedir}/test-tmp" />
730    <fail message="Tests expected to pass are failing!" if="tests.failed"/>
731  </target>
732
733  <target name="test" depends="compileAll, testFast"
734          description="Clean, compile everything, and run all unit and system tests.">
735  </target>
736
737  <target name="testFast"
738          description="Run all unit and system tests expected to pass.">
739    <mkdir dir="${test.results}"/>
740    <mkdir dir="${basedir}/test-tmp" />
741    <junit printsummary="on"
742           haltonerror="off"
743           haltonfailure="off"
744           showoutput="yes"
745           fork="true"
746           maxmemory="${junitMem}"
747           errorProperty="tests.failed"
748           failureProperty="tests.failed">
749      <classpath refid="compile.classpath"/>
750      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
751      <formatter type="plain" usefile="true"/>
752      <batchtest fork="true" todir="${test.results}">
753        <fileset dir="${build}">
754          <include name="**/*JUTest.class"/>
755          <include name="**/*JUTests.class"/>
756          <exclude name="**/*$*.class"/>
757          <exclude name="**/SyntaxAbstractionJUTestAll.class"/>
758          <exclude name="**/tools/AstJUTest.class"/>
759        </fileset>
760      </batchtest>
761    </junit>
762    <delete dir="${basedir}/test-tmp" />
763    <fail message="Tests expected to pass are failing!" if="tests.failed"/>
764  </target>
765
766  <target name="testCruiseControl" depends="compileAll"
767          description="Run all unit and system tests expected to pass.">
768    <mkdir dir="${test.results}"/>
769    <mkdir dir="${basedir}/test-tmp" />
770    <junit printsummary="on"
771           haltonerror="off"
772           haltonfailure="off"
773           showoutput="yes"
774           fork="true"
775           maxmemory="${junitMem}"
776           errorProperty="tests.failed"
777           failureProperty="tests.failed">
778      <classpath refid="compile.classpath"/>
779      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
780      <formatter type="plain" usefile="true"/>
781      <batchtest fork="true" todir="${junit.dir}">
782        <formatter type="brief" usefile="false" />
783        <formatter type="xml" />
784        <fileset dir="${build}">
785          <include name="**/*JUTest.class"/>
786          <include name="**/*JUTests.class"/>
787          <exclude name="**/*$*.class"/>
788          <exclude name="**/SyntaxAbstractionJUTestAll.class"/>
789          <exclude name="**/tools/AstJUTest.class"/>
790        </fileset>
791      </batchtest>
792    </junit>
793    <delete dir="${basedir}/test-tmp" />
794    <fail message="Tests expected to pass are failing!" if="tests.failed"/>
795  </target>
796
797  <target name="testNotPassing" depends="compileAll"
798          description="Run system tests that aren't passing yet.">
799    <mkdir dir="${test.results}"/>
800    <mkdir dir="${basedir}/test-tmp" />
801    <junit printsummary="on"
802           haltonerror="off"
803           haltonfailure="off"
804           showoutput="yes"
805           fork="true"
806           maxmemory="${junitMem}"
807           errorProperty="tests.failed"
808           failureProperty="tests.failed">
809      <classpath refid="compile.classpath"/>
810      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
811      <formatter type="brief" usefile="true"/>
812      <batchtest fork="true" todir="${test.results}">
813        <fileset dir="${build}">
814          <include name="**/*NotPassingYet.class"/>
815        </fileset>
816      </batchtest>
817    </junit>
818    <delete dir="${basedir}/test-tmp" />
819    <fail message="Tests expected to fail are failing!" if="tests.failed"/>
820  </target>
821
822  <target name="testSpecData" depends="compileAll"
823          description="Run SpecDataJUTests.">
824    <mkdir dir="${test.results}"/>
825    <mkdir dir="${basedir}/test-tmp" />
826    <junit printsummary="on"
827           haltonerror="off"
828           haltonfailure="off"
829           showoutput="yes"
830           fork="true"
831           maxmemory="${junitMem}"
832           errorProperty="tests.failed"
833           failureProperty="tests.failed">
834      <classpath refid="compile.classpath"/>
835      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
836      <formatter type="plain" usefile="true"/>
837      <batchtest fork="true" todir="${test.results}">
838        <fileset dir="${build}">
839          <include name="**/SpecDataJUTest.class"/>
840        </fileset>
841      </batchtest>
842    </junit>
843    <delete dir="${basedir}/test-tmp" />
844    <fail message="Tests expected to pass are failing!" if="tests.failed"/>
845  </target>
846
847  <target name="testSystem" depends="compileAll"
848          description="Run SystemJUTests.">
849    <mkdir dir="${test.results}"/>
850    <mkdir dir="${basedir}/test-tmp" />
851    <junit printsummary="on"
852           haltonerror="off"
853           haltonfailure="off"
854           showoutput="yes"
855           fork="true"
856           maxmemory="${junitMem}"
857           errorProperty="tests.failed"
858           failureProperty="tests.failed">
859      <classpath refid="compile.classpath"/>
860      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
861      <formatter type="plain" usefile="true"/>
862      <batchtest fork="true" todir="${test.results}">
863        <fileset dir="${build}">
864          <include name="**/SystemJUTest.class"/>
865        </fileset>
866      </batchtest>
867    </junit>
868    <delete dir="${basedir}/test-tmp" />
869    <fail message="Tests expected to pass are failing!" if="tests.failed"/>
870  </target>
871
872  <target name="testblas" depends="compile,blas" description="Test blas">
873    <mkdir dir="${basedir}/test-tmp" />
874    <junit printsummary="on"
875           haltonerror="off"
876           haltonfailure="off"
877           showoutput="yes"
878           fork="true"
879           maxmemory="${junitMem}"
880           errorProperty="tests.failed"
881           failureProperty="tests.failed">
882      <classpath refid="compile.classpath"/>
883      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
884      <formatter type="plain" usefile="true"/>
885      <batchtest fork="true" todir="${test.results}">
886        <fileset dir="${build}">
887          <include name="**/BlasJxTest.class"/>
888        </fileset>
889      </batchtest>
890    </junit>
891    <delete dir="${basedir}/test-tmp" />
892    <fail message="Tests expected to pass are failing!" if="tests.failed"/>
893  </target>
894
895  <target name="testsyntax" depends="compileAll"
896          description="Run SyntaxAbstractionJUTests.">
897    <mkdir dir="${test.results}"/>
898    <mkdir dir="${basedir}/test-tmp" />
899    <junit printsummary="on"
900           haltonerror="off"
901           haltonfailure="off"
902           showoutput="yes"
903           fork="true"
904           maxmemory="${junitMem}"
905           errorProperty="tests.failed"
906           failureProperty="tests.failed">
907      <classpath refid="compile.classpath"/>
908      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
909      <formatter type="plain" usefile="true"/>
910      <batchtest fork="true" todir="${test.results}">
911        <fileset dir="${build}">
912          <include name="**/SyntaxAbstractionJUTest.class"/>
913          <include name="**/SyntaxAbstractionJUTestAll.class"/>
914        </fileset>
915      </batchtest>
916    </junit>
917    <delete dir="${basedir}/test-tmp" />
918    <fail message="Tests expected to pass are failing!" if="tests.failed"/>
919  </target>
920
921  <target name="testDemos" depends="compileAll"
922          description="Run demos in a test harness.">
923    <mkdir dir="${test.results}"/>
924    <mkdir dir="${basedir}/test-tmp" />
925    <junit printsummary="on"
926           haltonerror="off"
927           haltonfailure="off"
928           showoutput="yes"
929           fork="true"
930           maxmemory="${junitMem}"
931           errorProperty="tests.failed"
932           failureProperty="tests.failed">
933      <classpath refid="compile.classpath"/>
934      <jvmarg value="-Djava.io.tmpdir=${basedir}/test-tmp" />
935      <formatter type="brief" usefile="true"/>
936      <batchtest fork="true" todir="${test.results}">
937        <fileset dir="${build}">
938          <include name="**/DemoTests.class"/>
939        </fileset>
940      </batchtest>
941    </junit>
942    <delete dir="${basedir}/test-tmp" />
943    <fail message="Tests expected to pass are failing!" if="tests.failed"/>
944  </target>
945
946  <target name="testAll"
947          depends="test, testNotPassing, testDemos, reportNotPassing"
948          description="Run all tests, including those known not to pass yet.">
949  </target>
950
951  <target name="testNightly" depends="test, testDemos, testsyntax"
952          description="Run tests, demos, and syntax abstraction tests.">
953  </target>
954
955  <target name="reportNotPassing"
956          if="not.passing.yet"
957          depends="test,testNotPassing">
958    <echo message="Some tests expected to fail still aren't passing."/>
959  </target>
960
961  <!-- If the generated file Fortress.java is no older than all rats files
962       in the parser directory, then the parser must be up to date.
963       This is a conservative test; a more precise test would perform a
964       dependency analysis over Rats! code.-->
965  <target name="checkParserUptodate" depends="init">
966    <condition property="parser.uptodate">
967      <and>
968        <uptodate targetfile="${parser}/Fortress.java">
969          <srcfiles dir="${parser}" includes="**/*.rats"/>
970        </uptodate>
971        <uptodate targetfile="${preparser}/PreFortress.java">
972          <srcfiles dir="${parser}" includes="**/*.rats"/>
973          <srcfiles dir="${preparser}" includes="**/*.rats"/>
974        </uptodate>
975        <uptodate targetfile="${templateparser}/TemplateParser.java">
976          <srcfiles dir="${parser}" includes="**/*.rats"/>
977          <srcfiles dir="${templateparser}" includes="**/*.rats"/>
978        </uptodate>
979      </and>
980    </condition>
981    <echo>Parser up to date? ${parser.uptodate}</echo>
982  </target>
983
984  <target name="checkFortressParserUptodate" depends="init">
985    <uptodate property="fortressparser.uptodate"
986              targetfile="${parser}/Fortress.java">
987      <srcfiles dir="${parser}" includes="**/*.rats"/>
988    </uptodate>
989    <echo>Fortress parser up to date? ${parser.uptodate}</echo>
990  </target>
991
992  <target name="checkPreparserUptodate" depends="init">
993    <uptodate property="preparser.uptodate"
994              targetfile="${preparser}/PreFortress.java">
995      <srcfiles dir="${parser}" includes="**/*.rats"/>
996      <srcfiles dir="${preparser}" includes="**/*.rats"/>
997    </uptodate>
998    <echo>Preparser up to date? ${preparser.uptodate}</echo>
999  </target>
1000
1001  <target name="checkTemplateparserUptodate" depends="init">
1002    <uptodate property="templateparser.uptodate"
1003              targetfile="${templateparser}/TemplateParser.java">
1004      <srcfiles dir="${parser}" includes="**/*.rats"/>
1005      <srcfiles dir="${templateparser}" includes="**/*.rats"/>
1006    </uptodate>
1007    <echo>Templateparser up to date? ${templateparser.uptodate}</echo>
1008  </target>
1009
1010  <target name="checkInstrumentedParserUptodate" depends="init">
1011    <uptodate property="instrumentedparser.uptodate"
1012              targetfile="${parser}/FortressInstrumented.java">
1013      <srcfiles dir="${parser}" includes="**/*.rats"/>
1014      <srcfiles dir="${src}/${instrumentationPackage}"
1015                includes="*.java"/>
1016    </uptodate>
1017    <echo>Fortress parser up to date? ${parser.uptodate}</echo>
1018  </target>
1019
1020  <macrodef name="buildparser">
1021    <attribute name="name" />
1022    <attribute name="file" />
1023    <attribute name="dir" />
1024    <sequential>
1025      <echo message="Rebuilding @{name}..."/>
1026      <java fork="yes"
1027            failonerror="yes"
1028            dir="@{dir}"
1029            classname="xtc.parser.Rats"
1030            classpath="${xtc}/xtc.jar">
1031        <arg value="-in"/>
1032        <arg value="${src}"/>
1033        <arg value="@{file}"/>
1034      </java>
1035    </sequential>
1036  </macrodef>
1037
1038  <target name="fortressparser" unless="fortressparser.uptodate"
1039          depends="checkFortressParserUptodate"
1040          description="Fortress Parser">
1041    <buildparser name="Fortress" dir="${parser}" file="Fortress.rats" />
1042  </target>
1043
1044  <target name="preparser" unless="preparser.uptodate"
1045          depends="checkPreparserUptodate"
1046          description="Preparser">
1047    <buildparser name="preparser" dir="${preparser}" file="PreFortress.rats" />
1048  </target>
1049
1050  <target name="templateparser" unless="templateparser.uptodate"
1051          depends="checkTemplateparserUptodate"
1052          description="Templateparser">
1053    <buildparser name="template parser" dir="${templateparser}"
1054                 file="TemplateParser.rats" />
1055  </target>
1056
1057  <target name="instrumentedparser" unless="instrumentedparser.uptodate"
1058          depends="compile, checkInstrumentedParserUptodate"
1059          description="Instrumented Parser">
1060    <java fork="yes"
1061          maxmemory="512m"
1062          failonerror="yes"
1063          classname="${instrumentation.package}.InstrumentedParserGenerator">
1064      <classpath refid="instrumentedparser.classpath"/>
1065      <arg value="${parser}"/> <!-- input dir -->
1066      <arg value="${parser}"/> <!-- output dir for FortressInstrumented.java -->
1067    </java>
1068  </target>
1069
1070  <target name="optimizeParser"
1071          depends="compile"
1072          description="Optimized Parser">
1073    <java fork="yes"
1074          maxmemory="512m"
1075          failonerror="yes"
1076          classname="${instrumentation.package}.OptimizedParserGenerator">
1077      <classpath refid="instrumentedparser.classpath"/>
1078      <arg value="${parser}"/> <!-- input dir -->
1079      <arg value="${parser}"/> <!-- output dir for Fortress.java -->
1080      <arg value="${instrumentation.transient}"/>
1081    </java>
1082    <ant target="compile"/>
1083  </target>
1084
1085  <target name="parser" unless="parser.uptodate"
1086          depends="checkParserUptodate, operatorsGen"
1087          description="Fortress Parser">
1088    <ant target="fortressparser" />
1089    <ant target="preparser" />
1090    <ant target="templateparser" />
1091  </target>
1092
1093  <target name="compileGrammarCoverage" depends="compile, instrumentedparser">
1094    <depend srcdir="${src}"
1095            destdir="${build}"
1096            closure="yes"
1097            cache="${basedir}/.dependencies"/>
1098    <javac
1099        srcdir="${src}"
1100        destdir="${build}"
1101        source="1.6"
1102        debug="true"
1103        includeantruntime="false"
1104        fork="true"
1105        memorymaximumsize="${junitMem}">
1106      <!-- Uncomment the following line to print unchecked warnings
1107           (here and in the 'compileCommon' target. -->
1108      <!-- <compilerarg value="-Xlint:unchecked"/> -->
1109      <classpath refid="compile.classpath"/>
1110      <include name="${packagePrefix}/parser/FortressInstrumented.java"/>
1111    </javac>
1112  </target>
1113
1114  <target name="grammarCoverage" depends="compileGrammarCoverage">
1115    <java fork="yes"
1116          failonerror="yes"
1117          classname="${instrumentation.package}.Coverage"
1118          output="${instrumentation.outfile}">
1119      <classpath refid="compile.classpath"/>
1120    </java>
1121    <echo message="Wrote grammar coverage report to ${instrumentation.outfile}"/>
1122  </target>
1123
1124  <target name="doc" depends="compileAll">
1125    <javadoc overview="${src}/overview.html" destdir="${docs}" maxmemory="${junitMem}">
1126      <classpath refid="compile.classpath"/>
1127      <packageset dir="${src}">
1128        <include name="**/*"/>
1129      </packageset>
1130      <header><![CDATA[Fortress Interpreter]]></header>
1131      <doctitle><![CDATA[<h1>Fortress Interpreter Source Code</h1>]]></doctitle>
1132      <group title="Evaluator Packages"
1133             packages="com.sun.fortress.interpreter.evaluator.*"/>
1134      <link href="http://junit.org/junit/javadoc/3.8.1/"/>
1135      <link href="http://java.sun.com/j2se/1.5/docs/api/"/>
1136      <link href="http://drjava.org/javadoc/plt/"/>
1137    </javadoc>
1138  </target>
1139
1140  <target name="jar"
1141          depends="compileAll"
1142          description="Package up a Fortress distribution as a self-extracting jar.">
1143    <tstamp>
1144      <format
1145          property="jar.DSTAMP"
1146          timezone="GMT"
1147          pattern="yyyy_MMdd_hhmm"/>
1148    </tstamp>
1149
1150    <!-- Extract Ant jars into build directory to be packaged up.-->
1151    <unjar src="${protofortress}/lib/ant.jar" dest="${build}"/>
1152    <unjar src="${protofortress}/lib/ant-launcher.jar" dest="${build}"/>
1153
1154    <!-- Place anthooks.jar in the protofortress. -->
1155    <copy file="${src}/com/sun/fortress/shell/anthooks.xml"
1156          todir="${protofortress}/bin"/>
1157
1158    <!-- Package up class files as a new shell.jar,
1159         and place them in the protofortress. -->
1160    <jar
1161        destfile="fortress/FORTRESS/lib/shell.jar"
1162        basedir="${build}"
1163        includes="**/*"/>
1164
1165    <!-- Then package up the protofortress and place it
1166         in the build directory (so it can be extracted later). -->
1167    <jar
1168        destfile="${build}/com/sun/fortress/shell/fortress.jar"
1169        basedir="fortress"
1170        includes="**/*" />
1171
1172    <!-- Write timestamp of jar creation to a file for retrieval during
1173         extraction. -->
1174    <echo message="${jar.DSTAMP}" file="${build}/TIMESTAMP"/>
1175
1176    <!-- Finally, package up the build directory into a jar that
1177         extracts the protofortress at a destination site. -->
1178    <jar
1179        destfile="Fortress_${jar.DSTAMP}.jar"
1180        basedir="${build}"
1181        includes="**/*" >
1182      <manifest>
1183        <attribute name="Manifest-Version" value="${jar.DSTAMP}"/>
1184        <attribute name="Created-By" value="Sun Microsystems, Inc."/>
1185        <attribute name="Main-Class" value="com.sun.fortress.shell.Extractor"/>
1186        <section name="common/class1.class">
1187          <attribute name="Sealed" value="false"/>
1188        </section>
1189      </manifest>
1190    </jar>
1191  </target>
1192
1193  <target name="copy.anthooks" depends="init" unless="anthooks.uptodate">
1194    <copy file="${src}/com/sun/fortress/shell/anthooks.xml"
1195          todir="${build}/com/sun/fortress/shell"
1196          overwrite="false"/>
1197  </target>
1198
1199  <target name="installer" depends="compileAll"
1200          description="build a new installer as a jar">
1201    <delete dir="${installerDir}"/>
1202    <mkdir dir="${installerDir}/fortress"/>
1203    <copy todir="${installerDir}/fortress/FORTRESS">
1204      <fileset dir="FORTRESS"/>
1205    </copy>
1206    <copy todir="${installerDir}/fortress/bin">
1207      <fileset dir="bin"/>
1208    </copy>
1209    <copy file="docs/installer/README.txt" todir="${installerDir}/fortress"/>
1210    <tar
1211        destfile="fortress.tar.gz"
1212        basedir="${installerDir}"
1213        longfile="fail"
1214        compression="gzip"
1215        />
1216    <delete dir="${installerDir}"/>
1217  </target>
1218
1219  <target name="createNestedJarUpgrade"
1220          description="wrap up a jar for inclusion in a mock upgrade">
1221    <jar
1222        destfile="jars/fortress_mock_upgrade/java/mock_upgrade.jar"
1223        basedir="jars/nested_jar_upgrade"
1224        includes="**/*"
1225        />
1226  </target>
1227
1228  <target name="createMockUpgrade" depends="createNestedJarUpgrade"
1229          description="build a mock upgrade file for testing selfupgrade">
1230    <jar
1231        destfile="FORTRESS/test/fortress_mock_upgrade.jar"
1232        basedir="jars/fortress_mock_upgrade"
1233        includes="**/*"
1234        />
1235  </target>
1236</project>
Note: See TracBrowser for help on using the browser.