blob: 7f9964af57c56421c244a192e3ff80669550ba55 (
plain) (
tree)
|
|
<?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>
|