blob: ec76867241f838a849c008960849be9ae579730e [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<project name="jack" default="all"
xmlns:if="ant:if"
xmlns:unless="ant:unless"
xmlns:ivy="antlib:org.apache.ivy.ant">
<description>
This buildfile is used to build all Jack projects and run tests.
</description>
<target name="all" description="build all Jack projects" depends="dexcomparator-lib,
jack,
jack-api,
jack-api-src,
jack-annotations-lib,
jack-test-annotations-lib,
jackunittests,
jack-tests,
sched-lib,
schedtests-lib,
jill,
jill-api,
jack-jar-tools"/>
<target name="clean" depends="jack-clean,
jack-api-lib-clean,
jack-api-clean,
jack-api-src-clean,
jack-annotations-lib-clean,
jack-test-annotations-lib-clean,
jack-intermediate-clean,
jackunittests-lib-clean,
jackunittests-clean,
jack-tests-clean,
antlr-clean,
args4j-lib-clean,
ecj-clean,
ecj-tests-clean,
simple-lib-clean,
freemarker-lib-clean,
guava-lib-clean,
jsr305-lib-clean,
maths-lib-clean,
sched-lib-clean,
sched-build-lib-clean,
sched-build-clean,
schedtests-lib-clean,
watchmaker-lib-clean,
antlr-rt-lib-clean,
allocation-lib-clean,
junit4-lib-clean,
junit4-jack-lib-clean,
junit4-clean,
hamcrest-core-lib-clean,
dexcomparator-clean,
dex-lib-clean,
ddm-lib-clean,
dx-ref-lib-clean,
core-stubs-mini-clean,
jack-default-lib-clean,
jill-clean,
jill-api-lib-clean,
jill-api-src-clean,
jack-jar-tools-clean,
asm4-clean,
dist-clean" />
<dirname property="jack-project.dir" file="${ant.file.jack}"/>
<property name="jack.dir" value="${jack-project.dir}/jack" />
<property name="jack-api.dir" value="${jack-project.dir}/jack-api" />
<property name="jack-tests.dir" value="${jack-project.dir}/jack-tests" />
<property name="antlr.dir" value="${jack-project.dir}/antlr"/>
<property name="args4j.dir" value="${jack-project.dir}/args4j"/>
<property name="ddm-lib.dir" value="${jack-project.dir}/ddmlib"/>
<property name="ecj.dir" value="${jack-project.dir}/ecj"/>
<property name="ecj-tests.dir" value="${jack-project.dir}/ecj-tests-lib"/>
<property name="simple.dir" value="${jack-project.dir}/simple"/>
<property name="freemarker.dir" value="${jack-project.dir}/freemarker"/>
<property name="guava.dir" value="${jack-project.dir}/guava"/>
<property name="jsr305.dir" value="${jack-project.dir}/jsr305"/>
<property name="maths.dir" value="${jack-project.dir}/maths"/>
<property name="sched.dir" value="${jack-project.dir}/sched"/>
<property name="watchmaker.dir" value="${jack-project.dir}/watchmaker"/>
<property name="antlr-rt.dir" value="${jack-project.dir}/antlr-runtime"/>
<property name="allocation.dir" value="${jack-project.dir}/java-allocation-instrumenter"/>
<property name="junit4.dir" value="${jack-project.dir}/junit4"/>
<property name="hamcrest-core.dir" value="${jack-project.dir}/hamcrest-core"/>
<property name="dexcomparator.dir" value="${jack-project.dir}/dexcomparator"/>
<property name="dexlib.dir" value="${jack-project.dir}/dexlib"/>
<property name="tools.dir" value="${jack-project.dir}/tools"/>
<property name="dx-ref.dir" value="${jack-project.dir}/dx-ref"/>
<property name="core-stubs-mini.dir" value="${jack-project.dir}/core-stubs-mini"/>
<property name="jack-jar-tools.dir" value="${jack-project.dir}/jack-jar-tools"/>
<property name="jill.dir" value="${jack-project.dir}/jill" />
<property name="jill-api.dir" value="${jack-project.dir}/jill-api" />
<property name="asm4.dir" value="${jack-project.dir}/asm4" />
<taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask"
classpath="${jack-project.dir}/jarjar/jarjar.jar"/>
<!-- ******************* -->
<!-- Distributed files -->
<!-- ******************* -->
<property name="jack-top-dist.dir" value="${jack-project.dir}/dist" />
<property name="jack.dist-doc.dir" value="${jack-top-dist.dir}/doc" />
<property name="jack.doc.dir" value="${jack.dist-doc.dir}/jack" />
<property name="jack-internal-doc.dir" value="${jack.doc.dir}/jack-internal" />
<property name="jack-external-doc.dir" value="${jack.doc.dir}/jack-external" />
<property name="jack-server.doc.dir" value="${jack.dist-doc.dir}/server" />
<target name="dist-clean">
<delete dir="${jack-top-dist.dir}"/>
</target>
<target name="dist" depends="jack-dist, jill-dist, tools-dist"/>
<scriptdef name="generateUuid" language="javascript">
<attribute name="result" />
<![CDATA[
project.setProperty(attributes.get("result"), java.util.UUID.randomUUID());
]]>
</scriptdef>
<scriptdef name="getHostame" language="javascript">
<attribute name="result" /> <![CDATA[
project.setProperty(attributes.get("result"), java.net.InetAddress.getLocalHost().getCanonicalHostName());
]]>
</scriptdef>
<target name="generate-eng-signature">
<getHostame result="hostname"/>
<property name="sign.eng.releaser" value="${user.name}@${hostname}"/>
<generateUuid result="sign.eng.buildid"/>
</target>
<target name="dist-check-version-files">
<condition property="dist.version.file" value="${version.file}" else="${jack-project.dir}/version.properties">
<isset property="version.file"/>
</condition>
</target>
<target name="server-dist-check-version-files">
<condition property="server.dist.version.file" value="${server.version.file}" else="${server-project.dir}/version.properties">
<isset property="server.version.file"/>
</condition>
</target>
<target name="dist-doc" depends="server-dist-check-version-files,jack,jill,sched-lib">
<union id="dist-doc.classpath.files">
<fileset dir="${jack.dir}/libs" />
<fileset dir="${sched.dir}/libs" />
<fileset file="${schedlib.dist.dir}/${schedlib.libname}" />
<fileset file="${jill.dist.dir}/${jill.libname}" />
<fileset file="${jack.dist.dir}/${jack.libname}" />
</union>
<pathconvert property="dist-doc.classpath.path" refid="dist-doc.classpath.files" />
<!-- Jack and Sched -->
<mkdir dir="${jack-internal-doc.dir}" />
<javadoc destdir="${jack-internal-doc.dir}"
author="true"
version="true"
use="true"
windowtitle="Jack"
classpath="${dist-doc.classpath.path}"
nodeprecated="true">
<fileset dir="${jack.dir}/src" excludes="**/tonicsystems/jarjar/**" includes="**/*.java" />
<fileset dir="${sched.dir}/src" includes="**/*.java" />
</javadoc>
<!-- Jack API and Jill API -->
<mkdir dir="${jack-external-doc.dir}/jack-api" />
<javadoc destdir="${jack-external-doc.dir}/jack-api"
author="true"
version="true"
use="true"
windowtitle="Jack API"
classpath="${dist-doc.classpath.path}"
nodeprecated="true">
<fileset dir="${jack-api.dir}/src" includes="**/*.java" />
<fileset dir="${jill-api.dir}/src" includes="**/*.java" />
</javadoc>
<java jar="${jack.dist.dir}/${jack.execname}" fork="true" failonerror="true"
output="${jack.doc.dir}/cli-usage.txt">
<arg value="--help"/>
</java>
<java jar="${jack.dist.dir}/${jack.execname}" fork="true" failonerror="true"
output="${jack.doc.dir}/properties.txt">
<arg value="--help-properties"/>
<arg value="--sanity-checks"/>
<arg value="off"/>
</java>
<java jar="${jack.dist.dir}/${jack.execname}" fork="true" failonerror="true"
output="${jack.doc.dir}/properties-dev.txt">
<arg value="--help-properties"/>
<arg value="--sanity-checks"/>
<arg value="on"/>
</java>
<!-- Jack annotations -->
<mkdir dir="${jack-external-doc.dir}/jack-annotations" />
<javadoc destdir="${jack-external-doc.dir}/jack-annotations"
author="true"
version="true"
use="true"
windowtitle="Jack annotations"
classpath="${dist-doc.classpath.path}"
nodeprecated="true">
<fileset dir="${jack.dir}/src" includes="com/android/jack/annotations/**/*.java" />
</javadoc>
<!-- Jack server -->
<mkdir dir="${jack-server.doc.dir}" />
<copy file="${jack-project.dir}/server/jack-server/README-jack-server.md"
todir="${jack-server.doc.dir}" />
<property file="${server.dist.version.file}" prefix="jack-server"/>
<replace file="${jack-server.doc.dir}/README-jack-server.md"
token="%%VERSION%%"
value="${jack-server.version}"
encoding="UTF-8"/>
<exec executable="pandoc" failifexecutionfails="false">
<arg line="--from=markdown --to=plain --output=${jack-server.doc.dir}/README-jack-server.txt ${jack-server.doc.dir}/README-jack-server.md"/>
</exec>
</target>
<target name="jack-dist"
description="package a Jack distribution"
depends="dist-check-version-files,
jack,
jack-api,
jack-api-src,
jack-annotations-lib,
generate-eng-signature">
<mkdir dir="${jack-top-dist.dir}"/>
<tempfile property="jack-sign.tmp" prefix="ant-jack-sign" destdir="${java.io.tmpdir}" deleteonexit="true"/>
<mkdir dir="${jack-sign.tmp}"/>
<copy file="${dist.version.file}" tofile="${jack-sign.tmp}/version.properties"/>
<propertyfile file="${jack-sign.tmp}/version.properties">
<entry key="releaser" default="${sign.eng.releaser}"/>
<entry key="version.buildid" default="${sign.eng.buildid}"/>
</propertyfile>
<copy file="${jack-api.dist.dir}/${jack-api-src.name}" tofile="${jack-top-dist.dir}/${jack-api-src.name}" />
<jarjar jarfile="${jack-sign.tmp}/${jack.execname}" filesetmanifest="merge">
<zipfileset src="${jack.dist.dir}/${jack.execname}"
excludes="jack-version.properties"/>
<rule pattern="com.google.common.**" result="com.android.jack.google.common.@1"/>
<rule pattern="com.google.thirdparty.**" result="com.android.jack.google.thirdparty.@1"/>
<rule pattern="com.tonicsystems.**" result="com.android.jack.tonicsystems.@1"/>
<rule pattern="freemarker.**" result="com.android.jack.freemarker.@1"/>
<rule pattern="org.antlr.**" result="com.android.jack.antlr.@1"/>
<rule pattern="org.kohsuke.**" result="com.android.jack.kohsuke.@1"/>
<rule pattern="org.objectweb.**" result="com.android.jack.objectweb.@1"/>
<rule pattern="org.uncommons.**" result="com.android.jack.uncommons.@1"/>
<rule pattern="org.eclipse.**" result="com.android.jack.eclipse.@1"/>
</jarjar>
<mkdir dir="${jack-sign.tmp}/with-empty-directories" />
<mkdir dir="${jack-sign.tmp}/without-empty-directories" />
<unzip src="${jack-sign.tmp}/${jack.execname}" dest="${jack-sign.tmp}/with-empty-directories"/>
<copy includeemptydirs="false" todir="${jack-sign.tmp}/without-empty-directories">
<fileset dir="${jack-sign.tmp}/with-empty-directories" />
</copy>
<jar destfile="${jack-top-dist.dir}/${jack.execname}" manifest="${jack.dir}/etc/manifest.txt">
<fileset dir="${jack-sign.tmp}/without-empty-directories"/>
</jar>
<copy file="${jack-sign.tmp}/version.properties" tofile="${jack-sign.tmp}/jack-version.properties"/>
<jar destfile="${jack-top-dist.dir}/${jack.execname}" update="true"
basedir="${jack-sign.tmp}"
includes="jack-version.properties"/>
<jar destfile="${jack-top-dist.dir}/${jack-api.name}" filesetmanifest="merge">
<zipfileset src="${jack-api.dist.dir}/${jack-api.name}"
excludes="jack-api-version.properties"/>
</jar>
<copy file="${jack-sign.tmp}/version.properties" tofile="${jack-sign.tmp}/jack-api-version.properties"/>
<jar destfile="${jack-top-dist.dir}/${jack-api.name}" update="true"
basedir="${jack-sign.tmp}"
includes="jack-api-version.properties"/>
<jar destfile="${jack-top-dist.dir}/${jack-annotations.libname}" filesetmanifest="merge">
<zipfileset src="${jack.dist.dir}/${jack-annotations.libname}"
excludes="jack-annotations-version.properties"/>
</jar>
<copy file="${jack-sign.tmp}/version.properties" tofile="${jack-sign.tmp}/jack-annotations-version.properties"/>
<jar destfile="${jack-top-dist.dir}/${jack-annotations.libname}" update="true"
basedir="${jack-sign.tmp}"
includes="jack-annotations-version.properties"/>
<delete dir="${jack-sign.tmp}"/>
</target>
<target name="jill-dist"
description="package a Jill distribution"
depends="dist-check-version-files,
jill,
jill-api,
jill-api-src,
generate-eng-signature">
<mkdir dir="${jack-top-dist.dir}"/>
<jar destfile="${jack-top-dist.dir}/${jill-api.name}" filesetmanifest="merge">
<zipfileset src="${jill-api.dist.dir}/${jill-api.name}"
excludes="jill-api-version.properties"/>
</jar>
<tempfile property="jill-sign.tmp" prefix="ant-jill-sign" destdir="${java.io.tmpdir}" deleteonexit="true"/>
<mkdir dir="${jill-sign.tmp}"/>
<copy file="${dist.version.file}" tofile="${jill-sign.tmp}/version.properties"/>
<jarjar jarfile="${jill-sign.tmp}/${jill.execname}" filesetmanifest="merge">
<zipfileset src="${jill.dist.dir}/${jill.execname}"
excludes="jill-version.properties"/>
<rule pattern="org.objectweb.**" result="com.android.jill.objectweb.@1"/>
<rule pattern="org.kohsuke.**" result="com.android.jill.kohsuke.@1"/>
<rule pattern="javax.annotation.**" result="com.android.jill.javax.annotation.@1"/>
<rule pattern="com.google.**" result="com.android.jill.google.@1"/>
</jarjar>
<mkdir dir="${jill-sign.tmp}/with-empty-directories" />
<mkdir dir="${jill-sign.tmp}/without-empty-directories" />
<unzip src="${jill-sign.tmp}/${jill.execname}" dest="${jill-sign.tmp}/with-empty-directories"/>
<copy includeemptydirs="false" todir="${jill-sign.tmp}/without-empty-directories">
<fileset dir="${jill-sign.tmp}/with-empty-directories" />
</copy>
<jar destfile="${jack-top-dist.dir}/${jill.execname}" manifest="${jill.dir}/etc/manifest.txt">
<fileset dir="${jill-sign.tmp}/without-empty-directories"/>
</jar>
<propertyfile file="${jill-sign.tmp}/version.properties">
<entry key="releaser" default="${sign.eng.releaser}"/>
<entry key="version.buildid" default="${sign.eng.buildid}"/>
</propertyfile>
<copy file="${jill-sign.tmp}/version.properties" tofile="${jill-sign.tmp}/jill-version.properties"/>
<jar destfile="${jack-top-dist.dir}/${jill.execname}" update="true"
basedir="${jill-sign.tmp}"
includes="jill-version.properties"/>
<copy file="${jill-sign.tmp}/version.properties" tofile="${jill-sign.tmp}/jill-api-version.properties"/>
<jar destfile="${jack-top-dist.dir}/${jill-api.name}" update="true"
basedir="${jill-sign.tmp}"
includes="jill-api-version.properties"/>
<delete dir="${jill-sign.tmp}"/>
</target>
<target name="tools-dist"
description="package a tools distribution"
depends="dist-check-version-files,
jack-jar-tools,
generate-eng-signature">
<mkdir dir="${jack-top-dist.dir}"/>
<tempfile property="tools-sign.tmp" prefix="ant-tools-sign" destdir="${java.io.tmpdir}" deleteonexit="true"/>
<mkdir dir="${tools-sign.tmp}"/>
<copy file="${dist.version.file}" tofile="${tools-sign.tmp}/version.properties"/>
<propertyfile file="${tools-sign.tmp}/version.properties">
<entry key="releaser" default="${sign.eng.releaser}"/>
<entry key="version.buildid" default="${sign.eng.buildid}"/>
</propertyfile>
<jar destfile="${jack-top-dist.dir}/${jack-jar-tools.name}" filesetmanifest="merge">
<zipfileset src="${jack-jar-tools.dist.dir}/${jack-jar-tools.name}"
excludes="jack-jar-tools-version.properties"/>
</jar>
<copy file="${tools-sign.tmp}/version.properties" tofile="${tools-sign.tmp}/jack-jar-tools-version.properties"/>
<jar destfile="${jack-top-dist.dir}/${jack-jar-tools.name}" update="true"
basedir="${tools-sign.tmp}"
includes="jack-jar-tools-version.properties"/>
<delete dir="${tools-sign.tmp}"/>
</target>
<!-- ******************* -->
<!-- Jack-lib -->
<!-- ******************* -->
<property name="jack.build.dir" value="${jack.dir}/build/jack-lib" />
<property name="jack.libs.dir" value="${jack.dir}/libs" />
<property name="jack.prebuilts.dir" value="${jack.dir}/prebuilts" />
<property name="jack.build.outdir" value="${jack.build.dir}/classes" />
<property name="jack.tools.dir" value="${jack.dir}/tools" />
<property name="jack.dist.dir" value="${jack.dir}/dist" />
<property name="jack.libname" value="jack-lib.jar" />
<target name="jack-lib-clean">
<delete dir="${jack.build.dir}"/>
<delete file="${jack.dist.dir}/${jack.libname}"/>
<delete dir="${jack.libs.dir}"/>
<delete dir="${jack.tools.dir}"/>
</target>
<target name="jack-copy-libs" depends="ecj,guava-lib,args4j-lib,antlr-rt-lib,jsr305-lib,
junit4,dex-lib,dx-ref-lib,jack-api-lib">
<copy todir="${jack.libs.dir}" flatten="true">
<filelist dir="/" >
<file name="${ecj.dist.dir}/${ecj.libname}"/>
<file name="${guava.dist.dir}/${guava.libname}"/>
<file name="${args4j.dist.dir}/${args4j.libname}"/>
<file name="${antlr-rt.dist.dir}/${antlr-rt.libname}"/>
<file name="${jsr305.dist.dir}/${jsr305.libname}"/>
<file name="${junit4.dist.dir}/${junit4.execname}"/>
<file name="${dexlib.dist.dir}/${dexlib.libname}"/>
<file name="${dx-ref.dist.dir}/${dx-ref.libname}"/>
<file name="${jack-api.dist.dir}/${jack-api.lib.name}"/>
</filelist>
</copy>
</target>
<target name="jack-create-version-file">
<!-- make it writable or copy won't work if replacement is needed -->
<chmod file="${jack.dir}/rsc/jack-version.properties" perm="a+w"/>
<attrib file="${jack.dir}/rsc/jack-version.properties" readonly="false"/>
<copy file="${jack-project.dir}/version.properties" tofile="${jack.dir}/rsc/jack-version.properties"/>
<chmod file="${jack.dir}/rsc/jack-version.properties" perm="a-w"/>
<attrib file="${jack.dir}/rsc/jack-version.properties" readonly="true"/>
</target>
<target name="jack-lib-compile-step1"
depends="jack-copy-libs,jack-create-version-file,sched-build,antlr,sched-build-lib,allocation-lib,
freemarker-lib,maths-lib,sched-lib,watchmaker-lib,jill-lib,jill-api-lib,asm4-lib">
<!-- project layout -->
<!-- avoid incremental compilation with annotation processor -->
<mkdir dir="${jack.build.outdir}"/>
<mkdir dir="${jack.libs.dir}"/>
<mkdir dir="${jack.dist.dir}"/>
<mkdir dir="${jack.tools.dir}"/>
<!-- fetch dependencies -->
<filelist id="jack.link.libs.fileset" dir="/">
<file name="${sched-build.dist.dir}/${sched-build.libname}" />
<file name="${allocation.dist.dir}/${allocation.libname}" />
</filelist>
<filelist id="jack.static.libs.fileset" dir="/">
<file name="${jack-api.dist.dir}/${jack-api.lib.name}"/>
<file name="${ecj.dist.dir}/${ecj.libname}" />
<file name="${guava.dist.dir}/${guava.libname}" />
<file name="${jsr305.dist.dir}/${jsr305.libname}" />
<file name="${args4j.dist.dir}/${args4j.libname}" />
<file name="${antlr-rt.dist.dir}/${antlr-rt.libname}" />
<file name="${schedlib.dist.dir}/${schedlib.libname}" />
<file name="${freemarker.dist.dir}/${freemarker.libname}" />
<file name="${watchmaker.dist.dir}/${watchmaker.libname}" />
<file name="${maths.dist.dir}/${maths.libname}" />
<file name="${jill.dist.dir}/${jill.libname}" />
<file name="${jill-api.dist.dir}/${jill-api.lib.name}" />
<file name="${asm4.dist.dir}/${asm4.libname}" />
</filelist>
<copy todir="${jack.tools.dir}" flatten="true">
<filelist dir="/" >
<file name="${sched-build.dist.dir}/${sched-build.execname}" />
<file name="${antlr.dist.dir}/${antlr.execname}" />
</filelist>
</copy>
</target>
<target name="jack-lib-generate-proguard-parser-check">
<uptodate property="jack-lib.uptodate.proguardparser"
srcfile="${jack.dir}/src/com/android/jack/shrob/proguard/Proguard.g"
targetfile="${jack.dir}/src/com/android/jack/shrob/proguard/ProguardParser.java"/>
</target>
<target name="jack-lib-generate-preprocessor-parser-check">
<uptodate property="jack-lib.uptodate.preprocessorparser"
srcfile="${jack.dir}/src/com/android/jack/preprocessor/PreProcessor.g"
targetfile="${jack.dir}/src/com/android/jack/preprocessor/PreProcessorParser.java"/>
</target>
<target name="jack-lib-generate-proguard-parser"
depends="jack-lib-compile-step1,jack-lib-generate-proguard-parser-check"
unless="jack-lib.uptodate.proguardparser">
<!-- generate ProGuard parser -->
<java jar="${jack.tools.dir}/${antlr.execname}" fork="true" failonerror="true">
<arg line="-fo" />
<arg line="${jack.dir}/src/com/android/jack/shrob/proguard"/>
<arg line="${jack.dir}/src/com/android/jack/shrob/proguard/Proguard.g"/>
</java>
</target>
<target name="jack-lib-generate-preprocessor-parser"
depends="jack-lib-compile-step1,jack-lib-generate-preprocessor-parser-check"
unless="jack-lib.uptodate.preprocessorparser">
<!-- generate PreProcessor parser -->
<java jar="${jack.tools.dir}/${antlr.execname}" fork="true" failonerror="true">
<arg line="-fo" />
<arg line="${jack.dir}/src/com/android/jack/preprocessor"/>
<arg line="${jack.dir}/src/com/android/jack/preprocessor/PreProcessor.g"/>
</java>
</target>
<target name="jack-lib-compile-step2"
depends="jack-lib-generate-proguard-parser,jack-lib-generate-preprocessor-parser">
<!-- compile -->
<dependset>
<sources>
<!-- All source files -->
<fileset dir="${jack.dir}/src" />
<filelist refid="jack.link.libs.fileset" />
<filelist refid="jack.static.libs.fileset" />
</sources>
<targets>
<fileset dir="${jack.build.outdir}"/>
</targets>
</dependset>
<javac encoding="UTF-8" srcdir="${jack.dir}/src"
destdir="${jack.build.outdir}"
source="1.8" target="1.8"
debug="true" includeantruntime="false" includeDestClasses="false">
<classpath>
<filelist refid="jack.link.libs.fileset" />
<filelist refid="jack.static.libs.fileset" />
</classpath>
<compilerarg line="-processor com.android.sched.build.SchedAnnotationProcessor" />
<compilerarg line="-Xlint:-options"/>
</javac>
</target>
<target name="jack-lib" depends="jack-lib-compile-step2">
<copy todir="${jack.build.outdir}">
<fileset dir="${jack.dir}/rsc" includes="**"/>
</copy>
<copy file="${jack-project.dir}/version.properties" tofile="${jack.build.outdir}/jack-version.properties"/>
<jar destfile="${jack.dist.dir}/${jack.libname}"
basedir="${jack.build.outdir}" includes="**"/>
</target>
<!-- ******************* -->
<!-- jack-intermediate -->
<!-- ******************* -->
<property name="jack.intermediate.dist.dir" value="${jack.dir}/dist"/>
<property name="jack.intermediate.build.dir" value="${jack.dir}/build/jack-intermediate"/>
<property name="jack.intermediate.build.outdir" value="${jack.intermediate.build.dir}/classes"/>
<property name="jack.intermediatename" value="jack-intermediate.jar"/>
<target name="jack-intermediate-clean" depends="jack-lib-clean">
<delete dir="${jack.intermediate.build.dir}"/>
<delete file="${jack.intermediate.dist.dir}/${jack.intermediatename}"/>
</target>
<target name="jack-intermediate-check">
<pathconvert property="jack.static.libs.list" pathsep=" " refid="jack.static.libs.fileset" />
<uptodate property="jack-intermediate.uptodate"
targetfile="${jack.intermediate.dist.dir}/${jack.intermediatename}">
<srcfiles dir="${jack.build.outdir}"/>
<srcfiles dir="/" includes="${jack.static.libs.list}"/>
</uptodate>
</target>
<target name="jack-intermediate" depends="jack-lib,jack-intermediate-check" unless="jack-intermediate.uptodate">
<!-- package -->
<copy todir="${jack.intermediate.build.outdir}">
<fileset dir="${jack.build.outdir}"/>
</copy>
<jar destfile="${jack.intermediate.build.dir}/${jack.intermediatename}"
manifest="${jack.dir}/etc/manifest.txt" basedir="${jack.intermediate.build.outdir}" includes="**"/>
<pathconvert property="jack.static.libs.list" pathsep=" " refid="jack.static.libs.fileset" />
<!-- add sched support -->
<mkdir dir="${jack.intermediate.dist.dir}"/>
<java jar="${jack.tools.dir}/${sched-build.execname}" fork="true" failonerror="true">
<arg value="${jack.intermediate.build.dir}/${jack.intermediatename}" />
<arg line="${jack.static.libs.list}" />
<arg value="${jack.intermediate.dist.dir}/${jack.intermediatename}" />
</java>
</target>
<!-- ******************* -->
<!-- jack -->
<!-- ******************* -->
<property name="jack.exec.build.dir" value="${jack.dir}/build/jack"/>
<property name="jack.exec.build.outdir" value="${jack.exec.build.dir}/classes"/>
<property name="jack.execname" value="jack.jar"/>
<target name="jack-clean" depends="jack-lib-clean">
<delete dir="${jack.exec.build.dir}"/>
<delete file="${jack.dist.dir}/${jack.execname}"/>
</target>
<target name="jack.check">
<uptodate property="jack.uptodate"
targetfile="${jack.dist.dir}/${jack.execname}">
<srcfiles dir="${jack.build.outdir}"/>
<srcfiles file="${jack.intermediate.dist.dir}/${jack.intermediatename}"/>
<srcfiles file="${jack-default-lib.build.jack}"/>
<srcfiles file="${jack.dir}/etc/manifest.txt"/>
</uptodate>
</target>
<target name="jack" depends="jack-intermediate,jack-default-lib,jack.check" unless="${jack.uptodate}">
<copy todir="${jack.exec.build.outdir}">
<fileset dir="${jack.build.outdir}"/>
</copy>
<!-- package -->
<unzip dest="${jack.exec.build.outdir}" src="${jack.intermediate.dist.dir}/${jack.intermediatename}"/>
<mkdir dir="${jack.exec.build.outdir}/jack-default-lib"/>
<unzip src="${jack-default-lib.build.jack}" dest="${jack.exec.build.outdir}/jack-default-lib"/>
<jar destfile="${jack.dist.dir}/${jack.execname}"
manifest="${jack.dir}/etc/manifest.txt"
basedir="${jack.exec.build.outdir}"
includes="**">
</jar>
</target>
<!-- ******************* -->
<!-- jack-api-lib -->
<!-- ******************* -->
<property name="jack-api.lib.build.dir" value="${jack-api.dir}/build/lib" />
<property name="jack-api.lib.build.outdir" value="${jack-api.lib.build.dir}/classes" />
<property name="jack-api.libs.dir" value="${jack-api.dir}/libs" />
<property name="jack-api.dist.dir" value="${jack-api.dir}/dist" />
<property name="jack-api.lib.name" value="jack-api-lib.jar" />
<target name="jack-api-lib-clean">
<delete dir="${jack-api.lib.build.dir}"/>
<delete file="${jack-api.dist.dir}/${jack-api.lib.name}"/>
<delete dir="${jack-api.libs.dir}"/>
</target>
<target name="jack-api-lib-copy-libs" depends="jsr305-lib">
<copy todir="${jack-api.libs.dir}" flatten="true">
<filelist dir="/" >
<file name="${jsr305.dist.dir}/${jsr305.libname}"/>
</filelist>
</copy>
</target>
<target name="jack-api-lib" depends="jack-api-lib-copy-libs">
<mkdir dir="${jack-api.lib.build.outdir}"/>
<dependset>
<sources>
<!-- All source files -->
<fileset dir="${jack-api.dir}/src" />
<fileset file="${jsr305.dist.dir}/${jsr305.libname}"/>
</sources>
<targets>
<fileset dir="${jack-api.lib.build.outdir}"/>
</targets>
</dependset>
<javac encoding="UTF-8" srcdir="${jack-api.dir}/src" destdir="${jack-api.lib.build.outdir}"
source="1.8" target="1.8" debug="true"
includeantruntime="false" includeDestClasses="false" nowarn="true">
<classpath>
<filelist dir="/" files="${jsr305.dist.dir}/${jsr305.libname}" />
</classpath>
<exclude name="com/android/jack/api/example/**"/>
</javac>
<jar destfile="${jack-api.dist.dir}/${jack-api.lib.name}">
<fileset dir="${jack-api.lib.build.outdir}"/>
</jar>
</target>
<!-- ******************* -->
<!-- jack-api -->
<!-- ******************* -->
<property name="jack-api.build.dir" value="${jack-api.dir}/build/exec" />
<property name="jack-api.name" value="jack-api.jar" />
<target name="jack-api-clean">
<delete dir="${jack-api.build.dir}"/>
<delete file="${jack-api.dist.dir}/${jack-api.name}"/>
</target>
<target name="jack-api" depends="jack-api-lib">
<copy file="${jack-project.dir}/version.properties"
tofile="${jack-api.build.dir}/jack-api-version.properties"/>
<jar destfile="${jack-api.dist.dir}/${jack-api.name}">
<fileset dir="${jsr305.build.outdir}"/>
<fileset dir="${jack-api.lib.build.outdir}"/>
<fileset dir="${jack-api.build.dir}" includes="jack-api-version.properties"/>
</jar>
</target>
<!-- ******************* -->
<!-- jack-api-src -->
<!-- ******************* -->
<property name="jack-api-src.name" value="jack-api-src.zip" />
<target name="jack-api-src-clean">
<delete file="${jack-api.dist.dir}/${jack-api-src.name}"/>
</target>
<target name="jack-api-src">
<zip destfile="${jack-api.dist.dir}/${jack-api-src.name}"
basedir="${jack-api.dir}/src" />
</target>
<!-- *************************** -->
<!-- jack-test-annotations-lib -->
<!-- *************************** -->
<property name="jack-test-annotations.build.dir" value="${jack-tests.dir}/build/annotations" />
<property name="jack-test-annotations.build.outdir" value="${jack-test-annotations.build.dir}/classes" />
<property name="jack-test-annotations.libname" value="jack-test-annotations.jar" />
<target name="jack-test-annotations-lib-clean">
<delete dir="${jack-test-annotations.build.dir}" />
<delete file="${jack.dist.dir}/${jack-test-annotations.libname}" />
<delete dir="${jack-test-annotations.build.outdir}" />
</target>
<target name="jack-test-annotations-lib">
<mkdir dir="${jack-test-annotations.build.outdir}"/>
<dependset>
<sources>
<fileset dir="${jack-tests.dir}/src/com/android/jack/annotations" includes="**/*.java" />
</sources>
<targets>
<fileset file="${jack.dist.dir}/${jack-test-annotations.libname}"/>
</targets>
</dependset>
<javac encoding="UTF-8" srcdir="${jack-tests.dir}/src"
includes="com/android/jack/annotations/**/*.java"
destdir="${jack-test-annotations.build.outdir}"
source="1.8" target="1.8" debug="true"
includeantruntime="false" includeDestClasses="false" nowarn="true" />
<copy file="${jack-project.dir}/version.properties"
tofile="${jack-test-annotations.build.outdir}/jack-test-annotations-version.properties"/>
<jar destfile="${jack-tests.dist.dir}/${jack-test-annotations.libname}">
<fileset dir="${jack-test-annotations.build.outdir}"/>
</jar>
</target>
<!-- ********************************** -->
<!-- jack-test-annotations-jack-lib -->
<!-- ********************************** -->
<property name="jack-test-annotations-jack.libname" value="jack-test-annotations-lib.jack" />
<target name="jack-test-annotations-jack-lib" depends="jack-intermediate, jack-test-annotations-lib">
<!-- compile -->
<java jar="${jack.intermediate.dist.dir}/${jack.intermediatename}" fork="true" failonerror="true">
<arg value="--verbose"/>
<arg value="error"/>
<arg value="-D"/>
<arg value="jack.classpath.default-libraries=false"/>
<arg value="--import"/>
<arg value="${jack-tests.dist.dir}/${jack-test-annotations.libname}"/>
<arg value="--output-jack"/>
<arg value="${jack-tests.prebuilts.dir}/${jack-test-annotations-jack.libname}"/>
</java>
</target>
<!-- ********************** -->
<!-- jack-annotations-lib -->
<!-- ********************** -->
<property name="jack-annotations.build.dir" value="${jack.dir}/build/annotations" />
<property name="jack-annotations.build.outdir" value="${jack-annotations.build.dir}/classes" />
<property name="jack-annotations.libname" value="jack-annotations.jar" />
<target name="jack-annotations-lib-clean">
<delete dir="${jack-annotations.build.dir}" />
<delete file="${jack.dist.dir}/${jack-annotations.libname}" />
<delete dir="${jack-annotations.build.outdir}" />
</target>
<target name="jack-annotations-lib">
<mkdir dir="${jack-annotations.build.outdir}"/>
<dependset>
<sources>
<fileset dir="${jack.dir}/src/com/android/jack/annotations" includes="**/*.java" />
</sources>
<targets>
<fileset file="${jack.dist.dir}/${jack-annotations.libname}"/>
</targets>
</dependset>
<javac encoding="UTF-8" srcdir="${jack.dir}/src"
includes="com/android/jack/annotations/**/*.java"
destdir="${jack-annotations.build.outdir}"
source="1.8" target="1.8" debug="true"
includeantruntime="false" includeDestClasses="false" nowarn="true" />
<copy file="${jack-project.dir}/version.properties"
tofile="${jack-annotations.build.outdir}/jack-annotations-version.properties"/>
<jar destfile="${jack.dist.dir}/${jack-annotations.libname}">
<fileset dir="${jack-annotations.build.outdir}"/>
</jar>
</target>
<!-- ******************* -->
<!-- jackunittests-lib -->
<!-- ******************* -->
<property name="jackunittests.build.dir" value="${jack.dir}/build/jackunittests-lib" />
<property name="jackunittests.libs.dir" value="${jack.dir}/libs" />
<property name="jackunittests.build.outdir" value="${jackunittests.build.dir}/classes" />
<property name="jackunittests.dist.dir" value="${jack.dir}/dist" />
<property name="jackunittests.tools.dir" value="${jack.dir}/tools" />
<property name="jackunittests.libname" value="jackunittests-lib.jar" />
<target name="jackunittests-lib-clean">
<delete dir="${jackunittests.build.dir}" />
<delete dir="${jackunittests.libs.dir}" />
<delete file="${jackunittests.dist.dir}/${jackunittests.libname}" />
</target>
<target name="jackunittests-lib-check">
<filelist id="jackunittests.link.libs.fileset" dir="/">
<file name="${sched-build.dist.dir}/${sched-build.libname}" />
</filelist>
<filelist id="jackunittests.static.libs.fileset" dir="/">
<file name="${jack.dist.dir}/${jack.libname}" />
<file name="${junit4.dist.dir}/${junit4.execname}" />
<file name="${dexlib.dist.dir}/${dexlib.libname}" />
<file name="${dx-ref.dist.dir}/${dx-ref.libname}" />
<file name="${dexcomparator.dist.dir}/${dexcomparator.libname}" />
</filelist>
<union id="jackunittests.uptodate.files">
<fileset dir="${jack.dir}/tests"/>
<dirset dir="${jack.dir}/tests"/>
<filelist refid="jackunittests.static.libs.fileset"/>
<filelist refid="jack.static.libs.fileset"/>
<filelist refid="jackunittests.static.libs.fileset"/>
</union>
<uptodate property="jackunittests-lib.uptodate" targetfile="${jackunittests.dist.dir}/${jackunittests.libname}">
<srcresources refid="jackunittests.uptodate.files" />
</uptodate>
</target>
<target name="jackunittests-lib" depends="jack-copy-libs,jack-lib,junit4,dex-lib,dx-ref-lib,dexcomparator-lib,
sched-build,sched-build-lib,jackunittests-lib-check" unless="jackunittests-lib.uptodate">
<!-- project layout -->
<delete dir="${jackunittests.build.outdir}" />
<mkdir dir="${jackunittests.build.outdir}" />
<mkdir dir="${jackunittests.libs.dir}" />
<mkdir dir="${jackunittests.dist.dir}" />
<!-- fetch dependencies -->
<copy file="${sched-build.dist.dir}/${sched-build.execname}" todir="${jackunittests.tools.dir}" />
<!-- compile -->
<javac encoding="UTF-8" srcdir="${jack.dir}/tests" destdir="${jackunittests.build.outdir}"
source="1.8" target="1.8" debug="true"
includeantruntime="false" includeDestClasses="false" nowarn="true">
<classpath>
<filelist refid="jackunittests.link.libs.fileset"/>
<filelist refid="jack.static.libs.fileset"/>
<filelist refid="jackunittests.static.libs.fileset"/>
</classpath>
<compilerarg line="-processor com.android.sched.build.SchedAnnotationProcessor" />
</javac>
<!-- package -->
<jar destfile="${jackunittests.dist.dir}/${jackunittests.libname}"
basedir="${jackunittests.build.outdir}" includes="**" />
</target>
<!-- ******************* -->
<!-- jackunittests -->
<!-- ******************* -->
<property name="jackunittests.exec.build.dir" value="${jack.dir}/build/jackunittests" />
<property name="jackunittests.execname" value="jackunittests.jar"/>
<target name="jackunittests-clean">
<delete dir="${jackunittests.exec.build.dir}" />
<delete file="${jackunittests.dist.dir}/${jackunittests.execname}" />
</target>
<target name="jackunittests" depends="jackunittests-lib" unless="jackunittests-lib.uptodate">
<mkdir dir="${jackunittests.exec.build.dir}" />
<jar manifest="${jack.dir}/etc/manifest.txt"
destfile="${jackunittests.exec.build.dir}/${jackunittests.execname}" basedir="${jackunittests.build.outdir}"/>
<!-- add sched support -->
<pathconvert property="jackunittests.static.libs.list" pathsep=" " refid="jackunittests.static.libs.fileset" />
<pathconvert property="jack.static.libs.list" pathsep=" " refid="jack.static.libs.fileset" />
<java jar="${jackunittests.tools.dir}/${sched-build.execname}" fork="true" failonerror="true">
<arg value="${jackunittests.exec.build.dir}/${jackunittests.execname}" />
<arg line="${jackunittests.static.libs.list}" />
<arg line="${jack.static.libs.list}" />
<arg value="${jackunittests.dist.dir}/${jackunittests.execname}" />
</java>
</target>
<!-- ******************* -->
<!-- jack-tests -->
<!-- ******************* -->
<property name="jack-tests.libs.dir" value="${jack-tests.dir}/libs" />
<property name="jack-tests.prebuilts.dir" value="${jack-tests.dir}/prebuilts" />
<property name="jack-tests.build.dir" value="${jack-tests.dir}/intermediates" />
<property name="jack-tests.build.outdir" value="${jack-tests.build.dir}/classes" />
<property name="jack-tests.dist.dir" value="${jack-tests.dir}/dist" />
<property name="jack-tests.libname" value="jack-tests-lib.jar" />
<property name="jack-tests.execname" value="jack-tests.jar" />
<property name="jack-tests-for-sched.execname" value="jack-tests-for-sched.jar" />
<target name="jack-tests-clean">
<delete dir="${jack-tests.libs.dir}" />
<delete dir="${jack-tests.build.dir}" />
<delete file="${jack-tests.dist.dir}/${jack-tests.libname}" />
<delete file="${jack-tests.dist.dir}/${jack-tests.execname}" />
</target>
<target name="jack-tests-copy-libs" depends="jack-api-lib,junit4,dx-ref-lib,ddm-lib,ecj,
antlr-rt-lib,guava-lib,dex-lib,jsr305-lib,dexcomparator-lib">
<copy todir="${jack-tests.libs.dir}" flatten="true">
<filelist dir="/" >
<file name="${jack-api.dist.dir}/${jack-api.lib.name}"/>
<file name="${junit4.dist.dir}/${junit4.execname}"/>
<file name="${dx-ref.dist.dir}/${dx-ref.libname}"/>
<file name="${ddm-lib.dist.dir}/${ddm-lib.libname}"/>
<file name="${ecj.dist.dir}/${ecj.libname}"/>
<file name="${antlr-rt.dist.dir}/${antlr-rt.libname}"/>
<file name="${guava.dist.dir}/${guava.libname}"/>
<file name="${dexlib.dist.dir}/${dexlib.libname}"/>
<file name="${jsr305.dist.dir}/${jsr305.libname}"/>
<file name="${dexcomparator.dist.dir}/${dexcomparator.libname}"/>
</filelist>
</copy>
</target>
<target name="jack-tests-check">
<union id="jack-tests.uptodate.files">
<fileset id="jack-test.src.fileset" dir="${jack-tests.dir}/src"/>
<fileset id="jack-test.src.fileset" dir="${jack-tests.dir}/tests"/>
<filelist dir="/">
<file name="${jackunittests.dist.dir}/${jackunittests.execname}" />
<file name="${ddm-lib.dist.dir}/${ddm-lib.libname}" />
<file name="${jack-api.dist.dir}/${jack-api.lib.name}"/>
<file name="${schedtests.dist.dir}/${schedtests.libname}"/>
</filelist>
<filelist refid="jackunittests.static.libs.fileset" />
<filelist refid="jack.static.libs.fileset" />
<filelist files="${jack-tests.prebuilts.dir}/${ecj-tests.libname}" />
</union>
<uptodate property="jack-tests.uptodate"
targetfile="${jack-tests.dist.dir}/${jack-tests.execname}">
<srcresources refid="jack-tests.uptodate.files" />
</uptodate>
</target>
<target name="jack-tests" depends="jack-tests-copy-libs, jack-lib, jackunittests, jill-api, schedtests-lib,jack-tests-check"
unless="jack-tests.uptodate">
<!-- project layout -->
<delete dir="${jack-tests.build.outdir}"/>
<mkdir dir="${jack-tests.build.outdir}"/>
<mkdir dir="${jack-tests.dist.dir}"/>
<!-- compile -->
<javac
encoding="UTF-8"
destdir="${jack-tests.build.outdir}"
source="1.8" target="1.8"
debug="true" includeantruntime="false" nowarn="true">
<src path="${jack-tests.dir}/src"/>
<src path="${jack-tests.dir}/tests"/>
<exclude name="com/android/jack/annotation/processor/sample2/src/"/>
<exclude name="com/android/jack/annotation/processor/sample2/src/"/>
<exclude name="com/android/jack/classpath/test002/lib1override/**"/>
<exclude name="com/android/jack/encoding/tests/**"/>
<exclude name="com/android/jack/enums/test003/link/Other.java"/>
<exclude name="com/android/jack/enums/test003/link/Values.java"/>
<exclude name="com/android/jack/error/test001/jack/A.java"/>
<exclude name="com/android/jack/error/test002/jack/A.java"/>
<exclude name="com/android/jack/frontend/test002/jack/PackageName/ClassInConflictingPackage.java"/>
<exclude name="com/android/jack/frontend/test005/jack/**"/>
<exclude name="com/android/jack/frontend/test006/jack/**"/>
<exclude name="com/android/jack/frontend/test007/jackduplicate/"/>
<exclude name="com/android/jack/frontend/test008/jack/NoOuterContext.java"/>
<exclude name="com/android/jack/frontend/test010/jack/UnusedLocalVar.java"/>
<exclude name="com/android/jack/frontend/test013/jack/ExtendingInnerOnly.java"/>
<exclude name="com/android/jack/frontend/test014/jack/ExtendingInnerInStaticContext.java"/>
<exclude name="com/android/jack/frontend/test015/jack/WithOuterContextButStatic.java"/>
<exclude name="com/android/jack/frontend/test016/jack/WithDuplicated.java"/>
<exclude name="com/android/jack/frontend/test017/jack/InvalidQualification.java"/>
<exclude name="com/android/jack/frontend/test019/jack/TooBig.java"/>
<exclude name="com/android/jack/jarjar/test003/dontcompile/"/>
<exclude name="com/android/jack/jarjar/test006/dontcompile/"/>
<exclude name="com/android/jack/jarjar/test006/dontcompile/"/>
<exclude name="com/android/jack/java8/gwt/test019/jack/Java8Test.java"/>
<exclude name="com/android/jack/java8/intersectiontype/test004/"/>
<exclude name="com/android/jack/java8/intersectiontype/test005/"/>
<exclude name="com/android/jack/java8/intersectiontype/test006/"/>
<exclude name="com/android/jack/java8/lambda/test019/"/>
<exclude name="com/android/jack/java8/methodref/test014/jack/Tests.java"/>
<exclude name="com/android/jack/java8/variable/test001/"/>
<exclude name="com/android/jack/java8/variable/test003/"/>
<exclude name="com/android/jack/jill/test001/**"/>
<exclude name="com/android/jack/jill/test002/**"/>
<exclude name="com/android/jack/jill/test003/**"/>
<exclude name="com/android/jack/jill/test004/**"/>
<exclude name="com/android/jack/jill/test005/**"/>
<exclude name="com/android/jack/jill/test006/**"/>
<exclude name="com/android/jack/lookup/test001/liboverride/"/>
<exclude name="com/android/jack/sourcepath/test002/jack/Sourcepath002.java"/>
<classpath>
<filelist dir="/">
<file name="${jill-api.dist.dir}/${jill-api.lib.name}" />
<file name="${jackunittests.dist.dir}/${jackunittests.execname}" />
<file name="${ddm-lib.dist.dir}/${ddm-lib.libname}" />
<file name="${jack-api.dist.dir}/${jack-api.lib.name}"/>
<file name="${schedtests.dist.dir}/${schedtests.libname}"/>
<file name="${jack-tests.prebuilts.dir}/${ecj-tests.libname}"/>
</filelist>
</classpath>
</javac>
<!-- package -->
<jar destfile="${jack-tests.build.dir}/${jack-tests.libname}"
basedir="${jack-tests.build.outdir}" includes="**"/>
<!-- add sched support -->
<pathconvert property="jackunittests.static.libs.list" pathsep=" " refid="jackunittests.static.libs.fileset" />
<pathconvert property="jack.static.libs.list" pathsep=" " refid="jack.static.libs.fileset" />
<java jar="${jackunittests.tools.dir}/${sched-build.execname}" fork="true" failonerror="true">
<arg value="${jack-tests.build.dir}/${jack-tests.libname}" />
<arg value="${jackunittests.dist.dir}/${jackunittests.libname}" />
<arg line="${jackunittests.static.libs.list}" />
<arg line="${jack.static.libs.list}" />
<arg value="${ddm-lib.dist.dir}/${ddm-lib.libname}" />
<arg value="${jack-tests.prebuilts.dir}/${ecj-tests.libname}" />
<arg value="${jack-tests.dist.dir}/${jack-tests.execname}" />
</java>
<jar update="true" destfile="${jack-tests.dist.dir}/${jack-tests.execname}"
manifest="${jack-tests.dir}/etc/manifest.txt">
<metainf dir="${jack.dir}/rsc/META-INF" includes="services/**" />
<metainf dir="${jill.dir}/rsc/META-INF" includes="services/**" />
</jar>
<!-- build lib for sched tests -->
<java jar="${jackunittests.tools.dir}/${sched-build.execname}" fork="true" failonerror="true">
<arg value="${jack-tests.build.dir}/${jack-tests.libname}" />
<arg value="${junit4.dist.dir}/${junit4.execname}" />
<arg value="${schedtests.dist.dir}/${schedtests.libname}" />
<arg value="${schedlib.dist.dir}/${schedlib.libname}" />
<arg value="${guava.dist.dir}/${guava.libname}" />
<arg value="${freemarker.dist.dir}/${freemarker.libname}" />
<arg value="${maths.dist.dir}/${maths.libname}" />
<arg value="${watchmaker.dist.dir}/${watchmaker.libname}" />
<arg value="${jack-tests.dist.dir}/${jack-tests-for-sched.execname}" />
</java>
<jar update="true" destfile="${jack-tests.dist.dir}/${jack-tests-for-sched.execname}"
manifest="${jack-tests.dir}/etc/manifest.txt">
</jar>
</target>
<!-- ******************* -->
<!-- jill -->
<!-- ******************* -->
<property name="jill.build.dir" value="${jill.dir}/build/jill" />
<property name="jill.libs.dir" value="${jill.dir}/libs" />
<property name="jill.build.outdir" value="${jill.build.dir}/classes" />
<property name="jill.exec.build.dir" value="${jill.build.dir}/package" />
<property name="jill.dist.dir" value="${jill.dir}/dist" />
<property name="jill.execname" value="jill.jar" />
<property name="jill.libname" value="jill-lib.jar" />
<target name="jill-clean">
<delete dir="${jill.build.dir}" />
<delete dir="${jill.dist.dir}" />
<delete dir="${jill.libs.dir}" />
</target>
<target name="jill-copy-libs" depends="jill-api-lib,sched-lib,guava-lib,asm4-lib,args4j-lib,jsr305-lib">
<copy todir="${jill.libs.dir}" flatten="true">
<filelist id="jill.libs.filelist" dir="/" >
<file name="${jill-api.dist.dir}/${jill-api.lib.name}"/>
<file name="${schedlib.dist.dir}/${schedlib.libname}"/>
<file name="${guava.dist.dir}/${guava.libname}"/>
<file name="${args4j.dist.dir}/${args4j.libname}"/>
<file name="${jsr305.dist.dir}/${jsr305.libname}"/>
<file name="${asm4.dist.dir}/${asm4.libname}"/>
</filelist>
</copy>
</target>
<target name="jill-check">
<union id="jill.uptodate.files">
<fileset dir="${jill.dir}/src" />
<dirset dir="${jill.dir}/src" />
<fileset dir="${jill.dir}/rsc"/>
<dirset dir="${jill.dir}/rsc"/>
<filelist refid="jill.libs.filelist" />
</union>
<uptodate property="jill.uptodate" targetfile="${jill.dist.dir}/${jill.execname}">
<srcresources refid="jill.uptodate.files" />
</uptodate>
</target>
<target name="jill-create-version-file">
<!-- make it writable or copy won't work if replacement is needed -->
<chmod file="${jill.dir}/rsc/jill-version.properties" perm="a+w"/>
<attrib file="${jill.dir}/rsc/jill-version.properties" readonly="false"/>
<copy file="${jack-project.dir}/version.properties" tofile="${jill.dir}/rsc/jill-version.properties"/>
<chmod file="${jill.dir}/rsc/jill-version.properties" perm="a-w"/>
<attrib file="${jill.dir}/rsc/jill-version.properties" readonly="true"/>
</target>
<target name="jill-compile" depends="jill-copy-libs, jill-check, jill-create-version-file" unless="jill.uptodate">
<!-- project layout -->
<delete dir="${jill.build.outdir}"/>
<mkdir dir="${jill.build.outdir}"/>
<mkdir dir="${jill.dist.dir}"/>
<!-- compile -->
<javac encoding="UTF-8" srcdir="${jill.dir}/src"
destdir="${jill.build.outdir}"
source="1.8" target="1.8"
debug="true" includeantruntime="false">
<classpath>
<filelist refid="jill.libs.filelist" />
</classpath>
</javac>
</target>
<target name="jill-lib" depends="jill-compile">
<copy file="${jack-project.dir}/version.properties"
tofile="${jill.build.outdir}/jill-version.properties"/>
<jar destfile="${jill.dist.dir}/${jill.libname}"
basedir="${jill.build.outdir}"
includes="**"/>
</target>
<target name="jill" depends="jill-compile" unless="jill.uptodate">
<mkdir dir="${jill.exec.build.dir}"/>
<copy todir="${jill.exec.build.dir}">
<fileset dir="${jill.build.outdir}">
<include name="**/*" />
</fileset>
<fileset dir="${jill.dir}/rsc">
<include name="**/*" />
</fileset>
<fileset dir="${jill-api.lib.build.outdir}">
<include name="**/*" />
</fileset>
<fileset dir="${schedlib.build.outdir}">
<include name="**/*" />
</fileset>
<fileset dir="${args4j.build.outdir}">
<include name="**/*" />
</fileset>
<fileset dir="${jsr305.build.outdir}">
<include name="**/*" />
</fileset>
<fileset dir="${asm4.build.outdir}">
<include name="**/*" />
</fileset>
</copy>
<unzip dest="${jill.exec.build.dir}" src="${guava.dist.dir}/${guava.libname}">
<patternset excludes="META-INF/**"/>
</unzip>
<copy file="${jack-project.dir}/version.properties"
tofile="${jill.exec.build.dir}/jill-version.properties"/>
<jar destfile="${jill.dist.dir}/${jill.execname}"
manifest="${jill.dir}/etc/manifest.txt"
basedir="${jill.exec.build.dir}"
includes="**"/>
</target>
<!-- ******************* -->
<!-- jill-api-lib -->
<!-- ******************* -->
<property name="jill-api.lib.build.dir" value="${jill-api.dir}/build/lib" />
<property name="jill-api.lib.build.outdir" value="${jill-api.lib.build.dir}/classes" />
<property name="jill-api.libs.dir" value="${jill-api.dir}/libs" />
<property name="jill-api.dist.dir" value="${jill-api.dir}/dist" />
<property name="jill-api.lib.name" value="jill-api-lib.jar" />
<target name="jill-api-lib-clean">
<delete dir="${jill-api.lib.build.dir}"/>
<delete dir="${jill-api.dist.dir}"/>
<delete dir="${jill-api.libs.dir}"/>
</target>
<target name="jill-api-lib-copy-libs" depends="jsr305-lib">
<copy todir="${jill-api.libs.dir}" flatten="true">
<filelist dir="/" >
<file name="${jsr305.dist.dir}/${jsr305.libname}"/>
</filelist>
</copy>
</target>
<target name="jill-api-check">
<uptodate property="jill-api.uptodate" targetfile="${jill-api.dist.dir}/${jill-api.lib.name}">
<srcfiles dir="${jill-api.dir}/src" />
<srcresources>
<dirset dir="${jill-api.dir}/src" />
</srcresources>
<srcfiles file="${jsr305.dist.dir}/${jsr305.libname}" />
</uptodate>
</target>
<target name="jill-api-lib" depends="jill-api-lib-copy-libs, jill-api-check" unless="jill-api.uptodate">
<delete dir="${jill-api.lib.build.outdir}"/>
<mkdir dir="${jill-api.lib.build.outdir}"/>
<javac encoding="UTF-8" srcdir="${jill-api.dir}/src" destdir="${jill-api.lib.build.outdir}"
source="1.8" target="1.8" debug="true"
includeantruntime="false" includeDestClasses="false" nowarn="true">
<classpath>
<filelist dir="/" files="${jsr305.dist.dir}/${jsr305.libname}" />
</classpath>
<exclude name="com/android/jack/api/example/**"/>
</javac>
<jar destfile="${jill-api.dist.dir}/${jill-api.lib.name}">
<fileset dir="${jill-api.lib.build.outdir}"/>
</jar>
</target>
<!-- ******************* -->
<!-- jill-api -->
<!-- ******************* -->
<property name="jill-api.build.dir" value="${jill-api.dir}/build/exec" />
<property name="jill-api.build.outdir" value="${jill-api.build.dir}/classes" />
<property name="jill-api.name" value="jill-api.jar" />
<target name="jill-api" depends="jill-api-lib">
<copy file="${jack-project.dir}/version.properties"
tofile="${jill-api.lib.build.outdir}/jill-api-version.properties"/>
<jar destfile="${jill-api.dist.dir}/${jill-api.name}">
<fileset dir="${jsr305.build.outdir}"/>
<fileset dir="${jill-api.lib.build.outdir}"/>
</jar>
</target>
<!-- ******************* -->
<!-- jill-api-src -->
<!-- ******************* -->
<property name="jill-api-src.name" value="jill-api-src.zip" />
<target name="jill-api-src-clean">
<delete dir="${jill-api.dist.dir}/${jill-api-src.name}"/>
</target>
<target name="jill-api-src">
<zip destfile="${jill-api.dist.dir}/${jill-api-src.name}"
basedir="${jill-api.dir}/src" />
</target>
<!-- ******************* -->
<!-- antlr -->
<!-- ******************* -->
<property name="antlr.dist.dir" value="${antlr.dir}/dist" />
<property name="antlr.execname" value="antlr.jar"/>
<target name="antlr-clean">
<delete dir="${antlr.dist.dir}"/>
</target>
<target name="antlr">
<mkdir dir="${antlr.dist.dir}"/>
<copy file="${antlr.dir}/antlr-3.4-complete.jar" tofile="${antlr.dist.dir}/${antlr.execname}"/>
</target>
<!-- ******************* -->
<!-- args4j-lib -->
<!-- ******************* -->
<property name="args4j.build.dir" value="${args4j.dir}/build"/>
<property name="args4j.build.outdir" value="${args4j.build.dir}/classes"/>
<property name="args4j.dist.dir" value="${args4j.dir}/dist"/>
<property name="args4j.libname" value="args4j-lib.jar"/>
<target name="args4j-lib-clean">
<delete dir="${args4j.build.dir}"/>
<delete dir="${args4j.dist.dir}"/>
</target>
<target name="args4j-lib">
<!-- project layout -->
<mkdir dir="${args4j.build.outdir}"/>
<mkdir dir="${args4j.dist.dir}"/>
<!-- compile -->
<dependset>
<sources>
<!-- All source files -->
<fileset dir="${args4j.dir}/args4j/src" />
</sources>
<targets>
<fileset file="${args4j.dist.dir}/${args4j.libname}"/>
</targets>
</dependset>
<javac encoding="UTF-8" srcdir="${args4j.dir}/args4j/src"
destdir="${args4j.build.outdir}"
source="1.6" target="1.6"
debug="true" includeantruntime="false" includeDestClasses="false" nowarn="true"/>
<!-- package -->
<copy todir="${args4j.build.outdir}">
<fileset dir="${args4j.dir}/args4j/src">
<include name="**/*.properties"/>
</fileset>
</copy>
<jar destfile="${args4j.dist.dir}/${args4j.libname}"
basedir="${args4j.build.outdir}"
includes="**"/>
</target>
<!-- ******************* -->
<!-- ddmlib -->
<!-- ******************* -->
<property name="ddm-lib.libname" value="ddmlib.jar"/>
<property name="ddm-lib.dist.dir" value="${ddm-lib.dir}/dist"/>
<target name="ddm-lib-clean">
<delete file="${ddm-lib.dist.dir}/${ddm-lib.libname}"/>
</target>
<target name="ddm-lib">
<mkdir dir="${ddm-lib.dist.dir}"/>
<copy file="${ddm-lib.dir}/ddmlib-25.3.0.jar" tofile="${ddm-lib.dist.dir}/${ddm-lib.libname}"/>
<jar destfile="${ddm-lib.dist.dir}/${ddm-lib.libname}" update="true">
<zipfileset includes="**/*.class" src="${ddm-lib.dir}/common-25.3.0.jar"/>
</jar>
</target>
<!-- ******************* -->
<!-- ecj -->
<!-- ******************* -->
<property name="ecj.libname" value="ecj.jar"/>
<property name="ecj.dist.dir" value="${ecj.dir}/dist"/>
<target name="ecj-clean">
<delete dir="${ecj.dist.dir}"/>
</target>
<target name="ecj">
<mkdir dir="${ecj.dist.dir}"/>
<copy file="${ecj.dir}/ecj-4.7M5.jar" tofile="${ecj.dist.dir}/${ecj.libname}"/>
</target>
<!-- ******************* -->
<!-- ecj-tests-lib -->
<!-- ******************* -->
<property name="ecj-tests.libname" value="ecj-tests-lib.jar"/>
<property name="ecj-test.dist.dir" value="${ecj-tests.dir}/dist"/>
<property name="ecj-test.build.dir" value="${ecj-tests.dir}/build"/>
<target name="ecj-tests-clean">
<delete dir="${ecj-test.dist.dir}"/>
<delete dir="${ecj-test.build.dir}"/>
</target>
<target name="ecj-tests-lib">
<mkdir dir="${ecj-test.dist.dir}"/>
<jarjar destfile="${ecj-test.build.dir}/ecj-tests-lib-tmp.jar">
<zipfileset src="${ecj-tests.dir}/ecj-4.6M2.jar"/>
<zipfileset src="${ecj-tests.dir}/org.eclipse.equinox.common_3.8.0.v20150911-2106.jar"/>
<zipfileset src="${ecj-tests.dir}/org.eclipse.jdt.core_3.12.0.v20150913-1717.jar"/>
<zipfileset src="${ecj-tests.dir}/org.eclipse.jdt.core.tests.compiler_3.12.0.v20150913-1717.jar"/>
<zipfileset src="${ecj-tests.dir}/org.eclipse.test.performance_3.11.0.v20150223-0658.jar"/>
<rule pattern="org.eclipse.**" result="com.android.jack.test.eclipse.@1"/>
</jarjar>
<mkdir dir="${ecj-test.build.dir}/with-empty-directories" />
<mkdir dir="${ecj-test.build.dir}/without-empty-directories" />
<unzip src="${ecj-test.build.dir}/ecj-tests-lib-tmp.jar" dest="${ecj-test.build.dir}/with-empty-directories"/>
<copy includeemptydirs="false" todir="${ecj-test.build.dir}/without-empty-directories">
<fileset dir="${ecj-test.build.dir}/with-empty-directories" />
</copy>
<jar destfile="${ecj-test.dist.dir}/${ecj-tests.libname}">
<fileset dir="${ecj-test.build.dir}/without-empty-directories" excludes="META-INF/**"/>
</jar>
<copy file="${ecj-test.dist.dir}/${ecj-tests.libname}" todir="${jack-tests.prebuilts.dir}" flatten="true"/>
</target>
<!-- ******************* -->
<!-- simple-lib -->
<!-- ******************* -->
<property name="simple.libname" value="simple-lib.jar"/>
<property name="simple.dist.dir" value="${simple.dir}/dist"/>
<property name="simple.build.outdir" value="${simple.dir}/build/classes"/>
<target name="simple-lib-clean">
<delete dir="${simple.dist.dir}"/>
<delete dir="${simple.build.outdir}"/>
</target>
<target name="simple-lib">
<mkdir dir="${simple.dist.dir}"/>
<mkdir dir="${simple.build.outdir}"/>
<unzip dest="${simple.build.outdir}" src="${simple.dir}/simple-common-6.0.1-jack.jar"/>
<unzip dest="${simple.build.outdir}" src="${simple.dir}/simple-http-6.0.1-jack.jar"/>
<unzip dest="${simple.build.outdir}" src="${simple.dir}/simple-transport-6.0.1-jack.jar"/>
<jar basedir="${simple.build.outdir}" destfile="${simple.dist.dir}/${simple.libname}"/>
</target>
<!-- ******************* -->
<!-- dx-ref-lib -->
<!-- ******************* -->
<property name="dx-ref.libname" value="dx-ref.jar" />
<property name="dx-ref.dist.dir" value="${dx-ref.dir}/dist" />
<target name="dx-ref-lib-clean">
<delete dir="${dx-ref.dist.dir}" />
</target>
<target name="dx-ref-lib">
<mkdir dir="${dx-ref.dist.dir}" />
<copy file="${dx-ref.dir}/dx.jar" tofile="${dx-ref.dist.dir}/${dx-ref.libname}" />
</target>
<!-- ******************* -->
<!-- freemarker-lib -->
<!-- ******************* -->
<property name="freemarker.libname" value="freemarker-lib.jar"/>
<property name="freemarker.dist.dir" value="${freemarker.dir}/dist"/>
<target name="freemarker-lib-clean">
<delete dir="${freemarker.dist.dir}"/>
</target>
<target name="freemarker-lib">
<mkdir dir="${freemarker.dist.dir}"/>
<copy file="${freemarker.dir}/freemarker-2.3.25-incubating.jar" tofile="${freemarker.dist.dir}/${freemarker.libname}"/>
</target>
<!-- ******************* -->
<!-- guava-lib -->
<!-- ******************* -->
<property name="guava.dist.dir" value="${guava.dir}/dist"/>
<property name="guava.libname" value="guava-lib.jar"/>
<target name="guava-lib-clean">
<delete dir="${guava.dist.dir}"/>
</target>
<target name="guava-lib">
<mkdir dir="${guava.dist.dir}"/>
<copy file="${guava.dir}/guava-18.0.jar" tofile="${guava.dist.dir}/${guava.libname}"/>
</target>
<!-- ******************* -->
<!-- jsr305-lib -->
<!-- ******************* -->
<property name="jsr305.build.dir" value="${jsr305.dir}/build"/>
<property name="jsr305.build.outdir" value="${jsr305.build.dir}/classes"/>
<property name="jsr305.dist.dir" value="${jsr305.dir}/dist"/>
<property name="jsr305.libname" value="jsr305-lib.jar"/>
<target name="jsr305-lib-clean">
<delete dir="${jsr305.build.dir}"/>
<delete dir="${jsr305.dist.dir}"/>
</target>
<target name="jsr305-lib">
<!-- project layout -->
<mkdir dir="${jsr305.build.outdir}"/>
<mkdir dir="${jsr305.dist.dir}"/>
<!-- compile -->
<dependset>
<sources>
<fileset dir="${jsr305.dir}/ri/src/main/java" />
</sources>
<targets>
<fileset dir="${jsr305.build.outdir}"/>
</targets>
</dependset>
<javac encoding="UTF-8" srcdir="${jsr305.dir}/ri/src/main/java"
destdir="${jsr305.build.outdir}"
source="1.6" target="1.6"
debug="true" includeantruntime="false" includeDestClasses="false" nowarn="true"/>
<!-- package -->
<jar destfile="${jsr305.dist.dir}/${jsr305.libname}"
basedir="${jsr305.build.outdir}"
includes="**"/>
</target>
<!-- ******************* -->
<!-- maths-lib -->
<!-- ******************* -->
<property name="maths.build.dir" value="${maths.dir}/build" />
<property name="maths.build.outdir" value="${maths.build.dir}/classes" />
<property name="maths.dist.dir" value="${maths.dir}/dist" />
<property name="maths.libname" value="maths-lib.jar" />
<target name="maths-lib-clean">
<delete dir="${maths.build.dir}"/>
<delete dir="${maths.dist.dir}"/>
</target>
<target name="maths-lib">
<!-- project layout -->
<mkdir dir="${maths.build.outdir}"/>
<mkdir dir="${maths.dist.dir}"/>
<!-- compile -->
<dependset>
<sources>
<fileset dir="${maths.dir}/core/src/java/main" />
</sources>
<targets>
<fileset dir="${maths.build.outdir}"/>
</targets>
</dependset>
<javac encoding="UTF-8" srcdir="${maths.dir}/core/src/java/main"
destdir="${maths.build.outdir}"
source="1.6" target="1.6"
debug="true" includeantruntime="false" includeDestClasses="false" nowarn="true"/>
<!-- package -->
<jar destfile="${maths.dist.dir}/${maths.libname}"
basedir="${maths.build.outdir}"
includes="**"/>
</target>
<!-- ******************* -->
<!-- sched-lib -->
<!-- ******************* -->
<property name="schedlib.build.dir" value="${sched.dir}/build/sched-lib" />
<property name="schedlib.libs.dir" value="${sched.dir}/libs" />
<property name="schedlib.build.outdir" value="${schedlib.build.dir}/classes" />
<property name="schedlib.dist.dir" value="${sched.dir}/dist" />
<property name="schedlib.libname" value="sched-lib.jar" />
<target name="sched-lib-clean">
<delete dir="${schedlib.build.dir}" />
<delete dir="${schedlib.libs.dir}" />
<delete file="${schedlib.dist.dir}/${schedlib.libname}" />
</target>
<target name="sched-copy-libs" depends="guava-lib,jsr305-lib,allocation-lib,freemarker-lib,
watchmaker-lib,maths-lib,junit4">
<copy todir="${schedlib.libs.dir}" flatten="true">
<filelist dir="/">
<file name="${guava.dist.dir}/${guava.libname}" />
<file name="${jsr305.dist.dir}/${jsr305.libname}" />
<file name="${allocation.dist.dir}/${allocation.libname}" />
<file name="${freemarker.dist.dir}/${freemarker.libname}" />
<file name="${watchmaker.dist.dir}/${watchmaker.libname}" />
<file name="${maths.dist.dir}/${maths.libname}" />
<file name="${junit4.dist.dir}/${junit4.execname}" />
</filelist>
</copy>
</target>
<target name="sched-lib" depends="sched-copy-libs,sched-build-lib,guava-lib,jsr305-lib,
allocation-lib,freemarker-lib,watchmaker-lib,maths-lib">
<!-- project layout -->
<!-- avoid incremental compilation with annotation processor -->
<mkdir dir="${schedlib.build.outdir}"/>
<mkdir dir="${schedlib.libs.dir}"/>
<mkdir dir="${schedlib.dist.dir}"/>
<filelist id="schedlib.link.libs.fileset" dir="/">
<file name="${sched-build.dist.dir}/${sched-build.libname}" />
<file name="${guava.dist.dir}/${guava.libname}" />
<file name="${jsr305.dist.dir}/${jsr305.libname}" />
<file name="${allocation.dist.dir}/${allocation.libname}" />
<file name="${freemarker.dist.dir}/${freemarker.libname}" />
<file name="${watchmaker.dist.dir}/${watchmaker.libname}" />
<file name="${maths.dist.dir}/${maths.libname}" />
</filelist>
<!-- compile -->
<dependset>
<sources>
<fileset dir="${sched.dir}/src" />
<filelist refid="schedlib.link.libs.fileset"/>
</sources>
<targets>
<fileset dir="${schedlib.build.outdir}"/>
</targets>
</dependset>
<javac encoding="UTF-8" srcdir="${sched.dir}/src" destdir="${schedlib.build.outdir}"
source="1.8" target="1.8" debug="true" includeantruntime="false" includeDestClasses="false">
<classpath>
<filelist refid="schedlib.link.libs.fileset"/>
</classpath>
<compilerarg line="-processor com.android.sched.build.SchedAnnotationProcessor" />
<compilerarg line="-Xlint:-options"/>
</javac>
<!-- package -->
<copy todir="${schedlib.build.outdir}" >
<fileset dir="${sched.dir}/rsc">
<include name="**"/>
</fileset>
</copy>
<jar destfile="${schedlib.dist.dir}/${schedlib.libname}"
basedir="${schedlib.build.outdir}"
includes="**"/>
</target>
<!-- ******************* -->
<!-- sched-build-lib -->
<!-- ******************* -->
<property name="sched-build.build.dir" value="${sched.dir}/build/sched-build-lib" />
<property name="sched-build.build.outdir" value="${sched-build.build.dir}/classes" />
<property name="sched-build.dist.dir" value="${sched.dir}/dist" />
<property name="sched-build.libname" value="sched-build-lib.jar" />
<target name="sched-build-lib-clean">
<delete dir="${sched-build.build.dir}" />
<delete file="${sched-build.dist.dir}/${sched-build.libname}" />
</target>
<target name="sched-build-lib-compile" depends="sched-copy-libs">
<!-- project layout -->
<mkdir dir="${sched-build.build.outdir}"/>
<mkdir dir="${sched-build.dist.dir}"/>
<!-- compile -->
<dependset>
<sources>
<filelist dir="${sched.dir}/src">
<file name="com/android/sched/build/SchedAnnotationProcessor.java" />
<file name="com/android/sched/build/JarMerger.java"/>
</filelist>
<fileset file="${jsr305.dist.dir}/${jsr305.libname}" />
</sources>
<targets>
<fileset dir="${sched-build.build.outdir}"/>
</targets>
</dependset>
<javac
encoding="UTF-8"
srcdir="${sched.dir}/src"
destdir="${sched-build.build.outdir}"
source="1.8" target="1.8"
debug="true" includeantruntime="false" includeDestClasses="false">
<compilerarg line="-Xlint:-options"/>
<classpath>
<fileset file="${jsr305.dist.dir}/${jsr305.libname}"/>
</classpath>
<include name="com/android/sched/build/SchedAnnotationProcessor.java" />
<include name="com/android/sched/build/JarMerger.java"/>
</javac>
</target>
<target name="sched-build-lib" depends="sched-build-lib-compile">
<!-- package -->
<copy todir="${sched-build.build.outdir}">
<fileset dir="${sched.dir}/rsc-ap">
<include name="**" />
</fileset>
</copy>
<jar destfile="${sched-build.dist.dir}/${sched-build.libname}"
basedir="${sched-build.build.outdir}" includes="**"/>
</target>
<!-- ******************* -->
<!-- sched-build -->
<!-- ******************* -->
<property name="sched-build.execname" value="sched-build.jar" />
<property name="sched-build.exec.build.dir" value="${sched.dir}/build/sched-build" />
<property name="sched-build.exec.build.outdir" value="${sched-build.exec.build.dir}/classes" />
<target name="sched-build-clean" depends="sched-build-lib-clean">
<delete dir="${sched-build.exec.build.dir}" />
<delete file="${sched.dir}/tools/${sched-build.execname}" />
<delete file="${sched-build.dist.dir}/${sched-build.execname}" />
</target>
<target name="sched-build" depends="sched-build-lib-compile">
<!-- package -->
<copy todir="${sched-build.exec.build.outdir}">
<fileset dir="${sched-build.build.outdir}" includes="**/*.class" />
</copy>
<copy todir="${sched-build.exec.build.outdir}">
<fileset dir="${sched.dir}/rsc-ap">
<include name="**" />
</fileset>
</copy>
<jar destfile="${sched-build.dist.dir}/${sched-build.execname}"
basedir="${sched-build.exec.build.outdir}" includes="**" manifest="${sched.dir}/etc/manifest.txt" />
<copy file="${sched-build.dist.dir}/${sched-build.execname}" todir="${sched.dir}/tools"/>
</target>
<!-- ******************* -->
<!-- schedtests-lib -->
<!-- ******************* -->
<property name="schedtests.build.dir" value="${sched.dir}/build/schedtests" />
<property name="schedtests.build.outdir" value="${schedtests.build.dir}/classes" />
<property name="schedtests.dist.dir" value="${sched.dir}/dist" />
<property name="schedtests.libname" value="schedtests-lib.jar" />
<target name="schedtests-lib-clean">
<delete dir="${schedtests.build.dir}" />
<delete dir="${schedtests.dist.dir}" />
</target>
<target name="schedtests-lib" depends="jack,sched-build,sched-copy-libs,sched-lib,guava-lib,jsr305-lib,junit4-lib">
<!-- project layout -->
<mkdir dir="${schedtests.build.outdir}" />
<mkdir dir="${schedtests.dist.dir}" />
<filelist id="schedtests.link.libs.fileset" dir="/">
<file name="${sched-build.dist.dir}/${sched-build.libname}" />
<file name="${schedlib.dist.dir}/${schedlib.libname}" />
<file name="${guava.dist.dir}/${guava.libname}" />
<file name="${jsr305.dist.dir}/${jsr305.libname}" />
<file name="${junit4.dist.dir}/${junit4.libname}" />
</filelist>
<!-- compile -->
<dependset>
<sources>
<fileset dir="${sched.dir}/tests" />
<filelist refid="schedtests.link.libs.fileset" />
</sources>
<targets>
<fileset dir="${schedtests.build.outdir}"/>
</targets>
</dependset>
<javac encoding="UTF-8"
srcdir="${sched.dir}/tests"
destdir="${schedtests.build.outdir}"
source="1.8" target="1.8"
debug="true" includeantruntime="false" includeDestClasses="false">
<compilerarg line="-Xlint:-options"/>
<classpath>
<filelist refid="schedtests.link.libs.fileset"/>
</classpath>
<compilerarg line="-processor com.android.sched.build.SchedAnnotationProcessor" />
<compilerarg line="-Xlint:-options"/>
</javac>
<!-- package -->
<jar destfile="${schedtests.dist.dir}/${schedtests.libname}"
basedir="${schedtests.build.outdir}" includes="**" />
</target>
<!-- ******************* -->
<!-- watchmaker-lib -->
<!-- ******************* -->
<property name="watchmaker.build.dir" value="${watchmaker.dir}/build"/>
<property name="watchmaker.libs.dir" value="${watchmaker.dir}/libs"/>
<property name="watchmaker.build.outdir" value="${watchmaker.build.dir}/classes"/>
<property name="watchmaker.dist.dir" value="${watchmaker.dir}/dist" />
<property name="watchmaker.libname" value="watchmaker-lib.jar"/>
<target name="watchmaker-lib-clean">
<delete dir="${watchmaker.build.dir}"/>
<delete dir="${watchmaker.dist.dir}"/>
</target>
<target name="watchmaker-lib" depends="maths-lib,guava-lib">
<!-- project layout -->
<mkdir dir="${watchmaker.build.outdir}"/>
<mkdir dir="${watchmaker.dist.dir}"/>
<!-- compile -->
<dependset>
<sources>
<fileset dir="${watchmaker.dir}/framework/src/java/main" />
<filelist dir="/">
<file name="${maths.dist.dir}/${maths.libname}" />
<file name="${guava.dist.dir}/${guava.libname}" />
</filelist>
</sources>
<targets>
<fileset dir="${watchmaker.build.outdir}"/>
</targets>
</dependset>
<javac encoding="UTF-8"
srcdir="${watchmaker.dir}/framework/src/java/main"
destdir="${watchmaker.build.outdir}"
source="1.6" target="1.6"
debug="true" includeantruntime="false" includeDestClasses="false" nowarn="true">
<classpath>
<filelist dir="/">
<file name="${maths.dist.dir}/${maths.libname}" />
<file name="${guava.dist.dir}/${guava.libname}" />
</filelist>
</classpath>
</javac>
<!-- package -->
<jar destfile="${watchmaker.dist.dir}/${watchmaker.libname}"
basedir="${watchmaker.build.outdir}"
includes="**"/>
</target>
<!-- ******************* -->
<!-- antlr-runtime-lib -->
<!-- ******************* -->
<property name="antlr-rt.build.dir" value="${antlr-rt.dir}/build" />
<property name="antlr-rt.build.outdir" value="${antlr-rt.build.dir}/classes" />
<property name="antlr-rt.dist.dir" value="${antlr-rt.dir}/dist" />
<property name="antlr-rt.libname" value="antlr-runtime-lib.jar" />
<target name="antlr-rt-lib-clean">
<delete dir="${antlr-rt.build.dir}" />
<delete dir="${antlr-rt.dist.dir}" />
</target>
<target name="antlr-rt-lib">
<!-- project layout -->
<mkdir dir="${antlr-rt.build.outdir}"/>
<mkdir dir="${antlr-rt.dist.dir}"/>
<!-- compile -->
<dependset>
<sources>
<fileset dir="${antlr-rt.dir}/antlr-3.4/runtime/Java/src/main/java" />
</sources>
<targets>
<fileset dir="${antlr-rt.build.outdir}"/>
</targets>
</dependset>
<javac encoding="UTF-8"
srcdir="${antlr-rt.dir}/antlr-3.4/runtime/Java/src/main/java"
destdir="${antlr-rt.build.outdir}"
source="1.6" target="1.6"
debug="true" includeantruntime="false" includeDestClasses="false" nowarn="true">
<exclude name="org/antlr/runtime/tree/DOTTreeGenerator.java" />
</javac>
<!-- package -->
<jar destfile="${antlr-rt.dist.dir}/${antlr-rt.libname}"
basedir="${antlr-rt.build.outdir}"
includes="**"/>
</target>
<!-- ******************* -->
<!-- allocation-lib -->
<!-- ******************* -->
<property name="allocation.build.dir" value="${allocation.dir}/build" />
<property name="allocation.build.outdir" value="${allocation.build.dir}/classes" />
<property name="allocation.dist.dir" value="${allocation.dir}/dist" />
<property name="allocation.libname" value="allocation-lib.jar" />
<target name="allocation-lib-clean">
<delete dir="${allocation.build.dir}" />
<delete dir="${allocation.dist.dir}" />
</target>
<target name="allocation-lib" depends="guava-lib">
<!-- project layout -->
<mkdir dir="${allocation.build.outdir}"/>
<mkdir dir="${allocation.dist.dir}"/>
<!-- compile -->
<dependset>
<sources>
<fileset dir="${allocation.dir}/src/main/java" />
<fileset file="${guava.dist.dir}/${guava.libname}" />
</sources>
<targets>
<fileset file="${allocation.dist.dir}/${allocation.libname}"/>
</targets>
</dependset>
<javac encoding="UTF-8"
srcdir="${allocation.dir}/src/main/java"
destdir="${allocation.build.outdir}"
source="1.6" target="1.6"
debug="true" includeantruntime="false" includeDestClasses="false" nowarn="true">
<classpath>
<filelist dir="/" files="${guava.dist.dir}/${guava.libname}" />
</classpath>
</javac>
<!-- package -->
<jar destfile="${allocation.dist.dir}/${allocation.libname}"
basedir="${allocation.build.outdir}"
includes="**"/>
</target>
<!-- ******************* -->
<!-- junit4-lib -->
<!-- ******************* -->
<property name="junit4.build.dir" value="${junit4.dir}/build/junit4-lib" />
<property name="junit4.build.outdir" value="${junit4.build.dir}/classes" />
<property name="junit4.dist.dir" value="${junit4.dir}/dist" />
<property name="junit4.libname" value="junit4-lib.jar" />
<target name="junit4-lib-clean">
<delete dir="${junit4.build.dir}" />
<delete file="${junit4.dist.dir}/${junit4.libname}" />
</target>
<target name="junit4-lib-compile" depends="hamcrest-core-lib">
<!-- project layout -->
<mkdir dir="${junit4.build.outdir}"/>
<mkdir dir="${junit4.dist.dir}"/>
<!-- compile -->
<dependset>
<sources>
<fileset dir="${junit4.dir}/src/main/java" />
<fileset file="${hamcrest-core.dist.dir}/${hamcrest-core.libname}" />
</sources>
<targets>
<fileset dir="${junit4.build.outdir}"/>
</targets>
</dependset>
<javac encoding="UTF-8"
srcdir="${junit4.dir}/src/main/java"
destdir="${junit4.build.outdir}"
source="1.6" target="1.6"
debug="true" includeantruntime="false" includeDestClasses="false" nowarn="true">
<classpath>
<filelist dir="/" files="${hamcrest-core.dist.dir}/${hamcrest-core.libname}"/>
</classpath>
</javac>
</target>
<target name="junit4-lib" depends="junit4-lib-compile">
<!-- package -->
<jar destfile="${junit4.dist.dir}/${junit4.libname}"
basedir="${junit4.build.outdir}"
includes="**"/>
</target>
<!-- ******************* -->
<!-- junit4 -->
<!-- ******************* -->
<property name="junit4.execname" value="junit4.jar" />
<property name="junit4.exec.build.dir" value="${junit4.dir}/build/junit4" />
<property name="junit4.exec.build.outdir" value="${junit4.exec.build.dir}/classes" />
<target name="junit4-clean" depends="junit4-lib-clean">
<delete file="${junit4.dist.dir}/${junit4.execname}" />
<delete dir="${junit4.exec.build.dir}"/>
</target>
<target name="junit4" depends="junit4-lib-compile">
<!-- package -->
<copy todir="${junit4.exec.build.outdir}">
<fileset dir="${junit4.build.outdir}" includes="**/*.class" />
</copy>
<copy todir="${junit4.exec.build.outdir}">
<fileset dir="${hamcrest-core.build.outdir}"/>
</copy>
<jar destfile="${junit4.dist.dir}/${junit4.execname}"
basedir="${junit4.exec.build.outdir}"
includes="**"/>
</target>
<!-- ******************* -->
<!-- junit4-jack-lib -->
<!-- ******************* -->
<property name="junit4-jack.build.dir" value="${junit4.dir}/build/junit4-jack-lib" />
<property name="junit4-jack.build.outdir" value="${junit4-jack.build.dir}/classes" />
<property name="junit4-jack.dist.dir" value="${junit4.dir}/dist" />
<property name="junit4-jack.libname" value="junit4-lib.jack" />
<target name="junit4-jack-lib-clean">
<delete dir="${junit4-jack.build.dir}" />
<delete file="${junit4-jack.dist.dir}/${junit4-jack.libname}" />
</target>
<target name="junit4-jack-lib" depends="jack-intermediate,hamcrest-core-jack-lib">
<!-- project layout -->
<mkdir dir="${junit4-jack.build.outdir}"/>
<mkdir dir="${junit4-jack.dist.dir}"/>
<!-- compile -->
<java jar="${jack.intermediate.dist.dir}/${jack.intermediatename}" fork="true" failonerror="true">
<arg value="--verbose"/>
<arg value="error"/>
<arg value="-D"/>
<arg value="jack.classpath.default-libraries=false"/>
<arg value="--classpath"/>
<arg value="${jack.prebuilts.dir}/${core-stubs-mini.jack.libname}:${hamcrest-core-jack.dist.dir}/${hamcrest-core-jack.libname}"/>
<arg value="--output-jack"/>
<arg value="${junit4-jack.dist.dir}/${junit4-jack.libname}"/>
<arg value="${junit4.dir}/src/main/java"/>
</java>
<copy file="${junit4-jack.dist.dir}/${junit4-jack.libname}" todir="${jack-tests.prebuilts.dir}" />
</target>
<!-- ******************* -->
<!-- hamcrest-core-lib -->
<!-- ******************* -->
<property name="hamcrest-core.build.dir" value="${hamcrest-core.dir}/build" />
<property name="hamcrest-core.build.outdir" value="${hamcrest-core.build.dir}/classes" />
<property name="hamcrest-core.dist.dir" value="${hamcrest-core.dir}/dist" />
<property name="hamcrest-core.libname" value="hamcrest-core-lib.jar" />
<target name="hamcrest-core-lib-clean">
<delete dir="${hamcrest-core.build.dir}" />
<delete dir="${hamcrest-core.dist.dir}" />
</target>
<target name="hamcrest-core-lib">
<!-- project layout -->
<mkdir dir="${hamcrest-core.build.outdir}"/>
<mkdir dir="${hamcrest-core.dist.dir}"/>
<!-- compile -->
<dependset>
<sources>
<fileset dir="${hamcrest-core.dir}/src" />
</sources>
<targets>
<fileset dir="${hamcrest-core.build.outdir}"/>
</targets>
</dependset>
<javac encoding="UTF-8"
srcdir="${hamcrest-core.dir}/src"
destdir="${hamcrest-core.build.outdir}"
source="1.6" target="1.6"
debug="true" includeantruntime="false" includeDestClasses="false" nowarn="true"/>
<!-- package -->
<jar destfile="${hamcrest-core.dist.dir}/${hamcrest-core.libname}"
basedir="${hamcrest-core.build.outdir}"
includes="**"/>
</target>
<!-- ************************ -->
<!-- hamcrest-core-jack-lib -->
<!-- ************************ -->
<property name="hamcrest-core-jack.build.dir" value="${hamcrest-core.dir}/build" />
<property name="hamcrest-core-jack.build.outdir" value="${hamcrest-core-jack.build.dir}/classes" />
<property name="hamcrest-core-jack.dist.dir" value="${hamcrest-core.dir}/dist" />
<property name="hamcrest-core-jack.libname" value="hamcrest-core-jack-lib.zip" />
<target name="hamcrest-core-jack-lib-clean">
<delete dir="${hamcrest-core-jack.build.dir}" />
<delete dir="${hamcrest-core-jack.dist.dir}" />
</target>
<target name="hamcrest-core-jack-lib" depends="jack-intermediate">
<!-- project layout -->
<mkdir dir="${hamcrest-core-jack.build.outdir}"/>
<mkdir dir="${hamcrest-core-jack.dist.dir}"/>
<!-- compile -->
<java jar="${jack.intermediate.dist.dir}/${jack.intermediatename}" fork="true" failonerror="true">
<arg value="--verbose"/>
<arg value="error"/>
<arg value="-D"/>
<arg value="jack.classpath.default-libraries=false"/>
<arg value="--classpath"/>
<arg value="${jack.prebuilts.dir}/${core-stubs-mini.jack.libname}"/>
<arg value="--output-jack"/>
<arg value="${hamcrest-core-jack.dist.dir}/${hamcrest-core-jack.libname}"/>
<arg value="${hamcrest-core.dir}/src"/>
</java>
</target>
<!-- *************** -->
<!-- dexcomparator -->
<!-- *************** -->
<property name="dexcomparator.execname" value="dexcomparator.jar" />
<property name="dexcomparator.build.dir" value="${dexcomparator.dir}/build" />
<property name="dexcomparator.libs.dir" value="${dexcomparator.dir}/libs" />
<property name="dexcomparator.build.outdir" value="${dexcomparator.build.dir}/classes" />
<property name="dexcomparator.dist.dir" value="${dexcomparator.dir}/dist" />
<target name="dexcomparator-clean">
<delete dir="${dexcomparator.build.dir}" />
<delete dir="${dexcomparator.libs.dir}" />
<delete dir="${dexcomparator.dist.dir}" />
</target>
<target name="dexcomparator-compile" depends="jack-lib, dex-lib,jsr305-lib,guava-lib,args4j-lib,sched-lib">
<!-- project layout -->
<mkdir dir="${dexcomparator.build.outdir}"/>
<mkdir dir="${dexcomparator.libs.dir}"/>
<mkdir dir="${dexcomparator.dist.dir}"/>
<!-- fetch dependencies -->
<copy todir="${dexcomparator.libs.dir}" flatten="true">
<filelist dir="/">
<file name="${dexlib.dist.dir}/${dexlib.libname}" />
<file name="${jsr305.dist.dir}/${jsr305.libname}" />
<file name="${guava.dist.dir}/${guava.libname}" />
<file name="${args4j.dist.dir}/${args4j.libname}" />
<file name="${jack.dist.dir}/${jack.libname}" />
<file name="${schedlib.dist.dir}/${schedlib.libname}" />
</filelist>
</copy>
<!-- compile -->
<dependset>
<sources>
<!-- All source files -->
<fileset dir="${dexcomparator.dir}/src" />
<fileset dir="${dexcomparator.libs.dir}">
<include name="**/*.jar"/>
</fileset>
</sources>
<targets>
<fileset dir="${dexcomparator.build.outdir}"/>
</targets>
</dependset>
<javac encoding="UTF-8"
srcdir="${dexcomparator.dir}/src"
destdir="${dexcomparator.build.outdir}"
source="1.8" target="1.8"
debug="true" includeantruntime="false" includeDestClasses="false">
<compilerarg line="-Xlint:-options"/>
<classpath>
<fileset dir="${dexcomparator.libs.dir}">
<include name="**/*.jar"/>
</fileset>
</classpath>
</javac>
</target>
<target name="dexcomparator" depends="dexcomparator-compile">
<jar destfile="${dexcomparator.dist.dir}/${dexcomparator.execname}"
manifest="${dexcomparator.dir}/etc/manifest.txt"
basedir="${dexcomparator.build.outdir}" includes="**">
<zipgroupfileset dir="${dexcomparator.dir}/libs" includes="**/*.jar" />
</jar>
</target>
<!-- ******************* -->
<!-- dexcomparator-lib -->
<!-- ******************* -->
<property name="dexcomparator.libname" value="dexcomparator-lib.jar" />
<target name="dexcomparator-lib" depends="dexcomparator-compile">
<!-- package -->
<jar destfile="${dexcomparator.dist.dir}/${dexcomparator.libname}"
basedir="${dexcomparator.build.outdir}"
includes="**"/>
</target>
<!-- ******************* -->
<!-- dex-lib -->
<!-- ******************* -->
<property name="dexlib.build.dir" value="${dexlib.dir}/build" />
<property name="dexlib.build.outdir" value="${dexlib.build.dir}/classes" />
<property name="dexlib.dist.dir" value="${dexlib.dir}/dist" />
<property name="dexlib.libname" value="dex-lib.jar" />
<property name="dexlib.version" value="1.4.2" />
<target name="dex-lib-clean">
<delete dir="${dexlib.build.dir}" />
<delete dir="${dexlib.dist.dir}" />
</target>
<target name="dex-lib-compile" depends="guava-lib,jsr305-lib">
<!-- project layout -->
<mkdir dir="${dexlib.build.outdir}"/>
<mkdir dir="${dexlib.dist.dir}"/>
<!-- compile -->
<filelist id="dex-lib-compile.classpath" dir="/">
<file name="${guava.dist.dir}/${guava.libname}"/>
<file name="${jsr305.dist.dir}/${jsr305.libname}"/>
</filelist>
<dependset>
<sources>
<fileset dir="${dexlib.dir}/src/main/java" />
<filelist refid="dex-lib-compile.classpath" />
</sources>
<targets>
<fileset dir="${dexlib.build.outdir}"/>
</targets>
</dependset>
<javac encoding="UTF-8"
srcdir="${dexlib.dir}/src/main/java"
destdir="${dexlib.build.outdir}"
source="1.6" target="1.6"
debug="true" includeantruntime="false" includeDestClasses="false" nowarn="true"
updatedproperty="dexlib.updated">
<classpath>
<filelist refid="dex-lib-compile.classpath" />
</classpath>
</javac>
</target>
<target name="dex-lib" depends="dex-lib-compile" if="dexlib.updated" >
<!-- generate dexlib.properties -->
<echo message="application.version=${dexlib.version}"
file="${dexlib.build.outdir}/dexlib.properties"/>
<!-- package -->
<jar destfile="${dexlib.dist.dir}/${dexlib.libname}"
basedir="${dexlib.build.outdir}"
includes="**"/>
</target>
<!-- ******************* -->
<!-- asm4 -->
<!-- ******************* -->
<property name="asm4.build.dir" value="${asm4.dir}/build" />
<property name="asm4.build.outdir" value="${asm4.build.dir}/classes" />
<property name="asm4.dist.dir" value="${asm4.dir}/dist" />
<property name="asm4.libname" value="asm4-lib.jar" />
<target name="asm4-clean">
<delete dir="${asm4.build.dir}" />
<delete dir="${asm4.dist.dir}" />
</target>
<target name="asm4-lib">
<!-- project layout -->
<mkdir dir="${asm4.build.outdir}"/>
<mkdir dir="${asm4.dist.dir}"/>
<!-- compile -->
<dependset>
<sources>
<fileset dir="${asm4.dir}/src" />
</sources>
<targets>
<fileset file="${asm4.dist.dir}/${asm4.libname}"/>
</targets>
</dependset>
<javac encoding="UTF-8" srcdir="${asm4.dir}/src"
destdir="${asm4.build.outdir}"
source="1.5" target="1.5"
debug="true" includeantruntime="false"/>
<!-- package -->
<jar destfile="${asm4.dist.dir}/${asm4.libname}"
basedir="${asm4.build.outdir}"
includes="**"/>
</target>
<!-- ******************* -->
<!-- jack-default-lib -->
<!-- ******************* -->
<property name="jack-default-lib.build.jack" value="${jack.dir}/build/default-lib.jack"/>
<target name="jack-default-lib-clean">
<delete file="${jack-default-lib.build.jack}" />
</target>
<target name="jack-default-lib.check">
<uptodate property="jack-default-lib.uptodate"
targetfile="${jack-default-lib.build.jack}">
<srcfiles dir="${jack.dir}/src" includes="com/android/jack/annotations/**/*.java"/>
<srcresources>
<dirset dir="${jack.dir}/src" includes="com/android/jack/annotations"/>
</srcresources>
<srcfiles file="${jack.intermediate.dist.dir}/${jack.intermediatename}"/>
<srcfiles file="${jack.prebuilts.dir}/${core-stubs-mini.jack.libname}"/>
</uptodate>
</target>
<target name="jack-default-lib" depends="jack-intermediate,jack-default-lib.check" unless="jack-default-lib.uptodate">
<fileset id="jack-default-lib.src.fileset" dir="${jack.dir}/src" includes="com/android/jack/annotations/**/*.java"/>
<pathconvert property="jack-default-lib.src.list" pathsep=" " refid="jack-default-lib.src.fileset" />
<java jar="${jack.intermediate.dist.dir}/${jack.intermediatename}" fork="true" failonerror="true">
<arg value="--verbose"/>
<arg value="error"/>
<arg value="-D"/>
<arg value="jack.classpath.default-libraries=false"/>
<arg value="--classpath"/>
<arg value="${jack.prebuilts.dir}/${core-stubs-mini.jack.libname}"/>
<arg value="--output-jack"/>
<arg value="${jack-default-lib.build.jack}"/>
<arg line="${jack-default-lib.src.list}"/>
</java>
</target>
<!-- ******************* -->
<!-- core-stubs-mini -->
<!-- ******************* -->
<property name="core-stubs-mini.dist.dir" value="${core-stubs-mini.dir}/dist"/>
<property name="core-stubs-mini.build.dir" value="${core-stubs-mini.dir}/build"/>
<property name="core-stubs-mini.build.outdir" value="${core-stubs-mini.build.dir}/classes"/>
<property name="core-stubs-mini.libname" value="core-stubs-mini.jar"/>
<property name="core-stubs-mini.jack.libname" value="core-stubs-mini.jack"/>
<target name="core-stubs-mini-clean">
<delete dir="${core-stubs-mini.build.dir}" />
<delete dir="${core-stubs-mini.dist.dir}" />
</target>
<target name="core-stubs-mini" depends="jack-intermediate">
<mkdir dir="${core-stubs-mini.dist.dir}"/>
<mkdir dir="${core-stubs-mini.build.outdir}"/>
<fileset dir="${core-stubs-mini.dir}/src">
<include name="**/*.java"/>
</fileset>
<java jar="${jack.intermediate.dist.dir}/${jack.intermediatename}" fork="true" failonerror="true">
<arg value="--verbose"/>
<arg value="error"/>
<arg value="-D"/>
<arg value="jack.classpath.default-libraries=false"/>
<arg value="--output-jack"/>
<arg value="${core-stubs-mini.dist.dir}/${core-stubs-mini.jack.libname}"/>
<arg value="${core-stubs-mini.dir}/src"/>
</java>
<dependset>
<sources>
<!-- All source files -->
<fileset dir="${core-stubs-mini.dir}/src" />
</sources>
<targets>
<fileset dir="${core-stubs-mini.build.outdir}"/>
</targets>
</dependset>
<javac encoding="UTF-8"
srcdir="${core-stubs-mini.dir}/src"
destdir="${core-stubs-mini.build.outdir}"
source="1.6" target="1.6" debug="true" includeantruntime="false" includeDestClasses="false"
nowarn="true"/>
<jar destfile="${core-stubs-mini.dist.dir}/${core-stubs-mini.libname}"
basedir="${core-stubs-mini.build.outdir}"
includes="**"/>
<filelist id="core-stubs-mini.result.libs" dir="/">
<file name="${core-stubs-mini.dist.dir}/${core-stubs-mini.libname}"/>
<file name="${core-stubs-mini.dist.dir}/${core-stubs-mini.jack.libname}"/>
</filelist>
<copy todir="${jack-tests.prebuilts.dir}" flatten="true">
<filelist refid="core-stubs-mini.result.libs" />
</copy>
<copy todir="${jack.prebuilts.dir}" flatten="true">
<filelist refid="core-stubs-mini.result.libs" />
</copy>
</target>
<!-- ******************* -->
<!-- prebuilts -->
<!-- ******************* -->
<target name="prebuilts" description="build and deploy prebuilt libraries"
depends="core-stubs-mini,junit4-lib,junit4-jack-lib,ecj-tests-lib, jack-test-annotations-jack-lib"/>
<!-- ******************* -->
<!-- tests -->
<!-- ******************* -->
<property name="jack.tests.output" value="${jack-project.dir}/tests-results"/>
<condition property="jack.tests.assertions" value="-da" else="-ea">
<istrue value="${tests.disable-assertions}"/>
</condition>
<condition property="jack.tests.runtime.tolerant" value="true" else="false">
<istrue value="${tests.runtime.tolerant}"/>
</condition>
<condition property="jack.tests.console-output" value="--console-output" else="">
<istrue value="${tests.console-output}"/>
</condition>
<condition property="jack.runtime.version" value="-Druntime.version=${runtime.version}" else="">
<isset property="runtime.version"/>
</condition>
<filelist id="jack.junit.tests.classpath" dir="/">
<file name="${jack-tests.dist.dir}/${jack-tests.execname}" />
</filelist>
<target name="test-jack-clean" >
<delete dir="${jack.tests.output}"/>
</target>
<target name="tests-check-config">
<fail message="tests.config is undefined" unless="tests.config" />
</target>
<target name="tests-check-name">
<fail message="test.name is undefined" unless="test.name" />
</target>
<target name="test-jack-dump" depends="tests-check-config">
<mkdir dir="${jack-tests.dir}/dump"/>
<java fork="true" failonerror="true"
output="${jack-tests.dir}/dump/PreSubmitTests.js"
logError="true"
classname="com.android.jack.test.junit.JackJUnitLauncher">
<jvmarg value="-Dtests.dump=true" />
<jvmarg value="-Dtests.config=${tests.config}"/>
<jvmarg line="${jack.runtime.version}"/>
<classpath>
<filelist refid="jack.junit.tests.classpath" />
</classpath>
<arg value="com.android.jack.PreSubmitTests"/>
</java>
</target>
<target name="test-jack-long-dump" depends="tests-check-config">
<mkdir dir="${jack-tests.dir}/dump"/>
<java fork="true" failonerror="true"
output="${jack-tests.dir}/dump/LongLastingTests.js"
logError="true"
classname="com.android.jack.test.junit.JackJUnitLauncher">
<jvmarg value="-Dtests.dump=true" />
<jvmarg value="-Dtests.config=${tests.config}"/>
<jvmarg line="${jack.runtime.version}"/>
<classpath>
<filelist refid="jack.junit.tests.classpath"/>
</classpath>
<arg value="com.android.jack.LongLastingTests"/>
</java>
</target>
<target name="test-sched-dump" depends="tests-check-config">
<mkdir dir="${jack-tests.dir}/dump"/>
<java fork="true" failonerror="true"
output="${jack-tests.dir}/dump/SchedAllTests.js"
logError="true"
classname="com.android.jack.test.junit.JackJUnitLauncher">
<jvmarg value="-Dtests.dump=true" />
<jvmarg value="-Dtests.config=${tests.config}"/>
<classpath>
<filelist refid="jack.junit.tests.classpath" />
<filelist dir="/" files="${schedtests.dist.dir}/${schedtests.libname}"/>
</classpath>
<arg value="com.android.sched.SchedAllTests"/>
</java>
</target>
<target name="test-jack-by-name" description="run Jack tests with name passed via -Dtest.name"
depends="tests-check-config, tests-check-name, jack, jack-tests, test-jack-by-name-nodep">
</target>
<target name="test-jack-by-name-nodep">
<mkdir dir="${jack.tests.output}/test-jack-by-name/html"/>
<java fork="true" resultproperty="test-jack.failure"
classname="com.android.jack.test.junit.JackJunitLauncherXml">
<jvmarg value="-Dfile.encoding=utf-8" />
<jvmarg value="-Dtests.config=${tests.config}"/>
<jvmarg value="-Dtests.runtime.tolerant=${jack.tests.runtime.tolerant}"/>
<jvmarg value="${jack.tests.assertions}"/>
<jvmarg line="${jack.runtime.version}"/>
<classpath>
<filelist refid="jack.junit.tests.classpath" />
</classpath>
<arg value="${jack.tests.output}/test-jack-by-name/test-jack-by-name.xml" />
<arg value="${test.name}" />
<arg line="${jack.tests.console-output}" />
</java>
<junitreport todir="${jack.tests.output}/test-jack-by-name">
<fileset dir="${jack.tests.output}/test-jack-by-name">
<include name="test-jack-by-name.xml"/>
</fileset>
<report format="frames" todir="${jack.tests.output}/test-jack-by-name/html"/>
</junitreport>
<fail message="TESTS FAILED">
<condition>
<isfailure code="${test-jack.failure}"/>
</condition>
</fail>
</target>
<target name="test-jack" description="run Jack tests that must pass before submitting a change"
depends="tests-check-config, jack, jack-tests, test-jack-nodep">
</target>
<target name="test-jack-nodep">
<mkdir dir="${jack.tests.output}/test-jack/html"/>
<java fork="true" resultproperty="test-jack.failure"
classname="com.android.jack.test.junit.JackJunitLauncherXml">
<jvmarg value="-Dfile.encoding=utf-8" />
<jvmarg value="-Dtests.config=${tests.config}"/>
<jvmarg value="-Dtests.runtime.tolerant=${jack.tests.runtime.tolerant}"/>
<jvmarg value="${jack.tests.assertions}"/>
<jvmarg line="${jack.runtime.version}"/>
<classpath>
<filelist refid="jack.junit.tests.classpath" />
</classpath>
<arg value="${jack.tests.output}/test-jack/test-jack.xml" />
<arg value="com.android.jack.PreSubmitTests" />
<arg line="${jack.tests.console-output}" />
</java>
<junitreport todir="${jack.tests.output}/test-jack">
<fileset dir="${jack.tests.output}/test-jack">
<include name="test-jack.xml"/>
</fileset>
<report format="frames" todir="${jack.tests.output}/test-jack/html"/>
</junitreport>
<fail message="TESTS FAILED">
<condition>
<isfailure code="${test-jack.failure}"/>
</condition>
</fail>
</target>
<target name="test-jack-long" description="run long lasting Jack tests"
depends="tests-check-config, jack, jack-tests, test-jack-long-nodep">
</target>
<target name="test-jack-long-nodep">
<mkdir dir="${jack.tests.output}/test-jack-long/html"/>
<java fork="true" resultproperty="test-jack.failure"
classname="com.android.jack.test.junit.JackJunitLauncherXml">
<jvmarg value="-Dfile.encoding=utf-8" />
<jvmarg value="-Dtests.config=${tests.config}"/>
<jvmarg value="-Dtests.runtime.tolerant=${jack.tests.runtime.tolerant}"/>
<jvmarg value="${jack.tests.assertions}"/>
<jvmarg line="${jack.runtime.version}"/>
<classpath>
<filelist refid="jack.junit.tests.classpath" />
</classpath>
<arg value="${jack.tests.output}/test-jack-long/test-jack-long.xml" />
<arg value="com.android.jack.LongLastingTests" />
<arg line="${jack.tests.console-output}" />
</java>
<junitreport todir="${jack.tests.output}/test-jack-long">
<fileset dir="${jack.tests.output}/test-jack-long">
<include name="test-jack-long.xml"/>
</fileset>
<report format="frames" todir="${jack.tests.output}/test-jack-long/html"/>
</junitreport>
<fail message="TESTS FAILED">
<condition>
<isfailure code="${test-jack.failure}"/>
</condition>
</fail>
</target>
<target name="test-jack-all" description="runs all Jack tests"
depends="tests-check-config, jack, jack-tests, test-jack-all-nodep">
</target>
<target name="test-jack-all-nodep">
<mkdir dir="${jack.tests.output}/test-jack-all/html"/>
<java fork="true" resultproperty="test-jack.failure"
classname="com.android.jack.test.junit.JackJunitLauncherXml">
<jvmarg value="-Dfile.encoding=utf-8" />
<jvmarg value="-Dtests.config=${tests.config}"/>
<jvmarg value="-Dtests.runtime.tolerant=${jack.tests.runtime.tolerant}"/>
<jvmarg value="${jack.tests.assertions}"/>
<jvmarg line="${jack.runtime.version}"/>
<classpath>
<filelist refid="jack.junit.tests.classpath" />
</classpath>
<arg value="${jack.tests.output}/test-jack-all/test-jack-all.xml" />
<arg value="com.android.jack.AllWithJackTests" />
<arg line="${jack.tests.console-output}" />
</java>
<junitreport todir="${jack.tests.output}/test-jack-all">
<fileset dir="${jack.tests.output}/test-jack-all">
<include name="test-jack-all.xml"/>
</fileset>
<report format="frames" todir="${jack.tests.output}/test-jack-all/html"/>
</junitreport>
<fail message="TESTS FAILED">
<condition>
<isfailure code="${test-jack.failure}"/>
</condition>
</fail>
</target>
<target name="test-sched" description="run schedlib tests"
depends="tests-check-config,junit4,jack-tests,schedtests-lib,sched-lib,guava-lib,
freemarker-lib,maths-lib, test-sched-nodep">
</target>
<target name="test-sched-nodep">
<mkdir dir="${jack.tests.output}/test-sched/html"/>
<junit fork="yes" failureproperty="test-jack.failure">
<jvmarg value="-Dfile.encoding=utf-8" />
<jvmarg value="${jack.tests.assertions}"/>
<formatter type="xml"/>
<classpath>
<filelist dir="/">
<file name="${junit4.dist.dir}/${junit4.execname}"/>
<file name="${schedtests.dist.dir}/${schedtests.libname}"/>
<file name="${schedlib.dist.dir}/${schedlib.libname}"/>
<file name="${guava.dist.dir}/${guava.libname}"/>
<file name="${freemarker.dist.dir}/${freemarker.libname}"/>
<file name="${maths.dist.dir}/${maths.libname}"/>
<file name="${watchmaker.dist.dir}/${watchmaker.libname}"/>
</filelist>
</classpath>
<test name="com.android.sched.AllTests"
todir="${jack.tests.output}/test-sched/"
outfile="test-sched" />
</junit>
<junitreport todir="${jack.tests.output}/test-sched">
<fileset dir="${jack.tests.output}/test-sched">
<include name="test-sched.xml"/>
</fileset>
<report format="frames" todir="${jack.tests.output}/test-sched/html"/>
</junitreport>
<fail message="TESTS FAILED" if="test-jack.failure" />
</target>
<!-- ******************* -->
<!-- jack-jar-tools -->
<!-- ******************* -->
<property name="jack-jar-tools.build.dir" value="${jack-jar-tools.dir}/build" />
<property name="jack-jar-tools.dist.dir" value="${jack-jar-tools.dir}/dist" />
<property name="jack-jar-tools.libs.dir" value="${jack-jar-tools.dir}/libs" />
<property name="jack-jar-tools.build.outdir" value="${jack-jar-tools.build.dir}/classes" />
<property name="jack-jar-tools.name" value="jack-jar-tools.jar" />
<target name="jack-jar-tools-clean">
<delete dir="${jack-jar-tools.build.outdir}"/>
<delete file="${jack-jar-tools.dist.dir}/${jack-jar-tools.name}"/>
</target>
<target name="jack-jar-tools-copy-libs" depends="jsr305-lib">
<copy todir="${jack-jar-tools.libs.dir}" flatten="true">
<filelist dir="/" >
<file name="${jsr305.dist.dir}/${jsr305.libname}"/>
<file name="${args4j.dist.dir}/${args4j.libname}"/>
</filelist>
</copy>
</target>
<target name="jack-jar-tools-check">
<union id="jack-jar-tools.uptodate.files">
<fileset dir="${jack-jar-tools.dir}/src" />
<fileset dir="${jack-jar-tools.dir}/etc" />
<filelist id="jack-jar-tools.static.libs.fileset" dir="/">
<file name="${jsr305.dist.dir}/${jsr305.libname}" />
<file name="${schedlib.dist.dir}/${schedlib.libname}" />
<file name="${args4j.dist.dir}/${args4j.libname}"/>
</filelist>
</union>
<uptodate property="jack-jar-tools.uptodate"
targetfile="${jack-jar-tools.dist.dir}/${jack-jar-tools.name}">
<srcresources refid="jack-jar-tools.uptodate.files" />
</uptodate>
</target>
<target name="jack-jar-tools"
depends="jack-jar-tools-copy-libs,sched-lib,jack-jar-tools-check"
unless="jack-jar-tools.uptodate">
<delete dir="${jack-jar-tools.build.outdir}"/>
<mkdir dir="${jack-jar-tools.build.outdir}"/>
<javac encoding="UTF-8" srcdir="${jack-jar-tools.dir}/src" destdir="${jack-jar-tools.build.outdir}"
source="1.8" target="1.8" debug="true"
includeantruntime="false" includeDestClasses="false" nowarn="true">
<classpath>
<filelist refid="jack-jar-tools.static.libs.fileset"/>
</classpath>
</javac>
<unzip dest="${jack-jar-tools.build.outdir}">
<filelist refid="jack-jar-tools.static.libs.fileset"/>
</unzip>
<copy file="${jack-project.dir}/version.properties"
tofile="${jack-jar-tools.build.outdir}/jack-jar-tools-version.properties"/>
<jar destfile="${jack-jar-tools.dist.dir}/${jack-jar-tools.name}" manifest="${jack-jar-tools.dir}/etc/manifest.txt">
<fileset dir="${jack-jar-tools.build.outdir}"/>
</jar>
</target>
<!-- ************************* -->
<!-- Checkstyle -->
<!-- ************************* -->
<property name="ivy.install.version" value="2.4.0" />
<property name="ivy.home" value="${user.home}/.ant" />
<property name="ivy.jar.dir" value="${ivy.home}/lib" />
<property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar" />
<target name="download-ivy" unless="offline">
<mkdir dir="${ivy.jar.dir}"/>
<!-- download Ivy from web site so that it can be used even without any special installation -->
<get src="https://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar"
dest="${ivy.jar.file}" usetimestamp="true"/>
</target>
<target name="init-ivy" depends="download-ivy">
<!-- try to load ivy here from ivy home, in case the user has not already dropped
it into ant's lib dir (note that the latter copy will always take precedence).
We will not fail as long as local lib dir exists (it may be empty) and
ivy is in at least one of ant's lib dir or the local lib dir. -->
<path id="ivy.lib.path">
<fileset dir="${ivy.jar.dir}" includes="*.jar"/>
</path>
<taskdef resource="org/apache/ivy/ant/antlib.xml"
uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
</target>
<target name="clean-ivy" depends="init-ivy">
<ivy:cleancache/>
</target>
<target name="download-checkstyle" depends="init-ivy">
<ivy:retrieve/>
<ivy:cachepath pathid="checkstyle.classpath" conf="default"/>
</target>
<target name="checkstyle" depends="download-checkstyle">
<java classpathref="checkstyle.classpath"
classname="com.puppycrawl.tools.checkstyle.Main"
fork="true"
failonerror="true">
<arg value="-f"/>
<arg value="plain"/>
<arg value="-c"/>
<arg value="./jack/config/checkstyle/checkstyle.xml"/>
<arg value="jack/src"/>
<arg value="jack-api/src"/>
<arg value="jack-tests/src"/>
<arg value="dx/src"/>
<arg value="sched/src"/>
<arg value="server/jack-server/src"/>
<arg value="server/jack-server-api/src"/>
<arg value="server/jack-launcher/src"/>
</java>
</target>
</project>