summaryrefslogtreecommitdiff
path: root/build.examples.xml
diff options
context:
space:
mode:
authormichelou <michelou@epfl.ch>2006-03-08 17:43:52 +0000
committermichelou <michelou@epfl.ch>2006-03-08 17:43:52 +0000
commitb0c609cf01519bbf02aa762f758ab5047c578f81 (patch)
treeacc36997d977b261a7065b81e5d26737ca946cf3 /build.examples.xml
parentc36fefb5da67593eaf4d03a4d87dba49052e48c0 (diff)
downloadscala-b0c609cf01519bbf02aa762f758ab5047c578f81.tar.gz
scala-b0c609cf01519bbf02aa762f758ab5047c578f81.tar.bz2
scala-b0c609cf01519bbf02aa762f758ab5047c578f81.zip
added file build.examples.xml to build/run Scal...
added file build.examples.xml to build/run Scala examples
Diffstat (limited to 'build.examples.xml')
-rw-r--r--build.examples.xml270
1 files changed, 270 insertions, 0 deletions
diff --git a/build.examples.xml b/build.examples.xml
new file mode 100644
index 0000000000..143b16d2b1
--- /dev/null
+++ b/build.examples.xml
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id: build.xml 6625 2006-03-08 10:08:40Z michelou $ -->
+
+<project name="scala-examples" default="build">
+
+ <description>
+ I am SABBUS for ${ant.project.name}, the build system for the Scala compiler and core
+ library. Please check the 'docs/README' file for more information about me.
+ </description>
+
+ <echo level="info" message="Running SABBUS for ${ant.project.name}..."/>
+
+<!-- ===========================================================================
+PROPERTIES
+============================================================================ -->
+
+ <property environment="env"/>
+
+ <!-- Prevents system classpath from being used -->
+ <property name="build.sysclasspath" value="ignore"/>
+
+ <!-- Base properties -->
+ <property name="src.dir" value="${basedir}/docs"/>
+ <property name="src.examples.dir" value="${src.dir}/examples"/>
+ <property name="lib.dir" value="${basedir}/lib"/>
+ <!-- User properties -->
+ <property file="${basedir}/build.examples.properties"/>
+ <!-- Location of pre-compiled libraries properties -->
+ <property name="scala.lib.jar" value="${lib.dir}/scala-library.jar"/>
+ <property name="scala.comp.jar" value="${lib.dir}/scala-compiler.jar"/>
+ <property name="jaco.jar" value="${lib.dir}/jaco.jar"/>
+ <property name="fjbg.name" value="fjbg.jar"/>
+ <property name="fjbg.jar" value="${lib.dir}/${fjbg.name}"/>
+ <property name="ant.jar" value="${ant.home}/lib/ant.jar"/>
+ <property name="ant-contrib.jar" value="${lib.dir}/ant-contrib.jar"/>
+ <!-- -->
+ <property name="build.dir" value="${basedir}/build"/>
+ <property name="build.examples.dir" value="${build.dir}/examples"/>
+ <!-- tbd -->
+ <property name="excludes.compile"
+ value="**/*current.*,**/fors.*,**/parsers2.*,**/typeinf.*"/>
+ <property name="excludes.run"
+ value="**/Parsers.*"/>
+
+<!-- ===========================================================================
+INITIALISATION
+============================================================================ -->
+
+ <target name="init" unless="init.avail">
+ <tstamp prefix="start">
+ <format
+ property="human-time"
+ pattern="EEEE, d MMMM yyyy, HH:mm:ss (zz)"
+ />
+ </tstamp>
+ <!-- Testing if everything is in place -->
+ <echo level="verbose" message="scala.lib.jar=${scala.lib.jar}"/>
+ <fail message="Scala library in 'lib/' is not available">
+ <condition><not><and>
+ <available
+ classname="scala.Predef"
+ classpath="${scala.lib.jar}"
+ />
+ <available
+ classname="scala.List"
+ classpath="${scala.lib.jar}"
+ />
+ <available
+ classname="scala.runtime.ObjectRef"
+ classpath="${scala.lib.jar}"
+ />
+ </and></not></condition>
+ </fail>
+ <echo level="verbose" message="scala.comp.jar=${scala.comp.jar}"/>
+ <fail message="Scala compiler in 'lib/' is not available">
+ <condition><not>
+ <available
+ classname="scala.tools.ant.Scalac"
+ classpath="${scala.comp.jar}:${scala.lib.jar}"
+ />
+ </not></condition>
+ </fail>
+ <echo level="verbose" message="fjbg.jar=${fjbg.jar}"/>
+ <fail message="FJBG library in 'lib/' is not available">
+ <condition><not>
+ <available
+ classname="ch.epfl.lamp.fjbg.JCode"
+ classpath="${fjbg.jar}"
+ />
+ </not></condition>
+ </fail>
+ <echo level="verbose" message="jaco.jar=${jaco.jar}"/>
+ <fail message="JaCo compiler in 'lib/' is not available">
+ <condition><not>
+ <available classname="jaco.pizza.Main" classpath="${jaco.jar}"/>
+ </not></condition>
+ </fail>
+ <echo level="verbose" message="ant.jar=${ant.jar}"/>
+ <echo level="verbose" message="ant-contrib.jar=${ant-contrib.jar}"/>
+ <fail message="Additional Ant tasks in 'lib/' is not available">
+ <condition><not>
+ <available
+ classname="net.sf.antcontrib.AntContribVersion"
+ classpath="${ant-contrib.jar}"
+ />
+ </not></condition>
+ </fail>
+ <!-- Creating class-pathes -->
+ <path id="common.classpath">
+ <pathelement location="${fjbg.jar}"/>
+ </path>
+ <path id="scala.classpath">
+ <pathelement location="${scala.lib.jar}"/>
+ <pathelement location="${scala.comp.jar}"/>
+ <path refid="common.classpath"/>
+ </path>
+ <!-- Creating boot-level tasks -->
+ <taskdef resource="net/sf/antcontrib/antlib.xml">
+ <classpath>
+ <pathelement location="${ant-contrib.jar}"/>
+ </classpath>
+ </taskdef>
+ <!-- Finding out what system architecture is being used -->
+ <condition property="os.win">
+ <os family="windows"/>
+ </condition>
+ <if><isset property="os.win"/>
+ <then>
+ <exec
+ executable="cygpath"
+ vmlauncher="no"
+ errorproperty="cygpath.err"
+ outputproperty="cygpath.out"
+ >
+ <arg value="--windir"/>
+ </exec>
+ <condition property="os.cygwin">
+ <equals arg1="${cygpath.err}" arg2=""/>
+ </condition>
+ </then>
+ </if>
+ <condition property="os.unix">
+ <or>
+ <os family="unix"/>
+ <os family="mac"/>
+ <isset property="os.cygwin"/>
+ </or>
+ </condition>
+ <if><isset property="os.cygwin"/>
+ <then><property name="os.type" value="Cygwin"/></then>
+ <elseif><isset property="os.win"/>
+ <then><property name="os.type" value="Windows"/></then>
+ </elseif>
+ <elseif><isset property="os.unix"/>
+ <then><property name="os.type" value="UNIX"/></then>
+ </elseif>
+ <else>
+ <fail>System environment could not be determined</fail>
+ </else>
+ </if>
+ <echo
+ level="info"
+ message="OS: ${os.type} (${os.name} ${os.arch} ${os.version});"
+ />
+ <echo
+ level="info"
+ message="Java: ${java.version} ('${java.home}');"
+ />
+ <echo
+ level="info"
+ message="JVM: ${java.vm.name} ${java.vm.version};"
+ />
+ <echo
+ level="info"
+ message="Ant: ${ant.version}."
+ />
+ <property name="init.avail" value="yes"/>
+ </target>
+
+ <target name="setup" depends="init">
+ <!-- Creating boot-level tasks -->
+ <taskdef name="scalac"
+ classname="scala.tools.ant.Scalac"
+ classpathref="scala.classpath"/>
+ <property name="init.avail" value="yes"/>
+ </target>
+
+<!-- ===========================================================================
+BUILD
+============================================================================ -->
+
+ <target name="build" depends="setup">
+ <mkdir dir="${build.dir}"/>
+ <echo level="verbose">src.dir=${src.dir}</echo>
+ <pathconvert property="list" pathsep=",">
+ <path>
+ <fileset dir="${src.dir}" includes="examples/*.scala"
+ excludes="${excludes.compile}"/>
+ </path>
+ <mapper>
+ <globmapper from="${src.dir}/*" to="*"/>
+ </mapper>
+ </pathconvert>
+ <for list="${list}" param="file">
+ <sequential>
+ <scalac srcdir="${src.dir}"
+ destdir="${build.dir}">
+ <classpath>
+ <pathelement location="${scala.lib.jar}"/>
+ <pathelement location="${build.dir}"/>
+ </classpath>
+ <include name="@{file}"/>
+ </scalac>
+ </sequential>
+ </for>
+ </target>
+
+<!-- ===========================================================================
+RUN
+============================================================================ -->
+
+ <target name="run" depends="build">
+ <pathconvert property="list" pathsep=",">
+ <path>
+ <fileset dir="${src.dir}" includes="examples/*.scala"
+ excludes="${excludes.run}"/>
+ </path>
+ <mapper>
+ <globmapper from="${src.dir}/*" to="*"/>
+ </mapper>
+ </pathconvert>
+ <for list="${list}" param="file">
+ <sequential>
+ <var name="classname" unset="true"/>
+ <basename property="classname" file="@{file}" suffix=".scala"/>
+ <echo>Executing Scala program examples.${classname}..</echo>
+ <java classname="examples.${classname}" fork="true"
+ output="${build.examples.dir}/${classname}.log"
+ error="${build.examples.dir}/${classname}.log"
+ append="true">
+ <classpath>
+ <pathelement location="${scala.lib.jar}"/>
+ <pathelement location="${build.dir}"/>
+ </classpath>
+ </java>
+ </sequential>
+ </for>
+ </target>
+
+<!-- ===========================================================================
+CLEAN
+============================================================================ -->
+
+ <macrodef name="remove">
+ <attribute name="dir"/>
+ <sequential>
+ <delete
+ dir="@{dir}"
+ includeemptydirs="yes"
+ quiet="yes"
+ failonerror="no"
+ />
+ </sequential>
+ </macrodef>
+
+ <target name="clean" description="Removes all build examples">
+ <remove dir="${build.examples.dir}"/>
+ </target>
+
+</project>