blob: 25d24c118693659c563ee32eae1ff0266de191c9 (
plain) (
tree)
|
|
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: $ -->
<project name="scala-android" basedir="../.." default="build">
<!-- ===========================================================================
PROPERTIES
============================================================================ -->
<import file="build-jvm15.xml"/>
<!-- Loads custom properties definitions -->
<property file="${basedir}/scripts/build-android.properties"/>
<!-- Sets location of build folders -->
<property name="build.dir" value="${basedir}/build"/>
<property name="android.dir" value="${build.dir}/android"/>
<property name="dist.dir" value="${basedir}/dists"/>
<!-- ===========================================================================
SETUP
============================================================================ -->
<target name="android.init" depends="init">
<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><and>
<available file="${android.home}/android.jar"/>
<available file="${android.home}/tools/lib/dx.jar"/>
</and></not></condition>
</fail>
<property name="android.jar" value="${android.home}/android.jar"/>
<property name="tools.lib.dir" value="${android.home}/tools/lib"/>
<property name="dx.jar" value="${tools.lib.dir}/dx.jar"/>
<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="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}/library"
includes="**/*.scala, **/*.java"
excludes="scala/reflect/ScalaBeanInfo.scala">
<not>
<present targetdir="${src.dir}/android-library"/>
</not>
</fileset>
</copy>
<copy todir="${android.dir}/src">
<fileset dir="${src.dir}/android-library">
<include name="**/*.scala"/>
<include name="**/*.java"/>
</fileset>
</copy>
</target>
<target name="android.libraries" depends="android.sources"
description="Builds the Scala library for Android">
<antcall target="build.quick"/>
<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"/>
<mkdir dir="${android.dir}/lib/library"/>
<javac
srcdir="${android.dir}/src"
destdir="${android.dir}/lib/library"
deprecation="${jc.deprecation}"
>
<bootclasspath>
<pathelement location="${android.jar}"/>
</bootclasspath>
<include name="**/*.java"/>
</javac>
<quick
srcdir="${android.dir}/src"
destdir="${android.dir}/lib/library"
usepredefs="no"
deprecation="yes" unchecked="yes"
addparams="${nsc.params}"
extdirs=""
scalacdebugging="${nsc.log-files}"
>
<bootclasspath>
<pathelement location="${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.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">
<java jar="${dx.jar}" fork="true" failonerror="true">
<jvmarg value="-Djava.ext.dirs=${tools.lib.dir}"/>
<jvmarg value="-Xmx384M"/>
<arg value="--dex"/>
<arg value="--output=${android.dir}/lib/scala.dex"/>
<arg value="--locals=full"/>
<arg value="--positions=lines"/>
<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.dist" depends="android.build">
<antcall target="binaries"/>
<property name="dist.current.dir" value="${dist.dir}/scala-android-${version.number}"/>
<mkdir dir="${dist.current.dir}"/>
<!--
<copy todir="${dist.current.dir}/bin">
<fileset dir="${dist.dir}/latest/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>
-->
<!-- Recreate the 'latest' link to point to this distribution -->
<if><isset property="os.win"/>
<then>
<copy todir="${dist.dir}/latest-android">
<fileset dir="${dist.current.dir}"/>
</copy>
</then>
<else>
<symlink
link="${dist.dir}/latest-android"
resource="${dist.current.dir}"
overwrite="yes" failonerror="no"/>
</else>
</if>
</target>
<!-- ===========================================================================
CLEAN
============================================================================ -->
<target name="android.clean" depends="ant-init">
<remove dir="${build.dir}/android"/>
<delete includeemptydirs="true" quiet="yes" failonerror="no">
<fileset dir="@{dist.dir}" includes="**/scala-android*"/>
</delete>
<delete file="${dist.dir}/latest-android" quiet="yes" failonerror="no"/>
</target>
</project>
|