build.xml
author Jaroslav Tulach <jtulach@netbeans.org>
Fri, 19 Jun 2009 21:46:14 +0200
changeset 1246 293b390ba471
parent 1245 1f8950ac34bf
child 1247 b4727fd16c4b
permissions -rw-r--r--
Cleaning base from references to applet. All eliminated except RepaintManager which has been enriched in 1.6 with a public method that takes Applet as parameter.
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project name="modularize" default="all" basedir=".">
     3     <description>Scripts to build JDK Java sources in modularized way</description>
     4 
     5     <target name="all">
     6         <antcall target="base"/>
     7         <antcall target="corba"/>
     8     </target>
     9 
    10     <!-- basic parameters -->
    11     <property name="plugs" value="../../plugs"/>
    12     <fail message="You need to provide location of plugs">
    13         <condition><not><available file="${plugs}/jre/lib/rt-closed.jar"/></not></condition>
    14     </fail>
    15     <pathconvert property="gensrc">
    16         <path><dirset dir="../build"><include name="*/gensrc"/></dirset></path>
    17     </pathconvert>
    18     <fail message="You need to provide location of JDK's generated sources via -Dgensrc=...">
    19         <condition><not><available file="${gensrc}"/></not></condition>
    20     </fail>
    21 
    22     <target name="merge-sources"
    23         description="Copies sources from all over the JDK tree into one place"
    24     >
    25         <mkdir dir="build/sources"/>
    26         <copy todir="build/sources">
    27             <fileset dir="${gensrc}"/>
    28             <fileset dir="${gensrc}/../impsrc">
    29                 <exclude name="org/relaxng/datatype/**"/>
    30             </fileset>
    31             <fileset dir="../jaxp/src/share/classes/">
    32                 <exclude name="org/relaxng/datatype/**"/>
    33             </fileset>
    34             <fileset dir="../langtools/src/share/classes/">
    35                 <exclude name="org/relaxng/datatype/**"/>
    36             </fileset>
    37             <fileset dir="../jaxws/src/share/classes/">
    38                 <exclude name="org/relaxng/datatype/**"/>
    39             </fileset>
    40             <fileset dir="../corba/src/share/classes/"/>
    41         </copy>
    42     </target>
    43 
    44     <path id="src.path">
    45         <pathelement location="src/share/classes"/>
    46         <pathelement location="build/sources"/>
    47         <pathelement location="src/solaris/classes"/>
    48 <!--        <pathelement location="src/windows/classes"/> -->
    49     </path>
    50     <property name="build.dir" location="build/modularize"/>
    51 
    52     <!-- this is the core of the separation - definition
    53       of what classes belong into what compilation group.
    54     -->
    55     <selector id="applet">
    56         <and>
    57             <or>
    58                 <filename name="java/beans/AppletInitializer*"/>
    59                 <filename name="java/applet/**"/>
    60                 <filename name="javax/swing/JApplet*"/>
    61                 <filename name="sun/applet/**"/>
    62                 <filename name="META-INF/services/sun.beans.AppletProxy"/>
    63                 <!-- either this or include AudioClip in client package
    64                 <filename name="sun/net/www/content/audio/**"/>
    65                 -->
    66             </or>
    67             <none>
    68                 <filename name="java/applet/AudioClip*"/>
    69                 <filename name="sun/applet/AppletAudioClip*"/>
    70             </none>
    71         </and>
    72     </selector>
    73     <selector id="corba">
    74         <or>
    75             <filename name="org/omg/**"/>
    76             <filename name="com/sun/corba/**"/>
    77             <filename name="com/sun/jmx/remote/internal/ProxyInputStream.java"/>
    78             <filename name="com/sun/jndi/cosnaming/**"/>
    79             <filename name="com/sun/jndi/toolkit/corba/**"/>
    80             <filename name="com/sun/jndi/url/iiop/**"/>
    81             <filename name="com/sun/jndi/url/iiopname/**"/>
    82             <filename name="com/sun/jndi/url/corbaname/**"/>
    83             <filename name="javax/management/remote/rmi/RMIConnector.java"/>
    84             <filename name="javax/management/remote/rmi/RMIConnectorServer.java"/>
    85             <filename name="javax/management/remote/rmi/RMIServerImpl.java"/>
    86             <filename name="javax/management/remote/rmi/RMIIIOPServerImpl.java"/>
    87             <filename name="javax/management/remote/rmi/RMIConnectionImpl.java"/>
    88             <filename name="javax/management/remote/rmi/RMIJRMPServerImpl.java"/>
    89             <filename name="javax/rmi/PortableRemoteObject.java"/>
    90             <filename name="com/sun/jmx/remote/security/FileLoginModule.java"/>
    91             <filename name="com/sun/jmx/remote/security/JMXPluggableAuthenticator.java"/>
    92             <filename name="com/sun/jmx/remote/protocol/rmi/ClientProvider.java"/>
    93             <filename name="com/sun/jmx/remote/protocol/rmi/ClientProvider.java"/>
    94             <filename name="com/sun/jmx/remote/protocol/iiop/ClientProvider.java"/>
    95             <filename name="com/sun/jmx/remote/protocol/iiop/ServerProvider.java"/>
    96             <filename name="com/sun/jmx/remote/protocol/rmi/ServerProvider.java"/>
    97             <filename name="com/sun/jndi/url/iiop/iiopURLContextFactory.java"/>
    98             <filename name="sun/rmi/rmic/RMIGenerator.java"/>
    99             <filename name="sun/management/jmxremote/ConnectorBootstrap.java"/>
   100             <filename name="sun/management/Agent.java"/>
   101             <filename name="sun/management/snmp/AdaptorBootstrap.java"/>
   102             <filename name="javax/rmi/CORBA/**"/>
   103             <filename name="com/sun/org/omg/**"/>
   104             <filename name="javax/management/remote/rmi/RMIConnectorServer.java"/>
   105             <filename name="com/sun/jndi/url/iiop/iiopURLContext.java"/>
   106             <filename name="sun/rmi/rmic/iiop/**"/>
   107 
   108             <!-- now there are just two references in jconsole -->
   109             <filename name="sun/tools/jconsole/**"/>
   110         </or>
   111     </selector>
   112     <selector id="beans">
   113         <and>
   114             <or>
   115                 <filename name="java/beans/**"/>
   116                 <filename name="sun/beans/**"/>
   117                 <filename name="com/sun/beans/**"/>
   118             </or>
   119             <none>
   120                 <selector refid="applet"/>
   121                 <selector refid="deprecated7"/>
   122             </none>
   123         </and>
   124     </selector>
   125 
   126     <selector id="deprecated7">
   127         <or>
   128             <filename name="java/beans/Beans*"/>
   129 
   130             <!-- tools -->
   131             <filename name="sun/tools/serialver/**"/>
   132             <filename name="com/sun/tools/corba/**"/>
   133         </or>
   134     </selector>
   135 
   136     <selector id="base">
   137         <none>
   138             <!-- exclude classes from other modules -->
   139             <selector refid="corba"/>
   140             <selector refid="applet"/>
   141             <selector refid="deprecated7"/>
   142         <!--
   143             <selector refid="beans"/>
   144             <selector refid="client"/>
   145             <selector refid="enterprise"/>
   146             <selector refid="deprecated7"/>
   147             -->
   148 
   149 
   150             <!-- non-important non-API things
   151                 which cannot be compiled easily
   152             -->
   153             <filename name="**/*-*"/>
   154             <filename name="java/dyn/**"/>
   155             <filename name="sun/dyn/**"/>
   156             
   157             <filename name="com/sun/script/javascript/**"/>
   158             <filename name="sun/dc/**"/>
   159             <filename name="sun/nio/fs/Solaris**"/>
   160             <filename name="sun/tracing/**"/>
   161             <filename name="com/sun/tracing/ProviderFactory*"/>
   162         </none>
   163     </selector>
   164 
   165     <!-- individual compilation tasks -->
   166 
   167     <target name="deprecated7">
   168         <antcall target="-compile-one-module">
   169             <param name="module" value="deprecated7"/>
   170             <param name="depends" value="base:applet"/>
   171         </antcall>
   172     </target>
   173     <target name="applet">
   174         <antcall target="-compile-one-module">
   175             <param name="module" value="applet"/>
   176             <param name="depends" value="base"/>
   177         </antcall>
   178     </target>
   179     <target name="beans">
   180         <antcall target="-compile-one-module">
   181             <param name="module" value="beans"/>
   182         </antcall>
   183     </target>
   184     <target name="corba">
   185         <antcall target="-compile-one-module">
   186             <param name="module" value="corba"/>
   187             <param name="depends" value="base"/>
   188         </antcall>
   189     </target>
   190 
   191 
   192     <target name="base">
   193         <antcall target="-compile-one-module">
   194             <param name="module" value="base"/>
   195         </antcall>
   196     </target>
   197 
   198     <!-- shared routine to compile one of the modules -->
   199     <target name="-compile-one-module">
   200         <mkdir dir="${build.dir}/classes/${module}"/>
   201         <pathconvert pathsep=":"  property="module.cp">
   202             <path path="${depends}"/>
   203             <mapper type="regexp" from=".*[/\\]([^/\\]*)" to="${build.dir}/\1.jar"/>
   204         </pathconvert>
   205         <jar
   206             basedir="${build.dir}/classes/${module}"
   207             destfile="${build.dir}/empty.jar"
   208             compress="false"
   209         >
   210             <exclude name="**"/>
   211         </jar>
   212         <javac
   213             bootclasspath="${build.dir}/empty.jar"
   214             sourcepath=""
   215             destdir="${build.dir}/classes/${module}"
   216             includejavaruntime="false"
   217             includeantruntime="false"
   218             classpath="${module.cp}:${plugs}/jre/lib/rt-closed.jar"
   219         >
   220             <src refid="src.path"/>
   221             <and>
   222                 <selector refid="${module}"/>
   223                 <not><filename name="**/*-template.java"/></not>
   224             </and>
   225         </javac>
   226         <copy todir="${build.dir}/classes/${module}">
   227             <fileset dir="src/share/classes">
   228                 <and>
   229                     <selector refid="${module}"/>
   230                     <not>
   231                         <filename name="**/*.java"/>
   232                     </not>
   233                 </and>
   234             </fileset>
   235         </copy>
   236 
   237         <jar 
   238             basedir="${build.dir}/classes/${module}"
   239             destfile="${build.dir}/${module}.jar"
   240             compress="false"
   241         />
   242     </target>
   243 
   244     <!-- clean everything -->
   245     <target name="clean">
   246         <delete dir="${build.dir}"/>
   247     </target>
   248 </project>