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