build.xml revision 577:b7fc560217d3
1<?xml version="1.0" encoding="UTF-8"?> 2<!-- 3 Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved. 4 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 5 6 This code is free software; you can redistribute it and/or modify it 7 under the terms of the GNU General Public License version 2 only, as 8 published by the Free Software Foundation. Oracle designates this 9 particular file as subject to the "Classpath" exception as provided 10 by Oracle in the LICENSE file that accompanied this code. 11 12 This code is distributed in the hope that it will be useful, but WITHOUT 13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 version 2 for more details (a copy is included in the LICENSE file that 16 accompanied this code). 17 18 You should have received a copy of the GNU General Public License version 19 2 along with this work; if not, write to the Free Software Foundation, 20 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 21 22 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 23 or visit www.oracle.com if you need additional information or have any 24 questions. 25--> 26 27<!-- 28 This is the main build file for the complete langtools workspace. 29 It is used both when working on the tools in NetBeans, and when building 30 JDK itself, in which case it is invoked from the wrapper Makefile. 31 --> 32 33<project name="langtools" default="build" basedir=".."> 34 35 <!-- Force full debuginfo for javac if the debug.classfiles 36 property is set. This must be BEFORE the include of 37 build.properties because it sets javac.debuglevel. --> 38 <condition property="javac.debuglevel" value="source,lines,vars"> 39 <equals arg1="${debug.classfiles}" arg2="true"/> 40 </condition> 41 42 <!-- The following locations can be used to override default property values. --> 43 44 <!-- Use this location for customizations specific to this instance of this workspace --> 45 <property file="build.properties"/> 46 47 <!-- Use this location for customizations common to all OpenJDK langtools workspaces --> 48 <property file="${user.home}/.openjdk/${ant.project.name}-build.properties"/> 49 50 <!-- Use this location for customizations common to all OpenJDK workspaces --> 51 <property file="${user.home}/.openjdk/build.properties"/> 52 53 <!-- Convenient shorthands for standard locations within the workspace. --> 54 <property name="build.dir" location="build"/> 55 <property name="build.bootstrap.dir" location="${build.dir}/bootstrap"/> 56 <property name="build.coverage.dir" location="${build.dir}/coverage"/> 57 <property name="build.classes.dir" location="${build.dir}/classes"/> 58 <property name="build.gensrc.dir" location="${build.dir}/gensrc"/> 59 <property name="build.genstubs.dir" location="${build.dir}/genstubs"/> 60 <property name="build.javadoc.dir" location="${build.dir}/javadoc"/> 61 <property name="build.jtreg.dir" location="${build.dir}/jtreg"/> 62 <property name="build.toolclasses.dir" location="${build.dir}/toolclasses"/> 63 <property name="dist.dir" location="dist"/> 64 <property name="dist.bin.dir" location="${dist.dir}/bin"/> 65 <property name="dist.coverage.dir" location="${dist.dir}/coverage"/> 66 <property name="dist.findbugs.dir" location="${dist.dir}/findbugs"/> 67 <property name="dist.lib.dir" location="${dist.dir}/lib"/> 68 <property name="make.dir" location="make"/> 69 <property name="make.tools.dir" location="${make.dir}/tools"/> 70 <property name="src.dir" location="src"/> 71 <property name="src.bin.dir" location="${src.dir}/share/bin"/> 72 <property name="src.classes.dir" location="${src.dir}/share/classes"/> 73 <property name="test.dir" location="test"/> 74 75 <!-- java.marker is set to a marker file to check for within a Java install dir. 76 The best file to check for across Solaris/Linux/Windows/MacOS is one of the 77 executables; regrettably, that is OS-specific. --> 78 <condition property="java.marker" value="bin/java"> 79 <os family="unix"/> 80 </condition> 81 <condition property="java.marker" value="bin/java.exe"> 82 <os family="windows"/> 83 </condition> 84 85 <!-- Standard property values, if not overriden by earlier settings. --> 86 <property file="${make.dir}/build.properties"/> 87 88 <!-- launcher.java is used in the launcher scripts provided to run 89 the tools' jar files. If it has not already been set, then 90 default it to use ${target.java.home}, if available, otherwise 91 quietly default to simply use "java". --> 92 <condition property="launcher.java" 93 value="${target.java.home}/bin/java" else="java"> 94 <isset property="target.java.home"/> 95 </condition> 96 97 <!-- Logic for handling access import jdk classes, if available. 98 import.jdk should be unset, or set to jdk home (to use rt.jar) 99 or to jdk repo (to use src/share/classes). 100 Based on the value, if any, set up default values for javac's sourcepath, 101 classpath and bootclasspath. Note: the default values are overridden 102 in the build-bootstrap-classes macro. --> 103 104 <available property="import.jdk.src.dir" value="${import.jdk}/src/share/classes" 105 filepath="${import.jdk}/src/share/classes" file="java/nio/file/Path.java"/> 106 <available property="import.jdk.jar" value="${import.jdk}/jre/lib/rt.jar" 107 ignoresystemclasses="true" 108 classpath="${import.jdk}/jre/lib/rt.jar" classname="java.nio.file.Path"/> 109 110 <!-- Set the default value of the sourcepath used for javac. --> 111 <condition property="javac.sourcepath" value="${build.genstubs.dir}" else=""> 112 <isset property="import.jdk.src.dir"/> 113 </condition> 114 115 <!-- Set the default value of the classpath used for javac. --> 116 <property name="javac.classpath" value=""/> 117 118 <!-- Set the default bootclasspath option used for javac. 119 Note that different variants of the option are used, meaning we can't just 120 define the value for the option. 121 Note the explicit use of the standard property ${path.separator} in the following. 122 This is because Ant is not clever enough to handle direct use of : or ; --> 123 <condition property="javac.bootclasspath.opt" 124 value="-Xbootclasspath:${build.classes.dir}${path.separator}${import.jdk.jar}" 125 else="-Xbootclasspath/p:${build.classes.dir}"> 126 <isset property="import.jdk.jar"/> 127 </condition> 128 129 <condition property="exclude.files" value="" else="${require.import.jdk.files}"> 130 <isset property="import.jdk"/> 131 </condition> 132 133 <!-- for debugging --> 134 <target name="check-import.jdk"> 135 <echo message="import.jdk: ${import.jdk}"/> 136 <echo message="import.jdk.jar: ${import.jdk.jar}"/> 137 <echo message="import.jdk.src.dir: ${import.jdk.src.dir}"/> 138 </target> 139 140 <target name="vizant" depends="-def-vizant"> 141 <mkdir dir="${build.dir}"/> 142 <echo message="Generating ${build.dir}/build.dot"/> 143 <vizant antfile="${make.dir}/build.xml" outfile="${build.dir}/build.dot"/> 144 <echo message="Generating ${build.dir}/build.png"/> 145 <exec executable="${dot}" > 146 <arg value="-Tpng"/> 147 <arg value="-o"/> 148 <arg file="${build.dir}/build.png"/> 149 <arg file="${build.dir}/build.dot"/> 150 </exec> 151 </target> 152 153 <!-- Standard target to build deliverables for JDK build. --> 154 155 <target name="build" depends="build-bootstrap-tools,build-all-classes"> 156 <copy todir="${dist.dir}/bootstrap"> 157 <fileset dir="${build.bootstrap.dir}" includes="bin/,lib/"/> 158 </copy> 159 <chmod dir="${dist.dir}/bootstrap/bin" perm="ugo+rx"> 160 <include name="*"/> 161 </chmod> 162 <mkdir dir="${dist.lib.dir}"/> 163 <jar file="${dist.lib.dir}/classes.jar" basedir="${build.classes.dir}"/> 164 <zip file="${dist.lib.dir}/src.zip" basedir="${src.classes.dir}"/> 165 </target> 166 167 <target name="build-bootstrap-tools" 168 depends="build-bootstrap-javac,build-bootstrap-javadoc,build-bootstrap-doclets,build-bootstrap-javah" 169 /> 170 171 <target name="build-all-tools" 172 depends="build-javac,build-javadoc,build-doclets,build-javah,build-javap,build-apt" 173 /> 174 175 <target name="build-all-classes" depends="build-bootstrap-javac,-create-import-jdk-stubs"> 176 <build-classes includes="${javac.includes} ${javadoc.includes} ${doclets.includes} ${javah.includes} ${javap.includes} ${apt.includes}"/> 177 </target> 178 179 <!-- clean --> 180 181 <target name="clean" description="Delete all generated files"> 182 <delete dir="${build.dir}"/> 183 <delete dir="${dist.dir}"/> 184 </target> 185 186 <!-- Additional targets for running tools on the build --> 187 188 <target name="jtreg" depends="build-all-tools,-def-jtreg"> 189 <jtreg-tool name="all" tests="${jtreg.tests}"/> 190 </target> 191 192 <target name="findbugs" depends="-def-findbugs,build-all-tools"> 193 <property name="findbugs.reportLevel" value="medium"/> 194 <mkdir dir="${dist.findbugs.dir}"/> 195 <findbugs 196 home="${findbugs.home}" 197 projectName="JDK langtools ${full.version}" 198 output="xml" 199 outputFile="${dist.findbugs.dir}/findbugs.xml" 200 reportLevel="${findbugs.reportLevel}" 201 failOnError="false" 202 errorProperty="findbugs.all.errors" 203 warningsProperty="findbugs.all.warnings" 204 jvmargs="-Xmx512M"> 205 <class location="${build.classes.dir}"/> 206 <sourcePath> 207 <pathelement location="${src.classes.dir}"/> 208 </sourcePath> 209 </findbugs> 210 <exec executable="sh"> 211 <arg value="${findbugs.home}/bin/convertXmlToText"/> 212 <arg value="-longBugCodes"/> 213 <arg value="-html:${findbugs.home}/src/xsl/fancy.xsl"/> 214 <arg value="${dist.findbugs.dir}/findbugs.xml"/> 215 <redirector output="${dist.findbugs.dir}/findbugs.html"/> 216 </exec> 217 </target> 218 219 <target name="coverage" depends="-def-cobertura,build-all-classes,instrument-classes,jtreg,coverage-report"/> 220 221 <target name="instrument-classes" depends="-def-cobertura"> 222 <!-- only define the following property when we want coverage info --> 223 <path id="coverage.classpath"> 224 <pathelement location="${build.coverage.dir}/classes"/> 225 <path refid="cobertura.classpath"/> 226 </path> 227 <property name="coverage.options" value="-Dnet.sourceforge.cobertura.datafile=${build.coverage.dir}/cobertura.ser"/> 228 <property name="coverage.classpath" refid="coverage.classpath"/> 229 <mkdir dir="${build.coverage.dir}/classes"/> 230 <delete file="${build.coverage.dir}/cobertura.ser"/> 231 <cobertura-instrument todir="${build.coverage.dir}/classes" 232 datafile="${build.coverage.dir}/cobertura.ser"> 233 <fileset dir="${build.classes.dir}" 234 includes="**/*.class" excludes="**/resources/*.class"/> 235 </cobertura-instrument> 236 </target> 237 238 <target name="coverage-report" depends="-def-cobertura"> 239 <mkdir dir="${dist.coverage.dir}"/> 240 <cobertura-report 241 srcdir="${src.classes.dir}" 242 destdir="${dist.coverage.dir}" 243 datafile="${build.coverage.dir}/cobertura.ser"/> 244 <cobertura-report 245 format="xml" 246 srcdir="${src.classes.dir}" 247 destdir="${dist.coverage.dir}" 248 datafile="${build.coverage.dir}/cobertura.ser"/> 249 </target> 250 251 <!-- javac targets --> 252 253 <target name="build-bootstrap-javac" 254 depends="-def-build-bootstrap-classes,-def-build-bootstrap-jar,-def-build-bootstrap-tool"> 255 <build-bootstrap-classes includes="${javac.includes}"/> 256 <build-bootstrap-jar name="javac" includes="${javac.includes}"/> 257 <build-bootstrap-tool name="javac"/> 258 </target> 259 260 <target name="build-classes-javac" depends="build-bootstrap-javac,-create-import-jdk-stubs"> 261 <build-classes includes="${javac.includes}"/> 262 </target> 263 264 <target name="build-javac" depends="build-classes-javac"> 265 <build-jar name="javac" includes="${javac.includes}"/> 266 <build-tool name="javac"/> 267 </target> 268 269 <target name="javadoc-javac" depends="build-javac,-def-javadoc-tool"> 270 <javadoc-tool name="javac" includes="${javac.includes}" options="${javadoc.jls3.option}"/> 271 </target> 272 273 <target name="jtreg-javac" depends="build-javac,build-javap,-def-jtreg"> 274 <jtreg-tool name="javac" tests="${javac.tests}"/> 275 </target> 276 277 <target name="findbugs-javac" depends="build-javac,-def-findbugs"> 278 <findbugs-tool name="javac"/> 279 </target> 280 281 <target name="javac" depends="build-javac,jtreg-javac,findbugs-javac"/> 282 283 <!-- javadoc targets --> 284 285 <target name="build-bootstrap-javadoc" depends="build-bootstrap-javac"> 286 <build-bootstrap-classes includes="${javadoc.includes}"/> 287 <build-bootstrap-jar name="javadoc" includes="${javadoc.includes}" 288 jarclasspath="javac.jar doclets.jar"/> 289 <build-bootstrap-tool name="javadoc"/> 290 </target> 291 292 <target name="build-classes-javadoc" depends="build-classes-javac"> 293 <build-classes includes="${javadoc.includes}"/> 294 </target> 295 296 <target name="build-javadoc" depends="build-javac,build-classes-javadoc"> 297 <build-jar name="javadoc" includes="${javadoc.includes}" 298 jarclasspath="javac.jar doclets.jar"/> 299 <build-tool name="javadoc"/> 300 </target> 301 302 <target name="javadoc-javadoc" depends="build-javadoc,-def-javadoc-tool"> 303 <javadoc-tool name="javadoc" includes="${javadoc.includes}"/> 304 </target> 305 306 <target name="jtreg-javadoc" depends="build-javadoc,-def-jtreg"> 307 <jtreg-tool name="javadoc" tests="${javadoc.tests}"/> 308 </target> 309 310 <target name="findbugs-javadoc" depends="build-javadoc,-def-findbugs"> 311 <findbugs-tool name="javadoc"/> 312 </target> 313 314 <target name="javadoc" depends="build-javadoc,jtreg-javadoc,findbugs-javadoc"/> 315 316 <!-- doclets targets --> 317 318 <target name="build-bootstrap-doclets" depends="build-bootstrap-javadoc,-def-build-bootstrap-jar"> 319 <build-bootstrap-classes includes="${doclets.includes}"/> 320 <build-bootstrap-jar name="doclets" includes="${doclets.includes}" 321 jarmainclass="com.sun.tools.javadoc.Main" 322 jarclasspath="javadoc.jar"/> 323 </target> 324 325 <target name="build-classes-doclets" depends="build-classes-javadoc"> 326 <build-classes includes="${doclets.includes}"/> 327 </target> 328 329 <target name="build-doclets" depends="build-javadoc,build-classes-doclets"> 330 <!-- just jar, no bin for doclets --> 331 <build-jar name="doclets" includes="${doclets.includes}" jarclasspath="javadoc.jar"/> 332 </target> 333 334 <!-- (no javadoc for doclets) --> 335 336 <target name="jtreg-doclets" depends="build-doclets,-def-jtreg"> 337 <jtreg-tool name="doclets" tests="${doclets.tests}"/> 338 </target> 339 340 <target name="findbugs-doclets" depends="build-doclets,-def-findbugs"> 341 <findbugs-tool name="doclets"/> 342 </target> 343 344 <target name="doclets" depends="build-doclets,jtreg-doclets,findbugs-doclets"/> 345 346 <!-- javah targets --> 347 348 <target name="build-bootstrap-javah" depends="build-bootstrap-javadoc"> 349 <build-bootstrap-classes includes="${javah.includes}"/> 350 <build-bootstrap-jar name="javah" includes="${javah.includes}" 351 jarclasspath="javadoc.jar doclets.jar javac.jar"/> 352 <build-bootstrap-tool name="javah"/> 353 </target> 354 355 <target name="build-javah" depends="build-javac,build-classes-javah"> 356 <build-jar name="javah" includes="${javah.includes}" jarclasspath="javac.jar"/> 357 <build-tool name="javah"/> 358 </target> 359 360 <target name="build-classes-javah" depends="build-classes-javadoc"> 361 <build-classes includes="${javah.includes}"/> 362 </target> 363 364 <!-- (no javadoc for javah) --> 365 366 <target name="jtreg-javah" depends="build-javah,-def-jtreg"> 367 <jtreg-tool name="javah" tests="${javah.tests}"/> 368 </target> 369 370 <target name="findbugs-javah" depends="build-javah,-def-findbugs"> 371 <findbugs-tool name="javah"/> 372 </target> 373 374 <target name="javah" depends="build-javah,jtreg-javah,findbugs-javah"/> 375 376 <!-- javap targets --> 377 378 <target name="build-bootstrap-javap" 379 depends="-def-build-bootstrap-classes,-def-build-bootstrap-jar,-def-build-bootstrap-tool"> 380 <build-bootstrap-classes includes="${javap.includes}"/> 381 <build-bootstrap-jar name="javap" includes="${javap.includes}" 382 jarmainclass="sun.tools.javap.Main"/> 383 <build-bootstrap-tool name="javap"/> 384 </target> 385 386 <target name="build-classes-javap" depends="build-classes-javac"> 387 <build-classes includes="${javap.includes}"/> 388 </target> 389 390 <target name="build-javap" depends="build-javac,build-classes-javap"> 391 <build-jar name="javap" includes="${javap.includes}" 392 jarmainclass="com.sun.tools.javap.Main" 393 jarclasspath="javac.jar"/> 394 <build-tool name="javap"/> 395 </target> 396 397 <!-- (no javadoc for javap) --> 398 399 <target name="jtreg-javap" depends="build-javap,-def-jtreg"> 400 <jtreg-tool name="javap" tests="${javap.tests}"/> 401 </target> 402 403 <target name="findbugs-javap" depends="build-javap,-def-findbugs"> 404 <findbugs-tool name="javap"/> 405 </target> 406 407 <target name="javap" depends="build-javap,jtreg-javap,findbugs-javap"/> 408 409 <!-- apt targets --> 410 411 <target name="build-bootstrap-apt" depends="build-bootstrap-javac"> 412 <build-bootstrap-classes includes="${apt.includes}"/> 413 <build-bootstrap-jar name="apt" includes="${apt.includes}" 414 jarclasspath="javac.jar"/> 415 <build-bootstrap-tool name="apt"/> 416 </target> 417 418 <target name="build-apt" depends="build-javac,build-classes-apt"> 419 <build-jar name="apt" includes="${apt.includes}" jarclasspath="javac.jar"/> 420 <build-tool name="apt"/> 421 </target> 422 423 <target name="build-classes-apt" depends="build-classes-javac"> 424 <build-classes includes="${apt.includes}"/> 425 </target> 426 427 <target name="javadoc-apt" depends="build-apt,-def-javadoc-tool"> 428 <javadoc-tool name="apt" includes="${apt.includes}"/> 429 </target> 430 431 432 <target name="jtreg-apt" depends="build-apt,-def-jtreg"> 433 <jtreg-tool name="apt" tests="${apt.tests}"/> 434 </target> 435 436 <target name="findbugs-apt" depends="build-apt,-def-findbugs"> 437 <findbugs-tool name="apt"/> 438 </target> 439 440 <target name="apt" depends="build-apt,jtreg-apt,findbugs-apt"/> 441 442 <!-- Create import JDK stubs --> 443 444 <target name="-create-import-jdk-stubs" depends="-def-genstubs" if="import.jdk.src.dir"> 445 <mkdir dir="${build.genstubs.dir}"/> 446 <genstubs 447 srcdir="${import.jdk.src.dir}" destdir="${build.genstubs.dir}" 448 includes="${import.jdk.stub.files}" 449 fork="true" classpath="${build.toolclasses.dir}:${build.bootstrap.dir}/classes:${ant.home}/lib/ant.jar" 450 /> 451 </target> 452 453 <!-- Check targets --> 454 455 <target name="-check-boot.java.home" depends="-def-check"> 456 <check name="bootstrap java" property="boot.java.home" marker="${java.marker}"/> 457 </target> 458 459 <target name="-check-target.java.home" depends="-def-check"> 460 <check name="target java" property="target.java.home" marker="${java.marker}"/> 461 </target> 462 463 <target name="-check-cobertura.home" depends="-def-check"> 464 <check name="cobertura" property="cobertura.home" marker="cobertura.jar"/> 465 </target> 466 467 <target name="-check-findbugs.home" depends="-def-check"> 468 <check name="findbugs" property="findbugs.home" marker="lib/findbugs.jar"/> 469 </target> 470 471 <target name="-check-jtreg.home" depends="-def-check"> 472 <check name="jtreg" property="jtreg.home" marker="lib/jtreg.jar"/> 473 </target> 474 475 <target name="-check-vizant" depends="-def-check"> 476 <check name="vizant" property="vizant.jar"/> 477 <check name="dot" property="dot"/> 478 </target> 479 480 <!-- Ant macro and preset defs --> 481 482 <target name="-def-build-tool"> 483 <macrodef name="build-tool"> 484 <attribute name="name"/> 485 <attribute name="bin.dir" default="${dist.bin.dir}"/> 486 <attribute name="java" default="${launcher.java}"/> 487 <sequential> 488 <mkdir dir="@{bin.dir}"/> 489 <copy file="${src.bin.dir}/launcher.sh-template" tofile="@{bin.dir}/@{name}"> 490 <filterset begintoken="#" endtoken="#"> 491 <filter token="PROGRAM" value="@{name}"/> 492 <filter token="TARGET_JAVA" value="@{java}"/> 493 </filterset> 494 </copy> 495 <chmod file="@{bin.dir}/@{name}" perm="ugo+rx"/> 496 </sequential> 497 </macrodef> 498 </target> 499 500 <target name="-def-build-jar"> 501 <macrodef name="build-jar"> 502 <attribute name="name"/> 503 <attribute name="includes"/> 504 <attribute name="classes.dir" default="${build.classes.dir}"/> 505 <attribute name="lib.dir" default="${dist.lib.dir}"/> 506 <attribute name="jarmainclass" default="com.sun.tools.@{name}.Main"/> 507 <attribute name="jarclasspath" default=""/> 508 <sequential> 509 <mkdir dir="@{lib.dir}"/> 510 <jar destfile="@{lib.dir}/@{name}.jar" 511 basedir="@{classes.dir}" 512 includes="@{includes}"> 513 <manifest> 514 <attribute name="Main-Class" value="@{jarmainclass}"/> 515 <attribute name="Class-Path" value="@{jarclasspath}"/> 516 </manifest> 517 </jar> 518 </sequential> 519 </macrodef> 520 </target> 521 522 <target name="-def-build-classes" depends="-def-pcompile"> 523 <macrodef name="build-classes"> 524 <attribute name="includes"/> 525 <attribute name="excludes" default="${exclude.files} **/package-info.java"/> 526 <attribute name="classes.dir" default="${build.classes.dir}"/> 527 <attribute name="gensrc.dir" default="${build.gensrc.dir}"/> 528 <attribute name="javac.bootclasspath" default="${build.bootstrap.dir}/classes"/> 529 <attribute name="bootclasspath.opt" default="${javac.bootclasspath.opt}"/> 530 <attribute name="classpath" default="${javac.classpath}"/> 531 <attribute name="sourcepath" default="${javac.sourcepath}"/> 532 <attribute name="java.home" default="${boot.java.home}"/> 533 <attribute name="source" default="${javac.source}"/> 534 <attribute name="target" default="${javac.target}"/> 535 <attribute name="release" default="${release}"/> 536 <attribute name="full.version" default="${full.version}"/> 537 <sequential> 538 <echo level="verbose" message="build-classes: excludes=@{excludes}"/> 539 <echo level="verbose" message="build-classes: bootclasspath.opt=@{bootclasspath.opt}"/> 540 <echo level="verbose" message="build-classes: classpath=@{classpath}"/> 541 <echo level="verbose" message="build-classes: sourcepath=@{sourcepath}"/> 542 <mkdir dir="@{gensrc.dir}"/> 543 <mkdir dir="@{classes.dir}"/> 544 <pcompile srcdir="${src.classes.dir}" 545 destdir="@{gensrc.dir}" 546 includes="@{includes}"/> 547 <copy todir="@{gensrc.dir}"> 548 <fileset dir="${src.classes.dir}" includes="@{includes}"/> 549 <globmapper from="*.properties-template" to="*.properties"/> 550 <filterset begintoken="$(" endtoken=")"> 551 <filter token="JDK_VERSION" value="${jdk.version}"/> 552 <filter token="RELEASE" value="@{release}"/> 553 <filter token="FULL_VERSION" value="@{full.version}"/> 554 </filterset> 555 </copy> 556 <pcompile srcdir="@{gensrc.dir}" 557 destdir="@{gensrc.dir}" 558 includes="**/*.properties"/> 559 <javac fork="true" 560 executable="@{java.home}/bin/javac" 561 srcdir="${src.classes.dir}:@{gensrc.dir}" 562 destdir="@{classes.dir}" 563 includes="@{includes}" 564 excludes="@{excludes}" 565 sourcepath="@{sourcepath}" 566 classpath="@{classpath}" 567 includeAntRuntime="no" 568 source="@{source}" 569 target="@{target}" 570 debug="${javac.debug}" 571 debuglevel="${javac.debuglevel}"> 572 <compilerarg value="-implicit:none"/> 573 <compilerarg value="-Xprefer:source"/> 574 <compilerarg value="-J-Xbootclasspath/p:@{javac.bootclasspath}"/> 575 <compilerarg line="@{bootclasspath.opt}"/> 576 <compilerarg line="${javac.no.jdk.warnings}"/> 577 <compilerarg line="${javac.version.opt}"/> 578 <compilerarg line="${javac.lint.opts}"/> 579 </javac> 580 <copy todir="@{classes.dir}" includeemptydirs="false"> 581 <fileset dir="${src.classes.dir}" includes="@{includes}" excludes="@{excludes}"> 582 <exclude name="**/*.java"/> 583 <exclude name="**/*.properties"/> 584 <exclude name="**/*-template"/> 585 <exclude name="**/package.html"/> 586 </fileset> 587 </copy> 588 </sequential> 589 </macrodef> 590 </target> 591 592 <target name="-def-build-bootstrap-tool" depends="-check-boot.java.home,-def-build-tool"> 593 <presetdef name="build-bootstrap-tool"> 594 <build-tool 595 bin.dir="${build.bootstrap.dir}/bin" 596 java="${boot.java}"/> 597 </presetdef> 598 </target> 599 600 <target name="-def-build-bootstrap-jar" depends="-def-build-jar"> 601 <presetdef name="build-bootstrap-jar"> 602 <build-jar 603 classes.dir="${build.bootstrap.dir}/classes" 604 lib.dir="${build.bootstrap.dir}/lib"/> 605 </presetdef> 606 </target> 607 608 <target name="-def-build-bootstrap-classes" depends="-def-build-classes"> 609 <presetdef name="build-bootstrap-classes"> 610 <build-classes 611 source="${boot.javac.source}" 612 target="${boot.javac.target}" 613 gensrc.dir="${build.bootstrap.dir}/gensrc" 614 classes.dir="${build.bootstrap.dir}/classes" 615 javac.bootclasspath="" 616 bootclasspath.opt="-Xbootclasspath/p:${build.bootstrap.dir}/classes" 617 sourcepath="" 618 release="${bootstrap.release}" 619 full.version="${bootstrap.full.version}" 620 excludes="${require.import.jdk.files} **/package-info.java"/> 621 </presetdef> 622 </target> 623 624 <target name="-def-pcompile"> 625 <mkdir dir="${build.toolclasses.dir}"/> 626 <javac fork="true" 627 source="${boot.javac.source}" 628 target="${boot.javac.target}" 629 executable="${boot.java.home}/bin/javac" 630 srcdir="${make.tools.dir}/CompileProperties" 631 destdir="${build.toolclasses.dir}/" 632 classpath="${ant.home}/lib/ant.jar"/> 633 <taskdef name="pcompile" 634 classname="CompilePropertiesTask" 635 classpath="${build.toolclasses.dir}/"/> 636 </target> 637 638 <target name="-def-genstubs" depends="build-bootstrap-javac"> 639 <mkdir dir="${build.toolclasses.dir}"/> 640 <javac fork="true" 641 source="${boot.javac.source}" 642 target="${boot.javac.target}" 643 executable="${boot.java.home}/bin/javac" 644 srcdir="${make.tools.dir}/GenStubs" 645 destdir="${build.toolclasses.dir}/" 646 classpath="${build.bootstrap.dir}/classes:${ant.home}/lib/ant.jar"/> 647 <taskdef name="genstubs" 648 classname="GenStubs$$Ant" 649 classpath="${build.toolclasses.dir}/"/> 650 </target> 651 652 <target name="-def-javadoc-tool" depends="-check-target.java.home"> 653 <macrodef name="javadoc-tool"> 654 <attribute name="name"/> 655 <attribute name="includes"/> 656 <attribute name="options" default=""/> 657 <attribute name="source" default="1.5"/> <!-- FIXME --> 658 <sequential> 659 <property name="javadoc.options" value=""/> <!-- default, can be overridden per user or per project --> 660 <!-- Note: even with this default value, includes 661 from src.classes.dir get javadoc'd; see packageset below --> 662 <property name="javadoc.packagenames" value="none"/> <!-- default, can be overridden per user or per project --> 663 <javadoc 664 executable="${target.java.home}/bin/javadoc" 665 destdir="${build.javadoc.dir}/@{name}" 666 source="@{source}" 667 windowtitle="UNOFFICIAL" 668 failonerror="true" 669 use="true" 670 author="false" 671 version="false" 672 packagenames="${javadoc.packagenames}" > 673 <header><![CDATA[<strong>Unofficial Javadoc</strong> generated from developer sources for preview purposes only]]></header> 674 <arg line="@{options}"/> 675 <bootclasspath> 676 <path location="${build.classes.dir}"/> 677 <path location="${target.java.home}/jre/lib/rt.jar"/> 678 </bootclasspath> 679 <sourcepath> 680 <pathelement location="${src.classes.dir}"/> 681 </sourcepath> 682 <!-- XXX just <fileset> (restricted further to **/*.java) and no <packageset> --> 683 <!-- means that {@link some.package} will not work, which is no good. --> 684 <!-- (It correctly skips excluded single classes, but not if packageset is also included, --> 685 <!-- which also causes duplicates in the class index for included files.) --> 686 <packageset dir="${src.classes.dir}" includes="@{includes}"> 687 <or> 688 <filename name="java/"/> 689 <filename name="javax/"/> 690 <filename name="com/sun/javadoc/"/> 691 <filename name="com/sun/mirror/"/> 692 <filename name="com/sun/source/"/> 693 </or> 694 </packageset> 695 </javadoc> 696 </sequential> 697 </macrodef> 698 </target> 699 700 <target name="-def-jtreg" unless="jtreg.defined" depends="-check-jtreg.home,-check-target.java.home"> 701 <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant"> 702 <classpath> 703 <pathelement location="${jtreg.home}/lib/jtreg.jar"/> 704 <pathelement location="${jtreg.home}/lib/javatest.jar"/> 705 </classpath> 706 </taskdef> 707 <macrodef name="jtreg-tool"> 708 <attribute name="name"/> 709 <attribute name="tests"/> 710 <attribute name="jdk" default="${target.java.home}"/> 711 <attribute name="samevm" default="true"/> 712 <attribute name="verbose" default="summary"/> 713 <attribute name="options" default=""/> 714 <attribute name="keywords" default="-keywords:!ignore"/> 715 <attribute name="jpda.jvmargs" default=""/> 716 <sequential> 717 <property name="coverage.options" value=""/> <!-- default --> 718 <property name="coverage.classpath" value=""/> <!-- default --> 719 <jtreg 720 dir="${test.dir}" 721 workDir="${build.jtreg.dir}/@{name}/work" 722 reportDir="${build.jtreg.dir}/@{name}/report" 723 jdk="@{jdk}" 724 samevm="@{samevm}" verbose="@{verbose}" 725 failonerror="false" resultproperty="jtreg.@{name}.result" 726 javacoptions="-g" 727 vmoptions="${coverage.options} -Xbootclasspath/p:${coverage.classpath}:${build.classes.dir} @{jpda.jvmargs}"> 728 <arg line="@{keywords}"/> 729 <arg line="@{options}"/> 730 <arg line="@{tests}"/> 731 </jtreg> 732 <!-- the next two properties are for convenience, when only 733 a single instance of jtreg will be invoked. --> 734 <condition property="jtreg.passed"> 735 <equals arg1="${jtreg.@{name}.result}" arg2="0"/> 736 </condition> 737 <property name="jtreg.report" value="${build.jtreg.dir}/@{name}/report"/> 738 </sequential> 739 </macrodef> 740 <property name="jtreg.defined" value="true"/> 741 </target> 742 743 <target name="-def-cobertura" depends="-check-cobertura.home"> 744 <path id="cobertura.classpath"> 745 <fileset dir="${cobertura.home}"> 746 <include name="cobertura.jar"/> 747 <include name="lib/**/*.jar"/> 748 </fileset> 749 </path> 750 <taskdef classpathref="cobertura.classpath" resource="tasks.properties"/> 751 </target> 752 753 <target name="-def-findbugs" unless="findbugs.defined" depends="-check-findbugs.home"> 754 <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"> 755 <classpath> 756 <pathelement location="${findbugs.home}/lib/findbugs.jar"/> 757 </classpath> 758 </taskdef> 759 <macrodef name="findbugs-tool"> 760 <attribute name="name"/> 761 <attribute name="output" default="emacs"/> 762 <attribute name="outputFile" default=""/> 763 <attribute name="reportLevel" default="high"/> 764 <sequential> 765 <findbugs 766 home="${findbugs.home}" 767 output="@{output}" 768 outputFile="@{outputFile}" 769 reportLevel="@{reportLevel}" 770 failOnError="false" 771 errorProperty="findbugs.@{name}.errors" 772 warningsProperty="findbugs.@{name}.warnings" 773 jvmargs="-Xmx512M" > 774 <class location="${dist.dir}/lib/@{name}.jar"/> 775 <auxClasspath> 776 <pathelement location="${build.classes.dir}"/> 777 </auxClasspath> 778 <sourcePath> 779 <pathelement location="${src.classes.dir}"/> 780 </sourcePath> 781 </findbugs> 782 </sequential> 783 </macrodef> 784 <property name="findbugs.defined" value="true"/> 785 </target> 786 787 <target name="-def-vizant" unless="vizant.defined" depends="-check-vizant"> 788 <taskdef name="vizant" classname="net.sourceforge.vizant.Vizant" classpath="${vizant.jar}"/> 789 <property name="vizant.defined" value="true"/> 790 </target> 791 792 <target name="-def-check"> 793 <macrodef name="check"> 794 <attribute name="name"/> 795 <attribute name="property"/> 796 <attribute name="marker" default=""/> 797 <sequential> 798 <fail message="Cannot locate @{name}: please set @{property} to its location"> 799 <condition> 800 <not> 801 <isset property="@{property}"/> 802 </not> 803 </condition> 804 </fail> 805 <fail message="@{name} is not installed in ${@{property}}"> 806 <condition> 807 <and> 808 <not> 809 <equals arg1="@{marker}" arg2=""/> 810 </not> 811 <not> 812 <available file="${@{property}}/@{marker}"/> 813 </not> 814 </and> 815 </condition> 816 </fail> 817 </sequential> 818 </macrodef> 819 </target> 820 821 <!-- standard JDK target --> 822 <target name="sanity" 823 description="display settings of configuration values"> 824 <echo level="info">ant.home = ${ant.home}</echo> 825 <echo level="info">boot.java.home = ${boot.java.home}</echo> 826 <echo level="info">target.java.home = ${target.java.home}</echo> 827 <echo level="info">jtreg.home = ${jtreg.home}</echo> 828 <echo level="info">findbugs.home = ${findbugs.home}</echo> 829 </target> 830 831 <!-- useful debugging targets --> 832 <target name="diagnostics"> 833 <diagnostics/> 834 </target> 835 836 <target name="post-sanity" depends="-def-jtreg,sanity,build" 837 description="perform basic validation after a standard build"> 838 <jtreg 839 dir="make/test" 840 workDir="${build.jtreg.dir}/post-sanity/work" 841 reportDir="${build.jtreg.dir}/post-sanity/report" 842 jdk="${target.java.home}" 843 verbose="summary" 844 failonerror="false" resultproperty="jtreg.post-sanity.result"> 845 </jtreg> 846 847 </target> 848</project> 849 850