diff options
Diffstat (limited to 'src/build/build-cldc.xml')
-rw-r--r-- | src/build/build-cldc.xml | 249 |
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> |