842d6329cf
Reviewed-by: alanb, cjplummer, dholmes
272 lines
12 KiB
XML
272 lines
12 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
Copyright (c) 2007, 2023, 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="langtools-netbeans" default="build" basedir="../../../..">
|
|
|
|
<property name="langtools.properties"
|
|
location="make/netbeans/langtools/nbproject/private/langtools.properties"/>
|
|
|
|
<!--
|
|
Instead of importing the main build file, we could call it when needed.
|
|
That would reduce the list of Ant targets that get displayed for this
|
|
file, but it also complicates the interface between the project build
|
|
file and the main build file. For example, some imported targets
|
|
would have to be redeclared, properties would have to be restructured,
|
|
and it would be harder to run results (e.g. in properties) from nested
|
|
targets.
|
|
-->
|
|
<import file="../../../langtools/build.xml"/>
|
|
|
|
<!-- Build project. (action: build; F11) -->
|
|
|
|
<!-- Compile a single file. (action: compile.single; F9) -->
|
|
|
|
<target name="compile-single" depends="-get-tool-if-set,-check-langtools.jdk.home">
|
|
<fail unless="includes">Must set property 'includes'</fail>
|
|
<mkdir dir="${build.dir}/${module.name}/classes" />
|
|
<javac fork="true" executable="${java.home}/bin/javac"
|
|
srcdir="${basedir}/src/${module.name}/share/classes"
|
|
destdir="${build.dir}/${module.name}/classes"
|
|
includes="${includes}"
|
|
sourcepath=""
|
|
classpath="${langtools.classes}"
|
|
includeAntRuntime="no"
|
|
source="${javac.source}"
|
|
target="${javac.target}"
|
|
debug="${javac.debug}"
|
|
debuglevel="${javac.debuglevel}">
|
|
</javac>
|
|
</target>
|
|
|
|
<!-- Run tool. (action: run; F6)
|
|
Use langtools.tool.name and langtools.tool.args properties if set; otherwise prompt
|
|
the user.
|
|
-->
|
|
|
|
<target name="run" depends="-check-langtools.jdk.home,-build-classes,-def-run,-get-tool-and-args,-def-resolve-main-class"
|
|
description="run tool">
|
|
<echo level="info" message="Run ${langtools.tool.name} with args ${langtools.tool.args}"/>
|
|
<resolve-main-class tool.name="${langtools.tool.name}" />
|
|
<run mainclass="${langtools.main.class}" args="${langtools.tool.args}"/>
|
|
</target>
|
|
|
|
<target name="-def-resolve-main-class">
|
|
<macrodef name="resolve-main-class">
|
|
<attribute name="tool.name"/>
|
|
<sequential>
|
|
<condition property="langtools.main.class"
|
|
value="jdk.javadoc.internal.tool.Main"
|
|
else="${tool.@{tool.name}.main.class}">
|
|
<equals arg1="${langtools.tool.name}" arg2="javadoc"/>
|
|
</condition>
|
|
</sequential>
|
|
</macrodef>
|
|
</target>
|
|
|
|
<target name="-build-classes" depends="-get-tool-if-set,-build-classes-all" />
|
|
<target name="-build-classes-all">
|
|
<antcall target="build-all-classes"/>
|
|
</target>
|
|
|
|
<!-- Run a selected class. (action: run.single; shift-F6) -->
|
|
|
|
<target name="run-single" depends="-check-langtools.jdk.home,-def-run">
|
|
<fail unless="run.classname">Must set property 'run.classname' </fail>
|
|
<echo level="info" message="run ${run.classname}"/>
|
|
<run mainclass="${run.classname}" args=""/>
|
|
</target>
|
|
|
|
<!-- Test project, and display results if tests failed. (action: test; Alt-F6)
|
|
If langtools.tool.name is set, then just test that tool; otherwise
|
|
test all tools.
|
|
-->
|
|
|
|
<target name="jtreg" depends="-get-tool-if-set,-jtreg-all"
|
|
description="Test langtools tools"
|
|
/>
|
|
|
|
<target name="-jtreg-all">
|
|
<echo level="info" message="Testing all tools"/>
|
|
<antcall>
|
|
<target name="langtools.jtreg"/>
|
|
<target name="-show-jtreg"/>
|
|
</antcall>
|
|
</target>
|
|
|
|
<target name="-show-jtreg-single-detect" if="netbeans.home" unless="jtreg.passed">
|
|
<dirname property="netbeans.jtreg.tests.dir.temp" file="${jtreg.report}/../work/${jtreg.tests}"/>
|
|
<basename property="netbeans.jtreg.tests.basename.temp" file="${jtreg.tests}" suffix=".java"/>
|
|
<property name="netbeans.jtreg.single.jtr" value="${netbeans.jtreg.tests.dir.temp}/${netbeans.jtreg.tests.basename.temp}.jtr"/>
|
|
<condition property="netbeans.jtreg.single">
|
|
<available file="${netbeans.jtreg.single.jtr}" />
|
|
</condition>
|
|
<condition property="netbeans.jtreg.multiple">
|
|
<not>
|
|
<available file="${netbeans.jtreg.single.jtr}" />
|
|
</not>
|
|
</condition>
|
|
</target>
|
|
|
|
<target name="-show-jtreg-single" if="netbeans.jtreg.single" depends="-show-jtreg-single-detect">
|
|
<nbbrowse file="${netbeans.jtreg.single.jtr}"/>
|
|
<fail>Some tests failed; see report for details.</fail>
|
|
</target>
|
|
|
|
<target name="-show-jtreg-multiple" if="netbeans.jtreg.multiple" depends="-show-jtreg-single-detect">
|
|
<nbbrowse url="file://${jtreg.report}/html/report.html#Results"/>
|
|
<fail>Some tests failed; see report for details.</fail>
|
|
</target>
|
|
|
|
<target name="-show-jtreg" depends="-show-jtreg-single-detect,-show-jtreg-single,-show-jtreg-multiple" />
|
|
|
|
<!-- Debug tool in NetBeans. -->
|
|
|
|
<target name="debug" depends="-check-langtools.jdk.home,-def-run,-def-start-debugger,-get-tool-and-args,-build-classes,-def-resolve-main-class" if="netbeans.home">
|
|
<echo level="info" message="Debug ${langtools.tool.name} with args ${langtools.tool.args}"/>
|
|
<start-debugger/>
|
|
<resolve-main-class tool.name="${langtools.tool.name}" />
|
|
<run mainclass="${langtools.main.class}" args="${langtools.tool.args}" jpda.jvmargs="${jpda.jvmargs}"/>
|
|
</target>
|
|
|
|
<!-- Debug a selected class . -->
|
|
<target name="debug-single" depends="-check-langtools.jdk.home,-def-start-debugger,-def-run">
|
|
<fail unless="debug.classname">Must set property 'debug.classname'</fail>
|
|
<start-debugger/>
|
|
<run mainclass="${debug.classname}" args="" jpda.jvmargs="${jpda.jvmargs}"/>
|
|
</target>
|
|
|
|
<!-- Debug a jtreg test. -->
|
|
<target name="debug-jtreg" depends="-check-langtools.jdk.home,-def-start-debugger,-def-jtreg,-get-tool-if-set">
|
|
<fail unless="jtreg.tests">Must set property 'jtreg.tests'</fail>
|
|
<start-debugger/>
|
|
<jtreg-tool name="debug"
|
|
tests="${jtreg.tests}"
|
|
jpda.jvmargs="${jpda.jvmargs}"/>
|
|
</target>
|
|
|
|
<!-- Update a class being debugged. -->
|
|
|
|
<target name="debug-fix" depends="-get-tool-if-set">
|
|
<fail unless="class">Must set property 'class'
|
|
</fail>
|
|
<antcall target="compile-single">
|
|
<param name="includes" value="${class}.java"/>
|
|
</antcall>
|
|
<property name="build.classes.dir" value="${build.dir}/${module.name}/classes" />
|
|
<nbjpdareload>
|
|
<fileset dir="${build.classes.dir}">
|
|
<include name="${class}.class"/>
|
|
</fileset>
|
|
</nbjpdareload>
|
|
</target>
|
|
|
|
<!-- Prompt for values. -->
|
|
|
|
<target name="-get-tool-if-set" depends="-def-select-tool">
|
|
<select-tool
|
|
toolproperty="langtools.tool.name"
|
|
propertyfile="${langtools.properties}"
|
|
askIfUnset="false"
|
|
/>
|
|
</target>
|
|
|
|
<target name="-get-tool-and-args" depends="-def-select-tool">
|
|
<select-tool
|
|
toolproperty="langtools.tool.name"
|
|
argsproperty="langtools.tool.args"
|
|
propertyfile="${langtools.properties}"
|
|
askIfUnset="true"
|
|
/>
|
|
</target>
|
|
|
|
<!-- Macro to run a tool or selected class - used by run* and debug* tasks -->
|
|
<target name="-def-run">
|
|
<macrodef name="run">
|
|
<attribute name="mainclass"/>
|
|
<attribute name="args" default=""/>
|
|
<attribute name="build.modules" default="${build.modules}"/>
|
|
<attribute name="jpda.jvmargs" default=""/>
|
|
|
|
<sequential>
|
|
<java fork="true" jvm="${langtools.jdk.home}/bin/java" classname="@{mainclass}">
|
|
<jvmarg line="--patch-module=java.compiler=@{build.modules}/java.compiler"/>
|
|
<jvmarg line="--patch-module=jdk.compiler=@{build.modules}/jdk.compiler"/>
|
|
<jvmarg line="--patch-module=jdk.javadoc=@{build.modules}/jdk.javadoc"/>
|
|
<jvmarg line="--patch-module=jdk.jdeps=@{build.modules}/jdk.jdeps"/>
|
|
<jvmarg line="--patch-module=jdk.jshell=@{build.modules}/jdk.jshell"/>
|
|
<jvmarg line="@{jpda.jvmargs}"/>
|
|
<arg line="@{args}"/>
|
|
</java>
|
|
</sequential>
|
|
</macrodef>
|
|
</target>
|
|
|
|
<!-- Macro to start the debugger and set a property containing the args needed by the run task -->
|
|
<target name="-def-start-debugger" if="netbeans.home">
|
|
<macrodef name="start-debugger">
|
|
<attribute name="jpda.jvmargs.property" default="jpda.jvmargs"/>
|
|
<sequential>
|
|
<nbjpdastart name="${ant.project.name}" addressproperty="jpda.address" transport="dt_socket">
|
|
<bootclasspath>
|
|
<pathelement path="${langtools.classes}"/>
|
|
</bootclasspath>
|
|
</nbjpdastart>
|
|
<property
|
|
name="@{jpda.jvmargs.property}"
|
|
value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"
|
|
/>
|
|
</sequential>
|
|
</macrodef>
|
|
</target>
|
|
|
|
<target name="-def-select-tool">
|
|
<property name="build.toolclasses.dir" location="${build.dir}/toolclasses"/>
|
|
<mkdir dir="${build.toolclasses.dir}"/>
|
|
<javac srcdir="${make.tools.dir}"
|
|
includes="anttasks/SelectTool*"
|
|
destdir="${build.toolclasses.dir}/"
|
|
classpath="${ant.core.lib}"
|
|
includeantruntime="false"
|
|
debug="${javac.debug}"
|
|
debuglevel="${javac.debuglevel}">
|
|
<compilerarg line="-Xlint"/>
|
|
</javac>
|
|
<taskdef name="select-tool"
|
|
classname="anttasks.SelectToolTask"
|
|
classpath="${build.toolclasses.dir}/"/>
|
|
</target>
|
|
|
|
<target name="select-tool" depends="-def-select-tool">
|
|
<select-tool propertyfile="${langtools.properties}"/>
|
|
</target>
|
|
</project>
|