make/build.xml

changeset 441
4325b440eb3e
parent 440
243d0be1ba99
child 450
4011f49b4af8
equal deleted inserted replaced
440:243d0be1ba99 441:4325b440eb3e
54 <property name="build.dir" location="build"/> 54 <property name="build.dir" location="build"/>
55 <property name="build.bootstrap.dir" location="${build.dir}/bootstrap"/> 55 <property name="build.bootstrap.dir" location="${build.dir}/bootstrap"/>
56 <property name="build.coverage.dir" location="${build.dir}/coverage"/> 56 <property name="build.coverage.dir" location="${build.dir}/coverage"/>
57 <property name="build.classes.dir" location="${build.dir}/classes"/> 57 <property name="build.classes.dir" location="${build.dir}/classes"/>
58 <property name="build.gensrc.dir" location="${build.dir}/gensrc"/> 58 <property name="build.gensrc.dir" location="${build.dir}/gensrc"/>
59 <property name="build.genstubs.dir" location="${build.dir}/genstubs"/>
59 <property name="build.javadoc.dir" location="${build.dir}/javadoc"/> 60 <property name="build.javadoc.dir" location="${build.dir}/javadoc"/>
60 <property name="build.jtreg.dir" location="${build.dir}/jtreg"/> 61 <property name="build.jtreg.dir" location="${build.dir}/jtreg"/>
61 <property name="build.toolclasses.dir" location="${build.dir}/toolclasses"/> 62 <property name="build.toolclasses.dir" location="${build.dir}/toolclasses"/>
62 <property name="dist.dir" location="dist"/> 63 <property name="dist.dir" location="dist"/>
63 <property name="dist.bin.dir" location="${dist.dir}/bin"/> 64 <property name="dist.bin.dir" location="${dist.dir}/bin"/>
91 <condition property="launcher.java" 92 <condition property="launcher.java"
92 value="${target.java.home}/bin/java" else="java"> 93 value="${target.java.home}/bin/java" else="java">
93 <isset property="target.java.home"/> 94 <isset property="target.java.home"/>
94 </condition> 95 </condition>
95 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>
96 132
97 <!-- Standard target to build deliverables for JDK build. --> 133 <!-- Standard target to build deliverables for JDK build. -->
98 134
99 <target name="build" depends="build-bootstrap-tools,build-all-classes"> 135 <target name="build" depends="build-bootstrap-tools,build-all-classes">
100 <copy todir="${dist.dir}/bootstrap"> 136 <copy todir="${dist.dir}/bootstrap">
106 <mkdir dir="${dist.lib.dir}"/> 142 <mkdir dir="${dist.lib.dir}"/>
107 <jar file="${dist.lib.dir}/classes.jar" basedir="${build.classes.dir}"/> 143 <jar file="${dist.lib.dir}/classes.jar" basedir="${build.classes.dir}"/>
108 <zip file="${dist.lib.dir}/src.zip" basedir="${src.classes.dir}"/> 144 <zip file="${dist.lib.dir}/src.zip" basedir="${src.classes.dir}"/>
109 </target> 145 </target>
110 146
111 <target name="build-bootstrap-tools" depends="build-bootstrap-javac,build-bootstrap-javadoc,build-bootstrap-doclets,build-bootstrap-javah"/> 147 <target name="build-bootstrap-tools"
112 148 depends="build-bootstrap-javac,build-bootstrap-javadoc,build-bootstrap-doclets,build-bootstrap-javah"
113 <target name="build-all-tools" depends="build-javac,build-javadoc,build-doclets,build-javah,build-javap,build-apt"/> 149 />
114 150
115 <target name="build-all-classes" depends="build-bootstrap-javac"> 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">
116 <build-classes includes="${javac.includes} ${javadoc.includes} ${doclets.includes} ${javah.includes} ${javap.includes} ${apt.includes}"/> 156 <build-classes includes="${javac.includes} ${javadoc.includes} ${doclets.includes} ${javah.includes} ${javap.includes} ${apt.includes}"/>
117 </target> 157 </target>
118 158
119 <!-- clean --> 159 <!-- clean -->
120 160
195 <build-bootstrap-classes includes="${javac.includes}"/> 235 <build-bootstrap-classes includes="${javac.includes}"/>
196 <build-bootstrap-jar name="javac" includes="${javac.includes}"/> 236 <build-bootstrap-jar name="javac" includes="${javac.includes}"/>
197 <build-bootstrap-tool name="javac"/> 237 <build-bootstrap-tool name="javac"/>
198 </target> 238 </target>
199 239
200 <target name="build-classes-javac" depends="build-bootstrap-javac"> 240 <target name="build-classes-javac" depends="build-bootstrap-javac,-create-import-jdk-stubs">
201 <build-classes includes="${javac.includes}"/> 241 <build-classes includes="${javac.includes}"/>
202 </target> 242 </target>
203 243
204 <target name="build-javac" depends="build-classes-javac"> 244 <target name="build-javac" depends="build-classes-javac">
205 <build-jar name="javac" includes="${javac.includes}"/> 245 <build-jar name="javac" includes="${javac.includes}"/>
376 <target name="findbugs-apt" depends="build-apt,-def-findbugs"> 416 <target name="findbugs-apt" depends="build-apt,-def-findbugs">
377 <findbugs-tool name="apt"/> 417 <findbugs-tool name="apt"/>
378 </target> 418 </target>
379 419
380 <target name="apt" depends="build-apt,jtreg-apt,findbugs-apt"/> 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>
381 432
382 <!-- Check targets --> 433 <!-- Check targets -->
383 434
384 <target name="-check-boot.java.home" depends="-def-check"> 435 <target name="-check-boot.java.home" depends="-def-check">
385 <check name="bootstrap java" property="boot.java.home" marker="${java.marker}"/> 436 <check name="bootstrap java" property="boot.java.home" marker="${java.marker}"/>
444 </target> 495 </target>
445 496
446 <target name="-def-build-classes" depends="-def-pcompile"> 497 <target name="-def-build-classes" depends="-def-pcompile">
447 <macrodef name="build-classes"> 498 <macrodef name="build-classes">
448 <attribute name="includes"/> 499 <attribute name="includes"/>
449 <attribute name="excludes" default="**/package-info.java"/> 500 <attribute name="excludes" default="${exclude.files} **/package-info.java"/>
450 <attribute name="classes.dir" default="${build.classes.dir}"/> 501 <attribute name="classes.dir" default="${build.classes.dir}"/>
451 <attribute name="gensrc.dir" default="${build.gensrc.dir}"/> 502 <attribute name="gensrc.dir" default="${build.gensrc.dir}"/>
452 <attribute name="bootclasspath" default="${build.bootstrap.dir}/classes"/> 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}"/>
453 <attribute name="java.home" default="${boot.java.home}"/> 507 <attribute name="java.home" default="${boot.java.home}"/>
454 <attribute name="source" default="${javac.source}"/> 508 <attribute name="source" default="${javac.source}"/>
455 <attribute name="target" default="${javac.target}"/> 509 <attribute name="target" default="${javac.target}"/>
456 <attribute name="release" default="${release}"/> 510 <attribute name="release" default="${release}"/>
457 <attribute name="full.version" default="${full.version}"/> 511 <attribute name="full.version" default="${full.version}"/>
458 <sequential> 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}"/>
459 <mkdir dir="@{gensrc.dir}"/> 517 <mkdir dir="@{gensrc.dir}"/>
460 <mkdir dir="@{classes.dir}"/> 518 <mkdir dir="@{classes.dir}"/>
461 <pcompile srcdir="${src.classes.dir}" 519 <pcompile srcdir="${src.classes.dir}"
462 destdir="@{gensrc.dir}" 520 destdir="@{gensrc.dir}"
463 includes="@{includes}"/> 521 includes="@{includes}"/>
477 executable="@{java.home}/bin/javac" 535 executable="@{java.home}/bin/javac"
478 srcdir="${src.classes.dir}:@{gensrc.dir}" 536 srcdir="${src.classes.dir}:@{gensrc.dir}"
479 destdir="@{classes.dir}" 537 destdir="@{classes.dir}"
480 includes="@{includes}" 538 includes="@{includes}"
481 excludes="@{excludes}" 539 excludes="@{excludes}"
482 sourcepath="" 540 sourcepath="@{sourcepath}"
541 classpath="@{classpath}"
483 includeAntRuntime="no" 542 includeAntRuntime="no"
484 source="@{source}" 543 source="@{source}"
485 target="@{target}" 544 target="@{target}"
486 debug="${javac.debug}" 545 debug="${javac.debug}"
487 debuglevel="${javac.debuglevel}"> 546 debuglevel="${javac.debuglevel}">
488 <compilerarg value="-J-Xbootclasspath/p:@{bootclasspath}"/> 547 <compilerarg value="-implicit:none"/>
489 <compilerarg value="-Xbootclasspath/p:@{classes.dir}"/> 548 <compilerarg value="-Xprefer:source"/>
549 <compilerarg value="-J-Xbootclasspath/p:@{javac.bootclasspath}"/>
550 <compilerarg line="@{bootclasspath.opt}"/>
490 <compilerarg line="${javac.no.jdk.warnings}"/> 551 <compilerarg line="${javac.no.jdk.warnings}"/>
491 <compilerarg line="${javac.version.opt}"/> 552 <compilerarg line="${javac.version.opt}"/>
492 <compilerarg line="${javac.lint.opts}"/> 553 <compilerarg line="${javac.lint.opts}"/>
493 </javac> 554 </javac>
494 <copy todir="@{classes.dir}"> 555 <copy todir="@{classes.dir}">
524 <build-classes 585 <build-classes
525 source="${boot.javac.source}" 586 source="${boot.javac.source}"
526 target="${boot.javac.target}" 587 target="${boot.javac.target}"
527 gensrc.dir="${build.bootstrap.dir}/gensrc" 588 gensrc.dir="${build.bootstrap.dir}/gensrc"
528 classes.dir="${build.bootstrap.dir}/classes" 589 classes.dir="${build.bootstrap.dir}/classes"
529 bootclasspath="" 590 javac.bootclasspath=""
591 bootclasspath.opt="-Xbootclasspath/p:${build.bootstrap.dir}/classes"
592 sourcepath=""
530 release="${bootstrap.release}" 593 release="${bootstrap.release}"
531 full.version="${bootstrap.full.version}"/> 594 full.version="${bootstrap.full.version}"
595 excludes="${require.import.jdk.files} **/package-info.java"/>
532 </presetdef> 596 </presetdef>
533 </target> 597 </target>
534 598
535 <target name="-def-pcompile"> 599 <target name="-def-pcompile">
536 <mkdir dir="${build.toolclasses.dir}"/> 600 <mkdir dir="${build.toolclasses.dir}"/>
541 srcdir="${make.tools.dir}/CompileProperties" 605 srcdir="${make.tools.dir}/CompileProperties"
542 destdir="${build.toolclasses.dir}/" 606 destdir="${build.toolclasses.dir}/"
543 classpath="${ant.home}/lib/ant.jar"/> 607 classpath="${ant.home}/lib/ant.jar"/>
544 <taskdef name="pcompile" 608 <taskdef name="pcompile"
545 classname="CompilePropertiesTask" 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"
546 classpath="${build.toolclasses.dir}/"/> 624 classpath="${build.toolclasses.dir}/"/>
547 </target> 625 </target>
548 626
549 <target name="-def-javadoc-tool" depends="-check-target.java.home"> 627 <target name="-def-javadoc-tool" depends="-check-target.java.home">
550 <macrodef name="javadoc-tool"> 628 <macrodef name="javadoc-tool">
705 </macrodef> 783 </macrodef>
706 </target> 784 </target>
707 785
708 <!-- standard JDK target --> 786 <!-- standard JDK target -->
709 <target name="sanity" 787 <target name="sanity"
710 description="display settings of congiguration values"> 788 description="display settings of configuration values">
711 <echo level="info">ant.home = ${ant.home}</echo> 789 <echo level="info">ant.home = ${ant.home}</echo>
712 <echo level="info">boot.java.home = ${boot.java.home}</echo> 790 <echo level="info">boot.java.home = ${boot.java.home}</echo>
713 <echo level="info">target.java.home = ${target.java.home}</echo> 791 <echo level="info">target.java.home = ${target.java.home}</echo>
714 <echo level="info">jtreg.home = ${jtreg.home}</echo> 792 <echo level="info">jtreg.home = ${jtreg.home}</echo>
715 <echo level="info">findbugs.home = ${findbugs.home}</echo> 793 <echo level="info">findbugs.home = ${findbugs.home}</echo>

mercurial