summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabien Salvi <fabien.salvi@epfl.ch>2005-10-11 14:14:17 +0000
committerFabien Salvi <fabien.salvi@epfl.ch>2005-10-11 14:14:17 +0000
commitbb79f90e839eb46c3964322add9dea82a4a23740 (patch)
treef0c86d6dcccff2c3bc2946251b4ead70d364ca6a
parent1c2a65c287389c25dfd88298d58fbf63cc0578c2 (diff)
downloadscala-bb79f90e839eb46c3964322add9dea82a4a23740.tar.gz
scala-bb79f90e839eb46c3964322add9dea82a4a23740.tar.bz2
scala-bb79f90e839eb46c3964322add9dea82a4a23740.zip
Test cvs id
-rw-r--r--fabientestbuild.xml333
1 files changed, 333 insertions, 0 deletions
diff --git a/fabientestbuild.xml b/fabientestbuild.xml
new file mode 100644
index 0000000000..b0010bde99
--- /dev/null
+++ b/fabientestbuild.xml
@@ -0,0 +1,333 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<project name="nsc" default="build">
+
+ <description>
+ This build-file builds the Scala NSC compiler as well as various related
+ tools. The 'build.TEMPLATE.properties' file must be customised for your own
+ particular system, no other customisation should be required. The build
+ file expects the file structure of a Scala CVS distribution.
+ </description>
+
+ <!-- The system classpath should not be used -->
+ <property name="build.sysclasspath" value="ignore" />
+
+ <!-- Properties in 'build.${user.name}.properties' take precedence over
+ properties in 'build.default.properties'.
+ -->
+ <echo level="verbose">Loading properties from '${basedir}/build.support/build.${user.name}.properties'</echo>
+ <property file="${basedir}/build.support/build.${user.name}.properties"/>
+ <echo level="verbose">Loading properties from '${basedir}/build.support/build.default.properties'</echo>
+ <property file="${basedir}/build.support/build.default.properties"/>
+
+ <!-- A path containing pre-compiled Scala libraries found typically
+ in a Scala distribution.
+ -->
+ <path id="osc.classpath">
+ <pathelement location="${oslib.jar}"/>
+ <pathelement location="${oslib.src}"/>
+ <pathelement location="${ostools.jar}"/>
+ <pathelement location="${fjbg.jar}"/>
+ <pathelement location="${msil.jar}"/>
+ </path>
+
+ <!-- A path containing the Pico library -->
+ <path id="pico.classpath">
+ <pathelement location="${jaco.jar}" />
+ </path>
+
+ <target name="all"
+ description="Builds and tests everything; creates a distribution." />
+
+ <!--
+ #####################################################################
+ INIT
+ #####################################################################
+ -->
+
+ <target name="init.osc">
+ <echo level="verbose">oslib.jar=${oslib.jar}</echo>
+ <echo level="verbose">ostools.jar=${ostools.jar}</echo>
+ <echo level="verbose">fjbg.jar=${fjbg.jar}</echo>
+ <echo level="verbose">msil.jar=${msil.jar}</echo>
+ <fail message="Required classes for OSC are missing; check the 'oslib.jar', 'ostools.jar' properties in 'build.${user.name}.properties'.">
+ <condition><not><and>
+ <available classname="scala.List" classpathref="osc.classpath" />
+ <available classname="scala.runtime.RunTime" classpathref="osc.classpath" />
+ <available classname="scala.tools.scalac.Main" classpathref="osc.classpath" />
+ <available classname="scala.tools.scalac.ant.Scalac" classpathref="osc.classpath" />
+ </and></not></condition>
+ </fail>
+ <fail message="Required classes for OSC are missing; check the 'fjbg.jar' property in 'build.${user.name}.properties'.">
+ <condition><not><and>
+ <available classname="ch.epfl.lamp.fjbg.JField" classpathref="osc.classpath"/>
+ <available classname="ch.epfl.lamp.util.ByteArray" classpathref="osc.classpath"/>
+ </and></not></condition>
+ </fail>
+ <fail message="Required classes for OSC are missing; check the 'msil.jar' property in 'build.${user.name}.properties'.">
+ <condition><not><and>
+ <available classname="ch.epfl.lamp.compiler.msil.Module" classpathref="osc.classpath"/>
+ <available classname="ch.epfl.lamp.compiler.msil.Type" classpathref="osc.classpath"/>
+ </and></not></condition>
+ </fail>
+ <taskdef name="osc" classname="scala.tools.scalac.ant.Scalac" classpathref="osc.classpath"/>
+ </target>
+
+ <target name="init.nsc" depends="build.osc.nstools, build.pico.nslib">
+ <taskdef name="nsc" classname="scala.tools.nsc.ant.NSC$class">
+ <classpath>
+ <pathelement location="${build.osc-nstools.dir}" />
+ <pathelement location="${build.nslib.dir}" />
+ <pathelement location="${oslib.jar}" />
+ <pathelement location="${fjbg.jar}" />
+ <pathelement location="${msil.jar}" />
+ </classpath>
+ </taskdef>
+ </target>
+
+ <target name="init.pico">
+ <echo level="verbose">jaco.jar=${jaco.jar}</echo>
+ <fail message="Required classes for PiCo are missing; check the 'jaco.jar' property in 'build.properties'.">
+ <condition><not><and>
+ <available classname="jaco.pizza.Main" classpathref="pico.classpath"/>
+ <available classname="jaco.pizza.ant.Pico" classpathref="pico.classpath"/>
+ </and></not></condition>
+ </fail>
+ <taskdef name="pico" classname="jaco.pizza.ant.Pico" classpathref="pico.classpath"/>
+ </target>
+
+ <!--
+ #####################################################################
+ BUILD
+ #####################################################################
+ -->
+
+ <target name="build" depends="build.nsc.nstools"
+ description="Builds new Scala (compiler and library)." />
+
+ <target name="build.pico.nslib" depends="init.pico"
+ description="Builds the runtime and pico libraries of the new Scala library.">
+ <mkdir dir="${build.nslib.dir}"/>
+ <pico srcdir="${sources.dir}" destdir="${build.nslib.dir}"
+ scalahack="true">
+ <classpath>
+ <pathelement location="${build.nslib.dir}" />
+ </classpath>
+ <include name="scala/runtime/*.java" />
+ <include name="scala/runtime/**/*.java" />
+ <include name="scala/tools/util/*.java" />
+ <include name="scala/*.java" />
+ <not>
+ <present targetdir="${newsources.dir}" present="both">
+ <mapper type="glob" from="*.scala" to="*.java" />
+ </present>
+ </not>
+ </pico>
+ <delete>
+ <fileset dir="${build.nslib.dir}">
+ <present targetdir="${newsources.dir}" present="both">
+ <mapper type="glob" from="*.class" to="*.scala" />
+ </present>
+ </fileset>
+ </delete>
+ </target>
+
+ <target name="build.osc.nstools" depends="init.osc"
+ description="Builds the new Scala compiler.">
+ <mkdir dir="${build.osc-nstools.dir}"/>
+ <osc srcdir="${sources.dir}" destdir="${build.osc-nstools.dir}"
+ force="changed">
+ <classpath>
+ <pathelement location="${build.osc-nstools.dir}"/>
+ <pathelement location="${oslib.jar}"/>
+ <pathelement location="${fjbg.jar}"/>
+ <pathelement location="${ant.jar}"/>
+ </classpath>
+ <include name="scala/tools/nsc/**/*.scala"/>
+ <include name="scala/runtime/*.scala"/>
+ <include name="scala/runtime/**/*.scala"/>
+ </osc>
+ </target>
+
+ <target name="build.nsc.nslib" depends="init.nsc, build.pico.nslib"
+ description="Builds the Scala library with the new Scala compiler.">
+ <mkdir dir="${build.nslib.dir}"/>
+ <nsc srcdir="${sources.dir}" destdir="${build.nslib.dir}"
+ usepredefs="false"
+ stop="${nsc.stop}" skip="${nsc.skip}" check="${nsc.check}"
+ logging="${nsc.logging}">
+ <classpath>
+ <pathelement location="${build.nslib.dir}"/>
+ <pathelement location="${sources.dir}"/>
+ <pathelement location="${newsources.dir}"/>
+ <pathelement location="${fjbg.jar}"/>
+ </classpath>
+ <include name="scala/Predef.scala"/>
+ <include name="scala/runtime/ScalaRunTime.scala"/>
+ </nsc>
+ <nsc srcdir="${sources.dir}" destdir="${build.nslib.dir}"
+ excludesfile="${nsc.nslib.excludes}"
+ stop="${nsc.stop}" skip="${nsc.skip}" check="${nsc.check}"
+ logging="${nsc.logging}">
+ <classpath>
+ <pathelement location="${build.nslib.dir}"/>
+ <pathelement location="${sources.dir}"/>
+ <pathelement location="${newsources.dir}"/>
+ <pathelement location="${fjbg.jar}"/>
+ </classpath>
+ <include name="scala/**/*.scala"/>
+ <exclude name="scala/Predef.scala"/>
+ <exclude name="scala/runtime/ScalaRunTime.scala"/>
+ <exclude name="scala/tools/**"/>
+ </nsc>
+ </target>
+
+ <target name="build.nsc.nstools" depends="init.nsc, build.nsc.nslib"
+ description="Builds the Scala tools (NSC and Scalap) with the new Scala compiler.">
+ <mkdir dir="${build.nstools.dir}"/>
+ <nsc srcdir="${sources.dir}" destdir="${build.nstools.dir}"
+ excludesfile="${nsc.nstools.excludes}"
+ stop="${nsc.stop}" skip="${nsc.skip}" check="${nsc.check}"
+ logging="${nsc.logging}">
+ <classpath>
+ <pathelement location="${build.nslib.dir}" />
+ <pathelement location="${build.nstools.dir}" />
+ <pathelement location="${fjbg.jar}" />
+ <pathelement location="${ant.jar}" />
+ </classpath>
+ <include name="scala/tools/nsc/**/*.scala" />
+ <exclude name="scala/tools/nsc/ant/*.scala" />
+ </nsc>
+ </target>
+
+ <!--
+ #####################################################################
+ DISTRIB
+ #####################################################################
+ -->
+
+ <condition property="os.unix">
+ <or>
+ <os family="unix" />
+ <os family="mac" />
+ </or>
+ </condition>
+
+ <condition property="os.mac">
+ <os family="mac"/>
+ </condition>
+
+ <condition property="os.win">
+ <os family="windows"/>
+ </condition>
+
+ <target name="distrib"
+ depends="distrib.unix, distrib.mac, distrib.win"
+ description="Creates a (simplified) Scala distribution." />
+
+ <target name="distrib.unix" depends="build" if="os.unix">
+ <tstamp prefix="start"/>
+ <property name="distrib.current.dir" value="${distrib.dir}/${distrib.current.prefix}-${start.DSTAMP}-${start.TSTAMP}"/>
+ <mkdir dir="${distrib.current.dir}/share/scala"/>
+ <mkdir dir="${distrib.current.dir}/share/scala/lib"/>
+ <symlink resource="${distrib.current.dir}/share/scala/lib/" link="${distrib.current.dir}/lib" />
+ <jar destfile="${distrib.current.dir}/share/scala/lib/${distrib.osc-nstools.jar}" basedir="${build.osc-nstools.dir}">
+ <include name="**" />
+ <manifest>
+ <attribute name="Built-By" value="${user.name}"/>
+ <attribute name="Main-Class" value="scala.tools.nsc.Main$class"/>
+ </manifest>
+ </jar>
+ <jar destfile="${distrib.current.dir}/share/scala/lib/${distrib.nstools.jar}"
+ basedir="${build.nstools.dir}">
+ <include name="**" />
+ <manifest>
+ <attribute name="Built-By" value="${user.name}"/>
+ <attribute name="Main-Class" value="scala.tools.nsc.Main$class"/>
+ </manifest>
+ </jar>
+ <jar destfile="${distrib.current.dir}/share/scala/lib/${distrib.nslib.jar}" basedir="${build.nslib.dir}">
+ <include name="**" />
+ <manifest>
+ <attribute name="Built-By" value="${user.name}" />
+ </manifest>
+ </jar>
+ <mkdir dir="${distrib.current.dir}/share/scala/bin" />
+ <symlink resource="${distrib.current.dir}/share/scala/bin/"
+ link="${distrib.current.dir}/bin" />
+ <!-- Set up bin -->
+ <mkdir dir="${distrib.current.dir}/share/scala/man" />
+ <!-- Set up man -->
+ <mkdir dir="${distrib.current.dir}/share/scala/doc" />
+ <!-- Set up doc -->
+ <symlink resource="${distrib.current.dir}/"
+ link="${distrib.dir}/latest" />
+ </target>
+
+ <target name="distrib.mac" depends="distrib.unix, build" if="os.mac">
+
+ </target>
+
+ <target name="distrib.win" depends="build" if="os.win">
+ <fail>Windows distribution is not supported yet.</fail>
+ </target>
+
+ <!--
+ #####################################################################
+ TEST
+ #####################################################################
+ -->
+
+ <target name="test" description="Runs the Scala test suite.">
+ <fail>'test' is not implemented yet.</fail>
+ </target>
+
+ <!--
+ #####################################################################
+ DOCS
+ #####################################################################
+ -->
+
+ <target name="docs" description="Generates all documentation.">
+ <fail>'docs' is not implemented yet.</fail>
+ </target>
+
+ <!--
+ #####################################################################
+ CLEAN
+ #####################################################################
+ -->
+
+ <target name="clean"
+ depends="clean.build, clean.distrib"
+ description="Deletes all generated files, both build and distribution files." />
+
+ <target name="clean.build" description="Deletes all generated build files.">
+ <delete dir="${build.dir}" includeemptydirs="true"
+ quiet="true" failonerror="false" />
+ </target>
+
+ <target name="clean.distrib"
+ description="Deletes all generated distribution files.">
+ <delete dir="${distrib.dir}" includeemptydirs="true"
+ quiet="true" failonerror="false">
+ <fileset>
+ <include name="${distrib.current.prefix}-*" />
+ </fileset>
+ </delete>
+ </target>
+
+ <!--
+ #####################################################################
+ HELP
+ #####################################################################
+ -->
+
+ <target name="help" depends="usage"/>
+
+ <target name="usage" description="Display usage information.">
+ <echo>Execute 'ant -projecthelp' for build file help.</echo>
+ <echo>Execute 'ant -help' for Ant help.</echo>
+ </target>
+
+</project>