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