summaryrefslogtreecommitdiff
path: root/src/build
diff options
context:
space:
mode:
authorGilles Dubochet <gilles.dubochet@epfl.ch>2008-04-11 15:05:44 +0000
committerGilles Dubochet <gilles.dubochet@epfl.ch>2008-04-11 15:05:44 +0000
commit0b89f667d285ce2ba52be39885e4584ae0785feb (patch)
tree69423f13d77e40fa37e0934fa856be0557f24e4d /src/build
parent5df2f76bb8f89f0537fa0098ad63f44fe24e5836 (diff)
downloadscala-0b89f667d285ce2ba52be39885e4584ae0785feb.tar.gz
scala-0b89f667d285ce2ba52be39885e4584ae0785feb.tar.bz2
scala-0b89f667d285ce2ba52be39885e4584ae0785feb.zip
Added what is needed to properly build, test an...
Added what is needed to properly build, test and package a distribution for jvm 1.4.
Diffstat (limited to 'src/build')
-rw-r--r--src/build/four.xml325
1 files changed, 325 insertions, 0 deletions
diff --git a/src/build/four.xml b/src/build/four.xml
new file mode 100644
index 0000000000..5b1579a684
--- /dev/null
+++ b/src/build/four.xml
@@ -0,0 +1,325 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="sabbus-four">
+
+ <description>
+ SuperSabbus extension for the Scala library and compiler targeted for the JVM 1.4. THIS FILE IS NOT STAND-ALONE AND SHOULD ONLY BE USED THROUGH ENTRY POINTS IN SUPERSABBUS.
+ </description>
+
+ <!-- TODO: Use a 1.4 Java standard library to compile against, instead of that of the JVM running the script. -->
+ <!-- TODO: Use a 1.4 Java standard library to run partests. Add a bootclasspath option to partest to allow that. -->
+
+<!-- ===========================================================================
+PROPERTIES
+============================================================================ -->
+
+ <property name="build-four.dir" value="${build.dir}/four"/>
+ <property name="build-four-src.dir" value="${build.dir}/four-src"/>
+ <property name="build-four-pack.dir" value="${build.dir}/four-pack"/>
+ <property name="build-four-docs.dir" value="${build.dir}/four-docs"/>
+
+<!-- ===========================================================================
+JAVA 1.4 LIBRARY AND COMPILER BUILD (FOUR)
+============================================================================ -->
+
+ <target name="four.start"/>
+
+ <target name="four.src" depends="four.start">
+ <mkdir dir="${build-four-src.dir}"/>
+ <sync todir="${build-four-src.dir}">
+ <fileset dir="${src.dir}/library"/>
+ </sync>
+ <copy todir="${build-four-src.dir}">
+ <fileset dir="${src.dir}/jvm14-library"/>
+ </copy>
+ </target>
+
+ <target name="four.lib" depends="four.src">
+ <stopwatch name="four.lib.timer"/>
+ <mkdir dir="${build-four.dir}/classes/library"/>
+ <javac
+ srcdir="${build-four-src.dir}"
+ destdir="${build-four.dir}/classes/library"
+ classpath="${build-four.dir}/classes/library"
+ includes="**/*.java"
+ target="1.4" source="1.4"/>
+ <javac
+ srcdir="${src.dir}/actors"
+ destdir="${build-four.dir}/classes/library"
+ classpath="${build-four.dir}/classes/library"
+ includes="**/*.java"
+ target="1.4" source="1.4"/>
+ <scalac
+ srcdir="${build-four-src.dir}"
+ destdir="${build-four.dir}/classes/library"
+ classpath="${build-four.dir}/classes/library"
+ sourcepath="${build-four-src.dir}"
+ target="jvm-1.4">
+ <include name="scala/Predef.scala"/>
+ </scalac>
+ <scalac
+ srcdir="${build-four-src.dir}"
+ destdir="${build-four.dir}/classes/library"
+ classpath="${build-four.dir}/classes/library"
+ target="jvm-1.4">
+ <include name="**/*.scala"/>
+ <exclude name="scala/Predef.scala"/>
+ </scalac>
+ <scalac
+ srcdir="${src.dir}/actors"
+ destdir="${build-four.dir}/classes/library"
+ classpath="${build-four.dir}/classes/library"
+ target="jvm-1.4">
+ <include name="**/*.scala"/>
+ </scalac>
+ <scalac
+ srcdir="${src.dir}/dbc"
+ destdir="${build-four.dir}/classes/library"
+ classpath="${build-four.dir}/classes/library"
+ target="jvm-1.4">
+ <include name="**/*.scala"/>
+ </scalac>
+ <propertyfile file="${build-four.dir}/classes/library/library.properties">
+ <entry key="version.number" value="${version.number}"/>
+ <entry key="copyright.string" value="${copyright.string}"/>
+ </propertyfile>
+ <copy todir="${build-four.dir}/classes/library">
+ <fileset dir="${build-four-src.dir}">
+ <include name="**/*.tmpl"/>
+ <include name="**/*.xml"/>
+ <include name="**/*.js"/>
+ <include name="**/*.css"/>
+ </fileset>
+ </copy>
+ <touch file="${build-four.dir}/library.complete" verbose="no"/>
+ <stopwatch name="four.lib.timer" action="total"/>
+ </target>
+
+ <target name="four.comp" depends="four.lib">
+ <stopwatch name="four.comp.timer"/>
+ <mkdir dir="${build-four.dir}/classes/compiler"/>
+ <scalac
+ srcdir="${src.dir}/compiler"
+ destdir="${build-four.dir}/classes/compiler"
+ target="jvm-1.4">
+ <include name="**/*.scala"/>
+ <classpath>
+ <pathelement location="${build-four.dir}/classes/library"/>
+ <pathelement location="${build-four.dir}/classes/compiler"/>
+ <pathelement location="${fjbg.jar}"/>
+ <pathelement location="${msil.jar}"/>
+ <pathelement location="${jline.jar}"/>
+ <pathelement location="${ant.jar}"/>
+ </classpath>
+ </scalac>
+ <propertyfile file="${build-four.dir}/classes/compiler/compiler.properties">
+ <entry key="version.number" value="${version.number}"/>
+ <entry key="copyright.string" value="${copyright.string}"/>
+ </propertyfile>
+ <copy todir="${build-four.dir}/classes/compiler">
+ <fileset dir="${src.dir}/compiler">
+ <include name="**/*.tmpl"/>
+ <include name="**/*.xml"/>
+ <include name="**/*.js"/>
+ <include name="**/*.css"/>
+ </fileset>
+ </copy>
+ <touch file="${build-four.dir}/compiler.complete" verbose="no"/>
+ <stopwatch name="four.comp.timer" action="total"/>
+ </target>
+
+ <target name="four.done" depends="four.comp"/>
+
+ <target name="four.clean" depends="four-pack.clean">
+ <delete dir="${build-four.dir}" includeemptydirs="yes" quiet="yes" failonerror="no"/>
+ <delete dir="${build-four-src.dir}" includeemptydirs="yes" quiet="yes" failonerror="no"/>
+ </target>
+
+<!-- ===========================================================================
+PACKED FOUR BUILD (FOUR-PACK)
+============================================================================ -->
+
+ <target name="four-pack.start" depends="four.done"/>
+
+ <target name="four-pack.lib" depends="four-pack.start">
+ <mkdir dir="${build-four-pack.dir}/lib"/>
+ <jar destfile="${build-four-pack.dir}/lib/scala-library.jar">
+ <fileset dir="${build-four.dir}/classes/library">
+ <exclude name="scala/dbc/**"/>
+ </fileset>
+ </jar>
+ <jar destfile="${build-four-pack.dir}/lib/scala-dbc.jar">
+ <fileset dir="${build-four.dir}/classes/library">
+ <include name="scala/dbc/**"/>
+ </fileset>
+ </jar>
+ </target>
+
+ <target name="four-pack.comp" depends="four-pack.lib">
+ <mkdir dir="${build-four-pack.dir}/lib"/>
+ <jar destfile="${build-four-pack.dir}/lib/scala-compiler.jar">
+ <fileset dir="${build-four.dir}/classes/compiler"/>
+ <zipfileset src="${fjbg.jar}"/>
+ <zipfileset src="${msil.jar}"/>
+ </jar>
+ </target>
+
+ <target name="four-pack.bin" depends="four-pack.comp">
+ <taskdef name="four-pack-bin" classname="scala.tools.ant.ScalaTool">
+ <classpath>
+ <pathelement location="${build-four-pack.dir}/lib/scala-library.jar"/>
+ <pathelement location="${build-four-pack.dir}/lib/scala-compiler.jar"/>
+ </classpath>
+ </taskdef>
+ <mkdir dir="${build-four-pack.dir}/bin"/>
+ <four-pack-bin
+ file="${build-four-pack.dir}/bin/scala"
+ class="scala.tools.nsc.MainGenericRunner"
+ javaFlags="${java.flags}"/>
+ <four-pack-bin
+ file="${build-four-pack.dir}/bin/scalac"
+ class="scala.tools.nsc.Main"
+ javaFlags="${java.flags}"/>
+ <four-pack-bin
+ file="${build-four-pack.dir}/bin/scaladoc"
+ class="scala.tools.nsc.ScalaDoc"
+ javaFlags="${java.flags}"/>
+ <four-pack-bin
+ file="${build-four-pack.dir}/bin/fsc"
+ class="scala.tools.nsc.CompileClient"
+ javaFlags="${java.flags}"/>
+ <chmod perm="ugo+rx" file="${build-four-pack.dir}/bin/scala"/>
+ <chmod perm="ugo+rx" file="${build-four-pack.dir}/bin/scalac"/>
+ <chmod perm="ugo+rx" file="${build-four-pack.dir}/bin/scaladoc"/>
+ <chmod perm="ugo+rx" file="${build-four-pack.dir}/bin/fsc"/>
+ <touch file="${build-four-pack.dir}/bin.complete" verbose="no"/>
+ </target>
+
+ <target name="four-pack.done" depends="four-pack.bin"/>
+
+ <target name="four-pack.clean">
+ <delete dir="${build-four-pack.dir}" includeemptydirs="yes" quiet="yes" failonerror="no"/>
+ </target>
+
+<!-- ===========================================================================
+DOCUMENTATION
+============================================================================ -->
+
+ <target name="four-docs.start" depends="four-pack.done"/>
+
+ <target name="four-docs.lib" depends="four-docs.start">
+ <stopwatch name="four-docs.lib.timer"/>
+ <mkdir dir="${build-four-docs.dir}/library"/>
+ <scaladoc
+ destdir="${build-four-docs.dir}/library"
+ windowtitle="Scala Library for JVM 1.4"
+ doctitle="Scala ${version.number} API"
+ classpathref="pack.classpath">
+ <src>
+ <files includes="${src.dir}/dbc"/>
+ <files includes="${src.dir}/actors"/>
+ <files includes="${build-four-src.dir}"/>
+ </src>
+ <include name="**/*.scala"/>
+ </scaladoc>
+ <touch file="${build-four-docs.dir}/lib.complete" verbose="no"/>
+ <stopwatch name="four-docs.lib.timer" action="total"/>
+ </target>
+
+ <target name="four-docs.done" depends="four-docs.lib"/>
+
+ <target name="four-docs.clean">
+ <delete dir="${build-four-docs.dir}" includeemptydirs="yes" quiet="yes" failonerror="no"/>
+ </target>
+
+<!-- ===========================================================================
+BOOTRAPING TEST AND TEST SUITE
+============================================================================ -->
+
+ <target name="four-test.suite" depends="four-pack.done">
+ <partest showlog="yes" erroronfailed="no">
+ <classpath>
+ <pathelement location="${build-four-pack.dir}/lib/scala-library.jar"/>
+ <pathelement location="${build-four-pack.dir}/lib/scala-compiler.jar"/>
+ <fileset dir="${test.dir}/files/lib" includes="*.jar"/>
+ </classpath>
+ <postests dir="${test.dir}/files/pos" includes="*.scala"/>
+ <negtests dir="${test.dir}/files/neg" includes="*.scala"/>
+ <runtests dir="${test.dir}/files">
+ <include name="run/**/*.scala"/>
+ <include name="jvm/**/*.scala"/>
+ </runtests>
+ <residenttests dir="${test.dir}/files/res" includes="*.res"/>
+ </partest>
+ </target>
+
+ <target name="four-test.done" depends="four-test.suite"/>
+
+<!-- ===========================================================================
+DISTRIBUTION
+============================================================================ -->
+
+ <target name="four-dist.start" depends="four-pack.done, four-docs.done">
+ <property name="four-dist.dir" value="${dists.dir}/scala-jvm4-${version.number}"/>
+ </target>
+
+ <target name="four-dist.base" depends="four-dist.start">
+ <mkdir dir="${four-dist.dir}/lib"/>
+ <copy toDir="${four-dist.dir}/lib">
+ <fileset dir="${build-four-pack.dir}/lib"/>
+ </copy>
+ <mkdir dir="${four-dist.dir}/bin"/>
+ <copy toDir="${four-dist.dir}/bin">
+ <fileset dir="${build-four-pack.dir}/bin"/>
+ </copy>
+ <chmod perm="ugo+rx" file="${four-dist.dir}/bin/scala"/>
+ <chmod perm="ugo+rx" file="${four-dist.dir}/bin/scalac"/>
+ <chmod perm="ugo+rx" file="${four-dist.dir}/bin/scaladoc"/>
+ <chmod perm="ugo+rx" file="${four-dist.dir}/bin/fsc"/>
+ </target>
+
+ <target name="four-dist.doc" depends="four-dist.base">
+ <mkdir dir="${four-dist.dir}/doc/api"/>
+ <copy toDir="${four-dist.dir}/doc/api">
+ <fileset dir="${build-four-docs.dir}/library"/>
+ </copy>
+ </target>
+
+ <target name="four-dist.src" depends="four-dist.doc">
+ <mkdir dir="${four-dist.dir}/src"/>
+ <jar destfile="${four-dist.dir}/src/scala-library-src.jar">
+ <fileset dir="${build-four-src.dir}"/>
+ <fileset dir="${src.dir}/actors"/>
+ </jar>
+ <jar destfile="${four-dist.dir}/src/scala-dbc-src.jar">
+ <fileset dir="${src.dir}/dbc"/>
+ </jar>
+ <jar destfile="${four-dist.dir}/src/scala-compiler-src.jar">
+ <fileset dir="${src.dir}/compiler"/>
+ </jar>
+ </target>
+
+ <target name="four-dist.done" depends="four-dist.src"/>
+
+<!-- ===========================================================================
+TEST AND DISTRIBUTION BUNDLE (ALL)
+============================================================================ -->
+
+ <target name="four-all.done" depends="four-dist.done, four-test.done"/>
+
+ <target name="four-all.clean" depends="four-docs.clean, four.clean"/>
+
+<!-- ===========================================================================
+MISCELLANEOUS
+============================================================================ -->
+
+ <target name="graph.init">
+ <echo message="${basedir}/lib/ant/vizant.jar"/>
+ <taskdef name="vizant" classname="vizant.Vizant" classpath="${basedir}/../../lib/ant/vizant.jar"/>
+ </target>
+
+ <target name="graph.four" depends="graph.init">
+ <vizant antfile="${ant.file}" outfile="${ant.project.name}.dot"/>
+ </target>
+
+</project>