<project name="Expression Language" default="compile" basedir=".">


<!--
        "Expression Language" component of the Jakarta Commons Subproject
        $Id: build.xml,v 1.6 2003/06/06 22:35:28 luehe Exp $
-->


<!-- ========== Initialize Properties ===================================== -->


  <property file="${user.home}/build.properties"/>   <!-- User local        -->
  <property file="build.properties"/>                <!-- Component local   -->
  <property file="../build.properties"/>             <!-- Commons local     -->


<!-- ========== External Dependencies ===================================== -->


  <!-- The home directory for the Servlet 2.4 and JSP 2.0 classes
       distribution -->
  <property name="api.home" value="../jakarta-servletapi-5"/>

  <!-- The directory containing your binary distribution of JUnit,
       version 3.7 or later -->
  <property name="junit.home"              value="/usr/local/junit3.7"/>


<!-- ========== Derived Values ============================================ -->


  <!-- The pathname of the Servlet 2.4 classes JAR file -->
  <property name="servlet-api.jar" value="${api.home}/jsr154/dist/lib/servlet-api.jar"/>

  <!-- The pathname of the JSP 2.0 classes JAR file -->
  <property name="jsp-api.jar" value="${api.home}/jsr152/dist/lib/jsp-api.jar"/>

  <!-- The pathname of the "junit.jar" JAR file -->
  <property name="junit.jar"               value="${junit.home}/junit.jar"/>


<!-- ========== Component Declarations ==================================== -->


  <!-- The name of this component -->
  <property name="component.name"          value="el"/>

  <!-- The primary package name of this component -->
  <property name="component.package"       value="org.apache.commons.el"/>

  <!-- The title of this component -->
  <property name="component.title"         value="JSP 2.0 Expression Language Implementation"/>

  <!-- The current version number of this component -->
  <property name="component.version"       value="1.0"/>

  <!-- The base directory for compilation targets -->
  <property name="build.home"              value="target"/>

  <!-- The base directory for component configuration files -->
  <property name="conf.home"               value="src/conf"/>

  <!-- The base directory for distribution targets -->
  <property name="dist.home"               value="dist"/>

  <!-- The base directory for component sources -->
  <property name="source.home"             value="src/java"/>

  <!-- The base directory for unit test sources -->
  <property name="test.home"               value="src/test"/>

  <property name="commons-el.jar" value="${dist.home}/commons-${component.name}.jar" />

<!-- ========== Compiler Defaults ========================================= -->


  <!-- Should Java compilations set the 'debug' compiler option? -->
  <property name="compile.debug"           value="true"/>

  <!-- Should Java compilations set the 'deprecation' compiler option? -->
  <property name="compile.deprecation"     value="false"/>

  <!-- Should Java compilations set the 'optimize' compiler option? -->
  <property name="compile.optimize"        value="true"/>

  <!-- Construct compile classpath -->
  <path id="compile.classpath">
    <pathelement location="${build.home}/classes"/>
    <pathelement location="${servlet-api.jar}"/>
    <pathelement location="${jsp-api.jar}"/>
  </path>


<!-- ========== Test Execution Defaults =================================== -->


  <!-- Construct unit test classpath -->
  <path id="test.classpath">
    <pathelement location="${build.home}/classes"/>
    <pathelement location="${build.home}/tests"/>
    <pathelement location="${servlet-api.jar}"/>
    <pathelement location="${jsp-api.jar}"/>
    <pathelement location="${junit.jar}"/>
  </path>

  <!-- Should all tests fail if one does? -->
  <property name="test.failonerror"        value="true"/>

  <!-- The test runner to execute -->
  <property name="test.runner"             value="junit.textui.TestRunner"/>

  <!-- The Commons Logger LogFactory implementation to use -->
  <property name="test.factory"
           value="org.apache.commons.logging.impl.LogFactoryImpl"/>

  <!-- The Commons Logger Log implementation to use (standard factory) -->
  <property name="test.log"
           value="org.apache.commons.logging.impl.SimpleLog"/>

  <!-- The Commons Logger SimpleLog level for testing -->
  <property name="test.level"               value="error"/>


<!-- ========== Executable Targets ======================================== -->


  <target name="init"
   description="Initialize and evaluate conditionals">
    <echo message="-------- ${component.name} ${component.version} --------"/>
    <filter  token="name"                  value="${component.name}"/>
    <filter  token="package"               value="${component.package}"/>
    <filter  token="version"               value="${component.version}"/>
  </target>


  <target name="prepare" depends="init"
   description="Prepare build directory">
    <mkdir dir="${build.home}"/>
    <mkdir dir="${build.home}/classes"/>
    <mkdir dir="${build.home}/conf"/>
    <mkdir dir="${build.home}/tests"/>
  </target>


  <target name="static" depends="prepare"
   description="Copy static files to build directory">
    <tstamp/>
    <copy  todir="${build.home}/conf" filtering="on">
      <fileset dir="${conf.home}" includes="*.MF"/>
    </copy>
  </target>


  <target name="build-servletapi" unless="servletapi.build.notrequired" >
    <echo>========== Building: ${servlet-api.jar}</echo>
    <ant dir="${api.home}/jsr154" target="jar"/>
  </target>


  <target name="build-jspapi" unless="jspapi.build.notrequired" >
    <echo>========== Building: ${jsp-api.jar}</echo>
    <ant dir="${api.home}/jsr152" target="jar"/>
  </target>


  <target name="compile" depends="static,build-servletapi,build-jspapi,compile-only"
   description="Compile shareable components"/>

  <target name="compile-only" >
    <javac  srcdir="${source.home}"
           destdir="${build.home}/classes"
             debug="${compile.debug}"
       deprecation="${compile.deprecation}"
          optimize="${compile.optimize}">
      <classpath refid="compile.classpath"/>
    </javac>
    <copy    todir="${build.home}/classes" filtering="on">
      <fileset dir="${source.home}" excludes="**/*.java"/>
    </copy>
  </target>


  <target name="compile.tests" depends="compile"
   description="Compile unit test cases">
    <javac  srcdir="${test.home}"
           destdir="${build.home}/tests"
             debug="${compile.debug}"
       deprecation="${compile.deprecation}"
          optimize="${compile.optimize}">
      <classpath refid="test.classpath"/>
    </javac>
    <copy    todir="${build.home}/tests" filtering="on">
      <fileset dir="${test.home}" excludes="**/*.java"/>
    </copy>
  </target>


  <target name="clean"
   description="Clean build and distribution directories">
    <delete    dir="${build.home}"/>
    <delete    dir="${dist.home}"/>
  </target>


  <target name="all" depends="clean,compile"
   description="Clean and compile all components"/>


  <target name="javadoc" depends="compile"
   description="Create component Javadoc documentation">
    <mkdir      dir="${dist.home}"/>
    <mkdir      dir="${dist.home}/docs"/>
    <mkdir      dir="${dist.home}/docs/api"/>
    <javadoc sourcepath="${source.home}"
                destdir="${dist.home}/docs/api"
           packagenames="org.apache.commons.*"
                 author="true"
                private="true"
                version="true"
               overview="src/java/overview.html"
               doctitle="&lt;h1&gt;${component.title} (Version ${component.version})&lt;/h1&gt;"
            windowtitle="${component.title} (Version ${component.version})"
                 bottom="Copyright (c) 2001-2002 - Apache Software Foundation">
      <classpath refid="compile.classpath"/>
    </javadoc>
  </target>


  <target name="dist" depends="compile,javadoc"
   description="Create binary distribution">
    <mkdir      dir="${dist.home}"/>
    <copy      file="../LICENSE"
              todir="${dist.home}"/>
    <copy      file="RELEASE-NOTES.txt"
              todir="${dist.home}"/>
    <antcall target="jar"/>
  </target>


  <target name="jar" depends="compile"
   description="Create jar">
    <mkdir      dir="${dist.home}"/>
    <mkdir      dir="${build.home}/classes/META-INF"/>
    <copy      file="../LICENSE"
             tofile="${build.home}/classes/META-INF/LICENSE.txt"/>
    <jar    jarfile="${commons-el.jar}"
           manifest="${build.home}/conf/MANIFEST.MF">
     <fileset dir="${build.home}/classes" includes="org/apache/commons/el/**" />
     <fileset dir="${build.home}/classes" includes="META-INF/LICENSE.txt" />
    </jar>
  </target>

  <target name="jar-only" depends="init,compile-only" >
    <mkdir      dir="${build.home}/classes/META-INF"/>
    <tstamp/>
    <copy  todir="${build.home}/classes/META-INF" filtering="on">
      <fileset dir="${conf.home}" includes="*.MF"/>
    </copy>
    <copy      file="../LICENSE"
             tofile="${build.home}/classes/META-INF/LICENSE.txt"/>
    <jar    jarfile="${commons-el.jar}"
           manifest="${build.home}/classes/META-INF/MANIFEST.MF">
     <fileset dir="${build.home}/classes" includes="org/apache/commons/el/**" />
     <fileset dir="${build.home}/classes" includes="META-INF/LICENSE.txt" />
    </jar>  

  </target>

  <target name="install-jar" depends="jar"
   description="--> Installs jar file in ${lib.repo}">
    <copy todir="${lib.repo}" filtering="no">
      <fileset dir="${dist.home}">
        <include name="commons-${component.name}.jar"/>
      </fileset>
    </copy>
  </target>


<!-- ========== Unit Test Targets ========================================= -->


</project>
