build.xml
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 20 Jun 2009 22:21:50 +0200
changeset 1249 cf9b143bfaf9
parent 1247 b4727fd16c4b
child 1250 7d9cedc2c758
permissions -rw-r--r--
gensrc needs to be present only when we are merging the sources
     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="deprecated7">
   137         <or>
   138             <!-- deprecated as it contains one method
   139             that references Applet
   140             -->
   141             <filename name="java/beans/Beans*"/>
   142             <!-- deprecated as it contains one method
   143             that references Applet
   144             -->
   145             <filename name="javax/swing/RepaintManager*"/>
   146 
   147             <!-- tools -->
   148             <filename name="sun/tools/serialver/**"/>
   149             <filename name="com/sun/tools/corba/**"/>
   150         </or>
   151     </selector>
   152 
   153     <selector id="base">
   154         <none>
   155             <!-- exclude classes from other modules -->
   156             <selector refid="corba"/>
   157             <selector refid="applet"/>
   158             <selector refid="deprecated7"/>
   159         <!--
   160             <selector refid="beans"/>
   161             <selector refid="client"/>
   162             <selector refid="enterprise"/>
   163             <selector refid="deprecated7"/>
   164             -->
   165 
   166 
   167             <!-- non-important non-API things
   168                 which cannot be compiled easily
   169             -->
   170             <filename name="**/*-*"/>
   171             <filename name="java/dyn/**"/>
   172             <filename name="sun/dyn/**"/>
   173             
   174             <filename name="com/sun/script/javascript/**"/>
   175             <filename name="sun/dc/**"/>
   176             <filename name="sun/nio/fs/Solaris**"/>
   177             <filename name="sun/tracing/**"/>
   178             <filename name="com/sun/tracing/ProviderFactory*"/>
   179         </none>
   180     </selector>
   181 
   182     <!-- individual compilation tasks -->
   183 
   184     <target name="deprecated7">
   185         <antcall target="-compile-one-module">
   186             <param name="module" value="deprecated7"/>
   187             <param name="depends" value="base:applet"/>
   188         </antcall>
   189     </target>
   190     <target name="applet">
   191         <antcall target="-compile-one-module">
   192             <param name="module" value="applet"/>
   193             <param name="depends" value="base"/>
   194         </antcall>
   195     </target>
   196     <target name="beans">
   197         <antcall target="-compile-one-module">
   198             <param name="module" value="beans"/>
   199         </antcall>
   200     </target>
   201     <target name="corba">
   202         <antcall target="-compile-one-module">
   203             <param name="module" value="corba"/>
   204             <param name="depends" value="base:applet"/>
   205         </antcall>
   206     </target>
   207 
   208 
   209     <target name="base">
   210         <antcall target="-compile-one-module">
   211             <param name="module" value="base"/>
   212         </antcall>
   213     </target>
   214 
   215     <!-- shared routine to compile one of the modules -->
   216     <target name="-compile-one-module">
   217         <mkdir dir="${build.dir}/classes/${module}"/>
   218         <pathconvert pathsep=":"  property="module.cp">
   219             <path path="${depends}"/>
   220             <mapper type="regexp" from=".*[/\\]([^/\\]*)" to="${build.dir}/\1.jar"/>
   221         </pathconvert>
   222         <jar
   223             basedir="${build.dir}/classes/${module}"
   224             destfile="${build.dir}/empty.jar"
   225             compress="false"
   226         >
   227             <exclude name="**"/>
   228         </jar>
   229         <javac
   230             bootclasspath="${build.dir}/empty.jar"
   231             sourcepath=""
   232             destdir="${build.dir}/classes/${module}"
   233             includejavaruntime="false"
   234             includeantruntime="false"
   235             classpath="${module.cp}:${plugs}/jre/lib/rt-closed.jar"
   236         >
   237             <src refid="src.path"/>
   238             <and>
   239                 <selector refid="${module}"/>
   240                 <not><filename name="**/*-template.java"/></not>
   241             </and>
   242         </javac>
   243         <copy todir="${build.dir}/classes/${module}">
   244             <fileset dir="src/share/classes">
   245                 <and>
   246                     <selector refid="${module}"/>
   247                     <not>
   248                         <filename name="**/*.java"/>
   249                     </not>
   250                 </and>
   251             </fileset>
   252         </copy>
   253 
   254         <jar 
   255             basedir="${build.dir}/classes/${module}"
   256             destfile="${build.dir}/${module}.jar"
   257             compress="false"
   258         />
   259     </target>
   260 
   261     <!-- clean everything -->
   262     <target name="clean">
   263         <delete dir="${build.dir}"/>
   264     </target>
   265 </project>