build.xml revision 553:9d9f26857129
1104477Ssam<?xml version="1.0" encoding="UTF-8"?> 2104477Ssam<!-- 3139749Simp Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved. 4104477Ssam DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 5104477Ssam 6104477Ssam This code is free software; you can redistribute it and/or modify it 7104477Ssam under the terms of the GNU General Public License version 2 only, as 8104477Ssam published by the Free Software Foundation. Oracle designates this 9120915Ssam particular file as subject to the "Classpath" exception as provided 10104477Ssam by Oracle in the LICENSE file that accompanied this code. 11104477Ssam 12104477Ssam This code is distributed in the hope that it will be useful, but WITHOUT 13104477Ssam ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14104477Ssam FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15104477Ssam version 2 for more details (a copy is included in the LICENSE file that 16104477Ssam accompanied this code). 17104477Ssam 18104477Ssam You should have received a copy of the GNU General Public License version 19104477Ssam 2 along with this work; if not, write to the Free Software Foundation, 20104477Ssam Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 21104477Ssam 22104477Ssam Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 23104477Ssam or visit www.oracle.com if you need additional information or have any 24104477Ssam questions. 25104477Ssam--> 26104477Ssam 27104477Ssam<!-- 28104477Ssam This is the main build file for the complete langtools workspace. 29104477Ssam It is used both when working on the tools in NetBeans, and when building 30104477Ssam JDK itself, in which case it is invoked from the wrapper Makefile. 31104477Ssam --> 32104477Ssam 33104477Ssam<project name="langtools" default="build" basedir=".."> 34104477Ssam 35104477Ssam <!-- Force full debuginfo for javac if the debug.classfiles 36104477Ssam property is set. This must be BEFORE the include of 37104477Ssam build.properties because it sets javac.debuglevel. --> 38104477Ssam <condition property="javac.debuglevel" value="source,lines,vars"> 39104477Ssam <equals arg1="${debug.classfiles}" arg2="true"/> 40104477Ssam </condition> 41104477Ssam 42104477Ssam <!-- The following locations can be used to override default property values. --> 43119418Sobrien 44119418Sobrien <!-- Use this location for customizations specific to this instance of this workspace --> 45119418Sobrien <property file="build.properties"/> 46104477Ssam 47120915Ssam <!-- Use this location for customizations common to all OpenJDK langtools workspaces --> 48104477Ssam <property file="${user.home}/.openjdk/${ant.project.name}-build.properties"/> 49112124Ssam 50104477Ssam <!-- Use this location for customizations common to all OpenJDK workspaces --> 51104477Ssam <property file="${user.home}/.openjdk/build.properties"/> 52104477Ssam 53104477Ssam <!-- Convenient shorthands for standard locations within the workspace. --> 54104477Ssam <property name="build.dir" location="build"/> 55104477Ssam <property name="build.bootstrap.dir" location="${build.dir}/bootstrap"/> 56104477Ssam <property name="build.coverage.dir" location="${build.dir}/coverage"/> 57129879Sphk <property name="build.classes.dir" location="${build.dir}/classes"/> 58104477Ssam <property name="build.gensrc.dir" location="${build.dir}/gensrc"/> 59104477Ssam <property name="build.genstubs.dir" location="${build.dir}/genstubs"/> 60104477Ssam <property name="build.javadoc.dir" location="${build.dir}/javadoc"/> 61104477Ssam <property name="build.jtreg.dir" location="${build.dir}/jtreg"/> 62104477Ssam <property name="build.toolclasses.dir" location="${build.dir}/toolclasses"/> 63104477Ssam <property name="dist.dir" location="dist"/> 64104477Ssam <property name="dist.bin.dir" location="${dist.dir}/bin"/> 65104477Ssam <property name="dist.coverage.dir" location="${dist.dir}/coverage"/> 66104477Ssam <property name="dist.findbugs.dir" location="${dist.dir}/findbugs"/> 67104477Ssam <property name="dist.lib.dir" location="${dist.dir}/lib"/> 68104477Ssam <property name="make.dir" location="make"/> 69104477Ssam <property name="make.tools.dir" location="${make.dir}/tools"/> 70104477Ssam <property name="src.dir" location="src"/> 71104477Ssam <property name="src.bin.dir" location="${src.dir}/share/bin"/> 72104477Ssam <property name="src.classes.dir" location="${src.dir}/share/classes"/> 73104477Ssam <property name="test.dir" location="test"/> 74104477Ssam 75119280Simp <!-- java.marker is set to a marker file to check for within a Java install dir. 76119280Simp The best file to check for across Solaris/Linux/Windows/MacOS is one of the 77112124Ssam executables; regrettably, that is OS-specific. --> 78112124Ssam <condition property="java.marker" value="bin/java"> 79112124Ssam <os family="unix"/> 80112124Ssam </condition> 81104477Ssam <condition property="java.marker" value="bin/java.exe"> 82104477Ssam <os family="windows"/> 83104477Ssam </condition> 84104477Ssam 85104477Ssam <!-- Standard property values, if not overriden by earlier settings. --> 86104477Ssam <property file="${make.dir}/build.properties"/> 87104477Ssam 88104477Ssam <!-- launcher.java is used in the launcher scripts provided to run 89104477Ssam the tools' jar files. If it has not already been set, then 90104477Ssam default it to use ${target.java.home}, if available, otherwise 91104477Ssam quietly default to simply use "java". --> 92104477Ssam <condition property="launcher.java" 93104477Ssam value="${target.java.home}/bin/java" else="java"> 94104477Ssam <isset property="target.java.home"/> 95104477Ssam </condition> 96104477Ssam 97104477Ssam <!-- Logic for handling access import jdk classes, if available. 98104477Ssam import.jdk should be unset, or set to jdk home (to use rt.jar) 99104477Ssam or to jdk repo (to use src/share/classes). 100104477Ssam Based on the value, if any, set up default values for javac's sourcepath, 101104477Ssam classpath and bootclasspath. Note: the default values are overridden 102104477Ssam in the build-bootstrap-classes macro. --> 103104477Ssam 104104477Ssam <available property="import.jdk.src.dir" value="${import.jdk}/src/share/classes" 105104477Ssam filepath="${import.jdk}/src/share/classes" file="java/nio/file/Path.java"/> 106104477Ssam <available property="import.jdk.jar" value="${import.jdk}/jre/lib/rt.jar" 107104477Ssam ignoresystemclasses="true" 108104477Ssam classpath="${import.jdk}/jre/lib/rt.jar" classname="java.nio.file.Path"/> 109104477Ssam 110104477Ssam <!-- Set the default value of the sourcepath used for javac. --> 111104477Ssam <condition property="javac.sourcepath" value="${build.genstubs.dir}" else=""> 112104477Ssam <isset property="import.jdk.src.dir"/> 113104477Ssam </condition> 114104477Ssam 115104477Ssam <!-- Set the default value of the classpath used for javac. --> 116104477Ssam <property name="javac.classpath" value=""/> 117105251Smarkm 118112124Ssam <!-- Set the default bootclasspath option used for javac. 119112124Ssam Note that different variants of the option are used, meaning we can't just 120112124Ssam define the value for the option. 121104477Ssam Note the explicit use of the standard property ${path.separator} in the following. 122104477Ssam This is because Ant is not clever enough to handle direct use of : or ; --> 123104477Ssam <condition property="javac.bootclasspath.opt" 124104477Ssam value="-Xbootclasspath:${build.classes.dir}${path.separator}${import.jdk.jar}" 125104477Ssam else="-Xbootclasspath/p:${build.classes.dir}"> 126104477Ssam <isset property="import.jdk.jar"/> 127104477Ssam </condition> 128104477Ssam 129104477Ssam <condition property="exclude.files" value="" else="${require.import.jdk.files}"> 130104477Ssam <isset property="import.jdk"/> 131104477Ssam </condition> 132104477Ssam 133104477Ssam <!-- for debugging --> 134104477Ssam <target name="check-import.jdk"> 135104477Ssam <echo message="import.jdk: ${import.jdk}"/> 136104477Ssam <echo message="import.jdk.jar: ${import.jdk.jar}"/> 137104477Ssam <echo message="import.jdk.src.dir: ${import.jdk.src.dir}"/> 138104477Ssam </target> 139104477Ssam 140104477Ssam <!-- Standard target to build deliverables for JDK build. --> 141104477Ssam 142104477Ssam <target name="build" depends="build-bootstrap-tools,build-all-classes"> 143104477Ssam <copy todir="${dist.dir}/bootstrap"> 144104477Ssam <fileset dir="${build.bootstrap.dir}" includes="bin/,lib/"/> 145104477Ssam </copy> 146104477Ssam <chmod dir="${dist.dir}/bootstrap/bin" perm="ugo+rx"> 147104477Ssam <include name="*"/> 148104477Ssam </chmod> 149104477Ssam <mkdir dir="${dist.lib.dir}"/> 150104477Ssam <jar file="${dist.lib.dir}/classes.jar" basedir="${build.classes.dir}"/> 151104477Ssam <zip file="${dist.lib.dir}/src.zip" basedir="${src.classes.dir}"/> 152104477Ssam </target> 153104477Ssam 154131575Sstefanf <target name="build-bootstrap-tools" 155104477Ssam depends="build-bootstrap-javac,build-bootstrap-javadoc,build-bootstrap-doclets,build-bootstrap-javah" 156104477Ssam /> 157104477Ssam 158104477Ssam <target name="build-all-tools" 159104477Ssam depends="build-javac,build-javadoc,build-doclets,build-javah,build-javap,build-apt" 160104477Ssam /> 161104477Ssam 162104477Ssam <target name="build-all-classes" depends="build-bootstrap-javac,-create-import-jdk-stubs"> 163131575Sstefanf <build-classes includes="${javac.includes} ${javadoc.includes} ${doclets.includes} ${javah.includes} ${javap.includes} ${apt.includes}"/> 164104477Ssam </target> 165104477Ssam 166104477Ssam <!-- clean --> 167104477Ssam 168104477Ssam <target name="clean" description="Delete all generated files"> 169104477Ssam <delete dir="${build.dir}"/> 170104477Ssam <delete dir="${dist.dir}"/> 171104477Ssam </target> 172109596Ssam 173109596Ssam <!-- Additional targets for running tools on the build --> 174104477Ssam 175104477Ssam <target name="jtreg" depends="build-all-tools,-def-jtreg"> 176109596Ssam <jtreg-tool name="all" tests="${jtreg.tests}"/> 177109596Ssam </target> 178104477Ssam 179104477Ssam <target name="findbugs" depends="-def-findbugs,build-all-tools"> 180104477Ssam <property name="findbugs.reportLevel" value="medium"/> 181109596Ssam <mkdir dir="${dist.findbugs.dir}"/> 182109596Ssam <findbugs 183112121Ssam home="${findbugs.home}" 184109596Ssam projectName="JDK langtools ${full.version}" 185109596Ssam output="xml" 186104477Ssam outputFile="${dist.findbugs.dir}/findbugs.xml" 187104477Ssam reportLevel="${findbugs.reportLevel}" 188104477Ssam failOnError="false" 189104477Ssam errorProperty="findbugs.all.errors" 190104477Ssam warningsProperty="findbugs.all.warnings" 191104477Ssam jvmargs="-Xmx512M"> 192104477Ssam <class location="${build.classes.dir}"/> 193104477Ssam <sourcePath> 194104477Ssam <pathelement location="${src.classes.dir}"/> 195104477Ssam </sourcePath> 196143161Simp </findbugs> 197104477Ssam <exec executable="sh"> 198104477Ssam <arg value="${findbugs.home}/bin/convertXmlToText"/> 199104477Ssam <arg value="-longBugCodes"/> 200120915Ssam <arg value="-html:${findbugs.home}/src/xsl/fancy.xsl"/> 201120915Ssam <arg value="${dist.findbugs.dir}/findbugs.xml"/> 202104477Ssam <redirector output="${dist.findbugs.dir}/findbugs.html"/> 203143161Simp </exec> 204104477Ssam </target> 205104477Ssam 206143161Simp <target name="coverage" depends="-def-cobertura,build-all-classes,instrument-classes,jtreg,coverage-report"/> 207104477Ssam 208104477Ssam <target name="instrument-classes" depends="-def-cobertura"> 209104477Ssam <!-- only define the following property when we want coverage info --> 210104477Ssam <path id="coverage.classpath"> 211104477Ssam <pathelement location="${build.coverage.dir}/classes"/> 212104477Ssam <path refid="cobertura.classpath"/> 213104477Ssam </path> 214104477Ssam <property name="coverage.options" value="-Dnet.sourceforge.cobertura.datafile=${build.coverage.dir}/cobertura.ser"/> 215104477Ssam <property name="coverage.classpath" refid="coverage.classpath"/> 216104477Ssam <mkdir dir="${build.coverage.dir}/classes"/> 217104477Ssam <delete file="${build.coverage.dir}/cobertura.ser"/> 218104477Ssam <cobertura-instrument todir="${build.coverage.dir}/classes" 219104477Ssam datafile="${build.coverage.dir}/cobertura.ser"> 220104477Ssam <fileset dir="${build.classes.dir}" 221104477Ssam includes="**/*.class" excludes="**/resources/*.class"/> 222104477Ssam </cobertura-instrument> 223104477Ssam </target> 224104477Ssam 225104477Ssam <target name="coverage-report" depends="-def-cobertura"> 226104477Ssam <mkdir dir="${dist.coverage.dir}"/> 227104477Ssam <cobertura-report 228120915Ssam srcdir="${src.classes.dir}" 229120915Ssam destdir="${dist.coverage.dir}" 230104477Ssam datafile="${build.coverage.dir}/cobertura.ser"/> 231104477Ssam <cobertura-report 232104477Ssam format="xml" 233104477Ssam srcdir="${src.classes.dir}" 234104477Ssam destdir="${dist.coverage.dir}" 235104477Ssam datafile="${build.coverage.dir}/cobertura.ser"/> 236104477Ssam </target> 237104477Ssam 238104477Ssam <!-- javac targets --> 239104477Ssam 240104477Ssam <target name="build-bootstrap-javac" 241104477Ssam depends="-def-build-bootstrap-classes,-def-build-bootstrap-jar,-def-build-bootstrap-tool"> 242104477Ssam <build-bootstrap-classes includes="${javac.includes}"/> 243104477Ssam <build-bootstrap-jar name="javac" includes="${javac.includes}"/> 244104477Ssam <build-bootstrap-tool name="javac"/> 245104477Ssam </target> 246112124Ssam 247112124Ssam <target name="build-classes-javac" depends="build-bootstrap-javac,-create-import-jdk-stubs"> 248112124Ssam <build-classes includes="${javac.includes}"/> 249112124Ssam </target> 250112124Ssam 251112124Ssam <target name="build-javac" depends="build-classes-javac"> 252140480Ssam <build-jar name="javac" includes="${javac.includes}"/> 253140480Ssam <build-tool name="javac"/> 254140480Ssam </target> 255140480Ssam 256140480Ssam <target name="javadoc-javac" depends="build-javac,-def-javadoc-tool"> 257140480Ssam <javadoc-tool name="javac" includes="${javac.includes}" options="${javadoc.jls3.option}"/> 258140480Ssam </target> 259140480Ssam 260140480Ssam <target name="jtreg-javac" depends="build-javac,build-javap,-def-jtreg"> 261140480Ssam <jtreg-tool name="javac" tests="${javac.tests}"/> 262140480Ssam </target> 263140480Ssam 264140480Ssam <target name="findbugs-javac" depends="build-javac,-def-findbugs"> 265140480Ssam <findbugs-tool name="javac"/> 266140480Ssam </target> 267104477Ssam 268140480Ssam <target name="javac" depends="build-javac,jtreg-javac,findbugs-javac"/> 269140480Ssam 270140480Ssam <!-- javadoc targets --> 271140480Ssam 272140480Ssam <target name="build-bootstrap-javadoc" depends="build-bootstrap-javac"> 273140480Ssam <build-bootstrap-classes includes="${javadoc.includes}"/> 274140480Ssam <build-bootstrap-jar name="javadoc" includes="${javadoc.includes}" 275140480Ssam jarclasspath="javac.jar doclets.jar"/> 276140480Ssam <build-bootstrap-tool name="javadoc"/> 277140480Ssam </target> 278140480Ssam 279140480Ssam <target name="build-classes-javadoc" depends="build-classes-javac"> 280140480Ssam <build-classes includes="${javadoc.includes}"/> 281140480Ssam </target> 282140480Ssam 283140480Ssam <target name="build-javadoc" depends="build-javac,build-classes-javadoc"> 284140480Ssam <build-jar name="javadoc" includes="${javadoc.includes}" 285140480Ssam jarclasspath="javac.jar doclets.jar"/> 286140480Ssam <build-tool name="javadoc"/> 287140480Ssam </target> 288140480Ssam 289140480Ssam <target name="javadoc-javadoc" depends="build-javadoc,-def-javadoc-tool"> 290140480Ssam <javadoc-tool name="javadoc" includes="${javadoc.includes}"/> 291140480Ssam </target> 292140480Ssam 293140480Ssam <target name="jtreg-javadoc" depends="build-javadoc,-def-jtreg"> 294140480Ssam <jtreg-tool name="javadoc" tests="${javadoc.tests}"/> 295140480Ssam </target> 296140480Ssam 297140480Ssam <target name="findbugs-javadoc" depends="build-javadoc,-def-findbugs"> 298140480Ssam <findbugs-tool name="javadoc"/> 299140480Ssam </target> 300140480Ssam 301140480Ssam <target name="javadoc" depends="build-javadoc,jtreg-javadoc,findbugs-javadoc"/> 302140480Ssam 303140480Ssam <!-- doclets targets --> 304140480Ssam 305140480Ssam <target name="build-bootstrap-doclets" depends="build-bootstrap-javadoc,-def-build-bootstrap-jar"> 306140480Ssam <build-bootstrap-classes includes="${doclets.includes}"/> 307140480Ssam <build-bootstrap-jar name="doclets" includes="${doclets.includes}" 308140480Ssam jarmainclass="com.sun.tools.javadoc.Main" 309140480Ssam jarclasspath="javadoc.jar"/> 310140480Ssam </target> 311140480Ssam 312140480Ssam <target name="build-classes-doclets" depends="build-classes-javadoc"> 313140480Ssam <build-classes includes="${doclets.includes}"/> 314140480Ssam </target> 315140480Ssam 316140480Ssam <target name="build-doclets" depends="build-javadoc,build-classes-doclets"> 317140480Ssam <!-- just jar, no bin for doclets --> 318140480Ssam <build-jar name="doclets" includes="${doclets.includes}" jarclasspath="javadoc.jar"/> 319140480Ssam </target> 320140480Ssam 321140480Ssam <!-- (no javadoc for doclets) --> 322140480Ssam 323140480Ssam <target name="jtreg-doclets" depends="build-doclets,-def-jtreg"> 324140480Ssam <jtreg-tool name="doclets" tests="${doclets.tests}"/> 325140480Ssam </target> 326140480Ssam 327140480Ssam <target name="findbugs-doclets" depends="build-doclets,-def-findbugs"> 328140480Ssam <findbugs-tool name="doclets"/> 329140480Ssam </target> 330140480Ssam 331104477Ssam <target name="doclets" depends="build-doclets,jtreg-doclets,findbugs-doclets"/> 332104477Ssam 333104477Ssam <!-- javah targets --> 334104477Ssam 335104477Ssam <target name="build-bootstrap-javah" depends="build-bootstrap-javadoc"> 336104477Ssam <build-bootstrap-classes includes="${javah.includes}"/> 337104477Ssam <build-bootstrap-jar name="javah" includes="${javah.includes}" 338104477Ssam jarclasspath="javadoc.jar doclets.jar javac.jar"/> 339104477Ssam <build-bootstrap-tool name="javah"/> 340104477Ssam </target> 341104477Ssam 342104477Ssam <target name="build-javah" depends="build-javac,build-classes-javah"> 343104477Ssam <build-jar name="javah" includes="${javah.includes}" jarclasspath="javac.jar"/> 344104477Ssam <build-tool name="javah"/> 345104477Ssam </target> 346104477Ssam 347115748Ssam <target name="build-classes-javah" depends="build-classes-javadoc"> 348104477Ssam <build-classes includes="${javah.includes}"/> 349104477Ssam </target> 350104477Ssam 351104477Ssam <!-- (no javadoc for javah) --> 352120915Ssam 353104477Ssam <target name="jtreg-javah" depends="build-javah,-def-jtreg"> 354104477Ssam <jtreg-tool name="javah" tests="${javah.tests}"/> 355104477Ssam </target> 356120915Ssam 357120915Ssam <target name="findbugs-javah" depends="build-javah,-def-findbugs"> 358120915Ssam <findbugs-tool name="javah"/> 359104477Ssam </target> 360104477Ssam 361104477Ssam <target name="javah" depends="build-javah,jtreg-javah,findbugs-javah"/> 362104477Ssam 363104477Ssam <!-- javap targets --> 364104477Ssam 365104477Ssam <target name="build-bootstrap-javap" 366104477Ssam depends="-def-build-bootstrap-classes,-def-build-bootstrap-jar,-def-build-bootstrap-tool"> 367104477Ssam <build-bootstrap-classes includes="${javap.includes}"/> 368104477Ssam <build-bootstrap-jar name="javap" includes="${javap.includes}" 369120915Ssam jarmainclass="sun.tools.javap.Main"/> 370120915Ssam <build-bootstrap-tool name="javap"/> 371120915Ssam </target> 372120915Ssam 373140480Ssam <target name="build-classes-javap" depends="build-classes-javac"> 374120915Ssam <build-classes includes="${javap.includes}"/> 375140480Ssam </target> 376140480Ssam 377140480Ssam <target name="build-javap" depends="build-javac,build-classes-javap"> 378140480Ssam <build-jar name="javap" includes="${javap.includes}" 379140480Ssam jarmainclass="com.sun.tools.javap.Main" 380140480Ssam jarclasspath="javac.jar"/> 381140480Ssam <build-tool name="javap"/> 382120915Ssam </target> 383120915Ssam 384104477Ssam <!-- (no javadoc for javap) --> 385104477Ssam 386104477Ssam <target name="jtreg-javap" depends="build-javap,-def-jtreg"> 387104477Ssam <jtreg-tool name="javap" tests="${javap.tests}"/> 388104477Ssam </target> 389104477Ssam 390104477Ssam <target name="findbugs-javap" depends="build-javap,-def-findbugs"> 391104477Ssam <findbugs-tool name="javap"/> 392104477Ssam </target> 393104477Ssam 394104477Ssam <target name="javap" depends="build-javap,jtreg-javap,findbugs-javap"/> 395104477Ssam 396104477Ssam <!-- apt targets --> 397104477Ssam 398104477Ssam <target name="build-bootstrap-apt" depends="build-bootstrap-javac"> 399104477Ssam <build-bootstrap-classes includes="${apt.includes}"/> 400104477Ssam <build-bootstrap-jar name="apt" includes="${apt.includes}" 401104477Ssam jarclasspath="javac.jar"/> 402104477Ssam <build-bootstrap-tool name="apt"/> 403104477Ssam </target> 404104477Ssam 405104477Ssam <target name="build-apt" depends="build-javac,build-classes-apt"> 406104477Ssam <build-jar name="apt" includes="${apt.includes}" jarclasspath="javac.jar"/> 407104477Ssam <build-tool name="apt"/> 408104477Ssam </target> 409127135Snjl 410127135Snjl <target name="build-classes-apt" depends="build-classes-javac"> 411104477Ssam <build-classes includes="${apt.includes}"/> 412104477Ssam </target> 413104477Ssam 414104477Ssam <target name="javadoc-apt" depends="build-apt,-def-javadoc-tool"> 415104477Ssam <javadoc-tool name="apt" includes="${apt.includes}"/> 416104477Ssam </target> 417104477Ssam 418104477Ssam 419104477Ssam <target name="jtreg-apt" depends="build-apt,-def-jtreg"> 420127135Snjl <jtreg-tool name="apt" tests="${apt.tests}"/> 421127135Snjl </target> 422104477Ssam 423104477Ssam <target name="findbugs-apt" depends="build-apt,-def-findbugs"> 424104477Ssam <findbugs-tool name="apt"/> 425104477Ssam </target> 426104477Ssam 427104477Ssam <target name="apt" depends="build-apt,jtreg-apt,findbugs-apt"/> 428104477Ssam 429104477Ssam <!-- Create import JDK stubs --> 430104477Ssam 431104477Ssam <target name="-create-import-jdk-stubs" depends="-def-genstubs" if="import.jdk.src.dir"> 432104477Ssam <mkdir dir="${build.genstubs.dir}"/> 433104477Ssam <genstubs 434104477Ssam srcdir="${import.jdk.src.dir}" destdir="${build.genstubs.dir}" 435104477Ssam includes="${import.jdk.stub.files}" 436104477Ssam fork="true" classpath="${build.toolclasses.dir}:${build.bootstrap.dir}/classes:${ant.home}/lib/ant.jar" 437104477Ssam /> 438104477Ssam </target> 439104477Ssam 440104477Ssam <!-- Check targets --> 441104477Ssam 442104477Ssam <target name="-check-boot.java.home" depends="-def-check"> 443104477Ssam <check name="bootstrap java" property="boot.java.home" marker="${java.marker}"/> 444104477Ssam </target> 445117126Sscottl 446117126Sscottl <target name="-check-target.java.home" depends="-def-check"> 447104477Ssam <check name="target java" property="target.java.home" marker="${java.marker}"/> 448104477Ssam </target> 449104477Ssam 450104477Ssam <target name="-check-cobertura.home" depends="-def-check"> 451104477Ssam <check name="cobertura" property="cobertura.home" marker="cobertura.jar"/> 452104477Ssam </target> 453104477Ssam 454104477Ssam <target name="-check-findbugs.home" depends="-def-check"> 455104477Ssam <check name="findbugs" property="findbugs.home" marker="lib/findbugs.jar"/> 456104477Ssam </target> 457104477Ssam 458104477Ssam <target name="-check-jtreg.home" depends="-def-check"> 459104477Ssam <check name="jtreg" property="jtreg.home" marker="lib/jtreg.jar"/> 460104477Ssam </target> 461104477Ssam 462104477Ssam <!-- Ant macro and preset defs --> 463104477Ssam 464104477Ssam <target name="-def-build-tool"> 465104477Ssam <macrodef name="build-tool"> 466104477Ssam <attribute name="name"/> 467104477Ssam <attribute name="bin.dir" default="${dist.bin.dir}"/> 468104477Ssam <attribute name="java" default="${launcher.java}"/> 469104477Ssam <sequential> 470104477Ssam <mkdir dir="@{bin.dir}"/> 471104477Ssam <copy file="${src.bin.dir}/launcher.sh-template" tofile="@{bin.dir}/@{name}"> 472104477Ssam <filterset begintoken="#" endtoken="#"> 473104477Ssam <filter token="PROGRAM" value="@{name}"/> 474104477Ssam <filter token="TARGET_JAVA" value="@{java}"/> 475123824Ssam </filterset> 476123824Ssam </copy> 477123824Ssam <chmod file="@{bin.dir}/@{name}" perm="ugo+rx"/> 478123824Ssam </sequential> 479104477Ssam </macrodef> 480104477Ssam </target> 481104477Ssam 482104477Ssam <target name="-def-build-jar"> 483104477Ssam <macrodef name="build-jar"> 484104477Ssam <attribute name="name"/> 485104477Ssam <attribute name="includes"/> 486104477Ssam <attribute name="classes.dir" default="${build.classes.dir}"/> 487104477Ssam <attribute name="lib.dir" default="${dist.lib.dir}"/> 488104477Ssam <attribute name="jarmainclass" default="com.sun.tools.@{name}.Main"/> 489104477Ssam <attribute name="jarclasspath" default=""/> 490104477Ssam <sequential> 491104477Ssam <mkdir dir="@{lib.dir}"/> 492104477Ssam <jar destfile="@{lib.dir}/@{name}.jar" 493104477Ssam basedir="@{classes.dir}" 494104477Ssam includes="@{includes}"> 495104477Ssam <manifest> 496104477Ssam <attribute name="Main-Class" value="@{jarmainclass}"/> 497104477Ssam <attribute name="Class-Path" value="@{jarclasspath}"/> 498104477Ssam </manifest> 499120915Ssam </jar> 500120915Ssam </sequential> 501120915Ssam </macrodef> 502120915Ssam </target> 503104477Ssam 504104477Ssam <target name="-def-build-classes" depends="-def-pcompile"> 505104477Ssam <macrodef name="build-classes"> 506104477Ssam <attribute name="includes"/> 507104477Ssam <attribute name="excludes" default="${exclude.files} **/package-info.java"/> 508104477Ssam <attribute name="classes.dir" default="${build.classes.dir}"/> 509104477Ssam <attribute name="gensrc.dir" default="${build.gensrc.dir}"/> 510104477Ssam <attribute name="javac.bootclasspath" default="${build.bootstrap.dir}/classes"/> 511104477Ssam <attribute name="bootclasspath.opt" default="${javac.bootclasspath.opt}"/> 512104477Ssam <attribute name="classpath" default="${javac.classpath}"/> 513104477Ssam <attribute name="sourcepath" default="${javac.sourcepath}"/> 514104477Ssam <attribute name="java.home" default="${boot.java.home}"/> 515104477Ssam <attribute name="source" default="${javac.source}"/> 516104477Ssam <attribute name="target" default="${javac.target}"/> 517104477Ssam <attribute name="release" default="${release}"/> 518104477Ssam <attribute name="full.version" default="${full.version}"/> 519104477Ssam <sequential> 520104477Ssam <echo level="verbose" message="build-classes: excludes=@{excludes}"/> 521104477Ssam <echo level="verbose" message="build-classes: bootclasspath.opt=@{bootclasspath.opt}"/> 522104477Ssam <echo level="verbose" message="build-classes: classpath=@{classpath}"/> 523127135Snjl <echo level="verbose" message="build-classes: sourcepath=@{sourcepath}"/> 524127135Snjl <mkdir dir="@{gensrc.dir}"/> 525104477Ssam <mkdir dir="@{classes.dir}"/> 526104477Ssam <pcompile srcdir="${src.classes.dir}" 527104477Ssam destdir="@{gensrc.dir}" 528104477Ssam includes="@{includes}"/> 529104477Ssam <copy todir="@{gensrc.dir}"> 530104477Ssam <fileset dir="${src.classes.dir}" includes="@{includes}"/> 531104477Ssam <globmapper from="*.properties-template" to="*.properties"/> 532104477Ssam <filterset begintoken="$(" endtoken=")"> 533115748Ssam <filter token="JDK_VERSION" value="${jdk.version}"/> 534104477Ssam <filter token="RELEASE" value="@{release}"/> 535104477Ssam <filter token="FULL_VERSION" value="@{full.version}"/> 536104477Ssam </filterset> 537104477Ssam </copy> 538104477Ssam <pcompile srcdir="@{gensrc.dir}" 539104477Ssam destdir="@{gensrc.dir}" 540104477Ssam includes="**/*.properties"/> 541104477Ssam <javac fork="true" 542104477Ssam executable="@{java.home}/bin/javac" 543104477Ssam srcdir="${src.classes.dir}:@{gensrc.dir}" 544104477Ssam destdir="@{classes.dir}" 545104477Ssam includes="@{includes}" 546104477Ssam excludes="@{excludes}" 547104477Ssam sourcepath="@{sourcepath}" 548104477Ssam classpath="@{classpath}" 549104477Ssam includeAntRuntime="no" 550104477Ssam source="@{source}" 551104477Ssam target="@{target}" 552104477Ssam debug="${javac.debug}" 553140480Ssam debuglevel="${javac.debuglevel}"> 554104477Ssam <compilerarg value="-implicit:none"/> 555136526Ssam <compilerarg value="-Xprefer:source"/> 556140480Ssam <compilerarg value="-J-Xbootclasspath/p:@{javac.bootclasspath}"/> 557140480Ssam <compilerarg line="@{bootclasspath.opt}"/> 558140480Ssam <compilerarg line="${javac.no.jdk.warnings}"/> 559140480Ssam <compilerarg line="${javac.version.opt}"/> 560140480Ssam <compilerarg line="${javac.lint.opts}"/> 561140480Ssam </javac> 562104477Ssam <copy todir="@{classes.dir}" includeemptydirs="false"> 563104477Ssam <fileset dir="${src.classes.dir}" includes="@{includes}" excludes="@{excludes}"> 564104477Ssam <exclude name="**/*.java"/> 565104477Ssam <exclude name="**/*.properties"/> 566104477Ssam <exclude name="**/*-template"/> 567104477Ssam <exclude name="**/package.html"/> 568104477Ssam </fileset> 569104477Ssam </copy> 570104477Ssam </sequential> 571104477Ssam </macrodef> 572104477Ssam </target> 573104477Ssam 574104477Ssam <target name="-def-build-bootstrap-tool" depends="-check-boot.java.home,-def-build-tool"> 575104477Ssam <presetdef name="build-bootstrap-tool"> 576104477Ssam <build-tool 577104477Ssam bin.dir="${build.bootstrap.dir}/bin" 578104477Ssam java="${boot.java}"/> 579120915Ssam </presetdef> 580120915Ssam </target> 581120915Ssam 582120915Ssam <target name="-def-build-bootstrap-jar" depends="-def-build-jar"> 583104477Ssam <presetdef name="build-bootstrap-jar"> 584104477Ssam <build-jar 585104477Ssam classes.dir="${build.bootstrap.dir}/classes" 586104477Ssam lib.dir="${build.bootstrap.dir}/lib"/> 587104477Ssam </presetdef> 588104477Ssam </target> 589104477Ssam 590104477Ssam <target name="-def-build-bootstrap-classes" depends="-def-build-classes"> 591104477Ssam <presetdef name="build-bootstrap-classes"> 592104477Ssam <build-classes 593104477Ssam source="${boot.javac.source}" 594104477Ssam target="${boot.javac.target}" 595104477Ssam gensrc.dir="${build.bootstrap.dir}/gensrc" 596104477Ssam classes.dir="${build.bootstrap.dir}/classes" 597104477Ssam javac.bootclasspath="" 598104477Ssam bootclasspath.opt="-Xbootclasspath/p:${build.bootstrap.dir}/classes" 599104477Ssam sourcepath="" 600104477Ssam release="${bootstrap.release}" 601104477Ssam full.version="${bootstrap.full.version}" 602104477Ssam excludes="${require.import.jdk.files} **/package-info.java"/> 603104477Ssam </presetdef> 604119137Ssam </target> 605104477Ssam 606104477Ssam <target name="-def-pcompile"> 607104477Ssam <mkdir dir="${build.toolclasses.dir}"/> 608104477Ssam <javac fork="true" 609104477Ssam source="${boot.javac.source}" 610104477Ssam target="${boot.javac.target}" 611104477Ssam executable="${boot.java.home}/bin/javac" 612104477Ssam srcdir="${make.tools.dir}/CompileProperties" 613104477Ssam destdir="${build.toolclasses.dir}/" 614104477Ssam classpath="${ant.home}/lib/ant.jar"/> 615104477Ssam <taskdef name="pcompile" 616104477Ssam classname="CompilePropertiesTask" 617104477Ssam classpath="${build.toolclasses.dir}/"/> 618104477Ssam </target> 619104477Ssam 620104477Ssam <target name="-def-genstubs" depends="build-bootstrap-javac"> 621104477Ssam <mkdir dir="${build.toolclasses.dir}"/> 622104477Ssam <javac fork="true" 623104477Ssam source="${boot.javac.source}" 624104477Ssam target="${boot.javac.target}" 625104477Ssam executable="${boot.java.home}/bin/javac" 626104477Ssam srcdir="${make.tools.dir}/GenStubs" 627104477Ssam destdir="${build.toolclasses.dir}/" 628104477Ssam classpath="${build.bootstrap.dir}/classes:${ant.home}/lib/ant.jar"/> 629104477Ssam <taskdef name="genstubs" 630104477Ssam classname="GenStubs$$Ant" 631104477Ssam classpath="${build.toolclasses.dir}/"/> 632104477Ssam </target> 633104477Ssam 634104477Ssam <target name="-def-javadoc-tool" depends="-check-target.java.home"> 635104477Ssam <macrodef name="javadoc-tool"> 636104477Ssam <attribute name="name"/> 637104477Ssam <attribute name="includes"/> 638104477Ssam <attribute name="options" default=""/> 639104477Ssam <attribute name="source" default="1.5"/> <!-- FIXME --> 640104477Ssam <sequential> 641104477Ssam <property name="javadoc.options" value=""/> <!-- default, can be overridden per user or per project --> 642115748Ssam <!-- Note: even with this default value, includes 643115748Ssam from src.classes.dir get javadoc'd; see packageset below --> 644104477Ssam <property name="javadoc.packagenames" value="none"/> <!-- default, can be overridden per user or per project --> 645104477Ssam <javadoc 646104477Ssam executable="${target.java.home}/bin/javadoc" 647104477Ssam destdir="${build.javadoc.dir}/@{name}" 648115848Ssam source="@{source}" 649115848Ssam windowtitle="UNOFFICIAL" 650115862Ssam failonerror="true" 651115848Ssam use="true" 652104477Ssam author="false" 653104477Ssam version="false" 654104477Ssam packagenames="${javadoc.packagenames}" > 655104477Ssam <header><![CDATA[<strong>Unofficial Javadoc</strong> generated from developer sources for preview purposes only]]></header> 656104477Ssam <arg line="@{options}"/> 657104477Ssam <bootclasspath> 658104477Ssam <path location="${build.classes.dir}"/> 659104477Ssam <path location="${target.java.home}/jre/lib/rt.jar"/> 660104477Ssam </bootclasspath> 661104477Ssam <sourcepath> 662104477Ssam <pathelement location="${src.classes.dir}"/> 663104477Ssam </sourcepath> 664104477Ssam <!-- XXX just <fileset> (restricted further to **/*.java) and no <packageset> --> 665104477Ssam <!-- means that {@link some.package} will not work, which is no good. --> 666104477Ssam <!-- (It correctly skips excluded single classes, but not if packageset is also included, --> 667104477Ssam <!-- which also causes duplicates in the class index for included files.) --> 668104477Ssam <packageset dir="${src.classes.dir}" includes="@{includes}"> 669104477Ssam <or> 670104477Ssam <filename name="java/"/> 671104477Ssam <filename name="javax/"/> 672104477Ssam <filename name="com/sun/javadoc/"/> 673104477Ssam <filename name="com/sun/mirror/"/> 674104477Ssam <filename name="com/sun/source/"/> 675104477Ssam </or> 676104477Ssam </packageset> 677104477Ssam </javadoc> 678104477Ssam </sequential> 679104477Ssam </macrodef> 680104477Ssam </target> 681104477Ssam 682104477Ssam <target name="-def-jtreg" unless="jtreg.defined" depends="-check-jtreg.home,-check-target.java.home"> 683104477Ssam <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant"> 684104477Ssam <classpath> 685104477Ssam <pathelement location="${jtreg.home}/lib/jtreg.jar"/> 686104477Ssam <pathelement location="${jtreg.home}/lib/javatest.jar"/> 687104477Ssam </classpath> 688104477Ssam </taskdef> 689104477Ssam <macrodef name="jtreg-tool"> 690104477Ssam <attribute name="name"/> 691104477Ssam <attribute name="tests"/> 692104477Ssam <attribute name="jdk" default="${target.java.home}"/> 693104477Ssam <attribute name="samevm" default="true"/> 694104477Ssam <attribute name="verbose" default="summary"/> 695104477Ssam <attribute name="options" default=""/> 696104477Ssam <attribute name="keywords" default="-keywords:!ignore"/> 697104477Ssam <attribute name="jpda.jvmargs" default=""/> 698104477Ssam <sequential> 699104477Ssam <property name="coverage.options" value=""/> <!-- default --> 700104477Ssam <property name="coverage.classpath" value=""/> <!-- default --> 701104477Ssam <jtreg 702104477Ssam dir="${test.dir}" 703104477Ssam workDir="${build.jtreg.dir}/@{name}/work" 704119690Sjhb reportDir="${build.jtreg.dir}/@{name}/report" 705104477Ssam jdk="@{jdk}" 706104477Ssam samevm="@{samevm}" verbose="@{verbose}" 707104477Ssam failonerror="false" resultproperty="jtreg.@{name}.result" 708104477Ssam javacoptions="-g" 709104477Ssam vmoptions="${coverage.options} -Xbootclasspath/p:${coverage.classpath}:${build.classes.dir} @{jpda.jvmargs}"> 710104477Ssam <arg line="@{keywords}"/> 711104477Ssam <arg line="@{options}"/> 712104477Ssam <arg line="@{tests}"/> 713104477Ssam </jtreg> 714104477Ssam <!-- the next two properties are for convenience, when only 715104477Ssam a single instance of jtreg will be invoked. --> 716104477Ssam <condition property="jtreg.passed"> 717104477Ssam <equals arg1="${jtreg.@{name}.result}" arg2="0"/> 718104477Ssam </condition> 719104477Ssam <property name="jtreg.report" value="${build.jtreg.dir}/@{name}/report"/> 720104477Ssam </sequential> 721104477Ssam </macrodef> 722104477Ssam <property name="jtreg.defined" value="true"/> 723104477Ssam </target> 724104477Ssam 725104477Ssam <target name="-def-cobertura" depends="-check-cobertura.home"> 726104477Ssam <path id="cobertura.classpath"> 727104477Ssam <fileset dir="${cobertura.home}"> 728104477Ssam <include name="cobertura.jar"/> 729119690Sjhb <include name="lib/**/*.jar"/> 730104477Ssam </fileset> 731104477Ssam </path> 732104477Ssam <taskdef classpathref="cobertura.classpath" resource="tasks.properties"/> 733104477Ssam </target> 734104477Ssam 735104477Ssam <target name="-def-findbugs" unless="findbugs.defined" depends="-check-findbugs.home"> 736104477Ssam <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"> 737104477Ssam <classpath> 738104477Ssam <pathelement location="${findbugs.home}/lib/findbugs.jar"/> 739104477Ssam </classpath> 740104477Ssam </taskdef> 741104477Ssam <macrodef name="findbugs-tool"> 742104477Ssam <attribute name="name"/> 743104477Ssam <attribute name="output" default="emacs"/> 744104477Ssam <attribute name="outputFile" default=""/> 745104477Ssam <attribute name="reportLevel" default="high"/> 746104477Ssam <sequential> 747104477Ssam <findbugs 748104477Ssam home="${findbugs.home}" 749104477Ssam output="@{output}" 750104477Ssam outputFile="@{outputFile}" 751104477Ssam reportLevel="@{reportLevel}" 752104477Ssam failOnError="false" 753104477Ssam errorProperty="findbugs.@{name}.errors" 754112124Ssam warningsProperty="findbugs.@{name}.warnings" 755112124Ssam jvmargs="-Xmx512M" > 756112124Ssam <class location="${dist.dir}/lib/@{name}.jar"/> 757112124Ssam <auxClasspath> 758112124Ssam <pathelement location="${build.classes.dir}"/> 759112124Ssam </auxClasspath> 760112124Ssam <sourcePath> 761112124Ssam <pathelement location="${src.classes.dir}"/> 762112124Ssam </sourcePath> 763104477Ssam </findbugs> 764104477Ssam </sequential> 765104477Ssam </macrodef> 766104477Ssam <property name="findbugs.defined" value="true"/> 767104477Ssam </target> 768104477Ssam 769104477Ssam <target name="-def-check"> 770104477Ssam <macrodef name="check"> 771104477Ssam <attribute name="name"/> 772104477Ssam <attribute name="property"/> 773104477Ssam <attribute name="marker"/> 774104477Ssam <sequential> 775104477Ssam <fail message="Cannot locate @{name}: please set @{property} to its location"> 776104477Ssam <condition> 777104477Ssam <not> 778104477Ssam <isset property="@{property}"/> 779104477Ssam </not> 780104477Ssam </condition> 781104477Ssam </fail> 782104477Ssam <fail message="@{name} is not installed in ${@{property}}"> 783104477Ssam <condition> 784104477Ssam <not> 785104477Ssam <available file="${@{property}}/@{marker}"/> 786104477Ssam </not> 787104477Ssam </condition> 788104477Ssam </fail> 789104477Ssam </sequential> 790104477Ssam </macrodef> 791104477Ssam </target> 792104477Ssam 793104477Ssam <!-- standard JDK target --> 794104477Ssam <target name="sanity" 795104477Ssam description="display settings of configuration values"> 796104477Ssam <echo level="info">ant.home = ${ant.home}</echo> 797104477Ssam <echo level="info">boot.java.home = ${boot.java.home}</echo> 798104477Ssam <echo level="info">target.java.home = ${target.java.home}</echo> 799104477Ssam <echo level="info">jtreg.home = ${jtreg.home}</echo> 800104477Ssam <echo level="info">findbugs.home = ${findbugs.home}</echo> 801104477Ssam </target> 802104477Ssam 803119137Ssam <!-- useful debugging targets --> 804104477Ssam <target name="diagnostics"> 805104477Ssam <diagnostics/> 806104477Ssam </target> 807104477Ssam 808104477Ssam <target name="post-sanity" depends="-def-jtreg,sanity,build" 809104477Ssam description="perform basic validation after a standard build"> 810104477Ssam <jtreg 811104477Ssam dir="make/test" 812104477Ssam workDir="${build.jtreg.dir}/post-sanity/work" 813104477Ssam reportDir="${build.jtreg.dir}/post-sanity/report" 814104477Ssam jdk="${target.java.home}" 815104477Ssam verbose="summary" 816104477Ssam failonerror="false" resultproperty="jtreg.post-sanity.result"> 817104477Ssam </jtreg> 818104477Ssam 819104477Ssam </target> 820104477Ssam</project> 821104477Ssam 822104477Ssam