diff options
author | michelou <michelou@epfl.ch> | 2008-02-26 15:12:00 +0000 |
---|---|---|
committer | michelou <michelou@epfl.ch> | 2008-02-26 15:12:00 +0000 |
commit | cf6f492cc7a52de05fb21c3acdc054039a301cd6 (patch) | |
tree | 8c39266c0b4b60b2c7ef416eb98a966fa7a5958b /src/build/build-jvm14.xml | |
parent | fe0b578001f1f9a47c6e8d375382194474c75736 (diff) | |
download | scala-cf6f492cc7a52de05fb21c3acdc054039a301cd6.tar.gz scala-cf6f492cc7a52de05fb21c3acdc054039a301cd6.tar.bz2 scala-cf6f492cc7a52de05fb21c3acdc054039a301cd6.zip |
added new Ant build script (beta)
Diffstat (limited to 'src/build/build-jvm14.xml')
-rw-r--r-- | src/build/build-jvm14.xml | 346 |
1 files changed, 346 insertions, 0 deletions
diff --git a/src/build/build-jvm14.xml b/src/build/build-jvm14.xml new file mode 100644 index 0000000000..e3d97f2ff6 --- /dev/null +++ b/src/build/build-jvm14.xml @@ -0,0 +1,346 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- $Id: $ --> + +<project name="scala-jvm14" basedir="../.." default="build"> + +<!-- =========================================================================== +PROPERTIES +============================================================================ --> + + <import file="build-imports.xml"/> + + <!-- Loads custom properties definitions --> + <property file="${scripts.dir}/build-jvm14.properties"/> + + <!-- Configuring how the compiler is run --> + <property name="nsc.log-files" value="no"/> + <property name="nsc.excludes.file" value="${basedir}/build.excludes"/> + <property name="nsc.params" value=""/> + <fail message="Use Ant script 'build-jvm15.xml' for targeting the Java 1.5+ platform"> + <condition> + <not><contains string="${ant.java.version}" substring="1.4"/></not> + </condition> + </fail> + <property name="nsc.target" value="jvm-1.4"/> + + <!-- Sets location of build folders --> + <property name="build.dir" value="${basedir}/build"/> + <property name="locker.dir" value="${build.dir}/locker-jvm14"/> + <property name="quick.dir" value="${build.dir}/quick-jvm14"/> + <property name="strap.dir" value="${build.dir}/strap-jvm14"/> + <property name="dist.dir" value="${basedir}/dists"/> + +<!-- =========================================================================== +SETUP +============================================================================ --> + + <target name="setup.weave"> + <!-- Sets location of RetroWeaver installation --> + <condition property="retroweaver.home" value="${unix.retroweaver.home}"> + <and><os family="unix"/><isset property="unix.retroweaver.home"/></and> + </condition> + <condition property="retroweaver.home" value="${win.retroweaver.home}"> + <and><os family="windows"/><isset property="win.retroweaver.home"/></and> + </condition> + <property name="retroweaver.home" value="${env.RETROWEAVER_HOME}"/> + + <fail message="Set property 'retroweaver.home' to a valid RetroWeaver installation"> + <condition><not><and> + <available file="${retroweaver.home}/lib" type="dir"/> + <available file="${retroweaver.home}/release" type="dir"/> + </and></not></condition> + </fail> + <taskdef name="retroweaver" classname="net.sourceforge.retroweaver.ant.RetroWeaverTask"> + <classpath> + <fileset dir="${retroweaver.home}/lib" includes="**/*.jar"/> + <fileset dir="${retroweaver.home}/release" includes="**/*-all-*jar"/> + </classpath> + </taskdef> + <property name="lib.starr14.jar" value="${build.dir}/starr-jvm14/scala-library.jar"/> + <property name="comp.starr14.jar" value="${build.dir}/starr-jvm14/scala-compiler.jar"/> + <uptodate property="weave.notRequired" + targetfile="${lib.starr14.jar}" + srcfile= "${lib.starr.jar}" + /> + <if> + <not><isset property="weave.notRequired"/></not> + <then> + <mkdir dir="${build.dir}/starr-jvm14"/> + <retroweaver + inputjar="${lib.starr.jar}" + outputjar="${lib.starr14.jar}" + /> + <retroweaver + inputjar="${comp.starr.jar}" + outputjar="${comp.starr14.jar}" + /> + </then> + </if> + </target> + + <target name="setup" depends="init, setup.weave"> + <!-- Removing any outdated stuff --> + <if> + <and> + <available file="${locker.dir}/complete"/> + <not><uptodate targetfile="${locker.dir}/complete"> + <srcfiles dir="${lib.dir}" includes="scala-*.jar"/> + </uptodate></not> + </and> + <then> + <echo level="warning" + message="STARR updated: LOCKER is obsolete and will be rebuilt."/> + <runtarget target="clean.build"/> + </then> + </if> + <!-- Finding out what is available --> + <available property="excludes.avail" file="${nsc.excludes.file}"/> + <condition property="locker.avail"> + <available file="${locker.dir}/complete"/> + </condition> + <!-- Generating version number --> + <property file="${number.file}"/> + <property + name="version.number" + value="${version.major}.${version.minor}.${version.patch}.r${svn.number}-b${time.short}"/> + <!-- And print-out what we are building --> + <echo level="info" message="Build number is '${version.number}'"/> + <echo level="info" message="Built ${time.human} from SVN revision ${svn.number}"/> + </target> + +<!-- =========================================================================== +BUILD +============================================================================ --> + + <target name="newlocker" + depends="clean.unfreeze, build.locker" + description="Rebuilds LOCKER from the current sources"/> + + <!-- Build the locker layer --> + <target name="build.locker" depends="setup" unless="locker.avail"> + <buildlayer + name="locker" + libpath="${lib.starr14.jar}" + comppath="${comp.starr14.jar}" + outputdir="${locker.dir}" + /> + <touch file="${locker.dir}/complete" verbose="no"/> + </target> + + <target name="build" depends="build.quick"/> + + <!-- Build the quick layer --> + <target name="build.quick" depends="build.locker" + description="Builds a quick-test (QUICK) version of the compiler"> + <buildlayer + name="quick" + libpath="${locker.dir}/lib/library" + comppath="${locker.dir}/lib/compiler" + outputdir="${quick.dir}" + buildall="true" + /> + </target> + + <!-- Build the bootstrap layer --> + <target name="build.strap" depends="build.quick"> + <buildlayer + name="strap" + libpath="${quick.dir}/lib/library" + comppath="${quick.dir}/lib/compiler" + outputdir="${strap.dir}" + buildall="true" + /> + </target> + +<!-- =========================================================================== +GENERATES A DISTRIBUTION +============================================================================ --> + + <target name="dist" + depends="clean.build, test, binaries" + description="Creates a (stability-)tested, complete Scala distribution *from scratch*"/> + + <target name="binaries" + depends="setup, build.strap" + description="Creates a binary Scala distribution"> + <property name="dist.current.dir" + value="${dist.dir}/scala-jvm14-${version.number}"/> + <if><and> + <isset property="os.unix"/> + <isset property="dist.resource"/></and> + <then> + <symlink + link="${dist.dir}" + resource="${dist.resource}" overwrite="yes" failonerror="no"/> + <touch file="${dist.dir}/is_symlink" verbose="no"/> + </then></if> + <mkdir dir="${dist.current.dir}"/> + <!-- Copy all requires libraries --> + <mkdir dir="${dist.current.dir}/lib"/> + <property name="ant.version.number" value="[1.6"/> + <!-- version ::= major('.'minor('.'micro('.'qualifier)?)?)? --> + <!-- see http://www2.osgi.org/javadoc/r4/org/osgi/framework/Version.html --> + <propertyregex + property="osgi.version.number" input="${version.number}" + regexp="([^-]*)(-.*)?" select="\1" + /> + <echo level="verbose" message="OSGi version: ${osgi.version.number}"/> + <jar destfile="${dist.current.dir}/lib/${comp.jar.name}"> + <fileset dir="${strap.dir}/lib/compiler"/> + <zipfileset src="${fjbg.jar}"/> + <zipfileset src="${msil.jar}"/> + <manifest> + <attribute name="Signature-Version" value="${version.number}"/> + <attribute name="Built-By" value="${user.name}"/> + <attribute name="Main-Class" value="scala.tools.nsc.Main"/> + <attribute name="Class-Path" value="${lib.jar.name}"/> + <section name="scala/tools/nsc"> + <attribute name="Extension-Name" value="scala.tools.nsc"/> + <attribute name="Specification-Title" value="Scala Compiler"/> + <attribute name="Specification-Version" value="${version.number}"/> + <attribute name="Specification-Vendor" value="${vendor.name}"/> + <attribute name="Implementation-Title" value="scala.tools.nsc"/> + <attribute name="Implementation-Version" value="${version.number}"/> + <attribute name="Implementation-Vendor" value="${vendor.name}"/> + </section> + <attribute name="Bundle-DocURL" value="http://www.scala-lang.org/"/> + <attribute name="Bundle-ManifestVersion" value="2"/> + <attribute name="Bundle-Name" value="Scala Compiler Bundle"/> + <attribute name="Bundle-SymbolicName" value="scala_compiler"/> + <attribute name="Bundle-Version" value="${osgi.version.number}"/> + <attribute name="Bundle-Vendor" value="${vendor.name}"/> + <attribute name="Export-Package" value="scala.tools.ant;version="${osgi.version.number}",scala.tools.nsc;version="${osgi.version.number}",scala.tools.nsc.ast;version="${osgi.version.number}",scala.tools.nsc.ast.parser;version="${osgi.version.number}",scala.tools.nsc.backend;version="${osgi.version.number}",scala.tools.nsc.doc;version="${osgi.version.number}",scala.tools.nsc.io;version="${osgi.version.number}",scala.tools.nsc.matching;version="${osgi.version.number}",scala.tools.nsc.models;version="${osgi.version.number}",scala.tools.nsc.symtab;version="${osgi.version.number}",scala.tools.nsc.symtab.classfile;version="${osgi.version.number}",scala.tools.nsc.symtab.clr;version="${osgi.version.number}",scala.tools.nsc.transform;version="${osgi.version.number}",scala.tools.nsc.typechecker;version="${osgi.version.number}",scala.tools.nsc.util;version="${osgi.version.number}",scala.tools.util;version="${osgi.version.number}""/> + <attribute name="Import-Package" value="org.apachge.ant.tools;version="${ant.version.number}",org.apachge.ant.tools.taskdefs;version="${ant.version.number}",org.apachge.ant.types;version="${ant.version.number}",org.apachge.ant.tools.util;version="${ant.version.number}",org.xml.sax"/> + <attribute name="Bundle-RequiredExecutionEnvironment" value="J2SE-1.4"/> + </manifest> + </jar> + <jar destfile="${dist.current.dir}/lib/${lib.jar.name}"> + <fileset dir="${strap.dir}/lib/library"/> + <fileset dir="${strap.dir}/lib/actors"/> + <manifest> + <attribute name="Signature-Version" value="${version.number}"/> + <attribute name="Built-By" value="${user.name}"/> + <attribute name="Main-Class" value="scala.util.Properties"/> + <section name="scala"> + <attribute name="Extension-Name" value="scala"/> + <attribute name="Specification-Title" value="Scala Library"/> + <attribute name="Specification-Version" value="${version.number}"/> + <attribute name="Specification-Vendor" value="${vendor.name}"/> + <attribute name="Implementation-Title" value="scala"/> + <attribute name="Implementation-Version" value="${version.number}"/> + <attribute name="Implementation-Vendor" value="${vendor.name}"/> + </section> + <attribute name="Bundle-DocURL" value="http://www.scala-lang.org/"/> + <attribute name="Bundle-ManifestVersion" value="2"/> + <attribute name="Bundle-Name" value="Scala Library Bundle"/> + <attribute name="Bundle-SymbolicName" value="scala_library"/> + <attribute name="Bundle-Version" value="${osgi.version.number}"/> + <attribute name="Bundle-Vendor" value="${vendor.name}"/> + <attribute name="Export-Package" value="scala;version="${osgi.version.number}",scala.actors;version="${osgi.version.number}",scala.actors.remote;version="${osgi.version.number}",scala.collection;version="${osgi.version.number}",scala.collection.immutable;version="${osgi.version.number}",scala.collection.jcl;version="${osgi.version.number}",scala.collection.mutable;version="${osgi.version.number}",scala.compat;version="${osgi.version.number}",scala.concurrent;version="${osgi.version.number}",scala.io;version="${osgi.version.number}",scala.mobile;version="${osgi.version.number}",scala.ref;version="${osgi.version.number}",scala.reflect;version="${osgi.version.number}",scala.runtime;version="${osgi.version.number}",scala.testing;version="${osgi.version.number}",scala.text;version="${osgi.version.number}",scala.util;version="${osgi.version.number}",scala.util.automata;version="${osgi.version.number}",scala.util.grammar;version="${osgi.version.number}",scala.util.logging;version="${osgi.version.number}",scala.util.parsing;version="${osgi.version.number}",scala.util.regexp;version="${osgi.version.number}",scala.xml;version="${osgi.version.number}",scala.xml.dtd;version="${osgi.version.number}",scala.xml.factory;version="${osgi.version.number}",scala.xml.parsing;version="${osgi.version.number}",scala.xml.path;version="${osgi.version.number}",scala.xml.pull;version="${osgi.version.number}",scala.xml.transform;version="${osgi.version.number}""/> + <attribute name="Import-Package" value="javax.xml.parsers,org.xml.sax,org.xml.sax.helpers"/> + <attribute name="Bundle-RequiredExecutionEnvironment" value="J2SE-1.4"/> + </manifest> + </jar> + <jar destfile="${dist.current.dir}/lib/${dbc.jar.name}"> + <fileset dir="${strap.dir}/lib/dbc"/> + <manifest> + <attribute name="Signature-Version" value="${version.number}"/> + <attribute name="Built-By" value="${user.name}"/> + <attribute name="Class-Path" value="${lib.jar.name}"/> + <section name="scala/dbc"> + <attribute name="Extension-Name" value="scala.dbc"/> + <attribute name="Specification-Title" value="Scala DBC Library"/> + <attribute name="Specification-Version" value="${version.number}"/> + <attribute name="Specification-Vendor" value="${vendor.name}"/> + <attribute name="Implementation-Title" value="scala.dbc"/> + <attribute name="Implementation-Version" value="${version.number}"/> + <attribute name="Implementation-Vendor" value="${vendor.name}"/> + </section> + <attribute name="Bundle-DocURL" value="http://www.scala-lang.org/"/> + <attribute name="Bundle-ManifestVersion" value="2"/> + <attribute name="Bundle-Name" value="Scala DBC Library Bundle"/> + <attribute name="Bundle-SymbolicName" value="scala_dbc_library"/> + <attribute name="Bundle-Version" value="${osgi.version.number}"/> + <attribute name="Bundle-Vendor" value="${vendor.name}"/> + <attribute name="Export-Package" value="scala.dbc;version="${osgi.version.number}",scala.dbc.datatype;version="${osgi.version.number}",scala.dbc.exception;version="${osgi.version.number}",scala.dbc.result;version="${osgi.version.number}",scala.dbc.statement;version="${osgi.version.number}",scala.dbc.statement.expression;version="${osgi.version.number}",scala.dbc.syntax;version="${osgi.version.number}",scala.dbc.value;version="${osgi.version.number}",scala.dbc.vendor;version="${osgi.version.number}""/> + <attribute name="Import-Package" value="scala;version="${osgi.version.number}",scala.compat;version="${osgi.version.number}""/> + <attribute name="Bundle-RequiredExecutionEnvironment" value="J2SE-1.4"/> + </manifest> + </jar> + <jar destfile="${dist.current.dir}/lib/${partest.jar.name}"> + <fileset dir="${strap.dir}/lib/partest"/> + <manifest> + <attribute name="Signature-Version" value="${version.number}"/> + <attribute name="Built-By" value="${user.name}"/> + <attribute name="Main-Class" value="scala.tools.partest.TestRunner"/> + <attribute name="Class-Path" value="${lib.jar.name}"/> + <section name="scala/tools/partest"> + <attribute name="Extension-Name" value="scala.tools.partest"/> + <attribute name="Specification-Title" value="Scala Test Utility"/> + <attribute name="Specification-Version" value="${version.number}"/> + <attribute name="Specification-Vendor" value="${vendor.name}"/> + <attribute name="Implementation-Title" value="scala.tools.partest"/> + <attribute name="Implementation-Version" value="${version.number}"/> + <attribute name="Implementation-Vendor" value="${vendor.name}"/> + </section> + <attribute name="Bundle-DocURL" value="http://www.scala-lang.org/"/> + <attribute name="Bundle-ManifestVersion" value="2"/> + <attribute name="Bundle-Name" value="Scala Test Bundle"/> + <attribute name="Bundle-SymbolicName" value="scala_compiler"/> + <attribute name="Bundle-Version" value="${osgi.version.number}"/> + <attribute name="Bundle-Vendor" value="${vendor.name}"/> + <attribute name="Export-Package" value="scala.tools.partest;version="${osgi.version.number}",scala.tools.partest.utils;version="${osgi.version.number}""/> + <attribute name="Import-Package" value="javax.swing"/> + <attribute name="Bundle-RequiredExecutionEnvironment" value="J2SE-1.4"/> + </manifest> + </jar> + + <!-- build source jars --> + <mkdir dir="${dist.current.dir}/src"/> + <jar + destfile="${dist.current.dir}/src/${libsrc.jar.name}"> + <fileset dir="${src.dir}/library"/> + <fileset dir="${src.dir}/actors"/> + </jar> + <jar + destfile="${dist.current.dir}/src/${dbcsrc.jar.name}" + basedir="${src.dir}/dbc" + includes="**/*.scala" + /> + <jar + destfile="${dist.current.dir}/src/${parsrc.jar.name}" + basedir="${src.dir}/partest" + includes="**/*.scala" + /> + <jar + destfile="${dist.current.dir}/src/${compsrc.jar.name}" + basedir="${src.dir}/compiler" + includes="**/*.scala" + /> + + <!-- Copy executable files --> + <mkdir dir="${dist.current.dir}/bin"/> + <copy todir="${dist.current.dir}/bin"> + <fileset dir="${strap.dir}/bin"/> + </copy> + <chmod perm="ugo+rx" file="${dist.current.dir}/bin/${scalac.exec.name}"/> + <chmod perm="ugo+rx" file="${dist.current.dir}/bin/${scala.exec.name}"/> + <chmod perm="ugo+rx" file="${dist.current.dir}/bin/${scaladoc.exec.name}"/> + <chmod perm="ugo+rx" file="${dist.current.dir}/bin/${fsc.exec.name}"/> + <!-- Recreate the 'latest' link to point to this distribution --> + <if><isset property="os.win"/> + <then> + <copy todir="${dist.dir}/latest-jvm14"> + <fileset dir="${dist.current.dir}"/> + </copy> + </then> + <else> + <symlink + link="${dist.dir}/latest-jvm14" + resource="${dist.current.dir}" + overwrite="yes" failonerror="no"/> + </else> + </if> + </target> + +</project> |