langtools/make/build.xml
changeset 4415 7d4f73717fba
parent 4414 e3bfe7b52813
child 4548 bc0d5b3c3b2d
equal deleted inserted replaced
4414:e3bfe7b52813 4415:7d4f73717fba
    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>