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