<?xml version="1.0"?>
<!--
  Copyright 1999-2004 The Apache Software Foundation

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<!-- $Id: properties-build.xml,v 1.17 2004/04/23 20:42:13 michi Exp $ -->

<project name="properties">

  <description>
    Properties Targets
  </description>

  <!-- ============================================================ -->
  <!-- Set up some global properties                                -->
  <!-- ============================================================ -->

  <!--
  Give user a chance to override without editing this file
  (and without typing -D each time he compiles it)
  -->
  <property file=".ant.properties"/>
  <property file="${user.home}/.ant.properties"/>
  <property file="build.properties"/>

  <!-- Project version and name -->
  <property name="version" value="1.2"/>
  <property name="fullname" value="${ant.project.name}-${version}"/>

  
  <!-- The root of the cocoon source tree -->
  <property name="cocoon.dir" value="../cocoon-2.1"/>

  <!-- The libraries we use and which are not already included in the cocoon package -->
  <property name="lib.dir" value="lib"/>

  <!-- All compilation and preparation takes place in build.root -->
  <property name="build.root" value="build"/>
  
  <!-- Destination for the compliation of our own classes in the "compile" target -->
  <property name="build.dir" value="${build.root}/${ant.project.name}"/>
  
  <!-- Destination for the filtered source files  -->
  <property name="build.src" value="${build.dir}/src"/>
  
  <!-- Destination for temporary files during the build  -->
  <property name="build.temp" value="${build.dir}/temp"/>
  
  <!-- Destination for the class files of the "compile" target -->
  <property name="build.dest" value="${build.dir}/classes"/>
  
  <!-- This is where we assemble the webapp directory in the "webapp" task -->
  <property name="build.webapp" value="${build.dir}/webapp"/>
  
  <!-- This is where the source of the tests are located -->
  <property name="src.test" value="src/test"/>
  <!-- This is where we do the tests -->
  <property name="build.test" value="${build.root}/test"/>


  <!-- All packaging for distribution takes place in dist.root -->
  <property name="dist.root" value="./dist"/>

  <!-- The toplevel directory for the final end-user distribution -->
  <property name="dist.bin.dir" value="${dist.root}/${fullname}"/>

  <!-- The javadoc destination directory -->
  <property name="dist.bin.javadocs" value="${build.webapp}/lenya/pubs/docs-new/resources/html/apidocs"/>

  <!-- The filename of the final end-user war package -->
  <property name="dist.bin.warfile" value="${dist.bin.dir}/${ant.project.name}.war"/>

  <!-- The filename of the final end-user tar file -->
  <property name="dist.bin.dir" value="${dist.root}/${fullname}-bin"/>
  
  <!-- The toplevel directory for the final developer source distribution -->
  <property name="dist.src.dir" value="${dist.root}/${fullname}-src"/>

  <!-- The original, unmodified and expanded cocoon.war file upon which we base our package -->
  <property name="cocoon.webapp.dir" value="../cocoon/build/webapp"/>

  <!-- Default publications dir -->
  <property name="pubs.root.dirs" value="src/webapp/lenya/pubs"/>

  <!-- Tomcat home dir -->
  <property name="tomcat.home.dir" value="/usr/local/tomcat"/>

  <!-- Tomcat webapps dir -->
  <property name="tomcat.webapps.dir" value="webapps/lenya"/>

  <!-- Tomcat cache dir -->
  <property name="tomcat.cache.dir" value="work/Standalone/localhost/lenya"/>

  <!-- Tomcat endorsed libraries dir -->
  <property name="tomcat.endorsed.dir" value="common/endorsed"/>

  <!--
  The files that should be copied into the dist
  directory and packed up as tar.gz file, along with the .war file
  -->
  <property name="src.dist.dir" value="./src/dist"/>

  <!--
  The files that should be copied into the source dist
  directory and packed up as tar.gz file, along with the sources etc.
  -->
  <property name="src.dist-src.dir" value="./src/dist-src"/>

  <!-- Our own source code tree is here -->
  <property name="src.java.dir" value="./src/java"/>
  <property name="java.dir" value="src/java"/>

  <!--
  The unit testing source code
  (See http://www-106.ibm.com/developerworks/java/library/j-ant/)
  -->
  <property name="src.test.dir" value="src/test"/>

  <!-- Publication-specific entities are here -->
  <property name="src.entities.dir" value="resources/entities"/>
  <property name="build.entities.dir" value="WEB-INF/entities"/>

  <!--
  Our own webapp resources to be merged with the
  contents of the cocoon webapp are here
  -->
  <property name="src.webapp.dir" value="src/webapp"/>

  <property name="tools.tasks.dest" value="tools/anttasks"/>
  
  <!-- HSQLDB server port -->
  <property name="hsqldb-server.port" value="9002"/>
  
  <!-- Enable Uploads -->
  <property name="enable.uploads" value="false"/>
  
  <!-- Enable RollingFileAppender, else ConsoleAppender will be used -->
  <property name="enable.log4j" value="false"/>

  <!--
  these are here only for those who use jikes compiler. For other
  developers this part makes no difference.
  -->
  <property name="build.compiler.emacs" value="on"/>
  <property name="build.compiler.pedantic" value="false"/>
  <property name="build.compiler.depend" value="true"/>
  <property name="build.compiler.fulldepend" value="true"/>

  
  <!-- ============================================================ -->
  <!-- Set up classpath                                             -->
  <!-- ============================================================ -->
  
  <path id="classpath">
    <fileset dir="${lib.dir}">
      <include name="*.jar"/>
    </fileset>
    <fileset dir="${build.webapp}/WEB-INF/lib">
      <include name="*.jar"/>
    </fileset>
    <!--<pathelement path="${java.class.path}/"/>-->
  </path>
</project>
