build.xml revision 440:4325b440eb3e
1<?xml version="1.0" encoding="UTF-8"?> 2<!-- 3 Copyright 2007-2009 Sun Microsystems, Inc. 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. Sun designates this 9 particular file as subject to the "Classpath" exception as provided 10 by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 23 CA 95054 USA or visit www.sun.com if you need additional information or 24 have any 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 <condition property="javac.sourcepath" value="${build.genstubs.dir}" else=""> 111 <isset property="import.jdk.src.dir"/> 112 </condition> 113 114 <property name="javac.classpath" value=""/> 115 116 <condition property="javac.bootclasspath.opt" 117 value="-Xbootclasspath:${build.classes.dir}:${import.jdk.jar}" 118 else="-Xbootclasspath/p:${build.classes.dir}"> 119 <isset property="import.jdk.jar"/> 120 </condition> 121 122 <condition property="exclude.files" value="" else="${require.import.jdk.files}"> 123 <isset property="import.jdk"/> 124 </condition> 125 126 <!-- for debugging --> 127 <target name="check-import.jdk"> 128 <echo message="import.jdk: ${import.jdk}"/> 129 <echo message="import.jdk.jar: ${import.jdk.jar}"/> 130 <echo message="import.jdk.src.dir: ${import.jdk.src.dir}"/> 131 </target> 132 133 <!-- Standard target to build deliverables for JDK build. --> 134 135 <target name="build" depends="build-bootstrap-tools,build-all-classes"> 136 <copy todir="${dist.dir}/bootstrap"> 137 <fileset dir="${build.bootstrap.dir}" includes="bin/,lib/"/> 138 </copy> 139 <chmod dir="${dist.dir}/bootstrap/bin" perm="ugo+rx"> 140 <include name="*"/> 141 </chmod> 142 <mkdir dir="${dist.lib.dir}"/> 143 <jar file="${dist.lib.dir}/classes.jar" basedir="${build.classes.dir}"/> 144 <zip file="${dist.lib.dir}/src.zip" basedir="${src.classes.dir}"/> 145 </target> 146 147 <target name="build-bootstrap-tools" 148 depends="build-bootstrap-javac,build-bootstrap-javadoc,build-bootstrap-doclets,build-bootstrap-javah" 149 /> 150 151 <target name="build-all-tools" 152 depends="build-javac,build-javadoc,build-doclets,build-javah,build-javap,build-apt" 153 /> 154 155 <target name="build-all-classes" depends="build-bootstrap-javac,-create-import-jdk-stubs"> 156 <build-classes includes="${javac.includes} ${javadoc.includes} ${doclets.includes} ${javah.includes} ${javap.includes} ${apt.includes}"/> 157 </target> 158 159 <!-- clean --> 160 161 <target name="clean" description="Delete all generated files"> 162 <delete dir="${build.dir}"/> 163 <delete dir="${dist.dir}"/> 164 </target> 165 166 <!-- Additional targets for running tools on the build --> 167 168 <target name="jtreg" depends="build-all-tools,-def-jtreg"> 169 <jtreg-tool name="all" tests="${jtreg.tests}"/> 170 </target> 171 172 <target name="findbugs" depends="-def-findbugs,build-all-tools"> 173 <property name="findbugs.reportLevel" value="medium"/> 174 <mkdir dir="${dist.findbugs.dir}"/> 175 <findbugs 176 home="${findbugs.home}" 177 projectName="JDK langtools ${full.version}" 178 output="xml" 179 outputFile="${dist.findbugs.dir}/findbugs.xml" 180 reportLevel="${findbugs.reportLevel}" 181 failOnError="false" 182 errorProperty="findbugs.all.errors" 183 warningsProperty="findbugs.all.warnings" 184 jvmargs="-Xmx512M"> 185 <class location="${build.classes.dir}"/> 186 <sourcePath> 187 <pathelement location="${src.classes.dir}"/> 188 </sourcePath> 189 </findbugs> 190 <exec executable="sh"> 191 <arg value="${findbugs.home}/bin/convertXmlToText"/> 192 <arg value="-longBugCodes"/> 193 <arg value="-html:${findbugs.home}/src/xsl/fancy.xsl"/> 194 <arg value="${dist.findbugs.dir}/findbugs.xml"/> 195 <redirector output="${dist.findbugs.dir}/findbugs.html"/> 196 </exec> 197 </target> 198 199 <target name="coverage" depends="-def-cobertura,build-all-classes,instrument-classes,jtreg,coverage-report"/> 200 201 <target name="instrument-classes" depends="-def-cobertura"> 202 <!-- only define the following property when we want coverage info --> 203 <path id="coverage.classpath"> 204 <pathelement location="${build.coverage.dir}/classes"/> 205 <path refid="cobertura.classpath"/> 206 </path> 207 <property name="coverage.options" value="-Dnet.sourceforge.cobertura.datafile=${build.coverage.dir}/cobertura.ser"/> 208 <property name="coverage.classpath" refid="coverage.classpath"/> 209 <mkdir dir="${build.coverage.dir}/classes"/> 210 <delete file="${build.coverage.dir}/cobertura.ser"/> 211 <cobertura-instrument todir="${build.coverage.dir}/classes" 212 datafile="${build.coverage.dir}/cobertura.ser"> 213 <fileset dir="${build.classes.dir}" 214 includes="**/*.class" excludes="**/resources/*.class"/> 215 </cobertura-instrument> 216 </target> 217 218 <target name="coverage-report" depends="-def-cobertura"> 219 <mkdir dir="${dist.coverage.dir}"/> 220 <cobertura-report 221 srcdir="${src.classes.dir}" 222 destdir="${dist.coverage.dir}" 223 datafile="${build.coverage.dir}/cobertura.ser"/> 224 <cobertura-report 225 format="xml" 226 srcdir="${src.classes.dir}" 227 destdir="${dist.coverage.dir}" 228 datafile="${build.coverage.dir}/cobertura.ser"/> 229 </target> 230 231 <!-- javac targets --> 232 233 <target name="build-bootstrap-javac" 234 depends="-def-build-bootstrap-classes,-def-build-bootstrap-jar,-def-build-bootstrap-tool"> 235 <build-bootstrap-classes includes="${javac.includes}"/> 236 <build-bootstrap-jar name="javac" includes="${javac.includes}"/> 237 <build-bootstrap-tool name="javac"/> 238 </target> 239 240 <target name="build-classes-javac" depends="build-bootstrap-javac,-create-import-jdk-stubs"> 241 <build-classes includes="${javac.includes}"/> 242 </target> 243 244 <target name="build-javac" depends="build-classes-javac"> 245 <build-jar name="javac" includes="${javac.includes}"/> 246 <build-tool name="javac"/> 247 </target> 248 249 <target name="javadoc-javac" depends="build-javac,-def-javadoc-tool"> 250 <javadoc-tool name="javac" includes="${javac.includes}" options="${javadoc.jls3.option}"/> 251 </target> 252 253 <target name="jtreg-javac" depends="build-javac,build-javap,-def-jtreg"> 254 <jtreg-tool name="javac" tests="${javac.tests}"/> 255 </target> 256 257 <target name="findbugs-javac" depends="build-javac,-def-findbugs"> 258 <findbugs-tool name="javac"/> 259 </target> 260 261 <target name="javac" depends="build-javac,jtreg-javac,findbugs-javac"/> 262 263 <!-- javadoc targets --> 264 265 <target name="build-bootstrap-javadoc" depends="build-bootstrap-javac"> 266 <build-bootstrap-classes includes="${javadoc.includes}"/> 267 <build-bootstrap-jar name="javadoc" includes="${javadoc.includes}" 268 jarclasspath="javac.jar doclets.jar"/> 269 <build-bootstrap-tool name="javadoc"/> 270 </target> 271 272 <target name="build-classes-javadoc" depends="build-classes-javac"> 273 <build-classes includes="${javadoc.includes}"/> 274 </target> 275 276 <target name="build-javadoc" depends="build-javac,build-classes-javadoc"> 277 <build-jar name="javadoc" includes="${javadoc.includes}" 278 jarclasspath="javac.jar doclets.jar"/> 279 <build-tool name="javadoc"/> 280 </target> 281 282 <target name="javadoc-javadoc" depends="build-javadoc,-def-javadoc-tool"> 283 <javadoc-tool name="javadoc" includes="${javadoc.includes}"/> 284 </target> 285 286 <target name="jtreg-javadoc" depends="build-javadoc,-def-jtreg"> 287 <jtreg-tool name="javadoc" tests="${javadoc.tests}"/> 288 </target> 289 290 <target name="findbugs-javadoc" depends="build-javadoc,-def-findbugs"> 291 <findbugs-tool name="javadoc"/> 292 </target> 293 294 <target name="javadoc" depends="build-javadoc,jtreg-javadoc,findbugs-javadoc"/> 295 296 <!-- doclets targets --> 297 298 <target name="build-bootstrap-doclets" depends="build-bootstrap-javadoc,-def-build-bootstrap-jar"> 299 <build-bootstrap-classes includes="${doclets.includes}"/> 300 <build-bootstrap-jar name="doclets" includes="${doclets.includes}" 301 jarmainclass="com.sun.tools.javadoc.Main" 302 jarclasspath="javadoc.jar"/> 303 </target> 304 305 <target name="build-classes-doclets" depends="build-classes-javadoc"> 306 <build-classes includes="${doclets.includes}"/> 307 </target> 308 309 <target name="build-doclets" depends="build-javadoc,build-classes-doclets"> 310 <!-- just jar, no bin for doclets --> 311 <build-jar name="doclets" includes="${doclets.includes}" jarclasspath="javadoc.jar"/> 312 </target> 313 314 <!-- (no javadoc for doclets) --> 315 316 <target name="jtreg-doclets" depends="build-doclets,-def-jtreg"> 317 <jtreg-tool name="doclets" tests="${doclets.tests}"/> 318 </target> 319 320 <target name="findbugs-doclets" depends="build-doclets,-def-findbugs"> 321 <findbugs-tool name="doclets"/> 322 </target> 323 324 <target name="doclets" depends="build-doclets,jtreg-doclets,findbugs-doclets"/> 325 326 <!-- javah targets --> 327 328 <target name="build-bootstrap-javah" depends="build-bootstrap-javadoc"> 329 <build-bootstrap-classes includes="${javah.includes}"/> 330 <build-bootstrap-jar name="javah" includes="${javah.includes}" 331 jarclasspath="javadoc.jar doclets.jar javac.jar"/> 332 <build-bootstrap-tool name="javah"/> 333 </target> 334 335 <target name="build-javah" depends="build-javac,build-classes-javah"> 336 <build-jar name="javah" includes="${javah.includes}" jarclasspath="javac.jar"/> 337 <build-tool name="javah"/> 338 </target> 339 340 <target name="build-classes-javah" depends="build-classes-javadoc"> 341 <build-classes includes="${javah.includes}"/> 342 </target> 343 344 <!-- (no javadoc for javah) --> 345 346 <target name="jtreg-javah" depends="build-javah,-def-jtreg"> 347 <jtreg-tool name="javah" tests="${javah.tests}"/> 348 </target> 349 350 <target name="findbugs-javah" depends="build-javah,-def-findbugs"> 351 <findbugs-tool name="javah"/> 352 </target> 353 354 <target name="javah" depends="build-javah,jtreg-javah,findbugs-javah"/> 355 356 <!-- javap targets --> 357 358 <target name="build-bootstrap-javap" 359 depends="-def-build-bootstrap-classes,-def-build-bootstrap-jar,-def-build-bootstrap-tool"> 360 <build-bootstrap-classes includes="${javap.includes}"/> 361 <build-bootstrap-jar name="javap" includes="${javap.includes}" 362 jarmainclass="sun.tools.javap.Main"/> 363 <build-bootstrap-tool name="javap"/> 364 </target> 365 366 <target name="build-classes-javap" depends="build-classes-javac"> 367 <build-classes includes="${javap.includes}"/> 368 </target> 369 370 <target name="build-javap" depends="build-javac,build-classes-javap"> 371 <build-jar name="javap" includes="${javap.includes}" 372 jarmainclass="com.sun.tools.javap.Main" 373 jarclasspath="javac.jar"/> 374 <build-tool name="javap"/> 375 </target> 376 377 <!-- (no javadoc for javap) --> 378 379 <target name="jtreg-javap" depends="build-javap,-def-jtreg"> 380 <jtreg-tool name="javap" tests="${javap.tests}"/> 381 </target> 382 383 <target name="findbugs-javap" depends="build-javap,-def-findbugs"> 384 <findbugs-tool name="javap"/> 385 </target> 386 387 <target name="javap" depends="build-javap,jtreg-javap,findbugs-javap"/> 388 389 <!-- apt targets --> 390 391 <target name="build-bootstrap-apt" depends="build-bootstrap-javac"> 392 <build-bootstrap-classes includes="${apt.includes}"/> 393 <build-bootstrap-jar name="apt" includes="${apt.includes}" 394 jarclasspath="javac.jar"/> 395 <build-bootstrap-tool name="apt"/> 396 </target> 397 398 <target name="build-apt" depends="build-javac,build-classes-apt"> 399 <build-jar name="apt" includes="${apt.includes}" jarclasspath="javac.jar"/> 400 <build-tool name="apt"/> 401 </target> 402 403 <target name="build-classes-apt" depends="build-classes-javac"> 404 <build-classes includes="${apt.includes}"/> 405 </target> 406 407 <target name="javadoc-apt" depends="build-apt,-def-javadoc-tool"> 408 <javadoc-tool name="apt" includes="${apt.includes}"/> 409 </target> 410 411 412 <target name="jtreg-apt" depends="build-apt,-def-jtreg"> 413 <jtreg-tool name="apt" tests="${apt.tests}"/> 414 </target> 415 416 <target name="findbugs-apt" depends="build-apt,-def-findbugs"> 417 <findbugs-tool name="apt"/> 418 </target> 419 420 <target name="apt" depends="build-apt,jtreg-apt,findbugs-apt"/> 421 422 <!-- Create import JDK stubs --> 423 424 <target name="-create-import-jdk-stubs" depends="-def-genstubs" if="import.jdk.src.dir"> 425 <mkdir dir="${build.genstubs.dir}"/> 426 <genstubs 427 srcdir="${import.jdk.src.dir}" destdir="${build.genstubs.dir}" 428 includes="${import.jdk.stub.files}" 429 fork="true" classpath="${build.toolclasses.dir}:${build.bootstrap.dir}/classes:${ant.home}/lib/ant.jar" 430 /> 431 </target> 432 433 <!-- Check targets --> 434 435 <target name="-check-boot.java.home" depends="-def-check"> 436 <check name="bootstrap java" property="boot.java.home" marker="${java.marker}"/> 437 </target> 438 439 <target name="-check-target.java.home" depends="-def-check"> 440 <check name="target java" property="target.java.home" marker="${java.marker}"/> 441 </target> 442 443 <target name="-check-cobertura.home" depends="-def-check"> 444 <check name="cobertura" property="cobertura.home" marker="cobertura.jar"/> 445 </target> 446 447 <target name="-check-findbugs.home" depends="-def-check"> 448 <check name="findbugs" property="findbugs.home" marker="lib/findbugs.jar"/> 449 </target> 450 451 <target name="-check-jtreg.home" depends="-def-check"> 452 <check name="jtreg" property="jtreg.home" marker="lib/jtreg.jar"/> 453 </target> 454 455 <!-- Ant macro and preset defs --> 456 457 <target name="-def-build-tool"> 458 <macrodef name="build-tool"> 459 <attribute name="name"/> 460 <attribute name="bin.dir" default="${dist.bin.dir}"/> 461 <attribute name="java" default="${launcher.java}"/> 462 <sequential> 463 <mkdir dir="@{bin.dir}"/> 464 <copy file="${src.bin.dir}/launcher.sh-template" tofile="@{bin.dir}/@{name}"> 465 <filterset begintoken="#" endtoken="#"> 466 <filter token="PROGRAM" value="@{name}"/> 467 <filter token="TARGET_JAVA" value="@{java}"/> 468 </filterset> 469 </copy> 470 <chmod file="@{bin.dir}/@{name}" perm="ugo+rx"/> 471 </sequential> 472 </macrodef> 473 </target> 474 475 <target name="-def-build-jar"> 476 <macrodef name="build-jar"> 477 <attribute name="name"/> 478 <attribute name="includes"/> 479 <attribute name="classes.dir" default="${build.classes.dir}"/> 480 <attribute name="lib.dir" default="${dist.lib.dir}"/> 481 <attribute name="jarmainclass" default="com.sun.tools.@{name}.Main"/> 482 <attribute name="jarclasspath" default=""/> 483 <sequential> 484 <mkdir dir="@{lib.dir}"/> 485 <jar destfile="@{lib.dir}/@{name}.jar" 486 basedir="@{classes.dir}" 487 includes="@{includes}"> 488 <manifest> 489 <attribute name="Main-Class" value="@{jarmainclass}"/> 490 <attribute name="Class-Path" value="@{jarclasspath}"/> 491 </manifest> 492 </jar> 493 </sequential> 494 </macrodef> 495 </target> 496 497 <target name="-def-build-classes" depends="-def-pcompile"> 498 <macrodef name="build-classes"> 499 <attribute name="includes"/> 500 <attribute name="excludes" default="${exclude.files} **/package-info.java"/> 501 <attribute name="classes.dir" default="${build.classes.dir}"/> 502 <attribute name="gensrc.dir" default="${build.gensrc.dir}"/> 503 <attribute name="javac.bootclasspath" default="${build.bootstrap.dir}/classes"/> 504 <attribute name="bootclasspath.opt" default="${javac.bootclasspath.opt}"/> 505 <attribute name="classpath" default="${javac.classpath}"/> 506 <attribute name="sourcepath" default="${javac.sourcepath}"/> 507 <attribute name="java.home" default="${boot.java.home}"/> 508 <attribute name="source" default="${javac.source}"/> 509 <attribute name="target" default="${javac.target}"/> 510 <attribute name="release" default="${release}"/> 511 <attribute name="full.version" default="${full.version}"/> 512 <sequential> 513 <echo level="verbose" message="build-classes: excludes=@{excludes}"/> 514 <echo level="verbose" message="build-classes: bootclasspath.opt=@{bootclasspath.opt}"/> 515 <echo level="verbose" message="build-classes: classpath=@{classpath}"/> 516 <echo level="verbose" message="build-classes: sourcepath=@{sourcepath}"/> 517 <mkdir dir="@{gensrc.dir}"/> 518 <mkdir dir="@{classes.dir}"/> 519 <pcompile srcdir="${src.classes.dir}" 520 destdir="@{gensrc.dir}" 521 includes="@{includes}"/> 522 <copy todir="@{gensrc.dir}"> 523 <fileset dir="${src.classes.dir}" includes="@{includes}"/> 524 <globmapper from="*.properties-template" to="*.properties"/> 525 <filterset begintoken="$(" endtoken=")"> 526 <filter token="JDK_VERSION" value="${jdk.version}"/> 527 <filter token="RELEASE" value="@{release}"/> 528 <filter token="FULL_VERSION" value="@{full.version}"/> 529 </filterset> 530 </copy> 531 <pcompile srcdir="@{gensrc.dir}" 532 destdir="@{gensrc.dir}" 533 includes="**/*.properties"/> 534 <javac fork="true" 535 executable="@{java.home}/bin/javac" 536 srcdir="${src.classes.dir}:@{gensrc.dir}" 537 destdir="@{classes.dir}" 538 includes="@{includes}" 539 excludes="@{excludes}" 540 sourcepath="@{sourcepath}" 541 classpath="@{classpath}" 542 includeAntRuntime="no" 543 source="@{source}" 544 target="@{target}" 545 debug="${javac.debug}" 546 debuglevel="${javac.debuglevel}"> 547 <compilerarg value="-implicit:none"/> 548 <compilerarg value="-Xprefer:source"/> 549 <compilerarg value="-J-Xbootclasspath/p:@{javac.bootclasspath}"/> 550 <compilerarg line="@{bootclasspath.opt}"/> 551 <compilerarg line="${javac.no.jdk.warnings}"/> 552 <compilerarg line="${javac.version.opt}"/> 553 <compilerarg line="${javac.lint.opts}"/> 554 </javac> 555 <copy todir="@{classes.dir}"> 556 <fileset dir="${src.classes.dir}" includes="@{includes}"> 557 <exclude name="**/*.java"/> 558 <exclude name="**/*.properties"/> 559 <exclude name="**/*-template"/> 560 <exclude name="**/package.html"/> 561 </fileset> 562 </copy> 563 </sequential> 564 </macrodef> 565 </target> 566 567 <target name="-def-build-bootstrap-tool" depends="-check-boot.java.home,-def-build-tool"> 568 <presetdef name="build-bootstrap-tool"> 569 <build-tool 570 bin.dir="${build.bootstrap.dir}/bin" 571 java="${boot.java}"/> 572 </presetdef> 573 </target> 574 575 <target name="-def-build-bootstrap-jar" depends="-def-build-jar"> 576 <presetdef name="build-bootstrap-jar"> 577 <build-jar 578 classes.dir="${build.bootstrap.dir}/classes" 579 lib.dir="${build.bootstrap.dir}/lib"/> 580 </presetdef> 581 </target> 582 583 <target name="-def-build-bootstrap-classes" depends="-def-build-classes"> 584 <presetdef name="build-bootstrap-classes"> 585 <build-classes 586 source="${boot.javac.source}" 587 target="${boot.javac.target}" 588 gensrc.dir="${build.bootstrap.dir}/gensrc" 589 classes.dir="${build.bootstrap.dir}/classes" 590 javac.bootclasspath="" 591 bootclasspath.opt="-Xbootclasspath/p:${build.bootstrap.dir}/classes" 592 sourcepath="" 593 release="${bootstrap.release}" 594 full.version="${bootstrap.full.version}" 595 excludes="${require.import.jdk.files} **/package-info.java"/> 596 </presetdef> 597 </target> 598 599 <target name="-def-pcompile"> 600 <mkdir dir="${build.toolclasses.dir}"/> 601 <javac fork="true" 602 source="${boot.javac.source}" 603 target="${boot.javac.target}" 604 executable="${boot.java.home}/bin/javac" 605 srcdir="${make.tools.dir}/CompileProperties" 606 destdir="${build.toolclasses.dir}/" 607 classpath="${ant.home}/lib/ant.jar"/> 608 <taskdef name="pcompile" 609 classname="CompilePropertiesTask" 610 classpath="${build.toolclasses.dir}/"/> 611 </target> 612 613 <target name="-def-genstubs" depends="build-bootstrap-javac"> 614 <mkdir dir="${build.toolclasses.dir}"/> 615 <javac fork="true" 616 source="${boot.javac.source}" 617 target="${boot.javac.target}" 618 executable="${boot.java.home}/bin/javac" 619 srcdir="${make.tools.dir}/GenStubs" 620 destdir="${build.toolclasses.dir}/" 621 classpath="${build.bootstrap.dir}/classes:${ant.home}/lib/ant.jar"/> 622 <taskdef name="genstubs" 623 classname="GenStubs$$Ant" 624 classpath="${build.toolclasses.dir}/"/> 625 </target> 626 627 <target name="-def-javadoc-tool" depends="-check-target.java.home"> 628 <macrodef name="javadoc-tool"> 629 <attribute name="name"/> 630 <attribute name="includes"/> 631 <attribute name="options" default=""/> 632 <attribute name="source" default="1.5"/> <!-- FIXME --> 633 <sequential> 634 <property name="javadoc.options" value=""/> <!-- default, can be overridden per user or per project --> 635 <!-- Note: even with this default value, includes 636 from src.classes.dir get javadoc'd; see packageset below --> 637 <property name="javadoc.packagenames" value="none"/> <!-- default, can be overridden per user or per project --> 638 <javadoc 639 executable="${target.java.home}/bin/javadoc" 640 destdir="${build.javadoc.dir}/@{name}" 641 source="@{source}" 642 windowtitle="UNOFFICIAL" 643 failonerror="true" 644 use="true" 645 author="false" 646 version="false" 647 packagenames="${javadoc.packagenames}" > 648 <header><![CDATA[<strong>Unofficial Javadoc</strong> generated from developer sources for preview purposes only]]></header> 649 <arg line="@{options}"/> 650 <bootclasspath> 651 <path location="${build.classes.dir}"/> 652 <path location="${target.java.home}/jre/lib/rt.jar"/> 653 </bootclasspath> 654 <sourcepath> 655 <pathelement location="${src.classes.dir}"/> 656 </sourcepath> 657 <!-- XXX just <fileset> (restricted further to **/*.java) and no <packageset> --> 658 <!-- means that {@link some.package} will not work, which is no good. --> 659 <!-- (It correctly skips excluded single classes, but not if packageset is also included, --> 660 <!-- which also causes duplicates in the class index for included files.) --> 661 <packageset dir="${src.classes.dir}" includes="@{includes}"> 662 <or> 663 <filename name="java/"/> 664 <filename name="javax/"/> 665 <filename name="com/sun/javadoc/"/> 666 <filename name="com/sun/mirror/"/> 667 <filename name="com/sun/source/"/> 668 </or> 669 </packageset> 670 </javadoc> 671 </sequential> 672 </macrodef> 673 </target> 674 675 <target name="-def-jtreg" unless="jtreg.defined" depends="-check-jtreg.home,-check-target.java.home"> 676 <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant"> 677 <classpath> 678 <pathelement location="${jtreg.home}/lib/jtreg.jar"/> 679 <pathelement location="${jtreg.home}/lib/javatest.jar"/> 680 </classpath> 681 </taskdef> 682 <macrodef name="jtreg-tool"> 683 <attribute name="name"/> 684 <attribute name="tests"/> 685 <attribute name="jdk" default="${target.java.home}"/> 686 <attribute name="samevm" default="true"/> 687 <attribute name="verbose" default="summary"/> 688 <attribute name="options" default=""/> 689 <attribute name="keywords" default="-keywords:!ignore"/> 690 <attribute name="jpda.jvmargs" default=""/> 691 <sequential> 692 <property name="coverage.options" value=""/> <!-- default --> 693 <property name="coverage.classpath" value=""/> <!-- default --> 694 <jtreg 695 dir="${test.dir}" 696 workDir="${build.jtreg.dir}/@{name}/work" 697 reportDir="${build.jtreg.dir}/@{name}/report" 698 jdk="@{jdk}" 699 samevm="@{samevm}" verbose="@{verbose}" 700 failonerror="false" resultproperty="jtreg.@{name}.result" 701 javacoptions="-g" 702 vmoptions="${coverage.options} -Xbootclasspath/p:${coverage.classpath}:${build.classes.dir} @{jpda.jvmargs}"> 703 <arg line="@{keywords}"/> 704 <arg line="@{options}"/> 705 <arg line="@{tests}"/> 706 </jtreg> 707 <!-- the next two properties are for convenience, when only 708 a single instance of jtreg will be invoked. --> 709 <condition property="jtreg.passed"> 710 <equals arg1="${jtreg.@{name}.result}" arg2="0"/> 711 </condition> 712 <property name="jtreg.report" value="${build.jtreg.dir}/@{name}/report"/> 713 </sequential> 714 </macrodef> 715 <property name="jtreg.defined" value="true"/> 716 </target> 717 718 <target name="-def-cobertura" depends="-check-cobertura.home"> 719 <path id="cobertura.classpath"> 720 <fileset dir="${cobertura.home}"> 721 <include name="cobertura.jar"/> 722 <include name="lib/**/*.jar"/> 723 </fileset> 724 </path> 725 <taskdef classpathref="cobertura.classpath" resource="tasks.properties"/> 726 </target> 727 728 <target name="-def-findbugs" unless="findbugs.defined" depends="-check-findbugs.home"> 729 <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"> 730 <classpath> 731 <pathelement location="${findbugs.home}/lib/findbugs.jar"/> 732 </classpath> 733 </taskdef> 734 <macrodef name="findbugs-tool"> 735 <attribute name="name"/> 736 <attribute name="output" default="emacs"/> 737 <attribute name="outputFile" default=""/> 738 <attribute name="reportLevel" default="high"/> 739 <sequential> 740 <findbugs 741 home="${findbugs.home}" 742 output="@{output}" 743 outputFile="@{outputFile}" 744 reportLevel="@{reportLevel}" 745 failOnError="false" 746 errorProperty="findbugs.@{name}.errors" 747 warningsProperty="findbugs.@{name}.warnings" 748 jvmargs="-Xmx512M" > 749 <class location="${dist.dir}/lib/@{name}.jar"/> 750 <auxClasspath> 751 <pathelement location="${build.classes.dir}"/> 752 </auxClasspath> 753 <sourcePath> 754 <pathelement location="${src.classes.dir}"/> 755 </sourcePath> 756 </findbugs> 757 </sequential> 758 </macrodef> 759 <property name="findbugs.defined" value="true"/> 760 </target> 761 762 <target name="-def-check"> 763 <macrodef name="check"> 764 <attribute name="name"/> 765 <attribute name="property"/> 766 <attribute name="marker"/> 767 <sequential> 768 <fail message="Cannot locate @{name}: please set @{property} to its location"> 769 <condition> 770 <not> 771 <isset property="@{property}"/> 772 </not> 773 </condition> 774 </fail> 775 <fail message="@{name} is not installed in ${@{property}}"> 776 <condition> 777 <not> 778 <available file="${@{property}}/@{marker}"/> 779 </not> 780 </condition> 781 </fail> 782 </sequential> 783 </macrodef> 784 </target> 785 786 <!-- standard JDK target --> 787 <target name="sanity" 788 description="display settings of configuration values"> 789 <echo level="info">ant.home = ${ant.home}</echo> 790 <echo level="info">boot.java.home = ${boot.java.home}</echo> 791 <echo level="info">target.java.home = ${target.java.home}</echo> 792 <echo level="info">jtreg.home = ${jtreg.home}</echo> 793 <echo level="info">findbugs.home = ${findbugs.home}</echo> 794 </target> 795 796 <!-- useful debugging targets --> 797 <target name="diagnostics"> 798 <diagnostics/> 799 </target> 800 801 <target name="post-sanity" depends="-def-jtreg,sanity,build" 802 description="perform basic validation after a standard build"> 803 <jtreg 804 dir="make/test" 805 workDir="${build.jtreg.dir}/post-sanity/work" 806 reportDir="${build.jtreg.dir}/post-sanity/report" 807 jdk="${target.java.home}" 808 verbose="summary" 809 failonerror="false" resultproperty="jtreg.post-sanity.result"> 810 </jtreg> 811 812 </target> 813</project> 814 815