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