<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project [
   <!ENTITY buildmagic SYSTEM "../tools/etc/buildmagic/buildmagic.ent">
   <!ENTITY libraries SYSTEM "../thirdparty/libraries.ent">
   <!ENTITY modules SYSTEM "../tools/etc/buildmagic/modules.ent">
]>

<!-- ====================================================================== -->
<!--                                                                        -->
<!--  JBoss, The Home of Professional Open Source                           -->
<!--                                                                        -->
<!--  Distributable under LGPL license.                                     -->
<!--  See terms of license at http://www.gnu.org.                           -->
<!--                                                                        -->
<!-- ====================================================================== -->


<!-- $Id: build.xml 60531 2007-02-14 12:19:46Z thomas.diesler@jboss.com $ -->

<project default="main" name="JBoss/Varia">

  <!-- ================================================================== -->
  <!-- Setup                                                              -->
  <!-- ================================================================== -->

  <!--
     | Include the common Buildmagic elements.
     |
     | This defines several different targets, properties and paths.
     | It also sets up the basic extention tasks amoung other things.
   -->

  &buildmagic;


  <!-- ================================================================== -->
  <!-- Initialization                                                     -->
  <!-- ================================================================== -->

  <!--
     | Initialize the build system.  Must depend on '_buildmagic:init'.
     | Other targets should depend on 'init' or things will mysteriously fail.
   -->

  <target name="init" unless="init.disable" depends="_buildmagic:init">
  </target>


  <!-- ================================================================== -->
  <!-- Configuration                                                      -->
  <!-- ================================================================== -->

  <!--
     | Configure the build system.
     |
     | This target is invoked by the Buildmagic initialization logic and
     | should contain module specific configuration elements.
   -->

  <target name="configure" unless="configure.disable">

    <!-- =================== -->
    <!-- Basic Configuration -->
    <!-- =================== -->

    <!-- Module name(s) & version -->
    <property name="module.name" value="varia"/>
    <property name="module.Name" value="Various"/>

    <!-- ========= -->
    <!-- Libraries -->
    <!-- ========= -->

    &libraries;
    <!-- The combined library classpath -->
    <path id="library.classpath">
      <path refid="apache.ant.classpath"/>
      <path refid="apache.commons.classpath"/>
      <path refid="apache.log4j.classpath"/>
      <path refid="apache.bsf.classpath"/>
      <path refid="apache.velocity.classpath"/>
      <path refid="beanshell.beanshell.classpath"/>
      <path refid="hsqldb.hsqldb.classpath"/>
      <path refid="jboss.microcontainer.classpath"/>
      <path refid="jboss.jbossws.classpath"/>
      <path refid="jboss.jbossxb.classpath"/>
      <path refid="junit.junit.classpath"/>
      <path refid="opennms.joesnmp.classpath"/>
      <path refid="oswego.concurrent.classpath"/>
      <path refid="sun.jaf.classpath"/>
      <path refid="sun.javamail.classpath"/>
      <path refid="sun.servlet.classpath"/>
    </path>

    <!-- ======= -->
    <!-- Modules -->
    <!-- ======= -->

    &modules;
    <!-- The combined dependent module classpath -->
    <path id="dependentmodule.classpath">
      <path refid="jboss.jaxrpc.classpath"/>
      <path refid="jboss.j2ee.classpath"/>
      <path refid="jboss.common.classpath"/>
      <path refid="jboss.cluster.classpath"/>
      <path refid="jboss.system.classpath"/>
      <path refid="jboss.jmx.classpath"/>
      <path refid="jboss.naming.classpath"/>
      <path refid="jboss.server.classpath"/>
      <path refid="jboss.security.classpath"/>
      <path refid="jboss.transaction.classpath"/>
      <path refid="jboss.messaging.classpath"/>
      <path refid="jboss.remoting.classpath"/>
      <path refid="jboss.serialization.classpath"/>
    </path>

    <!-- ===== -->
    <!-- Tasks -->
    <!-- ===== -->

    <!-- Where source files live -->
    <property name="source.java" value="${module.source}/main"/>
    <property name="source.etc" value="${module.source}/etc"/>
    <property name="source.resources" value="${module.source}/resources"/>

    <!-- Where build generated files will go -->
    <property name="build.classes" value="${module.output}/classes"/>
    <property name="build.lib" value="${module.output}/lib"/>
    <property name="build.api" value="${module.output}/api"/>
    <property name="build.etc" value="${module.output}/etc"/>
    <property name="build.resources" value="${module.output}/resources"/>
    <property name="build.reports" value="${module.output}/reports"/>

    <!-- Install/Release structure -->
    <property name="install.id" value="${module.name}-${module.version}"/>
    <property name="release.id" value="${install.id}"/>
    <property name="install.root" value="${module.output}/${install.id}"/>

    <!-- The combined thirdparty classpath -->
    <path id="thirdparty.classpath">
      <path refid="library.classpath"/>
      <path refid="dependentmodule.classpath"/>
    </path>

    <!-- classpath and local.classpath must have a value using with a path -->
    <property name="classpath" value=""/>
    <property name="local.classpath" value=""/>

    <!-- The classpath required to build classes. -->
    <path id="javac.classpath">
      <pathelement path="${classpath}"/>
      <pathelement path="${local.classpath}"/>
      <path refid="thirdparty.classpath"/>
    </path>

    <!-- The classpath required to build javadocs. -->
    <path id="javadoc.classpath">
      <path refid="javac.classpath"/>
    </path>

    <!-- Packages to include when generating api documentation -->
    <property name="javadoc.packages" value="org.jboss.*"/>

  </target>


  <!-- ================================================================== -->
  <!-- Compile                                                            -->
  <!-- ================================================================== -->

  <!--
     |  Compile everything.
     |
     |  This target should depend on other compile-* targets for each
     |  different type of compile that needs to be performed, short of
     |  documentation compiles.
    -->
  <target name="compile"
    depends="compile-classes, compile-rmi, compile-etc, compile-resources"
    description="Compile all source files."/>

  <!-- Compile all class files -->
  <target name="compile-classes" depends="init">
    <mkdir dir="${build.classes}"/>
    <javac destdir="${build.classes}"
      optimize="${javac.optimize}"
      target="${javac.target}"
      source="${javac.source}"
      debug="${javac.debug}"
      depend="${javac.depend}"
      verbose="${javac.verbose}"
      deprecation="${javac.deprecation}"
      includeAntRuntime="${javac.include.ant.runtime}"
      includeJavaRuntime="${javac.include.java.runtime}"
      includes="${javac.includes}"
      excludes="${javac.excludes}"
      failonerror="${javac.fail.onerror}">
      <src path="${source.java}"/>
      <classpath refid="javac.classpath"/>
    </javac>
  </target>

  <!-- Compile manifests -->
  <target name="compile-etc" depends="init">
    <mkdir dir="${build.etc}"/>
    <copy todir="${build.etc}" filtering="yes">
      <fileset dir="${source.etc}">
        <include name="**"/>
      </fileset>
    </copy>
  </target>

  <!-- Compile resource files -->
  <target name="compile-resources" depends="init">
    <mkdir dir="${build.resources}"/>
    <copy todir="${build.resources}" filtering="yes">
      <fileset dir="${source.resources}">
        <include name="**/*"/>
        <exclude name="jmx/html/images/**"/>
      </fileset>
    </copy>
    <copy todir="${build.resources}" filtering="no">
      <fileset dir="${source.resources}">
        <include name="jmx/html/images/**"/>
      </fileset>
    </copy>
  </target>

  <!-- Compile RMI stubs -->
  <target name="compile-rmi" depends="compile-classes">
    <rmic base="${build.classes}"
      verify="${rmic.verify}"
      iiop="${rmic.iiop}"
      iiopopts="${rmic.iiopops}"
      idl="${rmic.idl}"
      idlopts="${rmic.idlops}"
      debug="${rmic.debug}"
      stubVersion="${rmic.stubVersion}">
      <classpath refid="javac.classpath"/>
      <include name="${rmic.includes}"/>
      <exclude name="${rmic.excludes}"/>

      <include name="org/jboss/security/srp/SRPRemoteServer.class"/>
    </rmic>
  </target>

  <!-- ================================================================== -->
  <!-- Archives                                                           -->
  <!-- ================================================================== -->

  <!--
     |  Build all jar files.
    -->
  <target name="jars" description="Builds all jar files."
    depends="_buildmagic:build-bypass-check"
    unless="build-bypass.on">

    <call target="compile"/>

    <mkdir dir="${build.lib}"/>

    <!-- autonumber-plugin.jar -->
    <jar jarfile="${build.lib}/autonumber-plugin.jar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/varia/autonumber/**"/>
      </fileset>
    </jar>

    <!-- counter-plugin.jar -->
    <jar jarfile="${build.lib}/counter-plugin.jar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/varia/counter/**"/>
      </fileset>
    </jar>

    <!-- deployment-service.jar/sar -->
    <jar jarfile="${build.lib}/deployment-service.jar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/services/deployment/**"/>
      </fileset>
    </jar>
    <jar jarfile="${build.lib}/deployment-service.sar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.resources}/services/deployment">
        <include name="META-INF/**"/>
      </fileset>
      <fileset dir="${build.lib}">
        <include name="deployment-service.jar"/>
      </fileset>
      <fileset dir="${apache.collections.lib}">
        <include name="commons-collections.jar"/>
      </fileset>
      <fileset dir="${apache.velocity.lib}">
        <include name="velocity.jar"/>
      </fileset>
    </jar>

    <!-- scheduler-plugin.jar -->
    <jar jarfile="${build.lib}/scheduler-plugin.jar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/varia/scheduler/**"/>
      </fileset>
    </jar>

    <!-- scheduler-plugin-example.jar -->
    <jar jarfile="${build.lib}/scheduler-plugin-example.jar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/varia/scheduler/example/**"/>
      </fileset>
    </jar>

    <!-- mail-plugin.jar -->
    <jar jarfile="${build.lib}/mail-plugin.jar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/mail/MailService*.class"/>
      </fileset>
    </jar>

    <!-- patched hsqldb.jar -->
    <jar jarfile="${build.lib}/hsqldb.jar"
      manifest="${build.etc}/default.mf">
      <zipfileset src="${hsqldb.hsqldb.lib}/hsqldb.jar">
        <include name="**"/>
        <exclude name="org/hsqldb/Embedded**"/>
        <exclude name="**/MANIFEST.MF"/>
      </zipfileset>
      <fileset dir="${build.classes}">
        <include name="org/hsqldb/Embedded**"/>
      </fileset>
    </jar>

    <!-- hsqldb-plugin.jar -->
    <jar jarfile="${build.lib}/hsqldb-plugin.jar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/jdbc/Hypersonic**"/>
      </fileset>
    </jar>

    <!-- derby-plugin.jar -->
    <jar jarfile="${build.lib}/derby-plugin.jar" manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/jdbc/Derby**"/>
      </fileset>
    </jar>

    <!-- properties-plugin.jar -->
    <jar jarfile="${build.lib}/properties-plugin.jar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/varia/property/**"/>
      </fileset>
    </jar>

    <!-- process-plugin.jar -->
    <jar jarfile="${build.lib}/process-plugin.jar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/varia/process/**"/>
      </fileset>
    </jar>

    <!-- foe-deployer.sar -->
    <jar jarfile="${build.lib}/foe-deployer-3.2.sar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/varia/deployment/Foe**"/>
        <include name="org/jboss/varia/deployment/convertor/**"/>
      </fileset>
      <fileset dir="${build.resources}/deployment">
        <include name="META-INF/**"/>
        <include name="resources/6.1/**"/>
      </fileset>
      <fileset dir="${build.etc}">
        <include name="foe-deployer-service.xml"/>
      </fileset>
    </jar>

    <!-- statscollector.jar -->
    <jar jarfile="${build.lib}/statscollector.jar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/varia/stats/**"/>
      </fileset>
    </jar>

    <!-- jmx-console.war -->
    <war warfile="${build.lib}/jmx-console.war"
      webxml="${source.resources}/jmx/jmx-console-web.xml">
      <webinf dir="${source.resources}/jmx/web-inf"/>
      <classes dir="${build.classes}">
        <include name="org/jboss/jmx/adaptor/**"/>
        <exclude name="org/jboss/jmx/adaptor/snmp/**"/>
      </classes>
      <classes dir="${source.resources}/jmx">
        <include name="*.properties"/>
      </classes>
      <fileset dir="${source.resources}/jmx/html"/>
    </war>

    <!-- persistent-service.sar -->
    <!-- demo service for docs/examples -->
    <jar jarfile="${build.lib}/persistent-service.sar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/jmx/examples/persistence/**"/>
      </fileset>
      <fileset dir="${build.resources}/jmx/examples/persistent-service"/>
    </jar>

    <!-- bindingservice-plugin.jar -->
    <jar jarfile="${build.lib}/bindingservice-plugin.jar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/services/binding/**"/>
      </fileset>
    </jar>

    <!-- jboss-monitoring.jar -->
    <jar jarfile="${build.lib}/jboss-monitoring.jar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/monitor/**"/>
      </fileset>
    </jar>

     <!-- httpha-invoker.sar + war -->
     <zip destfile="${build.lib}/http-invoker.sar">
        <zipfileset dir="${build.resources}/services/invoker/http"
         prefix="invoker.war/WEB-INF">
           <include name="jboss-web.xml" />
           <include name="web.xml" />
         </zipfileset>
        <zipfileset dir="${build.classes}" prefix="invoker.war/WEB-INF/classes">
         <include name="org/jboss/invocation/http/**"/>
       </zipfileset>
        <zipfileset dir="${build.resources}/services/invoker/http"
           prefix="META-INF">
           <include name="jboss-service.xml" />
        </zipfileset>
     </zip>
     <!-- httpha-invoker.sar + war -->
     <zip destfile="${build.lib}/httpha-invoker.sar">
        <zipfileset dir="${build.resources}/services/invoker/httpha"
         prefix="invoker.war/WEB-INF">
           <include name="jboss-web.xml" />
           <include name="web.xml" />
         </zipfileset>
        <zipfileset dir="${build.classes}" prefix="invoker.war/WEB-INF/classes">
         <include name="org/jboss/invocation/http/**"/>
       </zipfileset>
        <zipfileset dir="${build.resources}/services/invoker/httpha"
           prefix="META-INF">
           <include name="jboss-service.xml" />
        </zipfileset>
     </zip>

    <!-- Build jbossjmx-ant.jar -->
    <jar jarfile="${build.lib}/jbossjmx-ant.jar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/ant/**"/>
      </fileset>
      <fileset dir="${jboss.naming.root}/classes">
        <include name="org/jnp/interfaces/**"/>
        <include name="org/jnp/server/*Stub.class"/>
      </fileset>
      <fileset dir="${jboss.server.root}/classes">
        <include name="org/jboss/jmx/adaptor/rmi/RMIAdaptor.class"/>
        <include name="org/jboss/jmx/adaptor/rmi/RMIAdaptorImpl_Stub.class"/>
        <include name="org/jboss/jmx/adaptor/rmi/RMIAdaptorService.class"/>
        <include name="org/jboss/jmx/connector/**"/>
      </fileset>
      <fileset dir="${jboss.jmx.root}/classes">
        <include name="javax/management/*.class"/>
        <include name="org/jboss/mx/util/Serialization.class"/>
      </fileset>
    </jar>

    <!-- Build netboot.war -->
    <war warfile="${build.lib}/netboot.war" webxml="${build.resources}/netboot/WEB-INF/web.xml">
      <fileset dir="${build.resources}/netboot" excludes="WEB-INF/web.xml"/>
      <classes dir="${build.classes}">
        <include name="org/jboss/netboot/**"/>
      </classes>
    </war>

    <!-- bsh-deployer.sar -->
    <jar jarfile="${build.lib}/bsh-deployer.jar">
      <fileset dir="${build.classes}">
        <include name="org/jboss/varia/deployment/BeanShell**"/>
        <include name="org/jboss/varia/deployment/Script**"/>
        <include name="org/jboss/varia/deployment/Test**"/>
      </fileset>
    </jar>

    <!-- jbossmq-httpil.sar + war -->
    <war warfile="${build.lib}/jbossmq-httpil.war"
      webxml="${source.resources}/jbossmq/httpil/web.xml">
      <webinf dir="${build.resources}/jbossmq/httpil">
        <include name="jboss-web.xml"/>
      </webinf>
      <classes dir="${build.classes}">
        <include name="org/jboss/mq/il/http/servlet/**"/>
      </classes>
    </war>
    <jar jarfile="${build.lib}/jbossmq-httpil.sar">
      <metainf dir="${build.resources}/jbossmq/httpil">
        <include name="jboss-service.xml"/>
      </metainf>
      <fileset dir="${build.lib}">
        <include name="jbossmq-httpil.war"/>
      </fileset>
    </jar>

    <!-- snmp-adaptor.sar containing snmp-adaptor.jar -->
    <jar jarfile="${build.lib}/snmp-adaptor.jar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
        <include name="org/jboss/jmx/adaptor/snmp/**"/>
      </fileset>
    </jar>
    <jar jarfile="${build.lib}/snmp-adaptor.sar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.resources}/services/snmp/deploy"/>
      <fileset dir="${build.lib}">
        <include name="snmp-adaptor.jar"/>
      </fileset>
    </jar>

   <!-- Generate the (.deployer) to be used for bean deployment -->
   <jar jarfile="${build.lib}/jboss-bean-deployer.jar"
        manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
         <include name="org/jboss/kernel/deployment/**"/>
      </fileset>
   </jar>
   <mkdir dir="${build.lib}/kernel/jboss-bean.deployer"/>
   <copy todir="${build.lib}/kernel/jboss-bean.deployer" filtering="no">
     <fileset file="${build.lib}/jboss-bean-deployer.jar"/>
     <fileset dir="${jboss.microcontainer.lib}">
        <include name="*.jar"/>
     </fileset>
     <fileset dir="${build.resources}/kernel">
        <include name="**/*.xml"/>
     </fileset>
   </copy>

   <!-- logging-monitor.jar -->
   <jar jarfile="${build.lib}/logging-monitor.jar"
      manifest="${build.etc}/default.mf">
      <fileset dir="${build.classes}">
         <include name="org/jboss/services/loggingmonitor/**"/>
      </fileset>
   </jar>

     <!-- xmlentitymgr.jar -->
     <jar jarfile="${build.lib}/xmlentitymgr.jar"
       manifest="${build.etc}/default.mf">
       <fileset dir="${build.classes}">
         <include name="org/jboss/services/xml/**"/>
       </fileset>
     </jar>

     <!-- SRP jars -->
     <jar jarfile="${build.lib}/jboss-srp.jar">
       <fileset dir="${build.classes}">
         <include name="org/jboss/security/srp/**"/>
       </fileset>
     </jar>
     <!-- Build jboss-srp-client.jar -->
     <jar jarfile="${build.lib}/jboss-srp-client.jar">
       <fileset dir="${build.classes}">
          <include name="org/jboss/security/srp/PkgCategory.class"/>
          <include name="org/jboss/security/srp/TracePriority.class"/>
          <include name="org/jboss/security/srp/SRPClientSession.class"/>
          <include name="org/jboss/security/srp/SRPServerInterface*.class"/>
          <include name="org/jboss/security/srp/SRPServerProxy.class"/>
          <include name="org/jboss/security/srp/SRPParameters.class"/>
          <include name="org/jboss/security/srp/SRPPermission.class"/>
          <include name="org/jboss/security/srp/SRPConf*.class"/>
          <include name="org/jboss/security/srp/SRPRemoteServer_Stub.class"/>
          <include name="org/jboss/security/srp/SRPRemoteServerInterface.class"/>
          <include name="org/jboss/security/srp/SRPVerifierStore.class"/>
          <include name="org/jboss/security/srp/SRPVerifierStore$*.class"/>
          <include name="org/jboss/security/srp/jaas/SRPLoginModule.class"/>
          <include name="org/jboss/security/srp/jaas/SRPPrincipal.class"/>
       </fileset>
     </jar>

    <!-- Update the build marker to allow bypassing -->
    <touch file="${build-bypass.marker}"/>

  </target>


   <target name="validateHeaders" depends="compile"
      description="Validate the source tree headers">
      <java classname="org.jboss.tools.license.ValidateLicenseHeaders"
         fork="true">
         <arg value="${project.root}" />
         <classpath>
            <path refid="library.classpath" />
            <pathelement location="${build.classes}" />
         </classpath>
      </java>
   </target>

   <!-- Use ant -Djboss.dist=/release/jboss-x.y.z to create a serialuid.ser for the x.y.z dist -->
   <target name="buildSerialVersionUIDDB" depends="compile"
      description="Create a serialVersionUID db for a jboss.dist">
      <fail unless="jboss.dist" message="The jboss.dist variable must be defined" />
      <java classname="org.jboss.tools.SerialVersionUID"
         fork="true">
         <jvmarg value="-XX:MaxPermSize=256m"/>
         <jvmarg value="-Xms256m"/>
         <jvmarg value="-Xmx256m"/>
         <arg value="${jboss.dist}" />
         <classpath>
            <pathelement location="${build.classes}" />
         </classpath>
      </java>
   </target>

  <!-- ================================================================== -->
  <!-- Install & Release                                                  -->
  <!-- ================================================================== -->

  <target name="install"
    description="Install the structure for a release."
    depends="all, _buildmagic:install:default"/>

  <target name="release" depends="install"/>

  <target name="release-zip"
    description="Builds a ZIP distribution."
    depends="release, _buildmagic:release:zip"/>

  <target name="release-tar"
    description="Builds a TAR distribution."
    depends="release, _buildmagic:release:tar"/>

  <target name="release-tgz"
    description="Builds a TAR-GZ distribution."
    depends="release, _buildmagic:release:tgz"/>

  <target name="release-all"
    description="Builds a distribution for each archive type."
    depends="release-zip, release-tgz"/>


  <!-- ================================================================== -->
  <!-- Cleaning                                                           -->
  <!-- ================================================================== -->

  <!-- Clean up all build output -->
  <target name="clean"
    description="Cleans up most generated files."
    depends="_buildmagic:clean">
  </target>

  <!-- Clean up all generated files -->
  <target name="clobber"
    description="Cleans up all generated files."
    depends="_buildmagic:clobber, clean">
  </target>


  <!-- ================================================================== -->
  <!-- Misc.                                                              -->
  <!-- ================================================================== -->

  <target name="main"
    description="Executes the default target (most)."
    depends="most"/>

  <target name="all"
    description="Builds everything."
    depends="jars, docs"/>

  <target name="most"
    description="Builds almost everything."
    depends="jars"/>

  <target name="help"
    description="Show this help message."
    depends="_buildmagic:help:standard"/>

</project>
