blob: 0cbe9d2bd9041136de2d0d75044f4b777a404c2d [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You 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="build-harmony" default="build" basedir=".">
<!-- name of the target directory to use for building and final assembly -->
<property name="hy.target" value="target" />
<!-- release property file which is added to source release -->
<property file="release.properties" />
<!-- debug or release version -->
<property name="hy.cfg" value="release" />
<property name="hy.select" value="false" />
<property name="hy.hdk" location="${hy.target}/hdk" />
<property name="hy.component" location="federated" />
<property name="hy.module" location="toplevel" />
<!-- property to identify when components are being built by the
federated build -->
<property name="is.federated.build" value="true" />
<property name="vm.dir" value="drlvm" />
<property name="vm.dir.loc" location="${vm.dir}" />
<!-- import some vm-specific properties -->
<property file="${vm.dir.loc}/make/build.properties" />
<property name="common.resources" location="common_resources" />
<mkdir dir="${hy.hdk}/build/ant" />
<copy todir="${hy.hdk}/build/ant" preservelastmodified="true">
<fileset dir="${common.resources}/make" includes="*.xml"/>
</copy>
<import file="${hy.hdk}/build/ant/properties.xml" />
<init-hdk />
<description>
Apache Harmony project federation script
</description>
<target name="help">
<echo>
Apache Harmony Ant Build
Usage:
ant build
Compiles the java and native code to produce a jdk in
"${hy.target}/hdk".
ant clean
Removes all the files generated by a build.
ant rebuild
Performs a full build - that is 'clean' then 'build'.
ant snapshot
Produces a archive (tar/zip) of a build.
ant fetch-depends
Fetches dependencies. Note: Some of Harmony's dependencies are
licensed under terms other than the Apache License v2.
ant properties
Display the common build properties.
</echo>
</target>
<!-- ============================================================== -->
<!-- main target - should checkout, build and package hdk,
jdk and jre -->
<!-- ============================================================== -->
<target name="all"
description="setup and build complete implementation"
depends="setup,
clean,
build,
bundle-hdk,
bundle-jdk,
bundle-jre"/>
<target name="snapshot"
description="setup and build complete src + binaries set"
depends="bundle-src,
clean,
build,
bundle-hdk,
bundle-jdk,
bundle-jre"/>
<target name="build"
description="build complete implementation"
depends="properties,
build-classlib,
build-vm,
build-jdktools,
assemble-artifacts"/>
<target name="bundle-src"
description="assemble source snapshot"
depends="setup,
copy-src,
bundle-src-tgz,
bundle-src-zip" />
<target name="rat" depends="setup,copy-src">
<property name="rat.version" value="0.7" />
<fail
message="Set rat.home property to directory containing rat build">
<condition><not><available file="${rat.home}" /></not></condition>
</fail>
<typedef resource="org/apache/rat/anttasks/antlib.xml"
uri="antlib:org.apache.rat.anttasks">
<!-- these work if rat.home is a built source checkout -->
<classpath path="${rat.home}/apache-rat-tasks/target/apache-rat-tasks-${rat.version}.jar" />
<classpath path="${rat.home}/apache-rat-core/target/apache-rat-core-${rat.version}.jar" />
<classpath path="${rat.home}/apache-rat/target/apache-rat-${rat.version}.jar" />
<!-- these work if rat.home is a binary build -->
<classpath path="${rat.home}/apache-rat-tasks-${rat.version}.jar" />
<classpath path="${rat.home}/apache-rat-core-${rat.version}.jar" />
<classpath path="${rat.home}/apache-rat-${rat.version}.jar" />
</typedef>
<delete file="${hy.target}/rat.report.txt" />
<rat:report xmlns:rat="antlib:org.apache.rat.anttasks"
reportFile="${hy.target}/rat.report.txt" >
<fileset dir="${hy.target}/src" excludesfile="rat.excludes" />
</rat:report>
<property name="rat.location"
location="${hy.target}/rat.report.txt" />
<echo>Rat report generated at
${rat.location}
</echo>
</target>
<!-- ============================================================== -->
<!-- creates the HDK bundle appropriate for the platform -->
<!-- ============================================================== -->
<target name="bundle-hdk"
depends="assemble-artifacts,
bundle-hdk-tgz,
bundle-hdk-zip" />
<!-- ============================================================== -->
<!-- builds with a clean first -->
<!-- ============================================================== -->
<target name="rebuild" depends="clean, build"
description="Performs a full build - that is 'clean' then 'build'" />
<!-- ============================================================== -->
<!-- fetches external dependencies -->
<!-- ============================================================== -->
<target name="fetch-depends"
description="Fetches dependencies for all components. Note: Some of Harmony dependencies are licensed under terms other than the Apache License v2."
depends="-init-hdk,
fetch-depends-classlib,
fetch-depends-vm,
fetch-depends-jdktools"/>
<target name="check-depends"
description="Checks dependencies for all components."
depends="-init-hdk,
check-depends-classlib,
check-depends-vm,
check-depends-jdktools"/>
<target name="bundle-hdk-tgz" depends="init" if="is.unix">
<!-- create the tar file and then md5 checksum using harmony-hdk-rev as the root,
and setting exec bits as needed -->
<tar tarfile="${hy.target}/${deploy.hdk.tar}" compression="gzip">
<tarfileset dir="${hy.target}/hdk"
prefix="${archive.dir.prefix}hdk-${harmony.version}"
mode="755">
<include name="jdk/jre/bin/java"/>
<include name="jdk/jre/bin/keytool"/>
<include name="jdk/jre/bin/pack200"/>
<include name="jdk/jre/bin/policytool"/>
<include name="jdk/jre/bin/unpack200"/>
<include name="jdk/bin/*"/>
</tarfileset>
<tarfileset dir="${hy.target}/hdk"
prefix="${archive.dir.prefix}hdk-${harmony.version}">
<include name="**"/>
<exclude name="jdk/jre/bin/java"/>
<exclude name="jdk/jre/bin/keytool"/>
<exclude name="jdk/jre/bin/pack200"/>
<exclude name="jdk/jre/bin/policytool"/>
<exclude name="jdk/jre/bin/unpack200"/>
<exclude name="jdk/bin/*"/>
<exclude name="jdk/jre/README"/>
</tarfileset>
<tarfileset dir="${hy.target}/hdk/jdk/jre"
prefix="${archive.dir.prefix}hdk-${harmony.version}">
<include name="README"/>
</tarfileset>
</tar>
<chksum dir="${hy.target}" file="${deploy.hdk.tar}" />
<chksum dir="${hy.target}" file="${deploy.hdk.tar}" type="sha" />
</target>
<target name="bundle-hdk-zip" depends="init" unless="is.unix">
<!-- create the tar file and then md5 checksum using harmony-hdk-rev as the root,
and setting exec bits as needed -->
<zip destfile="${hy.target}/${deploy.hdk.zip}" >
<zipfileset dir="${hy.target}/hdk"
prefix="${archive.dir.prefix}hdk-${harmony.version}"
filemode="755">
<include name="jdk/jre/bin/java.exe"/>
<include name="jdk/jre/bin/javaw.exe"/>
<include name="jdk/jre/bin/keytool.exe"/>
<include name="jdk/jre/bin/pack200.exe"/>
<include name="jdk/jre/bin/policytool.exe"/>
<include name="jdk/jre/bin/unpack200.exe"/>
<include name="jdk/bin/*"/>
</zipfileset>
<zipfileset dir="${hy.target}/hdk"
prefix="${archive.dir.prefix}hdk-${harmony.version}">
<include name="**"/>
<exclude name="jdk/jre/bin/java.exe"/>
<exclude name="jdk/jre/bin/javaw.exe"/>
<exclude name="jdk/jre/bin/keytool.exe"/>
<exclude name="jdk/jre/bin/pack200.exe"/>
<exclude name="jdk/jre/bin/policytool.exe"/>
<exclude name="jdk/jre/bin/unpack200.exe"/>
<exclude name="jdk/bin/*"/>
<exclude name="jdk/jre/README"/>
</zipfileset>
<zipfileset dir="${hy.target}/hdk/jdk/jre"
prefix="${archive.dir.prefix}hdk-${harmony.version}">
<include name="README"/>
</zipfileset>
</zip>
<chksum dir="${hy.target}" file="${deploy.hdk.zip}" />
<chksum dir="${hy.target}" file="${deploy.hdk.zip}" type="sha" />
</target>
<!-- ============================================================== -->
<!-- creates the JDK bundle appropriate for the platform -->
<!-- ============================================================== -->
<target name="bundle-jdk"
depends="assemble-jdk-doc,
bundle-jdk-tgz,
bundle-jdk-zip" />
<target name="bundle-jdk-tgz" depends="init" if="is.unix">
<tar tarfile="${hy.target}/${deploy.jdk.tar}" compression="gzip" >
<tarfileset dir="${hy.target}/hdk/jdk"
prefix="${archive.dir.prefix}jdk-${harmony.version}"
mode="755">
<include name="jre/bin/java"/>
<include name="jre/bin/keytool"/>
<include name="jre/bin/pack200"/>
<include name="jre/bin/policytool"/>
<include name="jre/bin/unpack200"/>
<include name="bin/*"/>
</tarfileset>
<tarfileset dir="${hy.target}/hdk/jdk"
prefix="${archive.dir.prefix}jdk-${harmony.version}">
<include name="**"/>
<exclude name="jre/bin/java"/>
<exclude name="jre/bin/keytool"/>
<exclude name="jre/bin/pack200"/>
<exclude name="jre/bin/policytool"/>
<exclude name="jre/bin/unpack200"/>
<exclude name="bin/*"/>
<exclude name="jre/README"/>
</tarfileset>
<tarfileset dir="${hy.target}/hdk/jdk/jre"
prefix="${archive.dir.prefix}jdk-${harmony.version}">
<include name="README"/>
</tarfileset>
</tar>
<chksum dir="${hy.target}" file="${deploy.jdk.tar}" />
<chksum dir="${hy.target}" file="${deploy.jdk.tar}" type="sha" />
</target>
<target name="bundle-jdk-zip" depends="init" unless="is.unix">
<zip destfile="${hy.target}/${deploy.jdk.zip}">
<zipfileset dir="${hy.target}/hdk/jdk"
prefix="${archive.dir.prefix}jdk-${harmony.version}"
filemode="755">
<include name="jre/bin/java.exe"/>
<include name="jre/bin/javaw.exe"/>
<include name="jre/bin/keytool.exe"/>
<include name="jre/bin/pack200.exe"/>
<include name="jre/bin/policytool.exe"/>
<include name="jre/bin/unpack200.exe"/>
<include name="bin/*"/>
</zipfileset>
<zipfileset dir="${hy.target}/hdk/jdk"
prefix="${archive.dir.prefix}jdk-${harmony.version}">
<include name="**"/>
<exclude name="jre/bin/java.exe"/>
<exclude name="jre/bin/javaw.exe"/>
<exclude name="jre/bin/keytool.exe"/>
<exclude name="jre/bin/pack200.exe"/>
<exclude name="jre/bin/policytool.exe"/>
<exclude name="jre/bin/unpack200.exe"/>
<exclude name="bin/*"/>
<exclude name="jre/README"/>
</zipfileset>
<zipfileset dir="${hy.target}/hdk/jdk/jre"
prefix="${archive.dir.prefix}jdk-${harmony.version}">
<include name="README"/>
</zipfileset>
</zip>
<chksum dir="${hy.target}" file="${deploy.jdk.zip}" />
<chksum dir="${hy.target}" file="${deploy.jdk.zip}" type="sha" />
</target>
<!-- ============================================================== -->
<!-- creates the JRE bundle appropriate for the platform -->
<!-- ============================================================== -->
<target name="bundle-jre"
depends="assemble-jre-doc,
bundle-jre-tgz,
bundle-jre-zip" />
<target name="bundle-jre-tgz" depends="init" if="is.unix">
<tar tarfile="${hy.target}/${deploy.jre.tar}" compression="gzip" >
<tarfileset dir="${hy.target}/hdk/jdk/jre"
prefix="${archive.dir.prefix}jre-${harmony.version}"
mode="755">
<include name="bin/java"/>
<include name="bin/keytool"/>
<include name="bin/pack200"/>
<include name="bin/policytool"/>
<include name="bin/unpack200"/>
</tarfileset>
<tarfileset dir="${hy.target}/hdk/jdk/jre"
prefix="${archive.dir.prefix}jre-${harmony.version}">
<include name="**"/>
<exclude name="bin/java"/>
<exclude name="bin/keytool"/>
<exclude name="bin/pack200"/>
<exclude name="bin/policytool"/>
<exclude name="bin/unpack200"/>
<exclude name="**/*-src.jar"/>
</tarfileset>
</tar>
<chksum dir="${hy.target}" file="${deploy.jre.tar}" />
<chksum dir="${hy.target}" file="${deploy.jre.tar}" type="sha" />
</target>
<target name="bundle-jre-zip" depends="init" unless="is.unix">
<zip destfile="${hy.target}/${deploy.jre.zip}">
<zipfileset dir="${hy.target}/hdk/jdk/jre"
prefix="${archive.dir.prefix}jre-${harmony.version}"
filemode="755">
<include name="bin/java.exe"/>
<include name="bin/javaw.exe"/>
<include name="bin/keytool.exe"/>
<include name="bin/pack200.exe"/>
<include name="bin/policytool.exe"/>
<include name="bin/unpack200.exe"/>
</zipfileset>
<zipfileset dir="${hy.target}/hdk/jdk/jre"
prefix="${archive.dir.prefix}jre-${harmony.version}">
<include name="**"/>
<exclude name="bin/java.exe"/>
<exclude name="bin/javaw.exe"/>
<exclude name="bin/keytool.exe"/>
<exclude name="bin/pack200.exe"/>
<exclude name="bin/policytool.exe"/>
<exclude name="bin/unpack200.exe"/>
<exclude name="**/*-src.jar"/>
</zipfileset>
</zip>
<chksum dir="${hy.target}" file="${deploy.jre.zip}" />
<chksum dir="${hy.target}" file="${deploy.jre.zip}" type="sha" />
</target>
<!-- ============================================================== -->
<!-- from the classlib and vm builds, creates the hdk and jre -->
<!-- ============================================================== -->
<target name="assemble-artifacts"
depends="init,
assemble-hdk-doc,
chmod-stuff"/>
<target name="chmod-stuff" if="is.unix">
<chmod file="${hy.target}/hdk/jdk/bin/*" perm="ugo+x" />
<chmod file="${hy.target}/hdk/jdk/jre/bin/java*" perm="ugo+x" />
<chmod file="${hy.target}/hdk/jdk/jre/bin/keytool*" perm="ugo+x" />
<chmod file="${hy.target}/hdk/jdk/jre/bin/policytool*" perm="ugo+x" />
<chmod file="${hy.target}/hdk/jdk/jre/bin/unpack200*" perm="ugo+x" />
<chmod file="${hy.target}/hdk/jdk/jre/bin/pack200*" perm="ugo+x" />
</target>
<!-- ============================================================== -->
<!-- copies a license and notices into the root of the hdk -->
<!-- ============================================================== -->
<target name="assemble-hdk-doc">
<copy todir="${hy.target}/hdk" overwrite="true">
<fileset dir=".">
<include name="LICENSE" />
<include name="NOTICE" />
</fileset>
</copy>
</target>
<!-- ============================================================== -->
<!-- copies a license and notices into the root of the JDK and JRE -->
<!-- ============================================================== -->
<target name="assemble-jre-doc">
<copy todir="${hy.target}/hdk/jdk/jre" overwrite="true">
<fileset dir=".">
<include name="LICENSE" />
<include name="NOTICE" />
</fileset>
</copy>
</target>
<target name="assemble-jdk-doc">
<copy todir="${hy.target}/hdk/jdk/" overwrite="true">
<fileset dir=".">
<include name="LICENSE" />
<include name="NOTICE" />
</fileset>
</copy>
</target>
<!-- ============================================================== -->
<!-- ensures dependencies are up to date, then builds classlib -->
<!-- ============================================================== -->
<propertyset id="required.props">
<propertyref name="hy.cfg" />
<propertyref name="hy.select" />
<propertyref name="hy.hdk" />
<propertyref name="hy.local.zlib" />
<propertyref name="use.libstdc++5" />
<propertyref name="harmony.java.version" />
<propertyref name="is.federated.build" />
<propertyref name="hy.no.thr" />
<propertyref name="hy.zip.api" />
</propertyset>
<target name="build-classlib"
depends="init,-init-hdk,-build-classlib,assemble-hdk-doc"/>
<target name="-build-classlib" depends="auto-fetch-depends-classlib">
<ant antfile="classlib/build.xml" target="build" inheritAll="false" >
<propertyset refid="required.props" />
<property name="svn.info" value="${harmony.long.version}"/>
<property name="svn.revision" value="${harmony.version}"/>
<property name="keep.working" value="true" />
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
<!-- hack to make sure the federated build doesn't use the classlib
LICENSE/NOTICE files as they don't cover ICU4C
-->
<delete>
<fileset dir="${hy.hdk}">
<include name="LICENSE" />
<include name="NOTICE" />
</fileset>
</delete>
</target>
<target name="auto-fetch-depends-classlib" if="auto.fetch">
<ant target="fetch-depends-classlib">
<propertyset refid="required.props" />
<property name="svn.info" value="${harmony.long.version}"/>
<property name="svn.revision" value="${harmony.version}"/>
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
</target>
<target name="fetch-depends-classlib"
description="Fetches dependencies for classlib. Note: Some of Harmony dependencies are licensed under terms other than the Apache License v2.">
<ant antfile="classlib/build.xml" target="fetch-depends"
inheritall="false" >
<propertyset refid="required.props" />
<property name="svn.info" value="${harmony.long.version}"/>
<property name="svn.revision" value="${harmony.version}"/>
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
</target>
<target name="check-depends-classlib"
description="Checks dependencies for classlib.">
<ant antfile="classlib/build.xml" target="check-depends"
inheritall="false" >
<propertyset refid="required.props" />
<property name="svn.info" value="${harmony.long.version}"/>
<property name="svn.revision" value="${harmony.version}"/>
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
</target>
<target name="clean-classlib">
<ant antfile="classlib/build.xml" target="clean" inheritAll="false" >
<propertyset refid="required.props" />
<property name="svn.info" value="${harmony.long.version}"/>
<property name="svn.revision" value="${harmony.version}"/>
<property name="keep.working" value="true" />
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
</target>
<target name="-init-classlib-hdk-for-clean">
<!-- <ant antfile="classlib/build.xml"
target="-init-hdk-for-clean" inheritAll="false" >
<propertyset refid="required.props" />
<property name="keep.working" value="true" />
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
--> </target>
<target name="-init-hdk">
<ant antfile="${vm.dir.loc}/build.xml"
target="-init-hdk" inheritall="false" >
<propertyset refid="required.props" />
<property name="svn.info" value="${harmony.long.version}"/>
<property name="svn.revision" value="${harmony.version}"/>
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
</target>
<!-- ============================================================== -->
<!-- ensures that dependencies are up to date and then builds a vm -->
<!-- ============================================================== -->
<target name="build-vm" depends="init,auto-fetch-depends-vm">
<ant antfile="${vm.dir.loc}/build.xml"
target="build" inheritAll="false" >
<propertyset refid="required.props" />
<property name="svn.info" value="${harmony.long.version}"/>
<property name="svn.revision" value="${harmony.version}"/>
<property name="deploy.canonical.flag" value="false"/>
<property name="drlvm.deploy.dir" location="${hy.hdk}"/>
<property name="import.hdk" value="false"/>
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
</target>
<target name="auto-fetch-depends-vm" if="auto.fetch">
<ant target="fetch-depends-vm">
<propertyset refid="required.props" />
<property name="svn.info" value="${harmony.long.version}"/>
<property name="svn.revision" value="${harmony.version}"/>
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
</target>
<target name="fetch-depends-vm"
description="Fetches dependencies for the vm. Note: Some of Harmony dependencies are licensed under terms other than the Apache License v2.">
<ant antfile="${vm.dir.loc}/build.xml"
target="fetch-depends" inheritall="false" >
<propertyset refid="required.props" />
<property name="svn.info" value="${harmony.long.version}"/>
<property name="svn.revision" value="${harmony.version}"/>
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
</target>
<target name="check-depends-vm"
description="Checks dependencies for the vm.">
<ant antfile="${vm.dir.loc}/build.xml"
target="check-depends" inheritall="false" >
<propertyset refid="required.props" />
<property name="svn.info" value="${harmony.long.version}"/>
<property name="svn.revision" value="${harmony.version}"/>
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
</target>
<target name="clean-vm">
<ant antfile="${vm.dir.loc}/build.xml"
target="clean" inheritall="false" >
<propertyset refid="required.props" />
<property name="svn.info" value="${harmony.long.version}"/>
<property name="svn.revision" value="${harmony.version}"/>
<property name="deploy.canonical.flag" value="false"/>
<property name="drlvm.deploy.dir" location="${hy.hdk}"/>
<property name="import.hdk" value="false"/>
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
</target>
<!-- ============================================================== -->
<!-- ensures dependencies are up to date, then builds jdktools -->
<!-- ============================================================== -->
<target name="build-jdktools"
depends="init,-init-hdk,auto-fetch-depends-jdktools">
<ant antfile="jdktools/build.xml" target="build" inheritall="false" >
<propertyset refid="required.props" />
<property name="svn.info" value="${harmony.long.version}"/>
<property name="svn.revision" value="${harmony.version}"/>
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
</target>
<target name="auto-fetch-depends-jdktools" if="auto.fetch">
<ant target="fetch-depends-jdktools" inheritall="false" >
<propertyset refid="required.props" />
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
</target>
<target name="fetch-depends-jdktools"
description="Fetches dependencies for jdktools. Note: Some of Harmony dependencies are licensed under terms other than the Apache License v2.">
<ant antfile="jdktools/build.xml" target="fetch-depends"
inheritall="false" >
<propertyset refid="required.props" />
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
</target>
<target name="check-depends-jdktools"
description="Checks dependencies for jdktools">
<ant antfile="jdktools/build.xml" target="check-depends"
inheritall="false" >
<propertyset refid="required.props" />
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
</target>
<target name="clean-jdktools">
<ant antfile="jdktools/build.xml" target="clean" inheritall="false" >
<propertyset refid="required.props" />
<property name="svn.info" value="${harmony.long.version}"/>
<property name="svn.revision" value="${harmony.version}"/>
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
</ant>
</target>
<!-- ============================================================== -->
<!-- recreates distribution dir -->
<!-- ============================================================== -->
<target name="setup" depends="init, properties">
<delete includeemptydirs="true" failonerror="false">
<fileset dir="${hy.target}">
<exclude name="depends/**" />
</fileset>
</delete>
<mkdir dir="${hy.target}"/>
</target>
<target name="clean"
depends="-init-classlib-hdk-for-clean,
clean-jdktools,
clean-classlib,
clean-vm,
clean-tests" >
<delete includeemptydirs="true" failonerror="false">
<fileset dir="${hy.target}">
<exclude name="depends/**" />
</fileset>
</delete>
</target>
<target name="distclean">
<delete dir="${hy.target}"
includeemptydirs="true" failonerror="false" />
</target>
<!-- ============================================================== -->
<!-- sets up a platform -->
<!-- ============================================================== -->
<target name="init" depends="-svn-info">
<property name="harmony.version" value="${svn.revision}" />
<property name="harmony.long.version" value="${svn.info}" />
<condition property="version.prefix" value="select-">
<istrue value="${hy.select}" />
</condition>
<property name="version.prefix" value="" />
<condition property="vm.prefix" value="">
<equals arg1="drlvm" arg2="${vm.dir}" />
</condition>
<property name="vm.prefix" value="${vm.dir}-" />
<property name="harmony.deploy.suffix" value="-snapshot" />
<property name="harmony.java.version" value="5.0" />
<property name="deploy.file.prefix"
value="apache-harmony-${version.prefix}${harmony.java.version}-${vm.prefix}" />
<property name="archive.dir.prefix"
value="harmony-${version.prefix}${harmony.java.version}-${vm.prefix}" />
<property name="deploy.hdk.file.prefix"
value="${deploy.file.prefix}hdk-r${harmony.version}" />
<property name="deploy.hdk.tar"
value="${deploy.hdk.file.prefix}-${hy.os}-${hy.arch}${harmony.deploy.suffix}.tar.gz" />
<property name="deploy.hdk.zip"
value="${deploy.hdk.file.prefix}-${hy.os}-${hy.arch}${harmony.deploy.suffix}.zip" />
<property name="deploy.jdk.file.prefix"
value="${deploy.file.prefix}jdk-r${harmony.version}" />
<property name="deploy.jdk.tar"
value="${deploy.jdk.file.prefix}-${hy.os}-${hy.arch}${harmony.deploy.suffix}.tar.gz" />
<property name="deploy.jdk.zip"
value="${deploy.jdk.file.prefix}-${hy.os}-${hy.arch}${harmony.deploy.suffix}.zip" />
<property name="deploy.jre.file.prefix"
value="${deploy.file.prefix}jre-r${harmony.version}" />
<property name="deploy.jre.tar"
value="${deploy.jre.file.prefix}-${hy.os}-${hy.arch}${harmony.deploy.suffix}.tar.gz" />
<property name="deploy.jre.zip"
value="${deploy.jre.file.prefix}-${hy.os}-${hy.arch}${harmony.deploy.suffix}.zip" />
<property name="deploy.src.file.prefix"
value="${deploy.file.prefix}src-r${harmony.version}" />
<property name="deploy.src.tar"
value="${deploy.src.file.prefix}${harmony.deploy.suffix}.tar.gz" />
<property name="deploy.src.zip"
value="${deploy.src.file.prefix}${harmony.deploy.suffix}.zip" />
<!-- copy symbol debug info to debug build on Windows -->
<condition property="copy.progdb">
<equals arg1="${hy.cfg}" arg2="debug" />
</condition>
<!-- workaround for drlvm build till it starts with a script-->
<condition property="custom.props" value="-Dhy.javac.compiler=${hy.javac.compiler}"
else="">
<isset property="hy.javac.compiler"/>
</condition>
</target>
<target name="properties" depends="init">
<echo>
Apache Harmony Federated Build
==========================================
svn rev : ${harmony.version}
operating system : ${hy.os}
CPU architecture : ${hy.arch}
ant os name/arch : ${os.name}/${os.arch}
hosting Java : ${java.version} (${java.vendor})
build mode : ${hy.cfg}
output location : ${hy.target}
SVN root : ${svn.root}
archive.dir : ${archive.dir.prefix}
archive.name : ${deploy.file.prefix}
</echo>
</target>
<target name="bundle-src-tgz" depends="init" if="is.unix">
<tar tarfile="${hy.target}/${deploy.src.tar}" compression="gzip"
longfile="gnu" >
<tarfileset dir="${hy.target}/src" prefix="${deploy.file.prefix}src-r${harmony.version}" mode="755">
<include name="debian/rules"/>
</tarfileset>
<tarfileset dir="${hy.target}/src" prefix="${deploy.file.prefix}src-r${harmony.version}">
<include name="**"/>
<exclude name="debian/rules"/>
</tarfileset>
</tar>
<chksum dir="${hy.target}" file="${deploy.src.tar}" />
<chksum dir="${hy.target}" file="${deploy.src.tar}" type="sha" />
</target>
<target name="bundle-src-zip" depends="init" unless="is.unix">
<zip destfile="${hy.target}/${deploy.src.zip}">
<zipfileset dir="${hy.target}/src"
prefix="${deploy.file.prefix}src-r${harmony.version}"
filemode="755">
<include name="debian/rules"/>
</zipfileset>
<zipfileset dir="${hy.target}/src"
prefix="${deploy.file.prefix}src-r${harmony.version}">
<include name="**"/>
<exclude name="debian/rules"/>
</zipfileset>
</zip>
<chksum dir="${hy.target}" file="${deploy.src.zip}" />
<chksum dir="${hy.target}" file="${deploy.src.zip}" type="sha" />
</target>
<target name="copy-src" depends="init">
<exec executable="svn">
<arg value="export" />
<arg value="." />
<arg value="${hy.target}/src" />
</exec>
<echo file="${hy.target}/src/release.properties">
harmony.version=${harmony.version}
harmony.long.version=${harmony.long.version}
harmony.deploy.suffix=${harmony.deploy.suffix}
harmony.java.version=${harmony.java.version}
</echo>
<chmod file="${hy.target}/src/debian/rules" perm="ugo+x" />
</target>
<target name="test" depends="clean-tests" description="Runs all tests">
<ant antfile="${hy.target}/hdk/build/test/build.xml"
target="test" inheritAll="false" >
<propertyset refid="required.props" />
<property name="svn.info" value="${harmony.long.version}"/>
<property name="svn.revision" value="${harmony.version}"/>
<property name="hy.target" location="${hy.target}"/>
<property name="keep.working" value="true" />
<property name="tests.output" location="${hy.target}/test_report"/>
<property name="test.jre.home"
location="${hy.target}/hdk/jdk/jre" />
</ant>
</target>
<target name="clean-tests">
<delete dir="${hy.target}/test_report" />
</target>
<target name="findbugs" depends="clean-findbugs"
description="Runs find bugs report">
<ant antfile="classlib/build.xml" target="findbugs" inheritAll="false" >
<propertyset refid="required.props" />
<property name="svn.info" value="${harmony.long.version}"/>
<property name="svn.revision" value="${harmony.version}"/>
<property name="hy.target" location="${hy.target}"/>
<property name="common.resources" location="common_resources" />
<property name="findBugs.report"
location="${hy.target}/findbugs_report" />
</ant>
</target>
<target name="clean-findbugs">
<delete dir="${hy.target}/findbugs_report" />
</target>
<!-- ============================================================== -->
<!-- produces a nice looking checksum -->
<!-- ============================================================== -->
<macrodef name="chksum">
<attribute name="dir" />
<attribute name="file" />
<attribute name="type" default="md5" />
<sequential>
<checksum property="@{file}.@{type}"
file="@{dir}/@{file}"
algorithm="@{type}" />
<echo file="@{dir}/@{file}.@{type}"
message="${@{file}.@{type}} @{file}${line.separator}" />
</sequential>
</macrodef>
</project>