| <?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. --> |
| |
| <!-- ====================================================================== |
| Build source and lay out results in the required format |
| ====================================================================== --> |
| <project name="build-contribution" default="build" basedir="."> |
| <description> |
| Build contributed source and lay out results in the required format |
| </description> |
| |
| <target name="help"> |
| <echo> |
| Apache Harmony Classlibrary Build |
| |
| Usage: |
| |
| ant build |
| Compiles the java and native code to produce a jdk in |
| "deploy/jdk". |
| |
| ant clean |
| Removes all the files generated by a build. |
| |
| ant rebuild |
| Performs a full build - that is 'clean' then 'build'. |
| |
| ant test |
| Runs all the tests. |
| |
| ant doc |
| Generates the javadoc. |
| |
| 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 properties that are use in the ant build files. |
| |
| |
| The 'build' and 'test' targets can be configured to only build/test a single |
| module by setting the 'build.module' property. For example, to run the tests for |
| the "luni" module: |
| |
| ant test -Dbuild.module=luni |
| |
| The 'test' target can further be configured to run a single test by setting |
| the 'test.case' property. For example, to run a specific test in the "luni" |
| module: |
| |
| ant test -Dbuild.module=luni -Dtest.case=org.apache.harmony.luni.tests.java.lang.MathTest |
| </echo> |
| </target> |
| |
| <property file="${user.home}/.harmony-classlib.properties" /> |
| |
| <property name="hy.hdk" location="deploy" /> |
| |
| <!-- import properties for snapshot targets --> |
| <import file="${basedir}/make/properties.xml" /> |
| |
| <!-- ================================ |
| target : rebuild |
| |
| builds with a clean first |
| ================================= --> |
| <target name="rebuild" depends="clean,build" |
| description="Performs a full build - that is 'clean' then 'build'" /> |
| |
| <target name="build" depends="build-java,build-native,build-test" |
| description="Compiles the java and native code to produce a jdk" /> |
| |
| <target name="support-jar" depends="build-java" > |
| <ant antfile="make/build-test.xml" inheritall="false" |
| target="support-jar"/> |
| </target> |
| |
| <target name="clean" |
| depends="clean-java,clean-native,clean-test,-clean-hdk" |
| description="Removes all the files generated by a build" /> |
| |
| <!-- ================================ |
| target : rebuild-java |
| |
| builds java source with a clean first |
| ================================= --> |
| <target name="rebuild-java" depends="clean-java,build-java" |
| description="Like 'rebuild' but for java code only" /> |
| |
| <!-- ================================= |
| target: build-java |
| |
| runs the build target in build-java.xml |
| ================================= --> |
| <target name="build-java" depends="-init-hdk" |
| description="Compiles the java code only" > |
| <echo> |
| ======================================== |
| Building Java component archives... |
| ======================================== |
| </echo> |
| <ant antfile="make/build-java.xml" inheritall="false" target="build"/> |
| </target> |
| |
| <!-- ================================= |
| target: clean-java |
| |
| runs the clean target in build-java.xml |
| ================================= --> |
| <target name="clean-java" depends="-init-hdk-for-clean" |
| description="Removes the compiled java code" > |
| <ant antfile="make/build-java.xml" inheritall="false" target="clean" > |
| <property name="keep.working" value="${keep.working}" /> |
| </ant> |
| </target> |
| |
| <!-- ================================ |
| target : rebuild-native |
| |
| builds native source with a clean first |
| ================================= --> |
| <target name="rebuild-native" depends="clean-native,build-native" |
| description="Like 'rebuild' but for native code only" /> |
| |
| <!-- ================================= |
| target: build-native |
| |
| runs the build target in build-native.xml |
| ================================= --> |
| <target name="build-native" depends="-init-hdk" |
| description="Compiles the native code only" > |
| <echo> |
| ======================================== |
| Building native libs and executables... |
| ======================================== |
| </echo> |
| <ant antfile="make/build-native.xml" inheritall="false" target="build"/> |
| </target> |
| |
| <!-- ================================= |
| target: clean-native |
| |
| runs the clean target in build-native.xml |
| ================================= --> |
| <target name="clean-native" depends="-init-hdk-for-clean" |
| description="Removes the compiled native code" > |
| |
| <ant antfile="make/build-native.xml" inheritall="false" target="clean" /> |
| </target> |
| |
| <target name="clean-test" depends="-init-hdk-for-clean" |
| description="Removes the generated tests" > |
| <ant antfile="make/build-test.xml" inheritall="false" target="clean" /> |
| </target> |
| |
| <target name="test" depends="-init-hdk" |
| description="Runs all tests"> |
| <echo> |
| ======================================== |
| Testing class libraries... |
| ======================================== |
| </echo> |
| <ant antfile="make/build-test.xml" inheritall="false" target="test-all"/> |
| </target> |
| |
| <target name="build-test" depends="-init-hdk,support-jar" |
| description="Compile and archive all tests"> |
| <echo> |
| ======================================== |
| Compiling and archiving test classes ... |
| ======================================== |
| </echo> |
| <ant antfile="make/build-test.xml" inheritall="false" target="test-jar-modules"/> |
| </target> |
| |
| <target name="findbugs" depends="-init-hdk" |
| description="Runs FindBugs on all modules"> |
| <echo> |
| ======================================== |
| Finding bugs in all class libraries... |
| ======================================== |
| </echo> |
| <ant antfile="make/build-test.xml" inheritall="false" target="findbugs"/> |
| </target> |
| |
| <!-- ================================= |
| target: doc |
| ================================= --> |
| <target name="doc" |
| description="Generates the javadoc"> |
| <echo> |
| ======================================== |
| Generating HTML using Doxygen... |
| ======================================== |
| </echo> |
| <ant antfile="doc/build.xml" inheritall="false" /> |
| </target> |
| |
| <target name="clean-doc" if="${really.clean.doc}"> |
| <!-- We really shouldn't do this, since svn diff complains |
| with svn: Working copy 'doc/kernel_doc' is missing or not |
| locked if we run it. We shouldn't really clean things |
| that are in the repository. --> |
| <ant antfile="doc/build.xml" inheritall="false" target="clean" /> |
| </target> |
| |
| <!-- ================================= |
| target: -properties |
| ================================= --> |
| <target name="-properties" depends="svn-prop"> |
| <property name="deploy.file.prefix" |
| value="harmony-classlib-r${svn.revision}" /> |
| <property name="deploy.tar" |
| value="${deploy.file.prefix}-${hy.os}-${hy.arch}-snapshot.tar.gz" /> |
| <property name="deploy.zip" |
| value="${deploy.file.prefix}-${hy.os}-${hy.arch}-snapshot.zip" /> |
| </target> |
| |
| <!-- ================================= |
| target: snapshot |
| ================================= --> |
| <target name="snapshot" depends="-snapshot-tar,-snapshot-zip" |
| description="Produce a classlib snapshot tar/zip" /> |
| |
| <!-- ================================= |
| target: snapshot-tar |
| ================================= --> |
| <target name="-snapshot-tar" depends="build, -properties" if="is.unix"> |
| <echo> |
| ======================================== |
| Generating snapshot tar |
| ======================================== |
| </echo> |
| <tar destfile="${deploy.tar}" compression="gzip"> |
| <tarfileset dir="${basedir}" prefix="Harmony"> |
| <include name="LICENSE" /> |
| <include name="NOTICE" /> |
| <include name="deploy/build/**" /> |
| <include name="deploy/include/**" /> |
| <include name="deploy/jdk/**" /> |
| <exclude name="deploy/jdk/jre/bin/default/**" /> |
| <exclude name="deploy/jdk/jre/bin/java" /> |
| <include name="deploy/lib/**" /> |
| </tarfileset> |
| <tarfileset dir="${basedir}" prefix="Harmony" mode="755"> |
| <include name="deploy/jdk/jre/bin/java" /> |
| </tarfileset> |
| <tarfileset dir="${basedir}/make/resources" |
| includes="README-snapshot.txt" |
| fullpath="Harmony/README"/> |
| </tar> |
| <chksum file="${deploy.tar}" /> |
| <chksum file="${deploy.tar}" type="sha" /> |
| </target> |
| |
| <!-- ================================= |
| target: snapshot-zip |
| ================================= --> |
| <target name="-snapshot-zip" depends="build,-properties" if="is.windows"> |
| <echo> |
| ======================================== |
| Generating snapshot zip |
| ======================================== |
| </echo> |
| <zip destfile="${deploy.zip}"> |
| <zipfileset dir="${basedir}" prefix="Harmony"> |
| <include name="LICENSE" /> |
| <include name="NOTICE" /> |
| <include name="deploy/build/**" /> |
| <include name="deploy/include/**" /> |
| <include name="deploy/jdk/**" /> |
| <exclude name="deploy/jdk/jre/bin/default/**" /> |
| <exclude name="deploy/jdk/jre/bin/java" /> |
| <include name="deploy/lib/**" /> |
| </zipfileset> |
| <zipfileset dir="${basedir}/make/resources" |
| includes="README-snapshot.txt" |
| fullpath="Harmony/README.txt"/> |
| </zip> |
| <chksum file="${deploy.zip}" /> |
| <chksum file="${deploy.zip}" type="sha" /> |
| </target> |
| |
| <target name="check-depends" depends="-init-hdk" |
| description="Report on whether the dependencies are met"> |
| <ant antfile="make/depends.xml" inheritall="false" target="check" /> |
| <poll-modules target="check-depends" /> |
| </target> |
| |
| <target name="fetch-depends" depends="-init-hdk" |
| description="Fetches dependencies. Note: Some of Harmony's dependencies are licensed under terms other than the Apache License v2."> |
| <ant antfile="make/depends.xml" inheritall="false" target="download" /> |
| <poll-modules target="fetch-depends" /> |
| </target> |
| |
| <target name="properties" depends="echo" |
| description="Display the properties that are use in the ant build files" |
| /> |
| |
| <target name="-init-hdk"> |
| <init-hdk /> |
| </target> |
| |
| <target name="-init-hdk-for-clean"> |
| <!-- This is currently the same as "-init-hdk" but has |
| a different name since otherwise it would only |
| get called once - before the clean - during a rebuild |
| and not called a second time - before the build. |
| --> |
| <init-hdk /> |
| </target> |
| |
| <target name="-clean-hdk"> |
| <delete dir="${hy.hdk}/build/ant" /> |
| <delete dir="${hy.hdk}/build/make" /> |
| </target> |
| |
| <macrodef name="chksum"> |
| <attribute name="file" /> |
| <attribute name="type" default="md5" /> |
| <sequential> |
| <checksum property="@{file}.@{type}" file="@{file}" |
| algorithm="@{type}" /> |
| <echo file="@{file}.@{type}" |
| message="${@{file}.@{type}} @{file}${line.separator}" /> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="init-hdk"> |
| <sequential> |
| <mkdir dir="${hy.hdk}/build/ant" /> |
| <copy file="make/properties.xml" |
| tofile="${hy.hdk}/build/ant/properties.xml" |
| outputencoding="UTF-8" > |
| <filterchain> |
| <tokenfilter> |
| <replacestring from="Top-Level property definitions" |
| to="Classlib property definitions" /> |
| </tokenfilter> |
| </filterchain> |
| </copy> |
| <copy file="make/make.xml" |
| tofile="${hy.hdk}/build/ant/make.xml" |
| outputencoding="UTF-8" > |
| </copy> |
| <copy file="make/depends-common.xml" |
| tofile="${hy.hdk}/build/ant/depends.xml" |
| outputencoding="UTF-8" > |
| <filterchain> |
| <tokenfilter> |
| <replacestring from="Common dependency definitions" |
| to="Classlib dependency definitions" /> |
| </tokenfilter> |
| </filterchain> |
| </copy> |
| <copy file="make/depends.properties" |
| tofile="${hy.hdk}/build/ant/depends.properties" |
| outputencoding="UTF-8" > |
| </copy> |
| |
| <mkdir dir="${hy.hdk}/build/make" /> |
| <copy todir="${hy.hdk}/build/make" overwrite="yes"> |
| <fileset dir="depends/build"> |
| <include name="**" /> |
| </fileset> |
| </copy> |
| |
| </sequential> |
| </macrodef> |
| |
| </project> |
| |