diff options
-rw-r--r-- | src/build/four.xml | 428 | ||||
-rw-r--r-- | src/build/old_sabbus.xml | 2012 | ||||
-rw-r--r-- | src/jvm14-library/scala/BigDecimal.scala | 269 | ||||
-rw-r--r-- | src/jvm14-library/scala/runtime/RichString.scala | 266 | ||||
-rw-r--r-- | src/jvm14-library/scala/util/parsing/json/JSON.scala | 95 | ||||
-rw-r--r-- | src/jvm14-library/scala/util/parsing/json/Parser.scala | 50 |
6 files changed, 0 insertions, 3120 deletions
diff --git a/src/build/four.xml b/src/build/four.xml deleted file mode 100644 index ab2dd1003f..0000000000 --- a/src/build/four.xml +++ /dev/null @@ -1,428 +0,0 @@ -<?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"> - <!-- simple sync & copy overwrite is not very nice, because overwritten files - will then have a new timestamp, and be recompiled --> - <mkdir dir="${build-four-src.dir}"/> - <copy todir="${build-four-src.dir}" overwrite="true"> - <fileset dir="${src.dir}/library"> - <and> - <present present="srconly" targetdir="${src.dir}/jvm14-library"/> - <different targetdir="${build-four-src.dir}" ignoreFileTimes="true"/> - </and> - </fileset> - <fileset dir="${src.dir}/jvm14-library"> - <different targetdir="${build-four-src.dir}" ignoreFileTimes="true"/> - </fileset> - </copy> - <delete verbose="true"> - <difference> - <fileset dir="${build-four-src.dir}"/> - <union> - <fileset dir="${build-four-src.dir}"> - <present targetdir="${src.dir}/jvm14-library"/> - </fileset> - <fileset dir="${build-four-src.dir}"> - <present targetdir="${src.dir}/library"/> - </fileset> - </union> - </difference> - </delete> - </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> - <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> - <stopwatch name="four.comp.timer" action="total"/> - </target> - - <target name="four.partest" depends="four.comp"> - <stopwatch name="four.partest.timer"/> - <mkdir dir="${build-four.dir}/classes/partest"/> - <javac - srcdir="${src.dir}/partest" - destdir="${build-four.dir}/classes/partest" - target="1.4" source="1.4"> - <classpath> - <pathelement location="${build-four.dir}/classes/library"/> - <pathelement location="${build-four.dir}/classes/compiler"/> - <pathelement location="${build-four.dir}/classes/partest"/> - </classpath> - <include name="**/*.java"/> - </javac> - <scalac - srcdir="${src.dir}/partest" - destdir="${build-four.dir}/classes/partest" - target="jvm-1.4"> - <include name="**/*.scala"/> - <classpath> - <pathelement location="${build-four.dir}/classes/library"/> - <pathelement location="${build-four.dir}/classes/compiler"/> - <pathelement location="${build-four.dir}/classes/partest"/> - <pathelement location="${ant.jar}"/> - </classpath> - </scalac> - <copy todir="${build-four.dir}/classes/partest"> - <fileset dir="${src.dir}/partest"> - <include name="**/*.xml"/> - </fileset> - </copy> - <stopwatch name="four.partest.timer" action="total"/> - </target> - - <target name="four.done" depends="four.partest"/> - - <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.partest" depends="four-pack.comp"> - <mkdir dir="${build-four-pack.dir}/lib"/> - <jar destfile="${build-four-pack.dir}/lib/scala-partest.jar"> - <fileset dir="${build-four.dir}/classes/partest"/> - </jar> - </target> - - <target name="four-pack.bin" depends="four-pack.partest"> - <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"/> - </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> - <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> - -<!-- =========================================================================== -TEST SUITE WHEN RUN ON JVM 1.5 -================================================================================ -This tests how a compiler, library and tests that where targeted for JVM 1.4 -work on a JVM 1.5. -============================================================================ --> - - <target name="four-test.suite" depends="four-pack.done"> - <partest showlog="yes" erroronfailed="yes" scalacopts="-target:jvm-1.4" - javacmd="${java.home}/bin/java -Xmx1024M" javaccmd="${javac.cmd}"> - <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"/> - </runtests> - <jvmtests dir="${test.dir}/files/jvm" includes="*.scala"/> - <residenttests dir="${test.dir}/files/res" includes="*.res"/> - </partest> - </target> - - <target name="four-test.done" depends="four-test.suite"/> - -<!-- =========================================================================== -TEST SUITE WHEN RUN ON JVM 1.4 (standalone) -================================================================================ -This tests how a compiler, library and tests that where targeted for JVM 1.4 -work on a JVM 1.4. -============================================================================ --> - - <target name="fourfour-test.start"> - <echo level="info" message="Java version is ${java.vm.name} ${java.version}"/> - <path id="four-pack.classpath"> - <pathelement location="${build-four-pack.dir}/lib/scala-library.jar"/> - <pathelement location="${build-four-pack.dir}/lib/scala-compiler.jar"/> - <pathelement location="${build-four-pack.dir}/lib/scala-partest.jar"/> - <pathelement location="${ant.jar}"/> - </path> - <taskdef resource="scala/tools/partest/antlib.xml" classpathref="four-pack.classpath"/> - </target> - - <target name="fourfour-test.suite" depends="fourfour-test.start"> - <partest showlog="yes" erroronfailed="yes" scalacopts="-target:jvm-1.4" - javacmd="${java.home}/bin/java -Xmx1024M" javaccmd="${javac.cmd}"> - <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"/> - </runtests> - <jvmtests dir="${test.dir}/files/jvm" includes="*.scala"/> - <residenttests dir="${test.dir}/files/res" includes="*.res"/> - </partest> - </target> - - <target name="fourfour-test.done" depends="fourfour-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.latest" depends="four-dist.src" unless="os.win"> - <symlink link="${dists.dir}/latest-jvm4" resource="${four-dist.dir}" overwrite="yes"/> - </target> - - <target name="four-dist.done" depends="four-dist.latest"/> - -<!-- =========================================================================== -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> diff --git a/src/build/old_sabbus.xml b/src/build/old_sabbus.xml deleted file mode 100644 index 7b1b73fb2a..0000000000 --- a/src/build/old_sabbus.xml +++ /dev/null @@ -1,2012 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- $Id$ --> - -<project name="scala-core" default="build"> - - <description> - I am SABBUS for Scala core, 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"/> - - <!-- Defines the repository layout --> - <property name="docs.dir" value="${basedir}/docs"/> - <property name="lib.dir" value="${basedir}/lib"/> - <property name="src.dir" value="${basedir}/src"/> - <property name="test.dir" value="${basedir}/test"/> - - <!-- Loads custom properties definitions --> - <property name="properties.file" value="${basedir}/build.properties"/> - <property file="${properties.file}"/> - - <!-- Defines the product being built --> - <property name="vendor.name" value="LAMP/EPFL"/> - <property name="copyright.string" value="(c) 2002-2009 ${vendor.name}"/> - <property name="java.flags" value="-Xmx768M -Xms16M"/> - <property name="number.file" value="${basedir}/build.number"/> - - <!-- 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=""/> - <condition property="nsc.target" value="jvm-1.4"> - <contains string="${ant.java.version}" substring="1.4"/> - </condition> - <property name="nsc.target" value="jvm-1.5"/> - - <!-- Sets location of pre-compiled libraries --> - <property name="lib.starr.jar" value="${lib.dir}/scala-library.jar"/> - <property name="comp.starr.jar" value="${lib.dir}/scala-compiler.jar"/> - <property name="fjbg.jar" value="${lib.dir}/fjbg.jar"/> - <property name="msil.jar" value="${lib.dir}/msil.jar"/> - <property name="ant.jar" value="${ant.home}/lib/ant.jar"/> - <property name="jline.jar" value="${lib.dir}/jline.jar"/> - <property name="ant-contrib.jar" value="${lib.dir}/ant/ant-contrib.jar"/> - - <!-- Sets location of build folders --> - <property name="build.dir" value="${basedir}/build"/> - <property name="locker.dir" value="${build.dir}/locker"/> - <property name="quick.dir" value="${build.dir}/quick"/> - <property name="strap.dir" value="${build.dir}/strap"/> - <property name="optimised.dir" value="${build.dir}/optimised"/> - <property name="api-lib.dir" value="${build.dir}/api-library"/> - <property name="api-comp.dir" value="${build.dir}/api-compiler"/> - <property name="tooldocs.dir" value="${build.dir}/tooldocs"/> - <property name="examples.dir" value="${build.dir}/examples"/> -<!-- <property name="cldc.dir" value="${build.dir}/cldc"/> --> - <property name="android.dir" value="${build.dir}/android"/> - <property name="msil.dir" value="${build.dir}/msil"/> - <property name="mono.dir" value="${src.dir}/mono"/> - - <!-- Sets location and structure of the distribution --> - <property name="dist.dir" value="${basedir}/dists"/> - <property name="lib.jar.name" value="scala-library.jar"/> - <property name="dbc.jar.name" value="scala-dbc.jar"/> - <property name="comp.jar.name" value="scala-compiler.jar"/> - <property name="partest.jar.name" value="scala-partest.jar"/> - <property name="jline.jar.name" value="jline.jar"/> - <property name="libsrc.jar.name" value="scala-library-src.jar"/> - <property name="dbcsrc.jar.name" value="scala-dbc-src.jar"/> - <property name="parsrc.jar.name" value="scala-partest-src.jar"/> - <property name="compsrc.jar.name" value="scala-compiler-src.jar"/> - <property name="scala.exec.name" value="scala"/> - <property name="scalac.exec.name" value="scalac"/> - <property name="scaladoc.exec.name" value="scaladoc"/> - <property name="fsc.exec.name" value="fsc"/> - <property name="comp.prop.name" value="compiler.properties"/> - <property name="lib.prop.name" value="library.properties"/> - <property name="par.prop.name" value="partest.properties"/> - - <!-- if available, faster stability checking --> - <property name="stability.tool" value="/home/linuxsoft/apps/stability/stability"/> - -<!-- =========================================================================== -ANT INITIALISATION -============================================================================ --> - - <target name="ant-init"> - <!-- Making sure lib/ contains everything that is needed --> - <fail message="A required library is missing in 'lib/'. The README file describes what should be there."> - <condition><not><and> - <available file="${lib.starr.jar}"/> - <available file="${comp.starr.jar}"/> - <available file="${fjbg.jar}"/> - <available file="${msil.jar}"/> - <available file="${ant-contrib.jar}"/> - </and></not></condition> - </fail> - <!-- Setting-up Ant contrib tasks --> - <taskdef resource="net/sf/antcontrib/antlib.xml" - classpath="${ant-contrib.jar}"/> - <fail message="External library ${ant-contrib.jar} requires the optional Ant tasks to be installed"> - <condition><not><and> - <available file="${ant.home}/lib/ant-nodeps.jar"/> - </and></not></condition> - </fail> - </target> - -<!-- =========================================================================== -INITIALISATION -============================================================================ --> - - <target name="init" depends="ant-init" unless="init.avail"> - <!-- Making sure enough memory is available --> - <propertyregex - property="memory.set" input="${env.ANT_OPTS}" select="\1" - regexp="-Xmx([1-9][0-9]{3,}|[6-9][0-9]{2}|5[2-9][0-9]|51[2-9])(M|m)"/> - <fail - unless="memory.set" - message="SABBUS requires additional memory. Please set the 'ANT_OPTS' environment property to '-Xmx512M' or more."/> - <propertyregex - property="memory.info" input="${env.ANT_OPTS}" defaultValue="" - select=" (raise to 600 MB for performance)" - regexp="-Xmx([1-5][0-9]{2})(M|m)"/> - <!-- This is the start time for the distribution --> - <stopwatch name="timer.dist"/> - <tstamp prefix="time"> - <format property="human" pattern="EEEE, d MMMM yyyy, HH:mm:ss (zz)"/> - <format property="short" pattern="yyyyMMddHHmmss"/> - </tstamp> - <!-- 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> - <!-- Setting flag for Java versions 1.4.x --> - <condition property="java14"> - <contains string="${java.version}" substring="1.4"/> - </condition> - <!-- Finding out SVN revision --> - <exec - executable="svn" vmlauncher="no" - errorproperty="svn.err" outputproperty="svn.out"> - <arg line=" info ${basedir}"/> - </exec> - <propertyregex - property="svn.number" input="${svn.out}" select="\1" - regexp="Revision: ([0-9]+)" - defaultValue="x"/> - <property name="init.avail" value="yes"/> - <!-- Printing out some information about what environment I am running in --> - <echo level="info" - message="OS: ${os.type} (${os.name} ${os.arch} ${os.version});"/> - <echo level="info" - message="Java: ${java.vm.name} ${java.vm.version} ('${java.home}');"/> - <echo level="info" - message="Memory: ${memory.set} MB${memory.info};"/> - <echo level="info" - message="Ant: ${ant.version}."/> - </target> - -<!-- =========================================================================== -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> - <retroweaver - inputjar="${lib.starr.jar}" - outputjar="${lib.starr14.jar}" - /> - <retroweaver - inputjar="${comp.starr.jar}" - outputjar="${comp.starr14.jar}" - /> - </target> - - <target name="setup" depends="init"> - <!-- Creating class-pathes --> - <if> - <contains string="${java.version}" substring="1.4"/> - <then> - <mkdir dir="${build.dir}/starr"/> - <property name="lib.starr14.jar" value="${build.dir}/starr/scala-library-14.jar"/> - <property name="comp.starr14.jar" value="${build.dir}/starr/scala-compiler-14.jar"/> - <antcall target="setup.weave"> - <param name="lib.starr14.jar" value="${lib.starr14.jar}"/> - <param name="comp.starr14.jar" value="${comp.starr14.jar}"/> - </antcall> - <path id="starr.classpath"> - <pathelement location="${lib.starr14.jar}"/> - <pathelement location="${comp.starr14.jar}"/> - <pathelement location="${fjbg.jar}"/> - <pathelement location="${msil.jar}"/> - <pathelement location="${ant.jar}"/> - <pathelement location="${jline.jar}"/> - </path> - </then> - <else> - <path id="starr.classpath"> - <pathelement location="${lib.starr.jar}"/> - <pathelement location="${comp.starr.jar}"/> - <pathelement location="${fjbg.jar}"/> - <pathelement location="${msil.jar}"/> - <pathelement location="${ant.jar}"/> - <pathelement location="${jline.jar}"/> - </path> - </else> - </if> - <!-- Creating boot-level tasks --> - <taskdef - name="starr" - classname="scala.tools.ant.Scalac" - classpathref="starr.classpath"/> - <taskdef - name="starrtool" - classname="scala.tools.ant.ScalaTool" - classpathref="starr.classpath" /> - <!-- 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> - - <target name="setup.locker" depends="setup, build.locker"> - <path id="locker.classpath"> - <pathelement location="${locker.dir}/lib/library"/> - <pathelement location="${locker.dir}/lib/compiler"/> - <pathelement location="${fjbg.jar}"/> - <pathelement location="${msil.jar}"/> - </path> - <taskdef - name="locker" - classname="scala.tools.ant.Scalac" - classpathref="locker.classpath"/> - </target> - - <target name="setup.quick" depends="setup, build"> - <path id="quick.classpath"> - <pathelement location="${quick.dir}/lib/library"/> - <pathelement location="${quick.dir}/lib/compiler"/> - <pathelement location="${fjbg.jar}"/> - <pathelement location="${msil.jar}"/> - </path> - <taskdef - name="quick" classname="scala.tools.ant.Scalac" - classpathref="quick.classpath"/> - <taskdef - name="quicksbaz" classname="scala.tools.ant.ScalaBazaar" - classpathref="quick.classpath"/> - <taskdef - name="quickdoc" classname="scala.tools.ant.Scaladoc" - classpathref="quick.classpath"/> - </target> - -<!-- =========================================================================== -BUILD SUPPORT MACROS -============================================================================ --> - - <macrodef name="build.support"> - <attribute name="build.dir"/> - <sequential> - <copy todir="@{build.dir}/lib/library"> - <fileset dir="${src.dir}/library"> - <include name="**/*.tmpl"/> - <include name="**/*.xml"/> - <include name="**/*.js"/> - <include name="**/*.css"/> - </fileset> - </copy> - <copy todir="@{build.dir}/lib/compiler"> - <fileset dir="${src.dir}/compiler"> - <include name="**/*.tmpl"/> - <include name="**/*.xml"/> - <include name="**/*.js"/> - <include name="**/*.css"/> - </fileset> - </copy> - </sequential> - </macrodef> - - <macrodef name="build.links"> - <attribute name="build.dir"/> - <sequential> - <if><not><available file="@{build.dir}/lib/fjbg.jar"/></not><then> - <if><isset property="os.win"/><then> - <copy file="${fjbg.jar}" tofile="@{build.dir}/lib/fjbg.jar"/> - </then><else> - <symlink - link="@{build.dir}/lib/fjbg.jar" - resource="${fjbg.jar}" overwrite="yes" failonerror="no"/> - </else></if> - </then></if> - <if><not><available file="@{build.dir}/lib/msil.jar"/></not><then> - <if><isset property="os.win"/><then> - <copy file="${msil.jar}" tofile="@{build.dir}/lib/msil.jar"/> - </then><else> - <symlink - link="@{build.dir}/lib/msil.jar" - resource="${msil.jar}" overwrite="yes" failonerror="no"/> - </else></if> - </then></if> - <if><not><available file="@{build.dir}/lib/jline.jar"/></not><then> - <if><isset property="os.win"/><then> - <copy file="${jline.jar}" tofile="@{build.dir}/lib/jline.jar"/> - </then><else> - <symlink - link="@{build.dir}/lib/jline.jar" - resource="${jline.jar}" overwrite="yes" failonerror="no"/> - </else></if> - </then></if> - </sequential> - </macrodef> - -<!-- =========================================================================== -BUILD LOCAL REFERENCE (LOCKER) LAYER -============================================================================ --> - - <target name="newlocker" - depends="clean.unfreeze, build.locker" - description="Rebuilds LOCKER from the current sources"/> - - <target name="build.locker" depends="setup" unless="locker.avail"> - <property name="built.locker" value="yes"/> - <stopwatch name="timer.locker"/> - <!-- Build library --> - <if><and> - <isset property="os.unix"/> - <isset property="build.resource"/></and> - <then> - <symlink - link="${build.dir}" - resource="${build.resource}" overwrite="yes" failonerror="no"/> - <touch file="${build.dir}/is_symlink" verbose="no"/> - </then></if> - <mkdir dir="${locker.dir}/lib/library"/> - <javac - srcdir="${src.dir}/library" - destdir="${locker.dir}/lib/library" - source="1.4" target="1.4" deprecation="yes" - classpath="${locker.dir}/lib/library" - includes="**/*.java"/> - <starr - srcdir="${src.dir}/library" - destdir="${locker.dir}/lib/library" - addparams="${nsc.params}" target="${nsc.target}" - deprecation="yes" unchecked="yes" - classpath="${locker.dir}/lib/library" - includes="scala/Predef.scala"/> - <starr - srcdir="${src.dir}/library" - destdir="${locker.dir}/lib/library" - addparams="${nsc.params}" target="${nsc.target}" - deprecation="yes" unchecked="yes" - classpath="${locker.dir}/lib/library"> - <include name="**/*.scala"/> - <exclude name="scala/Predef.scala"/> - <exclude name="scala/dbc/**"/> - <exclude name="scala/actors/**"/> - <excludesfile name="${nsc.excludes.file}" if="excludes.avail"/> - </starr> - <echo - file="${locker.dir}/lib/library/${lib.prop.name}" - message="version.number=${version.number}${line.separator}" - append="false" - /> - <echo - file="${locker.dir}/lib/library/${lib.prop.name}" - message="copyright.string=${copyright.string}${line.separator}" - append="true" - /> - <!-- Build compiler --> - <mkdir dir="${locker.dir}/lib/compiler"/> - <starr - srcdir="${src.dir}/compiler" - destdir="${locker.dir}/lib/compiler" - addparams="${nsc.params}" target="${nsc.target}" - deprecation="yes" unchecked="yes"> - <classpath> - <pathelement location="${locker.dir}/lib/library"/> - <pathelement location="${locker.dir}/lib/compiler"/> - <pathelement location="${fjbg.jar}"/> - <pathelement location="${msil.jar}"/> - <pathelement location="${ant.jar}"/> - <pathelement location="${jline.jar}"/> - </classpath> - <include name="**/*.scala"/> - <excludesfile name="${nsc.excludes.file}" if="excludes.avail"/> - </starr> - <echo - file="${locker.dir}/lib/compiler/${comp.prop.name}" - message="version.number=${version.number}${line.separator}" - append="false" - /> - <echo - file="${locker.dir}/lib/compiler/${comp.prop.name}" - message="copyright.string=${copyright.string}${line.separator}" - append="true" - /> - <!-- Timing the build --> - <stopwatch name="timer.locker" action="total"/> - <!-- Copy support files to build folder and links external libraries--> - <build.support build.dir="${locker.dir}"/> - <build.links build.dir="${locker.dir}"/> - <!-- Build executable files --> - <taskdef - name="lockertool" - classname="scala.tools.ant.ScalaTool" - classpathref="locker.classpath"/> - <mkdir dir="${locker.dir}/bin"/> - <lockertool - file="${locker.dir}/bin/${scala.exec.name}" - class="scala.tools.nsc.MainGenericRunner" - javaFlags="${java.flags}"/> - <lockertool - file="${locker.dir}/bin/${scalac.exec.name}" - class="scala.tools.nsc.Main" - javaFlags="${java.flags}"/> - <lockertool - file="${locker.dir}/bin/${scaladoc.exec.name}" - class="scala.tools.nsc.ScalaDoc" - javaFlags="${java.flags}"/> - <lockertool - file="${locker.dir}/bin/${fsc.exec.name}" - class="scala.tools.nsc.CompileClient" - javaFlags="${java.flags}"/> - <chmod perm="ugo+rx" - file="${locker.dir}/bin/${scalac.exec.name}"/> - <chmod perm="ugo+rx" - file="${locker.dir}/bin/${scala.exec.name}"/> - <chmod perm="ugo+rx" - file="${locker.dir}/bin/${scaladoc.exec.name}"/> - <chmod perm="ugo+rx" - file="${locker.dir}/bin/${fsc.exec.name}"/> - <fixcrlf - srcdir="${locker.dir}/bin" - eol="dos" - includes="**/*.bat"/> - <!-- Mark LOCKER as being completely built --> - <touch file="${locker.dir}/complete" verbose="no"/> - </target> - -<!-- =========================================================================== -BUILD QUICK-TEST LAYER -============================================================================ --> - - <target name="build" depends="setup.locker" - description="Builds a quick-test (QUICK) version of the compiler"> - <stopwatch name="timer.quick"/> - <!-- Build library --> - <mkdir dir="${quick.dir}/lib/library"/> - <javac - srcdir="${src.dir}/library" - destdir="${quick.dir}/lib/library" - source="1.4" target="1.4" deprecation="yes" - classpath="${quick.dir}/lib/library" - includes="**/*.java"/> - <locker - srcdir="${src.dir}/library" - destdir="${quick.dir}/lib/library" - addparams="${nsc.params}" target="${nsc.target}" - deprecation="yes" unchecked="yes" - scalacdebugging="${nsc.log-files}" - classpath="${quick.dir}/lib/library" - includes="scala/Predef.scala"/> - <locker - srcdir="${src.dir}/library" - destdir="${quick.dir}/lib/library" - addparams="${nsc.params}" target="${nsc.target}" - deprecation="yes" unchecked="yes" - scalacdebugging="${nsc.log-files}" - classpath="${quick.dir}/lib/library"> - <include name="**/*.scala"/> - <exclude name="scala/Predef.scala"/> - <exclude name="scala/dbc/**"/> - <exclude name="scala/actors/**"/> - <excludesfile name="${nsc.excludes.file}" if="excludes.avail"/> - </locker> - <echo - file="${quick.dir}/lib/library/${lib.prop.name}" - message="version.number=${version.number}${line.separator}" - append="false" - /> - <echo - file="${quick.dir}/lib/library/${lib.prop.name}" - message="copyright.string=${copyright.string}${line.separator}" - append="true" - /> - <!-- Build DBC --> - <mkdir dir="${quick.dir}/lib/dbc"/> - <locker - srcdir="${src.dir}/dbc" - destdir="${quick.dir}/lib/dbc" - addparams="${nsc.params}" target="${nsc.target}" - deprecation="yes" unchecked="yes" - scalacdebugging="${nsc.log-files}"> - <classpath> - <pathelement location="${quick.dir}/lib/library"/> - <pathelement location="${quick.dir}/lib/dbc"/> - </classpath> - <include name="scala/dbc/**/*.scala"/> - <excludesfile name="${nsc.excludes.file}" if="excludes.avail"/> - </locker> - <!-- Build actors library --> - <mkdir dir="${quick.dir}/lib/actors"/> - <javac - srcdir="${src.dir}/actors" - destdir="${quick.dir}/lib/actors" - source="1.4" target="1.4" deprecation="yes" - classpath="${quick.dir}/lib/actors" - includes="scala/actors/**/*.java"/> - <locker - srcdir="${src.dir}/actors" - destdir="${quick.dir}/lib/actors" - addparams="${nsc.params}" target="${nsc.target}" - deprecation="yes" unchecked="yes" - scalacdebugging="${nsc.log-files}"> - <classpath> - <pathelement location="${quick.dir}/lib/library"/> - <pathelement location="${quick.dir}/lib/actors"/> - </classpath> - <include name="scala/actors/**/*.scala"/> - <excludesfile name="${nsc.excludes.file}" if="excludes.avail"/> - </locker> - <!-- Build compiler --> - <mkdir dir="${quick.dir}/lib/compiler"/> - <locker - srcdir="${src.dir}/compiler" - destdir="${quick.dir}/lib/compiler" - addparams="${nsc.params}" target="${nsc.target}" - deprecation="yes" unchecked="yes" - scalacdebugging="${nsc.log-files}"> - <classpath> - <pathelement location="${quick.dir}/lib/library"/> - <pathelement location="${quick.dir}/lib/compiler"/> - <pathelement location="${fjbg.jar}"/> - <pathelement location="${msil.jar}"/> - <pathelement location="${ant.jar}"/> - <pathelement location="${jline.jar}"/> - </classpath> - <include name="**/*.scala"/> - <excludesfile name="${nsc.excludes.file}" if="excludes.avail"/> - </locker> - <echo - file="${quick.dir}/lib/compiler/${comp.prop.name}" - message="version.number=${version.number}${line.separator}" - append="false" - /> - <echo - file="${quick.dir}/lib/compiler/${comp.prop.name}" - message="copyright.string=${copyright.string}${line.separator}" - append="true" - /> - <!-- Build partest --> - <mkdir dir="${quick.dir}/lib/partest"/> - <javac - srcdir="${src.dir}/partest" - destdir="${quick.dir}/lib/partest" - source="1.4" target="1.4" deprecation="yes" - classpath="${quick.dir}/lib/partest" - includes="scala/tools/partest/**/*.java"/> - <locker - srcdir="${src.dir}/partest" - destdir="${quick.dir}/lib/partest" - addparams="${nsc.params}" target="${nsc.target}" - deprecation="yes" unchecked="yes"> - <classpath> - <pathelement location="${quick.dir}/lib/library"/> - <pathelement location="${quick.dir}/lib/compiler"/> - <pathelement location="${quick.dir}/lib/actors"/> - <pathelement location="${ant.jar}"/> - </classpath> - </locker> - <echo - file="${quick.dir}/lib/partest/${par.prop.name}" - message="version.number=${version.number}${line.separator}" - append="false" - /> - <echo - file="${quick.dir}/lib/partest/${par.prop.name}" - message="copyright.string=${copyright.string}${line.separator}" - append="true" - /> - <!-- Timing the build --> - <stopwatch name="timer.quick" action="total"/> - <!-- Copy support files to build folder and links external libraries--> - <build.support build.dir="${quick.dir}"/> - <build.links build.dir="${quick.dir}"/> - <!-- Build executable files --> - <taskdef - name="quicktool" - classname="scala.tools.ant.ScalaTool" - classpathref="quick.classpath"/> - <mkdir dir="${quick.dir}/bin"/> - <quicktool - file="${quick.dir}/bin/${scala.exec.name}" - class="scala.tools.nsc.MainGenericRunner" - javaFlags="${java.flags}"/> - <quicktool - file="${quick.dir}/bin/${scalac.exec.name}" - class="scala.tools.nsc.Main" - javaFlags="${java.flags}"/> - <quicktool - file="${quick.dir}/bin/${scaladoc.exec.name}" - class="scala.tools.nsc.ScalaDoc" - javaFlags="${java.flags}"/> - <quicktool - file="${quick.dir}/bin/${fsc.exec.name}" - class="scala.tools.nsc.CompileClient" - javaFlags="${java.flags}"/> - <chmod perm="ugo+rx" - file="${quick.dir}/bin/${scalac.exec.name}"/> - <chmod perm="ugo+rx" - file="${quick.dir}/bin/${scala.exec.name}"/> - <chmod perm="ugo+rx" - file="${quick.dir}/bin/${scaladoc.exec.name}"/> - <chmod perm="ugo+rx" - file="${quick.dir}/bin/${fsc.exec.name}"/> - <fixcrlf - srcdir="${quick.dir}/bin" - eol="dos" - includes="**/*.bat"/> - </target> - - <target name="test.quick" depends="build"> - <echo level="info" - message="Ant test bench is not available yet."/> - </target> - -<!-- =========================================================================== -CLDC -============================================================================ --> -<!-- - <property name="cldcapi.jar" value="${lib.dir}/cldcapi10.jar"/> - <property name="midpapi.jar" value="${lib.dir}/midpapi10.jar"/> - - <target name="cldc.sources" - description="Create the source directory for the J2ME (CLDC) library" - > - <mkdir dir="${cldc.dir}/src"/> - - <copy todir="${cldc.dir}/src"> - <fileset dir="${src.dir}/library" includes="**/*.scala, **/*.java"> - <not> - <present targetdir="${src.dir}/cldc-library"/> - </not> - <exclude name="**/*CharSequence.scala"/> - <exclude name="**/jcl/**"/> - <exclude name="**/ref/**"/> - <exclude name="**/compat/**"/> - <exclude name="**/concurrent/**"/> - <exclude name="**/runtime/RichFloat.scala"/> - <exclude name="**/runtime/RichDouble.scala"/> - <exclude name="**/util/**"/> - <exclude name="**/xml/**"/> - </fileset> - </copy> - - <copy todir="${cldc.dir}/src"> - <fileset dir="${src.dir}/cldc-library"> - <include name="**/*.scala"/> - <include name="**/*.java"/> - </fileset> - </copy> - - </target> - - <target name="cldc.libraries" - depends="setup.quick, cldc.sources" - description="Builds the Scala library for J2ME (CLDC)" - > - <mkdir dir="${cldc.dir}/lib/library"/> - <javac - srcdir="${cldc.dir}/src" - destdir="${cldc.dir}/lib/library" - compiler="javac1.4" - source="1.1" - target="1.1" - deprecation="${jc.deprecation}" - > - <bootclasspath> - <pathelement location="${cldcapi.jar}"/> - </bootclasspath> - <include name="**/*.java"/> - <exclude name="scala/runtime/FloatRef.java"/> - <exclude name="scala/runtime/DoubleRef.java"/> - </javac> - - <quick - srcdir="${cldc.dir}/src" - destdir="${cldc.dir}/lib/library" - addparams="${nsc.params}" - target="cldc" - scalacdebugging="${nsc.log-files}" - > - <bootclasspath> - <pathelement location="${cldcapi.jar}"/> - </bootclasspath> - <classpath> - <pathelement location="${cldc.dir}"/> - </classpath> - <include name="scala/Predef.scala"/> - </quick> - <quick - srcdir="${cldc.dir}/src" - destdir="${cldc.dir}/lib/library" - target="cldc" - addparams="${nsc.params}" - scalacdebugging="${nsc.log-files}" - > - <bootclasspath> - <pathelement location="${cldcapi.jar}"/> - </bootclasspath> - <classpath> - <pathelement location="${cldc.dir}"/> - </classpath> - <include name="**/*.scala"/> - <exclude name="scala/Predef.scala"/> - <exclude name="scala/BigDecimal.scala"/> - <exclude name="scala/BigInt.scala"/> - <exclude name="scala/collection/mutable/JavaMapAdaptor.scala"/> - <exclude name="scala/collection/mutable/JavaSetAdaptor.scala"/> - <exclude name="scala/collection/mutable/LinkedHashSet.scala"/> - <exclude name="scala/util/Fluid.scala"/> - <exclude name="scala/runtime/BoxedFloatArray.scala"/> - <exclude name="scala/runtime/BoxedDoubleArray.scala"/> - <exclude name="scala/io/**"/> - <exclude name="scala/mobile/**"/> - <exclude name="scala/reflect/**"/> - <exclude name="scala/text/**"/> - <exclude name="scala/testing/**"/> - <exclude name="scala/xml/**"/> - <excludesfile name="${nsc.excludes}" if="excludes.avail"/> - </quick> - <macrodef name="preverify"> - <attribute name="srcdir"/> - <attribute name="destdir"/> - <sequential> - <exec executable="preverify" failonerror="false"> - <arg line="-classpath ${cldcapi.jar}${path.separator}${midpapi.jar}"/> - <arg line="-target cldc1.0"/> - <arg line="-d @{destdir}"/> - <arg value="@{srcdir}"/> - </exec> - </sequential> - </macrodef> - <mkdir dir="${cldc.dir}/lib/preverified"/> - <preverify - srcdir="${cldc.dir}/lib/library" - destdir="${cldc.dir}/lib/preverified" - /> - <jar - destfile="${cldc.dir}/lib/scalaapi10-unverified.jar" - basedir="${cldc.dir}/lib/library" - includes="scala/**/*.class"> - <manifest> - <attribute name="Created-By" value="${version.number} (${vendor.name})"/> - </manifest> - </jar> - <jar - destfile="${cldc.dir}/lib/scalaapi10.jar" - basedir="${cldc.dir}/lib/preverified" - includes="scala/**/*.class"> - <manifest> - <attribute name="Created-By" value="${version.number} (${vendor.name})"/> - <attribute name="API-Specification-Version" value="1.0"/> - <attribute name="API" value="Scala CLDC"/> - <attribute name="API-Name" value="Scala Connected Limited Device Configuration"/> - <attribute name="API-Type" value="Configuration"/> - </manifest> - </jar> - </target> - - <target name="cldc" depends="cldc.libraries"> - </target> ---> - -<!-- =========================================================================== -ANDROID -============================================================================ --> - - <target name="android.init"> - <!-- Sets location of Android installation --> - <condition property="android.home" value="${unix.android.home}"> - <and><os family="unix"/><isset property="unix.android.home"/></and> - </condition> - <condition property="android.home" value="${win.android.home}"> - <and><os family="windows"/><isset property="win.android.home"/></and> - </condition> - <property name="android.home" value="${env.ANDROID_HOME}"/> - - <fail message="Android home is not set or could not find android.jar in ${android.home}"> - <condition><not> - <available file="${android.home}/android.jar"/> - </not></condition> - </fail> - </target> - - <target name="android.sources" depends="android.init" - description="Create the source directory for Android library" - > - <mkdir dir="${android.dir}/src"/> - <copy todir="${android.dir}/src"> - <fileset dir="${src.dir}/android-library" includes="**/*.scala, **/*.java"/> - </copy> - <copy todir="${android.dir}/src"> - <fileset dir="${src.dir}/library" includes="**/*.scala, **/*.java" /> - </copy> - </target> - - <target name="android.libraries" - depends="setup.quick, android.sources" - description="Builds the Scala library for Android"> - <mkdir dir="${android.dir}/lib/library"/> - <javac - srcdir="${android.dir}/src" - destdir="${android.dir}/lib/library" - deprecation="${jc.deprecation}" - > - <bootclasspath> - <pathelement location="${android.home}/android.jar}"/> - </bootclasspath> - <include name="**/*.java"/> - </javac> - - <quick - srcdir="${android.dir}/src" - destdir="${android.dir}/lib/library" - deprecation="yes" unchecked="yes" - addparams="${nsc.params}" - extdirs="" - scalacdebugging="${nsc.log-files}" - > - <bootclasspath> - <pathelement location="${android.home}/android.jar"/> - </bootclasspath> - <include name="scala/Predef.scala"/> - </quick> - - <quick - srcdir="${android.dir}/src" - destdir="${android.dir}/lib/library" - deprecation="yes" unchecked="yes" - extdirs="" - addparams="${nsc.params}" - scalacdebugging="${nsc.log-files}" - > - <bootclasspath> - <pathelement location="${android.home}/android.jar"/> - </bootclasspath> - <classpath> - <pathelement location="${android.dir}"/> - </classpath> - <include name="**/*.scala"/> - <exclude name="scala/Predef.scala"/> - <excludesfile name="${nsc.excludes}" if="excludes.avail"/> - </quick> - </target> - - <target name="android.build" depends="android.libraries" - description="Convert this project's .class files into .dex files"> - <property name="dx.jar" value="${android.home}/tools/lib/dx.jar"/> - <java jar="${dx.jar}" fork="true" failonerror="true"> - <jvmarg value="-Djava.ext.dirs=${android.home}${file.separator}tools${file.separator}lib"/> - <jvmarg value="-Xmx384M"/> - <arg value="--dex"/> - <arg value="--output=${android.dir}/lib/scala.dex"/> - <arg value="--locals=full"/> - <arg value="--positions=lines"/> - <arg value="--no-optimize"/> <!-- workaround for M5-RC14 bug --> - <arg value="${android.dir}/lib/library"/> - </java> - <jar - destfile="${android.dir}/lib/scala-dex.jar" - basedir="${android.dir}/lib" - includes="scala.dex" - /> - <jar - destfile="${android.dir}/lib/scala-android.jar" - basedir="${android.dir}/lib/library" - includes="scala/**/*.class" - /> - </target> - - <target name="android" depends="init"> - <condition property="android.supported"> - <and> - <not><contains string="${java.version}" substring="1.4"/></not> - <contains string="${java.vendor}" substring="Sun"/> - </and> - </condition> - <if><isset property="android.supported"/><then> - <antcall target="android.build"/> - </then><else> - <echo message="The Android library build requires Sun Java 1.5 or newer"/> - </else></if> - </target> - -<!-- =========================================================================== -MSIL -============================================================================ --> - - <target name="msil.init" depends="ant-init"> - <!-- Sets ilasm command (either Microsoft .NET Framework or Mono) --> - <condition property="ilasm.cmd" value="${msdn.home}/ilasm.exe"> - <and> - <os family="windows"/><isset property="msdn.home"/> - <available file="${msdn.home}/ilasm.exe"/> - </and> - </condition> - <condition property="ilasm.cmd" value="${unix.mono.home}/ilasm"> - <and> - <os family="unix"/><isset property="unix.mono.home"/> - <available file="${unix.mono.home}/ilasm"/> - </and> - </condition> - <condition property="ilasm.cmd" value="${win.mono.home}/ilasm"> - <and> - <os family="windows"/><isset property="${win.mono.home}/lib/mono/2.0/ilasm.exe"/> - <available file="${win.mono.home}/lib/mono/2.0/ilasm.exe"/> - </and> - </condition> - <echo level="verbose" message="Found: ${ilasm.cmd}"/> - <condition property="ilasm.cmd" value="ilasm"> - <and><available file="ilasm" filepath="${env.PATH}"/></and> - </condition> - <fail message="Command 'ilasm' not found"> - <condition><not><isset property="ilasm.cmd"/></not></condition> - </fail> - <!-- Sets ilasm arguments (either Windows or Unix) --> - <property name="ilasm.outfile" value="${msil.dir}/predef.dll"/> - <if> - <isset property="os.win"/> - <then> - <property - name="ilasm.args" - value="/quiet /dll /output=${ilasm.outfile}" - /> - </then> - <else> - <property - name="ilasm.args" - value="/dll /output:${ilasm.outfile}" - /> - </else> - </if> - </target> - - <target name="msil.sources" depends="msil.init"> - <mkdir dir="${msil.dir}/src"/> - <copy todir="${msil.dir}/src"> - <fileset dir="${src.dir}/dotnet-library" includes="**/*.scala, **/*.cs"/> - </copy> - <copy todir="${msil.dir}/src"> - <fileset dir="${src.dir}/library" includes="**/*.scala"/> - </copy> - </target> - - <target name="msil.libraries" depends="setup.quick, msil.sources"> - <quick srcdir="${msil.dir}/src" destdir="${msil.dir}" target="msil" - assemname="predef" assemrefs="${lib.dir}" - failonerror="false"> - <include name="**/*.scala"/> - <exclude name="scala/ScalaObject.scala"/> - <!-- - <include name="scala/Predef.scala"/> - <include name="scala/Either.scala"/> - <include name="scala/Option.scala"/> - <include name="scala/Pair.scala"/> - <include name="scala/Console.scala"/> - <include name="scala/Application.scala"/> - <include name="scala/ByNameFunction.scala"/> - <include name="scala/Stream.scala"/> - <include name="scala/*Annotation.scala"/> - <include name="scala/Function*.scala"/> - <include name="scala/Tuple*.scala"/> - <include name="scala/Product*.scala"/> - <include name="scala/List.scala"/> - <include name="scala/cloneable.scala"/> - <include name="scala/deprecated.scala"/> - <include name="scala/native.scala"/> - <include name="scala/serializable.scala"/> - <include name="scala/transient.scala"/> - <include name="scala/volatile.scala"/> - <include name="scala/remote.scala"/> - <include name="scala/throws.scala"/> - <include name="scala/BigInt.scala"/> - <include name="scala/CountedIterator.scala"/> - <include name="scala/collection/**/*.scala"/> - <include name="scala/runtime/*.scala"/> - <include name="scala/concurrent/*.scala"/> - <include name="scala/ref/*.scala"/> - <include name="scala/reflect/*.scala"/> - <include name="scala/testing/*.scala"/> - <include name="scala/text/*.scala"/> --> - </quick> - <pathconvert property="ilasm.infile" pathsep=" "> - <fileset dir="${msil.dir}" includes="*.msil"/> - </pathconvert> - <exec - executable="${ilasm.cmd}" vmlauncher="no"> - <!-- - errorproperty="ilasm.err" outputproperty="ilasm.out"> - --> - <arg line="${ilasm.args} ${ilasm.infile}"/> - </exec> - </target> - - <target name="msil" depends="msil.libraries"> - <copy todir="${quick.dir}/bin"> - <fileset - dir="${mono.dir}/bin" - includes="scala-net*" - /> - <filterset> - <filter token="VERSION" value="${version.number}"/> - <filter token="COPYRIGHT" value="${copyright.string}"/> - <filter token="NAME" value="Scala code runner"/> - </filterset> - </copy> - <copy todir="${quick.dir}/bin"> - <fileset - dir="${mono.dir}/bin" - includes="scalac-net*" - /> - <filterset> - <filter token="VERSION" value="${version.number}"/> - <filter token="COPYRIGHT" value="${copyright.string}"/> - <filter token="NAME" value="Scala compiler"/> - </filterset> - </copy> - <chmod perm="ugo+rx" - dir="${quick.dir}/bin" includes="*-net*"/> - <if><isset property="os.win"/> - <then> - <copy todir="${quick.dir}/lib"> - <fileset dir="${msil.dir}" includes="*.dll"/> - <fileset dir="${lib.dir}" includes="*.dll"/> - </copy> - </then> - <else> - <symlink - link="${quick.dir}/lib/predef.dll" - resource="${msil.dir}/predef.dll" - overwrite="yes" failonerror="no"/> - <symlink - link="${quick.dir}/lib/scalaruntime.dll" - resource="${lib.dir}/scalaruntime.dll" - overwrite="yes" failonerror="no"/> - <symlink - link="${quick.dir}/lib/mscorlib.dll" - resource="${lib.dir}/mscorlib.dll" - overwrite="yes" failonerror="no"/> - </else> - </if> - </target> - -<!-- =========================================================================== -OPTIMIZE -============================================================================ --> - <target name="optimised" depends="build.optimised" - description="Build the compiler with optimizations on."/> - - <!-- Build the bootstrap layer --> - <target name="build.optimised" depends="setup.quick"> - <stopwatch name="timer.optimised"/> - <!-- Build library --> - <mkdir dir="${optimised.dir}/lib/library"/> - <javac - srcdir="${src.dir}/library" - destdir="${optimised.dir}/lib/library" - source="1.4" target="1.4" deprecation="yes" - classpath="${optimised.dir}/lib/library" - includes="**/*.java"/> - <quick - srcdir="${src.dir}/library" - destdir="${optimised.dir}/lib/library" - addparams="${nsc.params}" target="${nsc.target}" - deprecation="yes" unchecked="yes" - optimise="yes" - classpath="${optimised.dir}/lib/library" - includes="scala/Predef.scala"/> - <quick - srcdir="${src.dir}/library" - destdir="${optimised.dir}/lib/library" - addparams="${nsc.params}" target="${nsc.target}" - optimise="yes" - deprecation="yes" unchecked="yes" - classpath="${optimised.dir}/lib/library"> - <include name="**/*.scala"/> - <exclude name="scala/Predef.scala"/> - <exclude name="scala/dbc/**"/> - <exclude name="scala/actors/**"/> - <excludesfile name="${nsc.excludes.file}" if="excludes.avail"/> - </quick> - <echo - file="${optimised.dir}/lib/library/${lib.prop.name}" - message="version.number=${version.number}${line.separator}" - append="false" - /> - <echo - file="${optimised.dir}/lib/library/${lib.prop.name}" - message="copyright.string=${copyright.string}${line.separator}" - append="true" - /> - <!-- Build compiler --> - <mkdir dir="${optimised.dir}/lib/compiler"/> - <quick - srcdir="${src.dir}" - destdir="${optimised.dir}/lib/compiler" - optimise="yes" - addparams="${nsc.params}" target="${nsc.target}"> - <classpath> - <pathelement location="${optimised.dir}/lib/library"/> - <pathelement location="${optimised.dir}/lib/compiler"/> - <pathelement location="${fjbg.jar}"/> - <pathelement location="${msil.jar}"/> - <pathelement location="${ant.jar}"/> - <pathelement location="${jline.jar}"/> - </classpath> - <include name="compiler/**/*.scala"/> - <include name="library/scala/List.scala"/> - <excludesfile name="${nsc.excludes.file}" if="excludes.avail"/> - </quick> - <echo - file="${optimised.dir}/lib/compiler/${comp.prop.name}" - message="version.number=${version.number}${line.separator}" - append="false" - /> - <echo - file="${optimised.dir}/lib/compiler/${comp.prop.name}" - message="copyright.string=${copyright.string}${line.separator}" - append="true" - /> - <!-- Timing the build --> - <stopwatch name="timer.strap" action="total"/> - <!-- Copy support files to build folder and links external libraries--> - <build.support build.dir="${optimised.dir}"/> - <build.links build.dir="${optimised.dir}"/> - <!-- Build executable files --> - <taskdef - name="straptool" - classname="scala.tools.ant.ScalaTool" - classpathref="quick.classpath"/> - <mkdir dir="${optimised.dir}/bin"/> - <straptool - file="${optimised.dir}/bin/${scala.exec.name}" - class="scala.tools.nsc.MainGenericRunner" - javaFlags="${java.flags}"/> - <straptool - file="${optimised.dir}/bin/${scalac.exec.name}" - class="scala.tools.nsc.Main" - javaFlags="${java.flags}"/> - <straptool - file="${optimised.dir}/bin/${scaladoc.exec.name}" - class="scala.tools.nsc.ScalaDoc" - javaFlags="${java.flags}"/> - <straptool - file="${optimised.dir}/bin/${fsc.exec.name}" - class="scala.tools.nsc.CompileClient" - javaFlags="${java.flags}"/> - <chmod perm="ugo+rx" - file="${optimised.dir}/bin/${scalac.exec.name}"/> - <chmod perm="ugo+rx" - file="${optimised.dir}/bin/${scala.exec.name}"/> - <chmod perm="ugo+rx" - file="${optimised.dir}/bin/${scaladoc.exec.name}"/> - <chmod perm="ugo+rx" - file="${optimised.dir}/bin/${fsc.exec.name}"/> - <fixcrlf - srcdir="${optimised.dir}/bin" - eol="dos" - includes="**/*.bat"/> - </target> - - -<!-- =========================================================================== -TEST -============================================================================ --> - - <target name="test" depends="test.stability, test.strap" - description="Tests the build for stability"/> - - <!-- Build the bootstrap layer --> - <target name="build.strap" depends="setup.quick"> - <stopwatch name="timer.strap"/> - <!-- Build library --> - <mkdir dir="${strap.dir}/lib/library"/> - <javac - srcdir="${src.dir}/library" - destdir="${strap.dir}/lib/library" - source="1.4" target="1.4" deprecation="yes" - classpath="${strap.dir}/lib/library" - includes="**/*.java"/> - <quick - srcdir="${src.dir}/library" - destdir="${strap.dir}/lib/library" - addparams="${nsc.params}" target="${nsc.target}" - deprecation="yes" unchecked="yes" - classpath="${strap.dir}/lib/library" - includes="scala/Predef.scala"/> - <quick - srcdir="${src.dir}/library" - destdir="${strap.dir}/lib/library" - addparams="${nsc.params}" target="${nsc.target}" - deprecation="yes" unchecked="yes" - classpath="${strap.dir}/lib/library"> - <include name="**/*.scala"/> - <exclude name="scala/Predef.scala"/> - <exclude name="scala/dbc/**"/> - <exclude name="scala/actors/**"/> - <excludesfile name="${nsc.excludes.file}" if="excludes.avail"/> - </quick> - <echo - file="${strap.dir}/lib/library/${lib.prop.name}" - message="version.number=${version.number}${line.separator}" - append="false" - /> - <echo - file="${strap.dir}/lib/library/${lib.prop.name}" - message="copyright.string=${copyright.string}${line.separator}" - append="true" - /> - <!-- Build DBC --> - <mkdir dir="${strap.dir}/lib/dbc"/> - <quick - srcdir="${src.dir}/dbc" - destdir="${strap.dir}/lib/dbc" - addparams="${nsc.params}" target="${nsc.target}" - deprecation="yes" unchecked="yes"> - <classpath> - <pathelement location="${strap.dir}/lib/library"/> - <pathelement location="${strap.dir}/lib/dbc"/> - </classpath> - <include name="scala/dbc/**/*.scala"/> - <excludesfile name="${nsc.excludes.file}" if="excludes.avail"/> - </quick> - <!-- Build actors library --> - <mkdir dir="${strap.dir}/lib/actors"/> - <javac - srcdir="${src.dir}/actors" - destdir="${strap.dir}/lib/actors" - source="1.4" target="1.4" deprecation="yes" - classpath="${strap.dir}/lib/actors" - includes="scala/actors/**/*.java"/> - <quick - srcdir="${src.dir}/actors" - destdir="${strap.dir}/lib/actors" - addparams="${nsc.params}" target="${nsc.target}"> - <classpath> - <pathelement location="${strap.dir}/lib/library"/> - <pathelement location="${strap.dir}/lib/actors"/> - </classpath> - <include name="scala/actors/**/*.scala"/> - <excludesfile name="${nsc.excludes.file}" if="excludes.avail"/> - </quick> - <!-- Build compiler --> - <mkdir dir="${strap.dir}/lib/compiler"/> - <quick - srcdir="${src.dir}/compiler" - destdir="${strap.dir}/lib/compiler" - addparams="${nsc.params}" target="${nsc.target}"> - <classpath> - <pathelement location="${strap.dir}/lib/library"/> - <pathelement location="${strap.dir}/lib/compiler"/> - <pathelement location="${fjbg.jar}"/> - <pathelement location="${msil.jar}"/> - <pathelement location="${ant.jar}"/> - <pathelement location="${jline.jar}"/> - </classpath> - <include name="**/*.scala"/> - <excludesfile name="${nsc.excludes.file}" if="excludes.avail"/> - </quick> - <echo - file="${strap.dir}/lib/compiler/${comp.prop.name}" - message="version.number=${version.number}${line.separator}" - append="false" - /> - <echo - file="${strap.dir}/lib/compiler/${comp.prop.name}" - message="copyright.string=${copyright.string}${line.separator}" - append="true" - /> - <!-- Build partest --> - <mkdir dir="${strap.dir}/lib/partest"/> - <javac - srcdir="${src.dir}/partest" - destdir="${strap.dir}/lib/partest" - source="1.4" target="1.4" deprecation="yes" - classpath="${strap.dir}/lib/partest" - includes="scala/tools/partest/**/*.java"/> - <quick - srcdir="${src.dir}/partest" - destdir="${strap.dir}/lib/partest" - addparams="${nsc.params}" target="${nsc.target}" - deprecation="yes" unchecked="yes"> - <classpath> - <pathelement location="${strap.dir}/lib/library"/> - <pathelement location="${strap.dir}/lib/compiler"/> - <pathelement location="${strap.dir}/lib/actors"/> - <pathelement location="${ant.jar}"/> - </classpath> - </quick> - <echo - file="${strap.dir}/lib/partest/${par.prop.name}" - message="version.number=${version.number}${line.separator}" - append="false" - /> - <echo - file="${strap.dir}/lib/partest/${par.prop.name}" - message="copyright.string=${copyright.string}${line.separator}" - append="true" - /> - <!-- Timing the build --> - <stopwatch name="timer.strap" action="total"/> - <!-- Copy support files to build folder and links external libraries--> - <build.support build.dir="${strap.dir}"/> - <build.links build.dir="${strap.dir}"/> - <!-- Build executable files --> - <taskdef - name="straptool" - classname="scala.tools.ant.ScalaTool" - classpathref="quick.classpath"/> - <mkdir dir="${strap.dir}/bin"/> - <straptool - file="${strap.dir}/bin/${scala.exec.name}" - class="scala.tools.nsc.MainGenericRunner" - javaFlags="${java.flags}"/> - <straptool - file="${strap.dir}/bin/${scalac.exec.name}" - class="scala.tools.nsc.Main" - javaFlags="${java.flags}"/> - <straptool - file="${strap.dir}/bin/${scaladoc.exec.name}" - class="scala.tools.nsc.ScalaDoc" - javaFlags="${java.flags}"/> - <straptool - file="${strap.dir}/bin/${fsc.exec.name}" - class="scala.tools.nsc.CompileClient" - javaFlags="${java.flags}"/> - <chmod perm="ugo+rx" - file="${strap.dir}/bin/${scalac.exec.name}"/> - <chmod perm="ugo+rx" - file="${strap.dir}/bin/${scala.exec.name}"/> - <chmod perm="ugo+rx" - file="${strap.dir}/bin/${scaladoc.exec.name}"/> - <chmod perm="ugo+rx" - file="${strap.dir}/bin/${fsc.exec.name}"/> - <fixcrlf - srcdir="${strap.dir}/bin" - eol="dos" - includes="**/*.bat"/> - </target> - - <!-- Compares quick and test level --> - <target name="test.stability" depends="build.strap"> - <if><available file="${stability.tool}"/> - <then> <!-- use stability tool for fast checking --> - <exec executable="${stability.tool}" failonerror="true"> - <arg value="${quick.dir}"/> - <arg value="${strap.dir}"/> - </exec> - </then><else> <!-- check stability the slow way --> - <checksum totalproperty="quick.md5"> - <fileset dir="${quick.dir}/lib"> - <include name="library/**"/> - <include name="compiler/**"/> - </fileset> - </checksum> - <delete quiet="yes" failonerror="no"> - <fileset dir="${quick.dir}" includes="**/*.MD5"/> - </delete> - <checksum totalproperty="strap.md5"> - <fileset dir="${strap.dir}/lib"> - <include name="library/**"/> - <include name="compiler/**"/> - </fileset> - </checksum> - <delete quiet="yes" failonerror="no"> - <fileset dir="${strap.dir}" includes="**/*.MD5"/> - </delete> - <fail message="Build ${version.number} is not stable"> - <condition><not> - <equals arg1="${quick.md5}" arg2="${strap.md5}"/> - </not></condition> - </fail> - <echo level="info" message="Build ${version.number} is stable."/> - </else></if> - </target> - - <target name="test.strap" depends="build.strap"> - <echo level="info" message="Ant test bench is not available yet."/> - </target> - -<!-- =========================================================================== -DOCUMENTATION -============================================================================ --> - - <target name="docs" depends="setup.quick" - description="Generated the API for library sources"> - <mkdir dir="${api-lib.dir}"/> - <quickdoc - srcdir="${src.dir}" - destdir="${api-lib.dir}" - sourcepath="" - deprecation="yes" unchecked="yes" - windowtitle="Scala Library Documentation" - doctitle="<div>Scala ${version.number}<br/>API Specification</div>" - classpath="${quick.dir}/lib/library${path.separator}${quick.dir}/lib/actors"> - <include name="dbc/**/*.scala"/> - <include name="actors/**/*.scala"/> - <include name="library/**/*.scala"/> - <excludesfile name="${nsc.excludes.file}" if="excludes.avail"/> - </quickdoc> - </target> - - <target name="docs.compiler" depends="setup.quick" - description="Generated the API for compiler sources"> - <mkdir dir="${api-comp.dir}"/> - <quickdoc - srcdir="${src.dir}/compiler" - destdir="${api-comp.dir}" - sourcepath="" - windowtitle="Scala Compiler Documentation" - doctitle="<div>Scala ${version.number}<br/>API Specification</div>"> - <classpath> - <pathelement location="${quick.dir}/lib/library"/> - <pathelement location="${quick.dir}/lib/compiler"/> - <pathelement location="${fjbg.jar}"/> - <pathelement location="${msil.jar}"/> - <pathelement location="${ant.jar}"/> - <pathelement location="${jline.jar}"/> - </classpath> - <include name="**/*.scala"/> - <excludesfile name="${nsc.excludes.file}" if="excludes.avail"/> - </quickdoc> - </target> - - <target name="docs.manual" depends="setup.quick" - description="Generated the manual for the Scala tools"> - <mkdir dir="${tooldocs.dir}/classes"/> - <path id="manual.classpath"> - <pathelement location="${quick.dir}/lib/library"/> - <pathelement location="${tooldocs.dir}/classes"/> - </path> - <quick - srcdir="${src.dir}/manual" - destdir="${tooldocs.dir}/classes" - addparams="${nsc.params}" target="${nsc.target}" - deprecation="yes" unchecked="yes" - classpathref="manual.classpath"> - <include name="**/*.scala"/> - </quick> - <emit command="fsc"/> - <emit command="sbaz"/> - <emit command="scala"/> - <emit command="scalac"/> - <emit command="scaladoc"/> - <emit command="scalap"/> - <fixcrlf srcdir="${tooldocs.dir}" eol="unix" includes="**/*.1"/> - <copy todir="${tooldocs.dir}"> - <fileset dir="${src.dir}/manual/scala/tools/docutil/resources"> - <include name="**/*.html"/> - <include name="**/*.css"/> - <include name="**/*.gif"/> - <include name="**/*.png"/> - </fileset> - </copy> - </target> - - <macrodef name="emit"> - <attribute name="command"/> - <sequential> - <java classname="scala.tools.docutil.EmitHtml" - output="${tooldocs.dir}/@{command}.html" - classpathref="manual.classpath" - fork="true" logError="yes" - > - <arg value="scala.man1.@{command}"/> - </java> - <java classname="scala.tools.docutil.EmitManPage" - output="${tooldocs.dir}/@{command}.1" - classpathref="manual.classpath" - fork="true" logError="yes" - > - <arg value="scala.man1.@{command}"/> - </java> - </sequential> - </macrodef> - -<!-- =========================================================================== -GENERATES A DISTRIBUTION -============================================================================ --> - - <target name="dist.devel" depends="init"> - <property file="${number.file}"/> - <property name="version.number" - value="${version.major}.${version.minor}.${version.patch}.r${svn.number}"/> - <runtarget target="pack"/> - </target> - - <target name="dist.patch" depends="init"> - <property file="${number.file}"/> - <property name="version.number" - value="${version.major}.${version.minor}.${version.patch}.${version.suffix}"/> - <runtarget target="pack"/> - </target> - - <target name="dist.minor" depends="init"> - <property file="${number.file}"/> - <property name="version.number" - value="${version.major}.${version.minor}.${version.patch}.${version.suffix}"/> - <runtarget target="pack"/> - </target> - - <target name="dist" - depends="clean.build, test, build.dist" - description="Creates a (stability-)tested, complete Scala distribution *from scratch*"/> - - <target name="pack" - depends="build.archive, build.sbaz" - description="Packs a distribution for SBaz and ZIP/TAR"/> - - <target name="binaries" - depends="setup, build.strap" - description="Creates a binary Scala distribution"> - <property name="dist.current.dir" - value="${dist.dir}/scala-${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.0"/> - <!-- see http://swik.net/Spring/Interface21+Team+Blog/Creating+OSGi+bundles/b2yoy --> - <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.apache.ant.tools;version="${ant.version.number}";resolution:=optional,org.apache.ant.tools.taskdefs;version="${ant.version.number}";resolution:=optional,org.apache.ant.types;version="${ant.version.number}";resolution:=optional,org.apache.ant.tools.util;version="${ant.version.number}";resolution:=optional,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.parsing.ast;version="${osgi.version.number}",scala.util.parsing.combinator;version="${osgi.version.number}",scala.util.parsing.combinator.lexical;version="${osgi.version.number}",scala.util.parsing.combinator.syntactical;version="${osgi.version.number}",scala.util.parsing.combinator.testing;version="${osgi.version.number}",scala.util.parsing.combinatorold;version="${osgi.version.number}",scala.util.parsing.combinatorold.lexical;version="${osgi.version.number}",scala.util.parsing.combinatorold.syntactical;version="${osgi.version.number}",scala.util.parsing.combinatorold.testing;version="${osgi.version.number}",scala.util.parsing.input;version="${osgi.version.number}",scala.util.parsing.json;version="${osgi.version.number}",scala.util.parsing.syntax;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> - <copy todir="${dist.current.dir}/lib" file="${jline.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"> - <fileset dir="${dist.current.dir}"/> - </copy> - </then> - <else> - <symlink - link="${dist.dir}/latest" - resource="${dist.current.dir}" - overwrite="yes" failonerror="no"/> - </else> - </if> - </target> - - <target name="build.dist" - depends="binaries,docs,docs.manual" - description="Creates the latest Scala distribution"> - <!-- Copy the API, examples and man --> - <copy todir="${dist.current.dir}/doc/scala"> - <fileset dir="${docs.dir}" includes="README,LICENSE"/> - </copy> - <copy todir="${dist.current.dir}/doc/scala/api"> - <fileset dir="${api-lib.dir}"/> - </copy> - <copy todir="${dist.current.dir}/doc/scala/examples"> - <fileset dir="${docs.dir}/examples"/> - </copy> - <copy todir="${dist.current.dir}/man/man1"> - <fileset dir="${tooldocs.dir}" includes="**/*.1"/> - </copy> - <copy todir="${dist.current.dir}/doc/scala/tools"> - <fileset dir="${tooldocs.dir}"> - <include name="**/*.html"/> - <include name="**/*.css"/> - <include name="**/*.gif"/> - <include name="**/*.png"/> - </fileset> - </copy> - <stopwatch name="timer.dist" action="total"/> - </target> - - <!-- Create the SBaz packages --> - <target name="build.sbaz" depends="build.dist,msil,android"> - <property name="sbaz.universe" value="http://www.scala-lang.org/downloads/packages"/> - <mkdir dir="${dist.dir}"/> - <!-- Create the Scala library package --> - <quicksbaz - file="${dist.dir}/scala-library-${version.number}.sbp" - adfile="${dist.dir}/scala-library-${version.number}.advert" - name="scala-library" - version="${version.number}" - desc="The Scala library. This is the minimal requirement to run any Scala program." - link="${sbaz.universe}/scala-library-${version.number}.sbp"> - <libset dir="${dist.current.dir}/lib" includes="${lib.jar.name},${dbc.jar.name}"/> - <srcset dir="${dist.current.dir}/src" includes="${libsrc.jar.name},${dbcsrc.jar.name}"/> - </quicksbaz> - <!-- Create the Scala developer package --> - <quicksbaz - file="${dist.dir}/scala-devel-${version.number}.sbp" - adfile="${dist.dir}/scala-devel-${version.number}.advert" - name="scala-devel" - version="${version.number}" - desc="The Scala developer tools. This contains everything that is required to write, test and document new Scala programs." - depends="scala-library" - link="${sbaz.universe}/scala-devel-${version.number}.sbp"> - <binset dir="${dist.current.dir}/bin" includes="**"/> - <docset dir="${dist.current.dir}/doc" includes="**" excludes="**/scala/api/**,**/scala/tools/**"/> - <libset dir="${dist.current.dir}/lib" includes="${comp.jar.name},${jline.jar.name}"/> - <manset dir="${dist.current.dir}/man" includes="**"/> - <srcset dir="${dist.current.dir}/src" includes="${compsrc.jar.name}"/> - </quicksbaz> - <!-- Create the Scala developer docs package --> - <quicksbaz - file="${dist.dir}/scala-devel-docs-${version.number}.sbp" - adfile="${dist.dir}/scala-devel-docs-${version.number}.advert" - name="scala-devel-docs" - version="${version.number}" - desc="The Scala developer documentation. This contains all developer documentation." - link="${sbaz.universe}/scala-devel-docs-${version.number}.sbp"> - <docset dir="${dist.current.dir}/doc" includes="**/scala/api/**,**/scala/tools/**"/> - </quicksbaz> - <!-- Creates the empty umbrella Scala package --> - <quicksbaz - file="${dist.dir}/scala-${version.number}.sbp" - adfile="${dist.dir}/scala-${version.number}.advert" - name="scala" - version="${version.number}" - desc="The base Scala package that contains everything needed to start using Scala." - depends="scala-library,scala-devel" - link="${sbaz.universe}/scala-${version.number}.sbp"/> - <!-- Creates the Scala test package --> - <quicksbaz - file="${dist.dir}/scala-test-${version.number}.sbp" - adfile="${dist.dir}/scala-test-${version.number}.advert" - name="scala-test" - version="${version.number}" - desc="The Scala test package contains everything needed to test Scala." - link="${sbaz.universe}/scala-test-${version.number}.sbp"> - <binset dir="${basedir}/test" - includes="clitest,diff/diff.*,diff/lib*.dll,scalatest,scalatest.bat,partest"/> - <miscset - dir="${basedir}/test" - includes="files/**/*.args,files/**/*.check,files/**/*.jar,files/**/*.java,files/**/*.scala,files/cli/**/*.check.*,files/jvm/*.so,files/shootout/*.javaopts,files/shootout/*.runner,files/shootout/*.txt"/> - <srcset dir="${dist.current.dir}/src" includes="${parsrc.jar.name}"/> - <libset dir="${dist.current.dir}/lib" includes="${partest.jar.name}"/> - </quicksbaz> - <!-- Creates the MSIL package --> - <quicksbaz - file="${dist.dir}/scala-msil-${version.number}.sbp" - adfile="${dist.dir}/scala-msil-${version.number}.advert" - name="scala-msil" - version="${version.number}" - desc="The Scala MSIL package contains everything needed to use Scala on .NET." - depends="scala-library,scala-devel" - link="${sbaz.universe}/scala-msil-${version.number}.sbp"> - <binset dir="${quick.dir}/bin" includes="scala*net*"/> - <libset dir="${quick.dir}/lib" includes="*.dll"/> - </quicksbaz> - <!-- Creates the CLDC package --> -<!-- - <quicksbaz - file="${dist.dir}/scala-cldc-${version.number}.sbp" - adfile="${dist.dir}/scala-cldc-${version.number}.advert" - name="scala-cldc" - version="${version.number}" - desc="The Scala CLDC package contains everything needed to use Scala on CLDC devices." - link="${sbaz.universe}/scala-cldc-${version.number}.sbp"> - <libset dir="${cldc.dir}/lib" includes="*.jar"/> - </quicksbaz> ---> - <!-- Creates the Android package --> - <if><isset property="android.supported"/><then> - <copy todir="${dist.current.dir}/doc/scala-android/examples"> - <fileset dir="${docs.dir}/android-examples"> - <exclude name="**/R.java"/> - </fileset> - </copy> - <quicksbaz - file="${dist.dir}/scala-android-${version.number}.sbp" - adfile="${dist.dir}/scala-android-${version.number}.advert" - name="scala-android" - version="${version.number}" - desc="The Scala Android package contains everything needed to use Scala on Android." - link="${sbaz.universe}/scala-android-${version.number}.sbp"> - <libset dir="${android.dir}/lib" includes="*.jar"/> - <docset dir="${dist.current.dir}/doc/scala-android" includes="**"/> - </quicksbaz> - </then></if> - </target> - - <target name="build.archive" depends="build.dist"> - <tar - destfile="${dist.dir}/scala-${version.number}.tgz" - compression="gzip"> - <tarfileset - prefix="scala-${version.number}" - dir="${dist.current.dir}" - includes="bin/**" mode="755" - /> - <tarfileset - prefix="scala-${version.number}" - dir="${dist.current.dir}" - excludes="bin/**" - /> - </tar> - <checksum - file="${dist.dir}/scala-${version.number}.tgz" - forceOverwrite="yes" - fileext=".md5"/> - <!-- Create zip archive --> - <zip - destfile="${dist.dir}/scala-${version.number}.zip"> - <zipfileset - prefix="scala-${version.number}" - dir="${dist.current.dir}" - /> - </zip> - <checksum - file="${dist.dir}/scala-${version.number}.zip" - forceOverwrite="yes" - fileext=".md5"/> - <!-- Create source archive --> - <copy todir="${dist.dir}/scala-${version.number}"> - <fileset - dir="${basedir}" - excludes="build,build/**,dists/**" - /> - </copy> - <tar basedir="${dist.dir}" - destfile="${dist.dir}/scala-${version.number}-sources.tgz" - compression="gzip" - includes="scala-${version.number}/**" - /> - </target> - -<!-- =========================================================================== -CLEAN -============================================================================ --> - - <macrodef name="remove"> - <attribute name="dir"/> - <sequential> - <if> - <available file="@{dir}/is_symlink"/> - <then> - <delete includeemptydirs="true" quiet="yes" failonerror="no"> - <fileset dir="@{dir}" includes="**/*"/> - </delete> - </then></if> - <delete dir="@{dir}" includeemptydirs="yes" quiet="yes" failonerror="no"/> - </sequential> - </macrodef> - - <target name="clean" depends="ant-init" description="Removes QUICK, STRAP and API build products"> - <remove dir="${quick.dir}"/> - <remove dir="${strap.dir}"/> - <remove dir="${api.dir}"/> - </target> - - <target name="clean.build" depends="ant-init" - description="Removes all build products"> - <remove dir="${build.dir}"/> - </target> - - <target name="clean.msil" depends="ant-init" description="Removes all MSIL build products"> - <remove dir="${msil.dir}"/> - </target> - -<!-- - <target name="clean.cldc" depends="ant-init" description="Removes all CLDC build products"> - <remove dir="${cldc.dir}"/> - </target> ---> - - <target name="clean.all" depends="ant-init" - description="Removes all build products and distributions"> - <remove dir="${build.dir}"/> - <remove dir="${dist.dir}"/> - </target> - - <target name="clean.unfreeze" depends="init"> - <delete file="${locker.dir}/complete" quiet="yes" failonerror="no"/> - <remove dir="${quick.dir}"/> - </target> - -</project> diff --git a/src/jvm14-library/scala/BigDecimal.scala b/src/jvm14-library/scala/BigDecimal.scala deleted file mode 100644 index 0c9fd0f5fd..0000000000 --- a/src/jvm14-library/scala/BigDecimal.scala +++ /dev/null @@ -1,269 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2007-2009, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id: BigDecimal.scala 15937 2008-08-26 13:48:19Z michelou $ - -package scala - -import java.math.{BigDecimal => BigDec} - -/** - * @author Stephane Micheloud - * @version 1.0 - */ -object BigDecimal { - - @serializable - object RoundingMode extends Enumeration { - type RoundingMode = Value - val ROUND_UP, ROUND_DOWN, ROUND_CEILING, ROUND_FLOOR, ROUND_HALF_UP, - ROUND_HALF_DOWN, ROUND_HALF_EVEN, ROUND_UNNECESSARY = Value - } - - private val minCached = -512 - private val maxCached = 512 - private lazy val cache = new Array[BigDecimal](maxCached - minCached + 1) - - /** Constructs a <code>BigDecimal</code> whose value is equal to that of the - * specified <code>Integer</code> value. - * - * @param i the specified integer value - * @return the constructed <code>BigDecimal</code> - */ - def apply(i: Int): BigDecimal = - if (minCached <= i && i <= maxCached) { - val offset = i - minCached - var n = cache(offset) - if (n eq null) { n = new BigDecimal(BigDec.valueOf(i)); cache(offset) = n } - n - } else new BigDecimal(BigDec.valueOf(i)) - - /** Constructs a <code>BigDecimal</code> whose value is equal to that of the - * specified long value. - * - * @param l the specified long value - * @return the constructed <code>BigDecimal</code> - */ - def apply(l: Long): BigDecimal = - if (minCached <= l && l <= maxCached) apply(l.toInt) - else new BigDecimal(BigDec.valueOf(l)) - - /** Constructs a <code>BigDecimal</code> whose value is equal to that of the - * specified double value. - * - * @param d the specified <code>Double</code> value - * @return the constructed <code>BigDecimal</code> - */ - def apply(d: Double): BigDecimal = - new BigDecimal(new BigDec(d)) - - /** Translates a character array representation of a <code>BigDecimal</code> - * into a <code>BigDecimal</code>. - */ - def apply(x: Array[Char]): BigDecimal = - new BigDecimal(new BigDec(x.toString)) - - /** Translates the decimal String representation of a <code>BigDecimal</code> - * into a <code>BigDecimal</code>. - */ - def apply(x: String): BigDecimal = - new BigDecimal(new BigDec(x)) - - /** Constructs a <code>BigDecimal</code> whose value is equal to that of the - * specified <code>BigInt</code> value. - * - * @param x the specified <code>BigInt</code> value - * @return the constructed <code>BigDecimal</code> - */ - def apply(x: BigInt): BigDecimal = - new BigDecimal(new BigDec(x.bigInteger)) - - /** Implicit conversion from <code>Int</code> to <code>BigDecimal</code>. */ - implicit def int2bigDecimal(i: Int): BigDecimal = apply(i) - - /** Implicit conversion from <code>Long</code> to <code>BigDecimal</code>. */ - implicit def long2bigDecimal(l: Long): BigDecimal = apply(l) - - /** Implicit conversion from <code>Double</code> to <code>BigDecimal</code>. */ - implicit def double2bigDecimal(d: Double): BigDecimal = apply(d) - - /** Implicit conversion from BigDecimal to <code>Ordered</code>. */ - implicit def bigDecimal2ordered(x: BigDecimal): Ordered[BigDecimal] = - new Ordered[BigDecimal] with Proxy { - def self: Any = x - def compare(y: BigDecimal): Int = x.bigDecimal.compareTo(y.bigDecimal) - } -} - -/** - * @author Stephane Micheloud - * @version 1.0 - */ -@serializable -class BigDecimal(val bigDecimal: BigDec) extends java.lang.Number { - import BigDecimal.RoundingMode._ - - /** Returns the hash code for this BigDecimal. */ - override def hashCode(): Int = this.bigDecimal.hashCode() - - /** Compares this BigDecimal with the specified value for equality. - */ - override def equals(that: Any): Boolean = that match { - case that: BigDecimal => this equals that - case that: java.lang.Double => this.bigDecimal.doubleValue == that.doubleValue - case that: java.lang.Float => this.bigDecimal.floatValue == that.floatValue - case that: java.lang.Number => this equals BigDecimal(that.longValue) - case that: java.lang.Character => this equals BigDecimal(that.charValue.asInstanceOf[Int]) - case _ => false - } - - /** Compares this BigDecimal with the specified BigDecimal for equality. - */ - def equals (that: BigDecimal): Boolean = - this.bigDecimal.compareTo(that.bigDecimal) == 0 - - /** Compares this BigDecimal with the specified BigDecimal - */ - def compare (that: BigDecimal): Int = this.bigDecimal.compareTo(that.bigDecimal) - - /** Less-than-or-equals comparison of BigDecimals - */ - def <= (that: BigDecimal): Boolean = this.bigDecimal.compareTo(that.bigDecimal) <= 0 - - /** Greater-than-or-equals comparison of BigDecimals - */ - def >= (that: BigDecimal): Boolean = this.bigDecimal.compareTo(that.bigDecimal) >= 0 - - /** Less-than of BigDecimals - */ - def < (that: BigDecimal): Boolean = this.bigDecimal.compareTo(that.bigDecimal) < 0 - - /** Greater-than comparison of BigDecimals - */ - def > (that: BigDecimal): Boolean = this.bigDecimal.compareTo(that.bigDecimal) > 0 - - /** Addition of BigDecimals - */ - def + (that: BigDecimal): BigDecimal = - new BigDecimal(this.bigDecimal.add(that.bigDecimal)) - - /** Subtraction of BigDecimals - */ - def - (that: BigDecimal): BigDecimal = - new BigDecimal(this.bigDecimal.subtract(that.bigDecimal)) - - /** Multiplication of BigDecimals - */ - def * (that: BigDecimal): BigDecimal = - new BigDecimal(this.bigDecimal.multiply(that.bigDecimal)) - - /** Division of BigDecimals. Default rounding mode is <code>ROUND_HALF_UP</code> - * (same value as <code>MathContext.DEFAULT_ROUNDINGMODE</code> (private) - * in Java 1.5 or newer). - */ - def / (that: BigDecimal): BigDecimal = - new BigDecimal(this.bigDecimal.divide(that.bigDecimal, BigDec.ROUND_HALF_UP)) - - /** Returns the minimum of this and that - */ - def min (that: BigDecimal): BigDecimal = - new BigDecimal(this.bigDecimal.min(that.bigDecimal)) - - /** Returns the maximum of this and that - */ - def max (that: BigDecimal): BigDecimal = - new BigDecimal(this.bigDecimal.max(that.bigDecimal)) - - /** Returns a BigDecimal whose value is the negation of this BigDecimal - */ - def unary_- : BigDecimal = new BigDecimal(this.bigDecimal.negate()) - - /** Returns the absolute value of this BigDecimal - */ - def abs: BigDecimal = new BigDecimal(this.bigDecimal.abs()) - - /** Returns the sign of this BigDecimal, i.e. - * -1 if it is less than 0, - * +1 if it is greater than 0 - * 0 if it is equal to 0 - */ - def signum: Int = this.bigDecimal.signum() - - /** Returns the scale of this <code>BigDecimal</code>. - */ - def scale: Int = this.bigDecimal.scale() - - /** Returns a <code>BigDecimal</code> whose scale is the specified value, and whose value is - * numerically equal to this BigDecimal's. - */ - def setScale(scale: Int): BigDecimal = - new BigDecimal(this.bigDecimal setScale scale) - - def setScale(scale: Int, mode: RoundingMode): BigDecimal = - new BigDecimal(this.bigDecimal.setScale(scale, mode.id)) - - /** Converts this BigDecimal to a <tt>byte</tt>. - * If the BigDecimal is too big to fit in a byte, only the low-order 8 bits are returned. - * Note that this conversion can lose information about the overall magnitude of the - * BigDecimal value as well as return a result with the opposite sign. - */ - override def byteValue = intValue.toByte - - /** Converts this BigDecimal to a <tt>short</tt>. - * If the BigDecimal is too big to fit in a byte, only the low-order 16 bits are returned. - * Note that this conversion can lose information about the overall magnitude of the - * BigDecimal value as well as return a result with the opposite sign. - */ - override def shortValue = intValue.toShort - - /** Converts this BigDecimal to a <tt>char</tt>. - * If the BigDecimal is too big to fit in a char, only the low-order 16 bits are returned. - * Note that this conversion can lose information about the overall magnitude of the - * BigDecimal value and that it always returns a positive result. - */ - def charValue = intValue.toChar - - /** Converts this BigDecimal to an <tt>int</tt>. - * If the BigDecimal is too big to fit in a char, only the low-order 32 bits - * are returned. Note that this conversion can lose information about the - * overall magnitude of the BigDecimal value as well as return a result with - * the opposite sign. - */ - def intValue = this.bigDecimal.intValue - - /** Converts this BigDecimal to a <tt>Long</tt>. - * If the BigDecimal is too big to fit in a char, only the low-order 64 bits - * are returned. Note that this conversion can lose information about the - * overall magnitude of the BigDecimal value as well as return a result with - * the opposite sign. - */ - def longValue = this.bigDecimal.longValue - - /** Converts this BigDecimal to a <tt>float</tt>. - * if this BigDecimal has too great a magnitude to represent as a float, - * it will be converted to <code>Float.NEGATIVE_INFINITY</code> or - * <code>Float.POSITIVE_INFINITY</code> as appropriate. - */ - def floatValue = this.bigDecimal.floatValue - - /** Converts this BigDecimal to a <tt>Double</tt>. - * if this BigDecimal has too great a magnitude to represent as a float, - * it will be converted to <code>Float.NEGATIVE_INFINITY</code> or - * <code>Float.POSITIVE_INFINITY</code> as appropriate. - */ - def doubleValue = this.bigDecimal.doubleValue - - /** Converts this <code>BigDecimal</code> to a BigInteger. - */ - def toBigInt(): BigInt = new BigInt(this.bigDecimal.toBigInteger()) - - /** Returns the decimal String representation of this BigDecimal. - */ - override def toString(): String = this.bigDecimal.toString() - -} diff --git a/src/jvm14-library/scala/runtime/RichString.scala b/src/jvm14-library/scala/runtime/RichString.scala deleted file mode 100644 index ada259931d..0000000000 --- a/src/jvm14-library/scala/runtime/RichString.scala +++ /dev/null @@ -1,266 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2002-2009, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - - -package scala.runtime - -import Predef._ -import scala.util.matching.Regex - -final class RichString(val self: String) extends Proxy with RandomAccessSeq[Char] with Ordered[String] { - import RichString._ - override def apply(n: Int) = self charAt n - override def length = self.length - override def toString = self - override def mkString = self - - override def slice(from: Int, until: Int): RichString = { - val len = self.length - new RichString( - if (from >= until || from >= len) - "" - else { - val from0 = if (from < 0) 0 else from - val until0 = if (until > len) len else until - self.substring(from0, until0) - } - ) - } - - //override def ++ [B >: A](that: Iterable[B]): Seq[B] = { - override def ++[B >: Char](that: Iterable[B]): RandomAccessSeq[B] = that match { - case that: RichString => new RichString(self + that.self) - case that => super.++(that) - } - - override def take(until: Int): RichString = slice(0, until) - - override def drop(from: Int): RichString = slice(from, self.length) - - override def startsWith[B](that: Seq[B]) = that match { - case that: RichString => self startsWith that.self - case that => super.startsWith(that) - } - - override def endsWith[B](that: Seq[B]) = that match { - case that: RichString => self endsWith that.self - case that => super.endsWith(that) - } - - override def indexOf[B](that: Seq[B]) = that match { - case that: RichString => self indexOf that.self - case that => super.indexOf(that) - } - - override def containsSlice[B](that: Seq[B]) = that match { - case that: RichString => self contains that.self - case that => super.containsSlice(that) - } - - def contains(arg: String) : Boolean = { - self.matches(""".*\Q"""+arg+"""\E.*""") - } - - override def reverse: RichString = { - val buf = new StringBuilder - var i = self.length - 1 - while (i >= 0) { - buf append (self charAt i) - i -= 1 - } - new RichString(buf.toString) - } - - /** return n times the current string - */ - def * (n: Int): String = { - val buf = new StringBuilder - for (i <- 0 until n) buf append self - buf.toString - } - - override def compare(other: String) = self compareTo other - - private def isLineBreak(c: Char) = c == LF || c == FF - - /** <p> - * Strip trailing line end character from this string if it has one. - * A line end character is one of - * </p> - * <ul style="list-style-type: none;"> - * <li>LF - line feed (0x0A hex)</li> - * <li>FF - form feed (0x0C hex)</li> - * </ul> - * <p> - * If a line feed character LF is preceded by a carriage return CR - * (0x0D hex), the CR character is also stripped (Windows convention). - * </p> - */ - def stripLineEnd: String = { - val len = self.length - if (len == 0) self - else { - val last = apply(len - 1) - if (isLineBreak(last)) - self.substring(0, if (last == LF && len >= 2 && apply(len - 2) == CR) len - 2 else len - 1) - else - self - } - } - - /** <p> - * Return all lines in this string in an iterator, including trailing - * line end characters. - * </p> - * <p> - * The number of strings returned is one greater than the number of line - * end characters in this string. For an empty string, a single empty - * line is returned. A line end character is one of - * </p> - * <ul style="list-style-type: none;"> - * <li>LF - line feed (0x0A hex)</li> - * <li>FF - form feed (0x0C hex)</li> - * </ul> - */ - def linesWithSeparators = new Iterator[String] { - val len = self.length - var index = 0 - def hasNext: Boolean = index < len - def next(): String = { - if (index >= len) throw new NoSuchElementException("next on empty iterator") - val start = index - while (index < len && !isLineBreak(apply(index))) index += 1 - index += 1 - self.substring(start, index min len) - } - } - - /** Return all lines in this string in an iterator, excluding trailing line - * end characters, i.e. apply <code>.stripLineEnd</code> to all lines - * returned by <code>linesWithSeparators</code>. - */ - def lines: Iterator[String] = - linesWithSeparators map (line => new RichString(line).stripLineEnd) - - /** Returns this string with first character converted to upper case */ - def capitalize: String = - if (self == null) null - else if (self.length == 0) "" - else { - val chars = self.toCharArray - chars(0) = chars(0).toUpperCase - new String(chars) - } - - /** <p> - * For every line in this string: - * </p> - * <blockquote> - * Strip a leading prefix consisting of blanks or control characters - * followed by <code>marginChar</code> from the line. - * </blockquote> - */ - def stripMargin(marginChar: Char): String = { - val buf = new StringBuilder - for (line <- linesWithSeparators) { - val len = line.length - var index = 0 - while (index < len && line.charAt(index) <= ' ') index += 1 - buf append - (if (index < len && line.charAt(index) == marginChar) line.substring(index + 1) else line) - } - buf.toString - } - - /** <p> - * For every line in this string: - * </p> - * <blockquote> - * Strip a leading prefix consisting of blanks or control characters - * followed by <code>|</code> from the line. - * </blockquote> - */ - def stripMargin: String = stripMargin('|') - - // NB. "\\Q" + '\\' + "\\E" works on Java 1.5 and newer, but not on Java 1.4 - private def escape(ch: Char): String = ch match { - case '\\' => "\\\\" - case _ => "\\Q"+ch+"\\E" - } - - @throws(classOf[java.util.regex.PatternSyntaxException]) - def split(separator: Char): Array[String] = self.split(escape(separator)) - - @throws(classOf[java.util.regex.PatternSyntaxException]) - def split(separators: Array[Char]): Array[String] = { - val re = separators.foldLeft("[")(_+escape(_)) + "]" - self.split(re) - } - - /** You can follow a string with `.r', turning - * it into a Regex. E.g. - * - * """A\w*""".r is the regular expression for identifiers starting with `A'. - */ - def r: Regex = new Regex(self) - - def toBoolean: Boolean = parseBoolean(self) - def toByte: Byte = java.lang.Byte.parseByte(self) - def toShort: Short = java.lang.Short.parseShort(self) - def toInt: Int = java.lang.Integer.parseInt(self) - def toLong: Long = java.lang.Long.parseLong(self) - def toFloat: Float = java.lang.Float.parseFloat(self) - def toDouble: Double = java.lang.Double.parseDouble(self) - - def toArray: Array[Char] = { - val result = new Array[Char](length) - self.getChars(0, length, result, 0) - result - } - - - /** <p> - * Uses the underlying string as a pattern (in a fashion similar to - * printf in C), and uses the supplied arguments to fill in the - * holes. Only works on Java 1.5 or higher! - * </p> - * <p> - * The interpretation of the formatting patterns is described in - * <a href="" target="contentFrame" class="java/util/Formatter"> - * <code>java.util.Formatter</code></a>. - * </p> - * - * @param args the arguments used to instantiating the pattern. - * @throws java.lang.IllegalArgumentException - */ - def format(args : Any*) : String = { - val m = classOf[String].getDeclaredMethod("format", classOf[String], classOf[Array[Object]]) - m.invoke(null, self, - args.asInstanceOf[scala.runtime.BoxedObjectArray]. - unbox(args.getClass).asInstanceOf[Array[Object]]).asInstanceOf[String] - } -} - -object RichString { - // just statics for rich string. - private final val LF: Char = 0x0A - private final val FF: Char = 0x0C - private final val CR: Char = 0x0D - private final val SU: Char = 0x1A - - private def parseBoolean(s: String): Boolean = - if (s != null) s.toLowerCase match { - case "true" => true - case "false" => false - case _ => throw new NumberFormatException("For input string: \""+s+"\"") - } - else - throw new NumberFormatException("For input string: \"null\"") -} diff --git a/src/jvm14-library/scala/util/parsing/json/JSON.scala b/src/jvm14-library/scala/util/parsing/json/JSON.scala deleted file mode 100644 index b03149cde1..0000000000 --- a/src/jvm14-library/scala/util/parsing/json/JSON.scala +++ /dev/null @@ -1,95 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2006-2009, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id: JSON.scala 15746 2008-08-11 17:33:54Z dchenbecker $ - - -package scala.util.parsing.json - -/** - * This object provides a simple interface to the JSON parser class. The default conversion - * for numerics is into a double. If you wish to override this behavior at the global level, - * you can set the globalNumberParser property to your own (String => Any) function. If you only - * want to override at the per-thread level then you can set the perThreadNumberParser property to your - * function. For example: - * - * <pre> - * val myConversionFunc = {input : String => BigDecimal(input)} - * - * // Global override - * JSON.globalNumberParser = myConversionFunc - * - * // Per-thread override - * JSON.perThreadNumberParser = myConversionFunc - * </pre> - * - * @author Derek Chen-Becker <"java"+@+"chen-becker"+"."+"org"> - */ -object JSON extends Parser { - - /** - * Parse the given JSON string and return a list of elements. If the - * string is a JSON object it will be a list of pairs. If it's a JSON - * array it will be be a list of individual elements. - * - * @param input the given JSON string. - * @return an optional list of of elements. - */ - def parse(input: String): Option[List[Any]] = - phrase(root)(new lexical.Scanner(input)) match { - case Success(result, _) => Some(result) - case _ => None - } - - /** - * Parse the given JSON string and return either a <code>List[Any]</code> - * if the JSON string specifies an <code>Array</code>, or a - * <code>Map[String,Any]</code> if the JSON string specifies an object. - * - * @param input the given JSON string. - * @return an optional list or map. - */ - def parseFull(input: String): Option[Any] = - parse(input) match { - case Some(data) => Some(resolveType(data)) - case None => None - } - - /** - * A utility method to resolve a parsed JSON list into objects or - * arrays. See the parse method for details. - */ - def resolveType(input: List[_]): Any = { - var objMap = Map[String, Any]() - - if (input.forall { - case (key: String, value: List[_]) => - objMap += (key -> resolveType(value)) - true - case (key : String, value : Any) => - objMap += (key -> value) - true - case _ => false - }) objMap - else - input - } - - /** - * The global (VM) default function for converting a string to a numeric value. - */ - def globalNumberParser_=(f: NumericParser) { defaultNumberParser = f } - def globalNumberParser : NumericParser = defaultNumberParser - - /** - * Defines the function used to convert a numeric string literal into a numeric format on a per-thread - * basis. Use globalNumberParser for a global override - */ - def perThreadNumberParser_=(f : NumericParser) { numberParser.set(f) } - def perThreadNumberParser : NumericParser = numberParser.get().asInstanceOf[NumericParser] // cast for jvm 1.4 -} diff --git a/src/jvm14-library/scala/util/parsing/json/Parser.scala b/src/jvm14-library/scala/util/parsing/json/Parser.scala deleted file mode 100644 index 1f024d16ea..0000000000 --- a/src/jvm14-library/scala/util/parsing/json/Parser.scala +++ /dev/null @@ -1,50 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2006-2009, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id: Parser.scala 15746 2008-08-11 17:33:54Z dchenbecker $ - - -package scala.util.parsing.json - -import scala.util.parsing.combinator._ -import scala.util.parsing.combinator.syntactical._ -import scala.util.parsing.combinator.lexical._ - -/** - * @author Derek Chen-Becker <"java"+@+"chen-becker"+"."+"org"> - */ -class Parser extends StdTokenParsers with ImplicitConversions { - // Fill in abstract defs - type Tokens = Lexer - val lexical = new Tokens - - // Configure lexical parsing - lexical.reserved ++= List("true", "false", "null") - lexical.delimiters ++= List("{", "}", "[", "]", ":", ",") - - /** Type signature for functions that can parse numeric literals */ - type NumericParser = String => Any - - // Global default number parsing function - protected var defaultNumberParser : NumericParser = {_.toDouble} - - // Per-thread default number parsing function - protected val numberParser = new ThreadLocal[NumericParser]() { - override def initialValue() = defaultNumberParser - } - - // Define the grammar - def root = jsonObj | jsonArray - def jsonObj = "{" ~> repsep(objEntry, ",") <~ "}" - def jsonArray = "[" ~> repsep(value, ",") <~ "]" - def objEntry = stringVal ~ (":" ~> value) ^^ { case x ~ y => (x, y) } - def value: Parser[Any] = (jsonObj | jsonArray | number | "true" ^^^ true | "false" ^^^ false | "null" ^^^ null | stringVal) - def stringVal = accept("string", { case lexical.StringLit(n) => n} ) - def number = accept("number", { case lexical.NumericLit(n) => numberParser.get.asInstanceOf[NumericParser].apply(n)} ) // cast for jvm 1.4 -} - |