summaryrefslogtreecommitdiff
path: root/src/build/build-android.xml
diff options
context:
space:
mode:
Diffstat (limited to 'src/build/build-android.xml')
-rw-r--r--src/build/build-android.xml195
1 files changed, 195 insertions, 0 deletions
diff --git a/src/build/build-android.xml b/src/build/build-android.xml
new file mode 100644
index 0000000000..25d24c1186
--- /dev/null
+++ b/src/build/build-android.xml
@@ -0,0 +1,195 @@
+<?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>