build.xml
author Jaroslav Tulach <jtulach@netbeans.org>
Wed, 24 Jun 2009 12:33:10 +0200
branchxml-sax-and-dom-2
changeset 1259 a65fafa6b574
parent 1258 6dcea85ad8ba
child 1260 1ef89a94ad93
permissions -rw-r--r--
Starting work on eliminating XML chunks from base Java
     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         <or>
   219             <filename name="org/w3c/**"/>
   220             <filename name="org/sax/**"/>
   221             <filename name="com/sun/org/apache/xml/internal/**"/>
   222             <filename name="com/sun/org/apache/xpath/internal/**"/>
   223             <filename name="com/sun/org/apache/xalan/internal/**"/>
   224             <filename name="com/sun/org/apache/xerces/internal/**"/>
   225             <filename name="com/sun/xml/internal/**"/>
   226             <filename name="org/jcp/xml/dsig/internal/**"/>
   227             <filename name="javax/xml/**"/>
   228             <filename name="com/sun/servicetag/**"/>
   229             <filename name="com/sun/java/browser/**"/>
   230 
   231             <!-- sql seems to have dependency on XML, so including here too for now -->
   232             <filename name="com/sun/rowset/**"/>
   233             <filename name="java/sql/**"/>
   234             <filename name="javax/sql/**"/>
   235         </or>
   236     </selector>
   237 
   238     <selector id="tools">
   239         <or>
   240             <filename name="sun/security/tools/**"/>
   241             <filename name="com/sun/istack/internal/ws/AnnotationProcessorFactoryImpl*"/>
   242             <filename name="com/sun/tools/**"/>
   243             <filename name="com/sun/jdi/**"/>
   244             <filename name="sun/tools/**"/>
   245             <filename name="sun/rmi/rmic/**"/>
   246         </or>
   247     </selector>
   248 
   249     <selector id="deprecated7">
   250         <or>
   251             <!-- deprecated as it contains one method
   252             that references Applet
   253             -->
   254             <filename name="java/beans/Beans*"/>
   255             <!-- deprecated as it contains one method
   256             that references Applet
   257             -->
   258             <filename name="javax/swing/RepaintManager*"/>
   259         </or>
   260     </selector>
   261 
   262     <selector id="base">
   263         <none>
   264             <!-- exclude classes from other modules -->
   265             <selector refid="corba"/>
   266             <selector refid="applet"/>
   267             <selector refid="client"/>
   268             <selector refid="xml"/>
   269             <selector refid="tools"/>
   270             <selector refid="deprecated7"/>
   271         <!--
   272             <selector refid="client"/>
   273             <selector refid="enterprise"/>
   274             <selector refid="deprecated7"/>
   275             -->
   276 
   277 
   278             <!-- non-important non-API things
   279                 which cannot be compiled easily
   280             -->
   281             <filename name="**/*-*"/>
   282             <filename name="java/dyn/**"/>
   283             <filename name="sun/dyn/**"/>
   284             
   285             <filename name="com/sun/script/javascript/**"/>
   286             <filename name="sun/dc/**"/>
   287             <filename name="sun/nio/fs/Solaris**"/>
   288             <filename name="sun/tracing/**"/>
   289             <filename name="com/sun/tracing/ProviderFactory*"/>
   290         </none>
   291     </selector>
   292 
   293     <!-- individual compilation tasks -->
   294 
   295     <target name="deprecated7">
   296         <antcall target="-compile-one-module">
   297             <param name="module" value="deprecated7"/>
   298             <param name="depends" value="base:applet:client"/>
   299         </antcall>
   300     </target>
   301     <target name="applet">
   302         <antcall target="-compile-one-module">
   303             <param name="module" value="applet"/>
   304             <param name="depends" value="base:client"/>
   305         </antcall>
   306     </target>
   307     <!--
   308     <target name="beans">
   309         <antcall target="-compile-one-module">
   310             <param name="module" value="beans"/>
   311         </antcall>
   312     </target>
   313     -->
   314     <target name="client">
   315         <antcall target="-compile-one-module">
   316             <param name="module" value="client"/>
   317             <param name="depends" value="base"/>
   318         </antcall>
   319     </target>
   320     <target name="corba">
   321         <antcall target="-compile-one-module">
   322             <param name="module" value="corba"/>
   323             <param name="depends" value="base:client:applet"/>
   324         </antcall>
   325     </target>
   326     <target name="tools">
   327         <antcall target="-compile-one-module">
   328             <param name="module" value="tools"/>
   329             <param name="depends" value="base:client:applet:corba"/>
   330         </antcall>
   331     </target>
   332     <target name="xml">
   333         <antcall target="-compile-one-module">
   334             <param name="module" value="xml"/>
   335             <param name="depends" value="base"/>
   336         </antcall>
   337     </target>
   338     <target name="base">
   339         <antcall target="-compile-one-module">
   340             <param name="module" value="base"/>
   341         </antcall>
   342     </target>
   343 
   344     <!-- shared routine to compile one of the modules -->
   345     <target name="-compile-one-module">
   346         <mkdir dir="${build.dir}/classes/${module}"/>
   347         <pathconvert pathsep=":"  property="module.cp">
   348             <path path="${depends}"/>
   349             <mapper type="regexp" from=".*[/\\]([^/\\]*)" to="${build.dir}/\1.jar"/>
   350         </pathconvert>
   351         <jar
   352             basedir="${build.dir}/classes/${module}"
   353             destfile="${build.dir}/empty.jar"
   354             compress="false"
   355         >
   356             <exclude name="**"/>
   357         </jar>
   358         <javac
   359             bootclasspath="${build.dir}/empty.jar"
   360             sourcepath=""
   361             destdir="${build.dir}/classes/${module}"
   362             includejavaruntime="false"
   363             includeantruntime="false"
   364             classpath="${module.cp}:${plugs}/jre/lib/rt-closed.jar"
   365         >
   366             <src refid="src.path"/>
   367             <and>
   368                 <selector refid="${module}"/>
   369                 <not><filename name="**/*-template.java"/></not>
   370             </and>
   371         </javac>
   372         <copy todir="${build.dir}/classes/${module}">
   373             <fileset dir="src/share/classes">
   374                 <and>
   375                     <selector refid="${module}"/>
   376                     <not>
   377                         <filename name="**/*.java"/>
   378                     </not>
   379                 </and>
   380             </fileset>
   381         </copy>
   382 
   383         <jar 
   384             basedir="${build.dir}/classes/${module}"
   385             destfile="${build.dir}/${module}.jar"
   386             compress="false"
   387         />
   388     </target>
   389 
   390     <!-- clean everything -->
   391     <target name="clean">
   392         <delete dir="${build.dir}"/>
   393     </target>
   394 </project>