#
#  Licensed to the Apache Software Foundation (ASF) under one or more
#  contributor license agreements.  See the NOTICE file distributed with
#  this work for additional information regarding copyright ownership.
#  The ASF licenses this file to You 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.
#

# -----------------------------------------------------------------------------
# build.properties.sample
#
# This is an example "build.properties" file, used to customize building Tomcat
# for your local environment.  It defines the location of all external
# modules that Tomcat depends on.  Copy this file to "build.properties"
# in the top-level source directory, and customize it as needed.
#
# $Id$
# -----------------------------------------------------------------------------


# ----- Compile Control Flags -----
compile.debug=on
compile.deprecation=off
compile.optimize=on


# ----- Build Control Flags

#Version number
version=4.1

#Proxy to download subproject
#proxy.host=proxy.domain
#proxy.port=8080
#proxy.use=on

#CVS root for the jakarta subprojects that do not have released yet.
cvsroot=":pserver:anoncvs@cvs.apache.org:/home/cvspublic"


# ----- Default Base Path for Dependent Packages -----
base.path=/usr/share/java


# --------------------------------------------------
#                REQUIRED LIBRARIES
# --------------------------------------------------


# ----- Commons Beanutils, version 1.1 or later -----
commons-beanutils.home=${base.path}/commons-beanutils-1.6.1
commons-beanutils.lib=${commons-beanutils.home}
commons-beanutils.jar=${commons-beanutils.lib}/commons-beanutils.jar
commons-beanutils.loc=http://www.apache.org/dist/jakarta/commons/beanutils/binaries/commons-beanutils-1.6.1.tar.gz


# ----- Commons Collections, version 1.0 or later -----
commons-collections.home=${base.path}/commons-collections-2.1
commons-collections.lib=${commons-collections.home}
commons-collections.jar=${commons-collections.lib}/commons-collections.jar
commons-collections.loc=http://www.apache.org/dist/jakarta/commons/collections/binaries/collections-2.1.tar.gz


# ----- Commons Digester, version 1.1.1 or later -----
commons-digester.home=${base.path}/commons-digester-1.4.1
commons-digester.lib=${commons-digester.home}
commons-digester.jar=${commons-digester.lib}/commons-digester.jar
commons-digester.loc=http://www.apache.org/dist/jakarta/commons/digester/binaries/commons-digester-1.4.1.tar.gz


# ----- Commons FileUpload, nightly build -----
commons-fileupload.home=${base.path}/commons-fileupload-1.0-beta-1
commons-fileupload.lib=${commons-fileupload.home}
commons-fileupload.jar=${commons-fileupload.lib}/commons-fileupload-1.0-beta-1.jar
commons-fileupload.loc=http://www.apache.org/dist/jakarta/commons/fileupload/commons-fileupload-1.0-beta-1.tar.gz 


# ----- Commons Logging, version 1.0.1 or later -----
commons-logging.home=${base.path}/commons-logging-1.0.4
commons-logging.lib=${commons-logging.home}
commons-logging-api.jar=${commons-logging.lib}/commons-logging-api.jar
commons-logging.jar=${commons-logging.lib}/commons-logging.jar
commons-logging.loc=http://www.apache.org/dist/jakarta/commons/logging/binaries/commons-logging-1.0.4.tar.gz


# ----- Java Naming and Directory Interface (JNDI), version 1.2 or later -----
# Note: Optional with JDK 1.3+
jndi.home=${base.path}/jndi-1.2.1
jndi.lib=${jndi.home}/lib
jndi.jar=${jndi.lib}/jndi.jar
ldap.jar=${jndi.lib}/ldap.jar
jaas.jar=${jndi.lib}/jaas.jar


# ----- Jakarta Regular Expressions Library, version 1.3 -----
regexp.home=${base.path}/jakarta-regexp-1.4
regexp.lib=${regexp.home}
regexp.jar=${regexp.lib}/jakarta-regexp-1.4.jar
regexp.loc=http://www.apache.org/dist/jakarta/regexp/binaries/jakarta-regexp-1.4.tar.gz


# ----- Jakarta Servlet API Classes (Servlet 2.3 / JSP 1.2) -----
servlet.home=${base.path}/jakarta-servletapi-4
servlet.lib=${servlet.home}/dist/lib
servlet.jar=${servlet.lib}/servlet.jar
servlet.loc=jakarta-servletapi-4


# ----- Xerces XML Parser, version 1.4.4 to 2.0.0 Beta 4 -----
# Note: Optional with JDK 1.4+
#xerces.home=${base.path}/xerces-1_4_4
#xerces.lib=${xerces.home}
#xerces.jar=${xerces.lib}/xerces.jar


# ----- Xerces XML Parser, version 2.0.0 or later -----
# Note: Optional with JDK 1.4+, or if Xerces 1.x is present
xerces.home=${base.path}/xerces-2_3_0
xerces.lib=${xerces.home}
xerces.loc=http://xml.apache.org/dist/xerces-j/old_xerces2/Xerces-J-bin.2.3.0.tar.gz
xercesImpl.jar=${xerces.lib}/xercesImpl.jar
xml-apis.jar=${xerces.lib}/xml-apis.jar


# --------------------------------------------------
#                OPTIONAL LIBRARIES
# --------------------------------------------------

# ----- Mirror ------
mirror=http://www.apache.org/dist

# ----- Java Activation Framework (JAF), version 1.0.1 or later -----
activation.home=${base.path}/jaf-1.0.1
activation.lib=${activation.home}
activation.jar=${activation.lib}/activation.jar


# ----- Commons Daemon, version 20020219 or later -----
commons-daemon.home=${base.path}/commons-daemon
commons-daemon.lib=${commons-daemon.home}/dist
commons-daemon.jar=${commons-daemon.lib}/commons-daemon.jar
commons-daemon.loc=jakarta-commons-sandbox/daemon


# ----- Commons DBCP, version 1.0 or later -----
commons-dbcp.version=1.1
commons-dbcp.home=${base.path}/commons-dbcp-${commons-dbcp.version}
commons-dbcp.lib=${commons-dbcp.home}/commons-dbcp-1.0
commons-dbcp.jar=${commons-dbcp.lib}/commons-dbcp.jar
commons-dbcp.loc=${mirror}/jakarta/commons/dbcp/binaries/commons-dbcp-${commons-dbcp.version}.tar.gz


# ----- Commons Modeler, version 1.0 or later -----
commons-modeler.version=1.1
commons-modeler.home=${base.path}/commons-modeler-${commons-modeler.version}
commons-modeler.lib=${commons-modeler.home}
commons-modeler.jar=${commons-modeler.lib}/commons-modeler.jar
commons-modeler.loc=${mirror}/jakarta/commons/modeler/binaries/modeler-${commons-modeler.version}.tar.gz


# ----- Commons Pool, version 1.0 or later -----
commons-pool.version=1.1
commons-pool.home=${base.path}/commons-pool-${commons-pool.version}
commons-pool.lib=${commons-pool.home}
commons-pool.jar=${commons-pool.lib}/commons-pool.jar
commons-pool.loc=${mirror}/jakarta/commons/pool/binaries/commons-pool-${commons-pool.version}.tar.gz


# ----- Java Database Connectivity (JDBC) Optional Package, version 2.0 -----    
jdbc20ext.home=${base.path}/jdbc2_0-stdext      
jdbc20ext.lib=${jdbc20ext.home}         
jdbc20ext.jar=${jdbc20ext.lib}/jdbc2_0-stdext.jar

# ----- Java Management Extensions (JMX), JMX RI 1.0.1 or later or MX4J 1.0 or later -----
jmx.version=3.0.1
jmx.home=${base.path}/mx4j-${jmx.version}
jmx.lib=${jmx.home}/lib
jmx.jar=${jmx.lib}/mx4j-jmx.jar
jmx.loc=http://download.sourceforge.net/mx4j/mx4j-${jmx.version}.tar.gz


# ----- Java Secure Sockets Extension (JSSE), version 1.0.2 or later -----
jsse.home=${base.path}/jsse-1.0.3
jsse.lib=${jsse.home}/lib
jcert.jar=${jsse.lib}/jcert.jar
jnet.jar=${jsse.lib}/jnet.jar
jsse.jar=${jsse.lib}/jsse.jar


# ----- Java Transaction API (JTA), version 1.0.1 or later -----
jta.home=${base.path}/jta-1_0_1a
jta.lib=${jta.home}
jta.jar=${jta.lib}/jta.jar


# ----- JUnit Unit Test Suite, version 3.7 or later -----
junit.home=${base.path}/junit3.7
junit.lib=${junit.home}
junit.jar=${junit.lib}/junit.jar
junit.loc=http://download.sourceforge.net/junit/junit3.7.zip


# ----- Java Mail, version 1.2 or later -----
mail.home=${base.path}/javamail-1.2
mail.lib=${mail.home}
mail.jar=${mail.lib}/mail.jar


# ----- NSIS, version 1.9x -----
nsis.home=${base.path}/nsis
nsis.loc=http://www.nullsoft.com/free/nsis/nsis198.exe


# ----- PureTLS Extension, version 0.9 or later -----
puretls.home=${base.path}/puretls-0.9b2
puretls.lib=${puretls.home}/build
puretls.jar=${puretls.lib}/puretls.jar


# ----- Struts, version 1.0.1 or later -----
struts.version=1.1
struts.home=${base.path}/jakarta-struts-${struts.version}
struts.lib=${struts.home}/lib
struts.jar=${struts.lib}/struts.jar
struts.loc=${mirror}/jakarta/struts/binaries/jakarta-struts-${struts.version}.tar.gz


# ----- Tyrex Data Source, version 1.0 -----
# Now tyrex is http://tyrex.sourceforge.net/
tyrex.home=${base.path}/tyrex-1.0
tyrex.lib=${tyrex.home}
tyrex.jar=${tyrex.lib}/tyrex-1.0.jar
tyrex.loc=http://belnet.dl.sourceforge.net/sourceforge/tyrex/tyrex-1.0.tgz

# ----- Tomcat5.x.x -----
tomcat5.version=5.5.15
tomcat5.home=${base.path}/apache-tomcat-${tomcat5.version}
tomcat5.jar=${tomcat5.home}/server/lib/catalina.jar
servlet-api.jar=${tomcat5.home}/common/lib/servlet-api.jar
tomcat5.loc=http://www.apache.org/dist/tomcat/tomcat-5/v${tomcat5.version}/bin/apache-tomcat-${tomcat5.version}.tar.gz 

# ----- Tomcat4.1.x -----
tomcat41.version=4.1.31
tomcat41.home=${base.path}/jakarta-tomcat-${tomcat41.version}
tomcat41.jar=${tomcat41.home}/server/lib/catalina.jar
servlet-api.jar=${tomcat41.home}/common/lib/servlet.jar
tomcat41.loc=http://www.apache.org/dist/tomcat/tomcat-4/v${tomcat41.version}/bin/jakarta-tomcat-${tomcat41.version}.tar.gz 

# ----- Tomcat33 -----
tomcat33.version=3.3.2
tomcat33.home=${base.path}/jakarta-tomcat-${tomcat33.version}
tomcat33.jar=${tomcat33.home}/lib/common/tomcat_core.jar
tomcat33.loc=${mirror}/tomcat/tomcat-3/v${tomcat33.version}/bin/jakarta-tomcat-${tomcat33.version}.tar.gz
