3789983e89
Reviewed-by: darcy, ihse
378 lines
19 KiB
XML
378 lines
19 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
<!--
|
|
Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions
|
|
are met:
|
|
|
|
- Redistributions of source code must retain the above copyright
|
|
notice, this list of conditions and the following disclaimer.
|
|
|
|
- Redistributions in binary form must reproduce the above copyright
|
|
notice, this list of conditions and the following disclaimer in the
|
|
documentation and/or other materials provided with the distribution.
|
|
|
|
- Neither the name of Oracle nor the names of its
|
|
contributors may be used to endorse or promote products derived
|
|
from this software without specific prior written permission.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
|
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
-->
|
|
|
|
<project name="shared" basedir="..">
|
|
|
|
<import file="make.xml"/>
|
|
|
|
<target name="-tstamp">
|
|
<tstamp>
|
|
<format property="build.time" pattern="MM/dd/yyyy hh:mm aa"/>
|
|
<format property="build.fullversion.time" pattern="MM/dd/yyyy_HH_mm"/>
|
|
</tstamp>
|
|
</target>
|
|
|
|
<target name="-first-init" depends="-tstamp">
|
|
<mkdir dir="${user.home}/.openjdk"/>
|
|
<property name="workspace-user-build.properties" location="nbproject/private/build.properties"/>
|
|
<property file="${workspace-user-build.properties}"/>
|
|
<property file="${user.home}/.openjdk/${ant.project.name}-build.properties"/>
|
|
<property name="user-build.properties" location="${user.home}/.openjdk/build.properties"/>
|
|
<property file="${user-build.properties}"/>
|
|
<property file="${basedir}/build.properties"/>
|
|
<property environment="env."/>
|
|
</target>
|
|
<target name="-warn-about-bootstrap.jdk" depends="-first-init" unless="bootstrap.jdk">
|
|
<property name="fallback.jdk" location="${java.home}/.."/>
|
|
<echo level="warning">Warning: falling back to building against ${fallback.jdk}</echo>
|
|
<echo level="warning">Please define bootstrap.jdk=.../recent/jdk7/snapshot in ${user-build.properties} or ${workspace-user-build.properties}</echo>
|
|
</target>
|
|
<target name="-pre-init">
|
|
<!-- Invoked before -first-init. -->
|
|
<!-- Empty placeholder for easier customization. -->
|
|
<!-- You can override this target in the ../build.xml file. -->
|
|
</target>
|
|
<target name="-post-init">
|
|
<!-- Invoked after -project-init. -->
|
|
<!-- Empty placeholder for easier customization. -->
|
|
<!-- You can override this target in the ../build.xml file. -->
|
|
</target>
|
|
<target name="-init" description="Initial configuration used by everything else." depends="-pre-init,-first-init,-project-init,-post-init"/>
|
|
<target name="-project-init" depends="-warn-about-bootstrap.jdk">
|
|
<property name="root" location="../../.."/>
|
|
<property file="../common/architectures/name-${os.name}.properties"/>
|
|
<property name="platform" value="windows"/>
|
|
<property file="../common/architectures/arch-${os.arch}.properties"/>
|
|
<property name="arch" value="${os.arch}"/>
|
|
<echo level="verbose">System configuration claims architecture is ${platform}-${arch}</echo>
|
|
<property name="build.dir" location="${root}/build/${platform}-${arch}"/>
|
|
<property name="bin.dir" location="${build.dir}/bin"/>
|
|
<property name="make.dir" location="${root}/make"/> <!-- this is old build make files! -->
|
|
<property name="gensrc.dir" location="${build.dir}/gensrc"/>
|
|
<property name="classes.dir" location="${build.dir}/classes"/>
|
|
<property name="jtreg.dir" location="${build.dir}/jtreg/${ant.project.name}"/>
|
|
<property name="dist.dir" value="${root}/dist"/>
|
|
<property name="includes" value="(nothing)"/>
|
|
<property name="excludes" value=""/>
|
|
<property name="javadoc.dir" location="${build.dir}/javadoc/${ant.project.name}"/>
|
|
<condition property="os.macosx">
|
|
<os family="mac"/>
|
|
</condition>
|
|
<condition property="os.linux">
|
|
<os name="linux"/>
|
|
</condition>
|
|
<condition property="os.solaris">
|
|
<os name="SunOS"/>
|
|
</condition>
|
|
<condition property="osfamily.unix">
|
|
<os family="unix"/>
|
|
</condition>
|
|
<condition property="os.windows">
|
|
<os family="windows"/>
|
|
</condition>
|
|
<condition property="platform.src.dir" value="${root}/src/solaris/classes">
|
|
<os family="unix"/>
|
|
</condition>
|
|
<condition property="platform.src.dir" value="${root}/src/windows/classes">
|
|
<os family="windows"/>
|
|
</condition>
|
|
<property name="share.src.dir" value="${root}/src/share/classes"/>
|
|
<property name="bootstrap.jdk" location="${fallback.jdk}"/>
|
|
<!-- XXX ensure that bootstrap.jdk meets some minimum version requirements (TBD) -->
|
|
<condition property="bootstrap.javac" value="${bootstrap.jdk}/bin/javac">
|
|
<available file="${bootstrap.jdk}/bin/javac"/>
|
|
</condition>
|
|
<condition property="bootstrap.javac" value="${bootstrap.jdk}\bin\javac.exe">
|
|
<available file="${bootstrap.jdk}\bin\javac.exe"/>
|
|
</condition>
|
|
<fail unless="bootstrap.javac">${bootstrap.jdk} does not appear to be a functional JDK; no javac found.</fail>
|
|
<property name="javac.options" value="-Xlint"/> <!-- default, can be overridden per user or per project -->
|
|
<property name="javac.debug" value="true"/> <!-- default, can be overridden per user or per project -->
|
|
<property name="javac.debuglevel" value="lines,vars,source"/> <!-- default, can be overridden per user or per project -->
|
|
<macrodef name="jdk-javac">
|
|
<attribute name="srcdir"/>
|
|
<attribute name="includes" default="${includes}"/>
|
|
<attribute name="excludes" default="${excludes}"/>
|
|
<attribute name="classesdir" default="${classes.dir}"/>
|
|
<sequential>
|
|
<mkdir dir="@{classesdir}"/>
|
|
<javac srcdir="@{srcdir}" includes="@{includes}" excludes="@{excludes}" sourcepath=""
|
|
destdir="@{classesdir}" fork="true" executable="${bootstrap.javac}"
|
|
debug="${javac.debug}" debuglevel="${javac.debuglevel}">
|
|
<!-- Mandatory for compiling partial JDK sources against a snapshot; should NEVER be used for any other purpose: -->
|
|
<compilerarg value="-XDignore.symbol.file=true"/>
|
|
<compilerarg line="${javac.options}"/>
|
|
</javac>
|
|
</sequential>
|
|
</macrodef>
|
|
<available property="have.closed.src" file="${root}/src/closed/share/classes" type="dir"/>
|
|
</target>
|
|
|
|
<target name="-pre-compile">
|
|
<!-- Empty placeholder for easier customization. -->
|
|
<!-- You can override this target in the ../build.xml file. -->
|
|
</target>
|
|
<target name="-post-compile">
|
|
<!-- Empty placeholder for easier customization. -->
|
|
<!-- You can override this target in the ../build.xml file. -->
|
|
</target>
|
|
|
|
<target name="build" depends="-init,-pre-compile,-build-ant,-build-make,-post-compile" description="Build sources."/>
|
|
<target name="-do-build-ant">
|
|
<depend srcdir="${share.src.dir}:${platform.src.dir}:${root}/src/closed/share/classes:${gensrc.dir}" destdir="${classes.dir}" cache="${build.dir}/depcache" includes="${includes}" excludes="${excludes}"/>
|
|
<mkdir dir="${gensrc.dir}"/>
|
|
<jdk-javac srcdir="${share.src.dir}:${platform.src.dir}:${gensrc.dir}"/>
|
|
<property name="copy.excludes" value="**/*.java,**/package.html,**/doc-files/"/>
|
|
<copy todir="${classes.dir}">
|
|
<fileset dir="${share.src.dir}" includes="${includes}" excludes="${excludes},${copy.excludes}"/>
|
|
<fileset dir="${platform.src.dir}" includes="${includes}" excludes="${excludes},${copy.excludes}"/>
|
|
</copy>
|
|
<antcall target="-maybe-do-build-ant-closed"/>
|
|
</target>
|
|
<target name="-maybe-do-build-ant-closed" if="have.closed.src">
|
|
<jdk-javac srcdir="${root}/src/closed/share/classes"/>
|
|
<copy todir="${classes.dir}">
|
|
<fileset dir="${root}/src/closed/share/classes" includes="${includes}" excludes="${excludes},${copy.excludes}"/>
|
|
</copy>
|
|
</target>
|
|
<target name="-build-ant" depends="-init" unless="use.make">
|
|
<antcall target="-do-build-ant"/>
|
|
</target>
|
|
<target name="-build-make" depends="-init" if="use.make"> <!-- override me to call <make-run> -->
|
|
<echo level="info">No make target defined for this project; falling back to simple Java build</echo>
|
|
<antcall target="-do-build-ant"/>
|
|
</target>
|
|
|
|
<target name="clean" depends="-init,-clean-docs-tests,-clean-ant,-clean-make" description="Clean build products."/>
|
|
<target name="-do-clean-ant">
|
|
<!-- XXX first s/\.java/.class/g in includes and excludes! -->
|
|
<delete dir="${classes.dir}" includes="${includes}" excludes="${excludes}" includeemptydirs="true"/>
|
|
<delete dir="${gensrc.dir}" includes="${includes}" excludes="${excludes}" includeemptydirs="true"/>
|
|
<delete dir="${build.dir}/depcache"/>
|
|
</target>
|
|
<target name="-clean-docs-tests">
|
|
<delete dir="${javadoc.dir}" includeemptydirs="true"/>
|
|
<delete dir="${jtreg.dir}" includeemptydirs="true"/>
|
|
</target>
|
|
<target name="-clean-ant" depends="-init" unless="use.make">
|
|
<antcall target="-do-clean-ant"/>
|
|
</target>
|
|
<target name="-clean-make" depends="-init" if="use.make"> <!-- override me to call <make-run> -->
|
|
<echo level="info">No make clean target defined for this project; falling back to simple Java clean</echo>
|
|
<antcall target="-do-clean-ant"/>
|
|
</target>
|
|
|
|
<target name="compile-single" depends="-init">
|
|
<fail unless="srcdir">Must set property 'srcdir'</fail>
|
|
<fail unless="includes">Must set property 'includes'</fail>
|
|
<jdk-javac srcdir="${srcdir}" includes="${includes}" excludes=""/>
|
|
</target>
|
|
<target name="debug-fix" depends="-init" if="netbeans.home">
|
|
<fail unless="class">Must set property 'class'</fail>
|
|
<antcall target="compile-single">
|
|
<param name="includes" value="${class}.java"/>
|
|
</antcall>
|
|
<nbjpdareload>
|
|
<fileset dir="${classes.dir}">
|
|
<include name="${class}.class"/>
|
|
</fileset>
|
|
</nbjpdareload>
|
|
</target>
|
|
|
|
<target name="-taskdef-jtreg" depends="-init" unless="jtreg.defined">
|
|
<fail message="Cannot locate jtreg: please set jtreg.home to its location">
|
|
<condition>
|
|
<not>
|
|
<isset property="jtreg.home"/>
|
|
</not>
|
|
</condition>
|
|
</fail>
|
|
<fail message="jtreg is not installed in ${jtreg.home}">
|
|
<condition>
|
|
<not>
|
|
<and>
|
|
<available file="${jtreg.home}/lib/jtreg.jar"/>
|
|
<available file="${jtreg.home}/lib/javatest.jar"/>
|
|
</and>
|
|
</not>
|
|
</condition>
|
|
</fail>
|
|
<taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant">
|
|
<classpath>
|
|
<pathelement location="${jtreg.home}/lib/jtreg.jar"/>
|
|
<pathelement location="${jtreg.home}/lib/javatest.jar"/>
|
|
</classpath>
|
|
</taskdef>
|
|
<property name="jtreg.defined" value="true"/>
|
|
</target>
|
|
<target name="-check-tests-defined" unless="jtreg.tests">
|
|
<fail>You must define jtreg.tests to select some tests to run.</fail>
|
|
</target>
|
|
<target name="-jtreg-setup">
|
|
<property name="jtreg.vm.options" value=""/> <!-- default, can be overridden per user or per project -->
|
|
<property name="jtreg.options" value=""/> <!-- default, can be overridden per user or per project -->
|
|
<property name="jtreg.samevm" value="false"/> <!-- default, can be overridden per user or per project -->
|
|
</target>
|
|
<target name="-jtreg-ant" unless="use.make">
|
|
<jtreg dir="${root}/test" samevm="${jtreg.samevm}" verbose="summary"
|
|
jdk="${bootstrap.jdk}"
|
|
failonerror="false" resultproperty="jtreg.result"
|
|
javacoptions="-g"
|
|
vmoptions="-Xbootclasspath/p:${classes.dir} ${jtreg.vm.options}"
|
|
reportDir="${jtreg.dir}/JTreport"
|
|
workDir="${jtreg.dir}/JTwork"
|
|
includes="${jtreg.tests}">
|
|
<arg line="${jtreg.options}"/>
|
|
</jtreg>
|
|
</target>
|
|
<target name="-jtreg-make" if="use.make">
|
|
<jtreg dir="${root}/test" samevm="${jtreg.samevm}" verbose="summary"
|
|
failonerror="false" resultproperty="jtreg.result"
|
|
jdk="${build.dir}"
|
|
vmoptions="${jtreg.vm.options}"
|
|
javacoptions="-g"
|
|
reportDir="${jtreg.dir}/JTreport"
|
|
workDir="${jtreg.dir}/JTwork"
|
|
includes="${jtreg.tests}">
|
|
<arg line="${jtreg.options}"/>
|
|
</jtreg>
|
|
</target>
|
|
<target name="-pre-jtreg">
|
|
<!-- Empty placeholder for easier customization. -->
|
|
<!-- You can override this target in the ../build.xml file. -->
|
|
</target>
|
|
<target name="-post-jtreg">
|
|
<!-- Empty placeholder for easier customization. -->
|
|
<!-- You can override this target in the ../build.xml file. -->
|
|
</target>
|
|
<target name="-jtreg" depends="-init,-pre-jtreg,-taskdef-jtreg,-check-tests-defined,-jtreg-setup,-jtreg-make,-jtreg-ant,-post-jtreg">
|
|
<property name="jtreg.report" location="${jtreg.dir}/JTreport/html/report.html"/>
|
|
<condition property="jtreg.passed">
|
|
<equals arg1="${jtreg.result}" arg2="0"/>
|
|
</condition>
|
|
</target>
|
|
<target name="test" depends="jtreg"/> <!-- Allow use of existing finger muscle memory from command line. -->
|
|
<target name="jtreg" depends="-jtreg" description="Run jtreg-based tests." unless="jtreg.passed">
|
|
<fail>${jtreg.report}: some tests failed.</fail>
|
|
</target>
|
|
<target name="jtreg-nb" depends="-jtreg" if="netbeans.home" unless="jtreg.passed">
|
|
<makeurl file="${jtreg.report}" property="jtreg.report.url"/>
|
|
<nbbrowse url="${jtreg.report.url}#Results"/>
|
|
<fail>Some tests failed; see report for details.</fail>
|
|
</target>
|
|
<target name="jtreg-debug-nb" depends="-init" if="netbeans.home">
|
|
<!-- No package decls -> "source root" is immediately containing dir -->
|
|
<dirname file="${root}/test/${jtreg.tests}" property="test.dir"/>
|
|
<nbjpdastart addressproperty="jpda.address" name="${ant.project.name}" transport="dt_socket">
|
|
<bootclasspath>
|
|
<pathelement location="${classes.dir}"/>
|
|
<pathelement location="${bootstrap.jdk}/jre/lib/rt.jar"/>
|
|
</bootclasspath>
|
|
<classpath>
|
|
<pathelement location="${jtreg.dir}/JTwork/classes"/>
|
|
</classpath>
|
|
<sourcepath>
|
|
<pathelement location="${share.src.dir}"/>
|
|
<pathelement location="${platform.src.dir}"/>
|
|
<pathelement location="${root}/src/closed/share/classes"/>
|
|
<pathelement location="${test.dir}"/>
|
|
</sourcepath>
|
|
</nbjpdastart>
|
|
<antcall target="-jtreg">
|
|
<param name="jtreg.vm.options" value="-Xdebug -Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
|
|
</antcall>
|
|
</target>
|
|
|
|
<target name="debug" depends="-init" if="netbeans.home">
|
|
<!-- No package decls -> "source root" is immediately containing dir -->
|
|
<dirname file="${root}/test/${jtreg.tests}" property="test.dir"/>
|
|
<nbjpdastart addressproperty="jpda.address" name="${ant.project.name}" transport="dt_socket">
|
|
<bootclasspath>
|
|
<pathelement location="${classes.dir}"/>
|
|
<pathelement location="${bootstrap.jdk}/jre/lib/rt.jar"/>
|
|
</bootclasspath>
|
|
<sourcepath>
|
|
<pathelement location="${share.src.dir}"/>
|
|
<pathelement location="${platform.src.dir}"/>
|
|
<pathelement location="${root}/src/closed/share/classes"/>
|
|
<pathelement location="${test.dir}"/>
|
|
</sourcepath>
|
|
</nbjpdastart>
|
|
<antcall target="run">
|
|
<param name="jvm.args" value="-Xdebug -Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
|
|
</antcall>
|
|
</target>
|
|
|
|
<target name="javadoc" depends="-init" description="Build basic Javadoc for public packages.">
|
|
<property name="javadoc.options" value=""/> <!-- default, can be overridden per user or per project -->
|
|
<!-- Note: even with this default value, includes/excludes
|
|
from share.src.dir get javadoc'd; see packageset below -->
|
|
<property name="javadoc.packagenames" value="none"/> <!-- default, can be overridden per user or per project -->
|
|
<javadoc destdir="${javadoc.dir}" source="1.8"
|
|
windowtitle="UNOFFICIAL" failonerror="true" use="true"
|
|
author="false" version="false"
|
|
packagenames="${javadoc.packagenames}">
|
|
<header><![CDATA[<strong>Unofficial Javadoc</strong> generated from developer sources for preview purposes only]]></header>
|
|
<arg line="${javadoc.options}"/>
|
|
<bootclasspath>
|
|
<path location="${bootstrap.jdk}/jre/lib/rt.jar"/>
|
|
<path location="${classes.dir}"/>
|
|
</bootclasspath>
|
|
<sourcepath>
|
|
<pathelement location="${share.src.dir}"/>
|
|
<pathelement location="${platform.src.dir}"/>
|
|
<pathelement location="${root}/src/closed/share/classes"/>
|
|
<pathelement location="${root}/src/share/doc/stub"/>
|
|
</sourcepath>
|
|
<!-- XXX just <fileset> (restricted further to **/*.java) and no <packageset> -->
|
|
<!-- means that {@link some.package} will not work, which is no good. -->
|
|
<!-- (It correctly skips excluded single classes, but not if packageset is also included, -->
|
|
<!-- which also causes duplicates in the class index for included files.) -->
|
|
<packageset dir="${share.src.dir}" includes="${includes}" excludes="${excludes}">
|
|
<or>
|
|
<filename name="java/"/>
|
|
<filename name="javax/"/>
|
|
<filename name="org/ietf/jgss/"/>
|
|
<filename name="org/omg/"/>
|
|
<filename name="org/w3c/"/>
|
|
<filename name="org/xml/sax/"/>
|
|
</or>
|
|
</packageset>
|
|
</javadoc>
|
|
</target>
|
|
<target name="javadoc-nb" depends="javadoc" if="netbeans.home">
|
|
<nbbrowse file="${javadoc.dir}/index.html"/>
|
|
</target>
|
|
|
|
</project>
|