summaryrefslogtreecommitdiff
path: root/src/build/build-cldc.xml
diff options
context:
space:
mode:
Diffstat (limited to 'src/build/build-cldc.xml')
-rw-r--r--src/build/build-cldc.xml249
1 files changed, 249 insertions, 0 deletions
diff --git a/src/build/build-cldc.xml b/src/build/build-cldc.xml
new file mode 100644
index 0000000000..7f9964af57
--- /dev/null
+++ b/src/build/build-cldc.xml
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id: $ -->
+
+<project name="scala-cldc" basedir="../.." default="build">
+
+<!-- ===========================================================================
+PROPERTIES
+============================================================================ -->
+
+ <import file="build-jvm14.xml"/>
+
+ <!-- Loads custom properties definitions -->
+ <property file="${scripts.dir}/scripts/build-cldc.properties"/>
+
+ <!-- Sets location of build folders -->
+ <property name="build.dir" value="${basedir}/build"/>
+ <property name="cldc.dir" value="${build.dir}/cldc"/>
+ <property name="dist.dir" value="${basedir}/dists"/>
+
+ <property name="cldcapi.jar" value="${lib.dir}/cldcapi10.jar"/>
+ <property name="midpapi.jar" value="${lib.dir}/midpapi10.jar"/>
+
+<!-- ===========================================================================
+SETUP
+============================================================================ -->
+
+ <target name="cldc.init" depends="init">
+ <!-- Sets preverify command (Java WTK) -->
+ <condition property="preverify.cmd" value="${unix.wtk.home}/bin/preverify">
+ <and>
+ <os family="unix"/><isset property="unix.wtk.home"/>
+ <available file="${unix.wtk.home}/bin/preverify"/>
+ </and>
+ </condition>
+ <condition property="preverify.cmd" value="${win.wtk.home}/preverify">
+ <and>
+ <os family="windows"/><isset property="win.wtk.home"/>
+ <available file="${win.wtk.home}/bin/preverify.exe"/>
+ </and>
+ </condition>
+ <echo level="verbose" message="Found: ${preverify.cmd}"/>
+ <condition property="preverify.cmd" value="preverify">
+ <and><available file="preverify" filepath="${env.PATH}"/></and>
+ </condition>
+ <fail message="Command 'preverify' not found">
+ <condition><not><isset property="preverify.cmd"/></not></condition>
+ </fail>
+ <property file="${number.file}"/>
+ <property
+ name="version.number"
+ value="${version.major}.${version.minor}.${version.patch}.r${svn.number}-b${time.short}"/>
+ <echo level="verbose" message="${version.number}"/>
+ </target>
+
+ <target name="cldc.sources" depends="cldc.init"
+ 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="**/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="cldc.sources"
+ description="Builds the Scala library for J2ME (CLDC)"
+ >
+ <antcall target="build.quick"/>
+ <mkdir dir="${cldc.dir}/lib/library"/>
+ <!-- javac versions > 1.4 do not support 1.1 target anymore -->
+ <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>
+ <property name="quick.dir" value="${build.dir}/quick"/>
+ <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"/>
+ <quick
+ srcdir="${cldc.dir}/src"
+ destdir="${cldc.dir}/lib/library"
+ usepredefs="no"
+ 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.cmd}" 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>
+ <!-- see http://java.sun.com/j2me/docs/uei_specs.pdf -->
+ <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.build" depends="cldc.libraries">
+ <!-- exemples ? -->
+ </target>
+
+ <target name="cldc.dist" depends="cldc.build">
+ <antcall target="binaries"/>
+ <property name="dist.current.dir" value="${dist.dir}/scala-cldc-${version.number}"/>
+ <mkdir dir="${dist.current.dir}"/>
+ <copy todir="${dist.current.dir}/bin">
+ <fileset dir="${dist.dir}/latest-jvm14/bin"/>
+ </copy>
+ <chmod perm="ugo+rx" dir="${dist.current.dir}/bin"/>
+ <copy todir="${dist.current.dir}/lib">
+ <fileset dir="${lib.dir}" includes="cldc*.jar,midp*.jar"/>
+ </copy>
+ <copy todir="${dist.current.dir}/lib">
+ <fileset dir="${dist.dir}/latest-jvm14/lib" includes="scala*.jar"/>
+ </copy>
+ <!-- Recreate the 'latest' link to point to this distribution -->
+ <if><isset property="os.win"/>
+ <then>
+ <copy todir="${dist.dir}/latest-cldc">
+ <fileset dir="${dist.current.dir}"/>
+ </copy>
+ </then>
+ <else>
+ <symlink
+ link="${dist.dir}/latest-cldc"
+ resource="${dist.current.dir}"
+ overwrite="yes" failonerror="no"/>
+ </else>
+ </if>
+ </target>
+
+<!-- ===========================================================================
+CLEAN
+============================================================================ -->
+
+ <target name="cldc.clean" depends="ant-init">
+ <remove dir="${build.dir}/cldc"/>
+ <delete includeemptydirs="true" quiet="yes" failonerror="no">
+ <fileset dir="@{dist.dir}" includes="**/scala-cldc*"/>
+ </delete>
+ <delete file="${dist.dir}/latest-cldc" quiet="yes" failonerror="no"/>
+ </target>
+
+</project>