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