blob: 4e8c989b25f9eab2edf6d400a21743e9da48d3f9 [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. -->
<!-- ======================================================================
build-java-source
Compile the Java source and package in component archives.
====================================================================== -->
<project name="build-java-source" default="default" basedir="..">
<description>
Compile the Java source and package in component archives.
</description>
<property name="hy.hdk" location="deploy" />
<!-- import common properties -->
<import file="${basedir}/make/properties.xml" />
<property name="build.output" location="build/classes" />
<property name="depends.jars" location="depends/jars" />
<property name="depends.manifests" location="depends/manifests" />
<property name="depends.files" location="depends/files" />
<property file="make/depends.properties" />
<!-- =================================
target: default
================================= -->
<target name="default"
description="Compile the Java source and package in component archives."
depends="clean, build" />
<!-- =================================
target: build
================================= -->
<target name="build" depends="-layout, -compile"
description="Compile Java source and construct deploy directory." />
<!-- =================================
target: clean
================================= -->
<target name="clean" depends="-clean-bin, -clean-layout"
description="Remove compiled classes and delete the deploy directory."/>
<!-- =================================
target: -clean-bin
Delete all built classes
================================= -->
<target name="-clean-bin"
depends="-modules-clean-bin,
-clean-bin-catch-all-test,
-clean-bin-catch-all"/>
<target name="-modules-clean-bin">
<poll-modules target="clean-java" />
</target>
<target name="-clean-bin-catch-all-test">
<!-- without this test the pathconvert in the catch all clean
target fails -->
<available property="catch.all.required"
file="${build.output}" type="dir" />
</target>
<target name="-clean-bin-catch-all" if="catch.all.required">
<fileset id="built.files" dir="${build.output}">
<include name="**/**" />
</fileset>
<pathconvert property="built.files.list"
refid="built.files"
pathsep="${line.separator}" />
<condition property="built.files.exist">
<not>
<equals arg1="${built.files.list}" arg2="" />
</not>
</condition>
<delete includeemptydirs="true" failonerror="false">
<fileset refid="built.files" />
</delete>
<condition property="continue">
<equals arg1="${keep.working}" arg2="true" />
</condition>
<fail if="built.files.exist" unless="continue">
...
Built files still exist after module clean targets have run. This
probably means that one or more patternsets are incomplete. The
remaining files are:
${built.files.list}
</fail>
</target>
<!-- =================================
target: -compile
================================= -->
<target name="-compile" depends="-prepare-depends, -layout">
<ensure-javac/>
<mkdir dir="${build.output}" />
<hy.javac destdir="${build.output}"
includeAntRuntime="no">
<src path="modules/accessibility/src/main/java/" />
<src path="modules/annotation/src/main/java/" />
<src path="modules/applet/src/main/java" />
<src path="modules/archive/src/main/java" />
<src path="modules/auth/src/main/java/${hy.os.family}" />
<src path="modules/auth/src/main/java/common" />
<src path="modules/awt/src/main/java/${hy.os.family}" />
<src path="modules/awt/src/main/java/common" />
<src path="modules/beans/src/main/java" />
<src path="modules/concurrent/src/main/java/" />
<src path="modules/crypto/src/main/java" />
<src path="modules/instrument/src/main/java" />
<src path="modules/imageio/src/main/java" />
<src path="modules/jndi/src/main/java" />
<src path="modules/logging/src/main/java" />
<src path="modules/lang-management/src/main/java/" />
<src path="modules/luni-kernel/src/main/java" />
<src path="modules/luni/src/main/java" />
<src path="modules/math/src/main/java" />
<src path="modules/misc/src/main/java" />
<src path="modules/nio/src/main/java/common" />
<src path="modules/nio/src/main/java/${hy.os.family}" />
<src path="modules/nio_char/src/main/java" />
<!-- pack200 uses customized build script and
should not be built from top-level build.xml -->
<!--src path="modules/pack200/src/main/java" /-->
<src path="modules/prefs/src/main/java" />
<src path="modules/print/src/main/java/${hy.os.family}" />
<src path="modules/print/src/main/java/common" />
<src path="modules/regex/src/main/java" />
<src path="modules/rmi/src/main/java" />
<src path="modules/security-kernel/src/main/java" />
<src path="modules/security/src/main/java/${hy.os.family}" />
<src path="modules/security/src/main/java/common" />
<src path="modules/sound/src/main/java" />
<src path="modules/sql/src/main/java" />
<src path="modules/suncompat/src/main/java" />
<src path="modules/swing/src/main/java/${hy.os.family}" />
<src path="modules/swing/src/main/java/common" />
<src path="modules/text/src/main/java" />
<src path="modules/x-net/src/main/java/" />
<classpath>
<fileset dir="${hy.jdk}/jre/lib/boot">
<include name="**/*.jar" />
<exclude name="**/*-src.jar" />
</fileset>
</classpath>
<!-- We need to set some BCP to avoid the compiler picking
up the JRE's JARs -->
<bootclasspath>
<fileset dir="${depends.jars}">
<!-- FIXME: picked mx4j arbitrarily, needs to be non-empty set -->
<include name="**/mx4j.jar" />
</fileset>
</bootclasspath>
</hy.javac>
<poll-modules target="build" />
</target>
<!-- =================================
target: -layout
Construct the correct directory structure for the class libs
================================= -->
<target name="-layout" depends="-prepare-depends">
<!-- Create the structure -->
<mkdir dir="${hy.jdk}/jre/bin" />
<mkdir dir="${hy.jdk}/jre/lib/boot" />
<mkdir dir="${hy.jdk}/jre/lib/ext" />
<mkdir dir="${hy.jdk}/jre/lib/security" />
<!-- Copy across the required files -->
<copy file="LICENSE" todir="${hy.hdk}" verbose="yes" />
<copy file="NOTICE" todir="${hy.hdk}" verbose="yes" />
<!-- Copy across the boot dependency jars --><!-- TOFIX clean these? -->
<copy todir="${hy.jdk}/jre/lib/boot">
<fileset dir="${depends.jars}">
<patternset includes="icu4j_4.2.1/*.jar" />
<patternset includes="xalan-j_2.7.0/xalan.jar" />
<patternset includes="xerces_2.9.1/*.jar" />
</fileset>
<fileset dir="${depends.manifests}"/>
</copy>
<!-- Copy across the extension dependency jars -->
<copy tofile="${hy.jdk}/jre/lib/ext/bcprov.jar" verbose="true"
flatten="yes" overwrite="true">
<fileset file="${bcprov.jar}" />
</copy>
<!-- Copy across the support files -->
<copy todir="${hy.jdk}/jre/lib">
<fileset dir="${depends.files}">
<include name="content-types.properties" />
</fileset>
</copy>
<copy todir="${hy.jdk}/jre/lib/boot">
<fileset dir="${depends.files}">
<include name="bootclasspath.properties" />
</fileset>
</copy>
<fixcrlf srcdir="${hy.jdk}/jre/lib/boot"
includes="bootclasspath.properties" />
<copy todir="${hy.jdk}/jre/lib/security">
<fileset dir="${depends.files}">
<include name="java.policy" />
<include name="java.security" />
</fileset>
</copy>
<copy todir="${hy.jdk}/jre/lib">
<fileset dir="${depends.files}">
<include name="net.properties" />
</fileset>
</copy>
<copy todir="${hy.jdk}/jre/lib">
<fileset dir="${depends.files}">
<include name="rowset.properties" />
</fileset>
</copy>
</target>
<!-- =================================
target: -clean-layout
================================= -->
<target name="-clean-layout">
<delete includeemptydirs="true" failonerror="false">
<fileset dir="${hy.jdk}">
<exclude name="jre/bin/default/**" />
<exclude name="jre/bin/**" />
<exclude name="jre/lib/ext/**" />
</fileset>
<fileset dir="${hy.hdk}">
<include name="LICENSE" />
<include name="NOTICE" />
</fileset>
</delete>
</target>
<!-- =================================
target: -prepare-depends
Check for jars required to compile prefs
================================= -->
<target name="-prepare-depends">
<ant antfile="make/depends.xml" inheritall="false" target="check"/>
<poll-modules target="check-depends" />
</target>
</project>