build.xml
author Jaroslav Tulach <jtulach@netbeans.org>
Mon, 22 Jun 2009 18:07:11 +0200
changeset 1258 6dcea85ad8ba
parent 1256 a4d32dc556eb
child 1259 a65fafa6b574
permissions -rw-r--r--
Introducing tools module
     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="client"/>
     8         <antcall target="applet"/>
     9         <antcall target="corba"/>
    10         <antcall target="tools"/>
    11         <antcall target="deprecated7"/>
    12     </target>
    13 
    14     <!-- basic parameters -->
    15     <property name="plugs" value="../../plugs"/>
    16     <fail message="You need to provide location of plugs">
    17         <condition><not><available file="${plugs}/jre/lib/rt-closed.jar"/></not></condition>
    18     </fail>
    19 
    20     <target name="merge-sources"
    21         description="Copies sources from all over the JDK tree into one place"
    22     >
    23         <pathconvert property="gensrc">
    24             <path>
    25                 <dirset dir="../build">
    26                     <include name="*/gensrc"/>
    27                 </dirset>
    28             </path>
    29         </pathconvert>
    30         <fail message="You need to provide location of JDK's generated sources via -Dgensrc=...">
    31             <condition>
    32                 <not>
    33                     <available file="${gensrc}"/>
    34                 </not>
    35             </condition>
    36         </fail>
    37         <mkdir dir="build/sources"/>
    38         <copy todir="build/sources">
    39             <fileset dir="${gensrc}"/>
    40             <fileset dir="${gensrc}/../impsrc">
    41                 <exclude name="org/relaxng/datatype/**"/>
    42             </fileset>
    43             <fileset dir="../jaxp/src/share/classes/">
    44                 <exclude name="org/relaxng/datatype/**"/>
    45             </fileset>
    46             <fileset dir="../langtools/src/share/classes/">
    47                 <exclude name="org/relaxng/datatype/**"/>
    48             </fileset>
    49             <fileset dir="../jaxws/src/share/classes/">
    50                 <exclude name="org/relaxng/datatype/**"/>
    51             </fileset>
    52             <fileset dir="../corba/src/share/classes/"/>
    53         </copy>
    54     </target>
    55 
    56     <path id="src.path">
    57         <pathelement location="src/share/classes"/>
    58         <pathelement location="build/sources"/>
    59         <pathelement location="src/solaris/classes"/>
    60 <!--        <pathelement location="src/windows/classes"/> -->
    61     </path>
    62     <property name="build.dir" location="build/modularize"/>
    63 
    64     <!-- this is the core of the separation - definition
    65       of what classes belong into what compilation group.
    66     -->
    67     <selector id="applet">
    68         <and>
    69             <or>
    70                 <filename name="java/beans/AppletInitializer*"/>
    71                 <filename name="java/applet/**"/>
    72                 <filename name="javax/swing/JApplet*"/>
    73                 <filename name="sun/applet/**"/>
    74                 <filename name="META-INF/services/sun.beans.AppletProxy"/>
    75                 <!-- either this or include AudioClip in client package
    76                 <filename name="sun/net/www/content/audio/**"/>
    77                 -->
    78             </or>
    79             <none>
    80                 <filename name="java/applet/AudioClip*"/>
    81                 <filename name="sun/applet/AppletAudioClip*"/>
    82             </none>
    83         </and>
    84     </selector>
    85     <selector id="corba">
    86         <and>
    87             <or>
    88                 <filename name="org/omg/**"/>
    89                 <filename name="com/sun/corba/**"/>
    90                 <filename name="com/sun/jmx/remote/internal/ProxyInputStream.java"/>
    91                 <filename name="com/sun/jndi/cosnaming/**"/>
    92                 <filename name="com/sun/jndi/toolkit/corba/**"/>
    93                 <filename name="com/sun/jndi/url/iiop/**"/>
    94                 <filename name="com/sun/jndi/url/iiopname/**"/>
    95                 <filename name="com/sun/jndi/url/corbaname/**"/>
    96                 <filename name="javax/management/remote/rmi/RMIConnector.java"/>
    97                 <filename name="javax/management/remote/rmi/RMIConnectorServer.java"/>
    98                 <filename name="javax/management/remote/rmi/RMIServerImpl.java"/>
    99                 <filename name="javax/management/remote/rmi/RMIIIOPServerImpl.java"/>
   100                 <filename name="javax/management/remote/rmi/RMIConnectionImpl.java"/>
   101                 <filename name="javax/management/remote/rmi/RMIJRMPServerImpl.java"/>
   102                 <filename name="javax/rmi/PortableRemoteObject.java"/>
   103                 <filename name="com/sun/jmx/remote/security/FileLoginModule.java"/>
   104                 <filename name="com/sun/jmx/remote/security/JMXPluggableAuthenticator.java"/>
   105                 <filename name="com/sun/jmx/remote/protocol/rmi/ClientProvider.java"/>
   106                 <filename name="com/sun/jmx/remote/protocol/rmi/ClientProvider.java"/>
   107                 <filename name="com/sun/jmx/remote/protocol/iiop/ClientProvider.java"/>
   108                 <filename name="com/sun/jmx/remote/protocol/iiop/ServerProvider.java"/>
   109                 <filename name="com/sun/jmx/remote/protocol/rmi/ServerProvider.java"/>
   110                 <filename name="com/sun/jndi/url/iiop/iiopURLContextFactory.java"/>
   111                 <filename name="sun/rmi/rmic/RMIGenerator.java"/>
   112                 <filename name="sun/management/jmxremote/ConnectorBootstrap.java"/>
   113                 <filename name="sun/management/Agent.java"/>
   114                 <filename name="sun/management/snmp/AdaptorBootstrap.java"/>
   115                 <filename name="javax/rmi/CORBA/**"/>
   116                 <filename name="com/sun/org/omg/**"/>
   117                 <filename name="javax/management/remote/rmi/RMIConnectorServer.java"/>
   118                 <filename name="com/sun/jndi/url/iiop/iiopURLContext.java"/>
   119                 <filename name="sun/rmi/rmic/iiop/**"/>
   120             </or>
   121             <none>
   122                 <selector refid="tools"/>
   123                 <selector refid="deprecated7"/>
   124             </none>
   125         </and>
   126     </selector>
   127     <!--
   128     <selector id="beans">
   129         <and>
   130             <or>
   131                 <filename name="java/beans/**"/>
   132                 <filename name="sun/beans/**"/>
   133                 <filename name="com/sun/beans/**"/>
   134             </or>
   135             <none>
   136                 <selector refid="applet"/>
   137                 <selector refid="deprecated7"/>
   138             </none>
   139         </and>
   140     </selector>
   141     -->
   142     
   143     <selector id="client">
   144         <and>
   145             <or>
   146                 <filename name="java/awt/**"/>
   147                 <filename name="sun/awt/**"/>
   148                 <filename name="com/sun/awt/**"/>
   149                 <filename name="javax/imageio/**"/>
   150                 <filename name="javax/print/**"/>
   151                 <filename name="javax/accessibility/**"/>
   152                 <filename name="com/sun/imageio/**"/>
   153                 <filename name="javax/swing/**"/>
   154                 <filename name="sun/swing/**"/>
   155                 <filename name="sun/java2d/**"/>
   156                 <filename name="sun/print/**"/>
   157                 <filename name="sun/font/**"/>
   158                 <filename name="sun/beans/**"/>
   159                 <filename name="sun/awt/shell/**"/>
   160                 <filename name="com/sun/swing/**"/>
   161                 <filename name="com/sun/java/swing/**"/>
   162                 <filename name="com/sun/xml/internal/xsom/impl/util/**"/>
   163                 <filename name="com/sun/security/auth/callback/DialogCallbackHandler*"/>
   164                 <filename name="com/sun/inputmethods/internal/**"/>
   165                 <filename name="com/sun/xml/internal/bind/**"/>
   166                 
   167                 <filename name="com/sun/xml/internal/messaging/saaj/**"/>
   168                 <filename name="com/sun/xml/internal/org/jvnet/staxex/**"/>
   169                 <filename name="com/sun/xml/internal/stream/buffer/stax/**"/>
   170                 <filename name="com/sun/xml/internal/ws/**"/>
   171                 <filename name="com/sun/istack/internal/**"/>
   172                 <filename name="com/sun/xml/internal/stream/buffer/**"/>
   173 <!--                <filename name="com/sun/xml/internal/stream/**"/>-->
   174                 <filename name="com/sun/xml/internal/xsom/**"/>
   175                 
   176                 <filename name="javax/xml/soap/**"/>
   177                 <filename name="javax/xml/bind/**"/>
   178                 <filename name="javax/xml/ws/**"/>
   179                 <filename name="javax/activation/**"/>
   180 
   181                 <filename name="sun/net/www/content/image/**"/>
   182 
   183                 <!--<filename name="com/sun/naming/internal/**"/>-->
   184 
   185                 <!-- input method has JFrame in signature -->
   186                 <filename name="sun/awt/im/**"/>
   187                 <filename name="sun/awt/X11/**"/>
   188 
   189                 <filename name="java/beans/javax_swing*"/>
   190                 <filename name="java/beans/**"/>
   191                 <filename name="com/sun/beans/**"/>
   192                 <!-- bridge between jmx and beans -->
   193                 <filename name="META-INF/services/com.sun.jmx.mbeanserver.IntrospectorProxy"/>
   194                 <!-- bridge between java.text and java.awt.font for Bidi -->
   195                 <filename name="META-INF/services/sun.text.BidiProxy"/>
   196             </or>
   197             <none>
   198                 <filename name="java/awt/AWTPermission*"/>
   199 
   200                 <filename name="java/beans/ConstructorProperties*"/>
   201                 <filename name="java/beans/PropertyChangeListener*"/>
   202                 <filename name="java/beans/PropertyChangeEvent*"/>
   203                 <filename name="java/beans/IndexedPropertyChangeEvent*"/>
   204                 <filename name="java/beans/PropertyChangeSupport*"/>
   205                 <filename name="java/beans/ChangeListenerMap*"/>
   206 
   207                 <!-- remove classes from other modules -->
   208                 <selector refid="applet"/>
   209                 <selector refid="corba"/>
   210                 <selector refid="tools"/>
   211                 <selector refid="deprecated7"/>
   212             </none>
   213         </and>
   214     </selector>
   215 
   216     <selector id="tools">
   217         <or>
   218             <filename name="sun/security/tools/**"/>
   219             <filename name="com/sun/istack/internal/ws/AnnotationProcessorFactoryImpl*"/>
   220             <filename name="com/sun/tools/**"/>
   221             <filename name="com/sun/jdi/**"/>
   222             <filename name="sun/tools/**"/>
   223             <filename name="sun/rmi/rmic/**"/>
   224         </or>
   225     </selector>
   226 
   227     <selector id="deprecated7">
   228         <or>
   229             <!-- deprecated as it contains one method
   230             that references Applet
   231             -->
   232             <filename name="java/beans/Beans*"/>
   233             <!-- deprecated as it contains one method
   234             that references Applet
   235             -->
   236             <filename name="javax/swing/RepaintManager*"/>
   237         </or>
   238     </selector>
   239 
   240     <selector id="base">
   241         <none>
   242             <!-- exclude classes from other modules -->
   243             <selector refid="corba"/>
   244             <selector refid="applet"/>
   245             <selector refid="client"/>
   246             <selector refid="tools"/>
   247             <selector refid="deprecated7"/>
   248         <!--
   249             <selector refid="client"/>
   250             <selector refid="enterprise"/>
   251             <selector refid="deprecated7"/>
   252             -->
   253 
   254 
   255             <!-- non-important non-API things
   256                 which cannot be compiled easily
   257             -->
   258             <filename name="**/*-*"/>
   259             <filename name="java/dyn/**"/>
   260             <filename name="sun/dyn/**"/>
   261             
   262             <filename name="com/sun/script/javascript/**"/>
   263             <filename name="sun/dc/**"/>
   264             <filename name="sun/nio/fs/Solaris**"/>
   265             <filename name="sun/tracing/**"/>
   266             <filename name="com/sun/tracing/ProviderFactory*"/>
   267         </none>
   268     </selector>
   269 
   270     <!-- individual compilation tasks -->
   271 
   272     <target name="deprecated7">
   273         <antcall target="-compile-one-module">
   274             <param name="module" value="deprecated7"/>
   275             <param name="depends" value="base:applet:client"/>
   276         </antcall>
   277     </target>
   278     <target name="applet">
   279         <antcall target="-compile-one-module">
   280             <param name="module" value="applet"/>
   281             <param name="depends" value="base:client"/>
   282         </antcall>
   283     </target>
   284     <!--
   285     <target name="beans">
   286         <antcall target="-compile-one-module">
   287             <param name="module" value="beans"/>
   288         </antcall>
   289     </target>
   290     -->
   291     <target name="client">
   292         <antcall target="-compile-one-module">
   293             <param name="module" value="client"/>
   294             <param name="depends" value="base"/>
   295         </antcall>
   296     </target>
   297     <target name="corba">
   298         <antcall target="-compile-one-module">
   299             <param name="module" value="corba"/>
   300             <param name="depends" value="base:client:applet"/>
   301         </antcall>
   302     </target>
   303     <target name="tools">
   304         <antcall target="-compile-one-module">
   305             <param name="module" value="tools"/>
   306             <param name="depends" value="base:client:applet:corba"/>
   307         </antcall>
   308     </target>
   309     <target name="base">
   310         <antcall target="-compile-one-module">
   311             <param name="module" value="base"/>
   312         </antcall>
   313     </target>
   314 
   315     <!-- shared routine to compile one of the modules -->
   316     <target name="-compile-one-module">
   317         <mkdir dir="${build.dir}/classes/${module}"/>
   318         <pathconvert pathsep=":"  property="module.cp">
   319             <path path="${depends}"/>
   320             <mapper type="regexp" from=".*[/\\]([^/\\]*)" to="${build.dir}/\1.jar"/>
   321         </pathconvert>
   322         <jar
   323             basedir="${build.dir}/classes/${module}"
   324             destfile="${build.dir}/empty.jar"
   325             compress="false"
   326         >
   327             <exclude name="**"/>
   328         </jar>
   329         <javac
   330             bootclasspath="${build.dir}/empty.jar"
   331             sourcepath=""
   332             destdir="${build.dir}/classes/${module}"
   333             includejavaruntime="false"
   334             includeantruntime="false"
   335             classpath="${module.cp}:${plugs}/jre/lib/rt-closed.jar"
   336         >
   337             <src refid="src.path"/>
   338             <and>
   339                 <selector refid="${module}"/>
   340                 <not><filename name="**/*-template.java"/></not>
   341             </and>
   342         </javac>
   343         <copy todir="${build.dir}/classes/${module}">
   344             <fileset dir="src/share/classes">
   345                 <and>
   346                     <selector refid="${module}"/>
   347                     <not>
   348                         <filename name="**/*.java"/>
   349                     </not>
   350                 </and>
   351             </fileset>
   352         </copy>
   353 
   354         <jar 
   355             basedir="${build.dir}/classes/${module}"
   356             destfile="${build.dir}/${module}.jar"
   357             compress="false"
   358         />
   359     </target>
   360 
   361     <!-- clean everything -->
   362     <target name="clean">
   363         <delete dir="${build.dir}"/>
   364     </target>
   365 </project>