# -----------------------------------------------------------------------------
# build.properties.default
#
# 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$
# -----------------------------------------------------------------------------

# ----- Vesion Control Flags -----
version.major=5
version.minor=5
version.build=36
version.patch=0
#Set the pretty version name
version=5.5.36

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


# ----- Build Control Flags

#Build all components
#full.dist=on

#Hide configuration flags display
#flags.hide=on


# ----- Proxy setup -----
#proxy.host=proxy.domain
#proxy.port=8080
#proxy.use=on


# ----- Default Base Path for Dependent Packages -----
# Please note this path must be absolute, not relative,
# as it is referenced with different working directory
# contexts by the various build scripts.
base.path=/usr/share/java
#base.path=C:/path/to/the/repository
#base.path=/usr/local

# ----- Commons files base location -----
base-commons.loc=http://archive.apache.org/dist/commons

# ----- Logging files base location -----
base-logging.loc=http://archive.apache.org/dist/logging

# ----- Xerces files base location -----
base-xerces.loc=http://archive.apache.org/dist/xerces

# ----- Struts files base location -----
base-struts.loc=http://archive.apache.org/dist/struts

# ----- Sourceforge files base location -----
base-sf.loc=http://switch.dl.sourceforge.net/sourceforge
#base-sf.loc=http://heanet.dl.sourceforge.net/sourceforge
#base-sf.loc=http://internap.dl.sourceforge.net/sourceforge

# ----- Additional Tomcat files base location -----
base-tomcat.loc=http://archive.apache.org/dist/tomcat

# ----- Additional Optional-but-Required-for-Release files base location -----
activation.loc=http://people.apache.org/~jim/tomcat-5.5-opt-jars/jaf-1.1.1/activation.jar
mail.loc=http://people.apache.org/~jim/tomcat-5.5-opt-jars/javamail-1.4.1/mail.jar

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


# ----- Commons Beanutils, version 1.4 or later -----
commons-beanutils.home=${base.path}/commons-beanutils-1.7.0
commons-beanutils.lib=${commons-beanutils.home}
commons-beanutils.jar=${commons-beanutils.lib}/commons-beanutils.jar
commons-beanutils.loc=${base-commons.loc}/beanutils/binaries/commons-beanutils-1.7.0.tar.gz


# ----- Commons Launcher, version 0.9 or later -----
commons-launcher.home=${base.path}/commons-launcher
commons-launcher.lib=${commons-launcher.home}
commons-launcher.bin=${commons-launcher.home}/bin
commons-launcher.jar=${commons-launcher.bin}/commons-launcher.jar
commons-launcher.bootstrap.class=${commons-launcher.bin}/LauncherBootstrap.class
commons-launcher.loc=${base-commons.loc}/launcher/binaries/commons-launcher-1.1.tar.gz


# ----- Commons Daemon, version 1.0-Alpha or later -----
commons-daemon.version=1.0.10
commons-daemon.home=${base.path}/commons-daemon-${commons-daemon.version}
commons-daemon.jar=${commons-daemon.home}/commons-daemon-${commons-daemon.version}.jar
commons-daemon.native.win.home=${commons-daemon.home}/windows
commons-daemon.native.win.mgr.exe=${commons-daemon.native.win.home}/prunmgr.exe
commons-daemon.native.src.tgz=${commons-daemon.home}/commons-daemon-${commons-daemon.version}-native-src.tar.gz
commons-daemon.native.win.zip=${commons-daemon.home}/commons-daemon-${commons-daemon.version}-bin-windows.zip
commons-daemon.bin.loc=${base-commons.loc}/daemon/binaries/commons-daemon-${commons-daemon.version}-bin.tar.gz
commons-daemon.native.src.loc=${base-commons.loc}/daemon/source/commons-daemon-${commons-daemon.version}-native-src.tar.gz
commons-daemon.native.win.loc=${base-commons.loc}/daemon/binaries/windows/commons-daemon-${commons-daemon.version}-bin-windows.zip


# ----- Commons Digester, version 1.4 or later -----
commons-digester.home=${base.path}/commons-digester-1.8
commons-digester.lib=${commons-digester.home}
commons-digester.jar=${commons-digester.lib}/commons-digester-1.8.jar
commons-digester.loc=${base-commons.loc}/digester/binaries/commons-digester-1.8.tar.gz


# ----- Commons Expression Language (EL), version 1.0 or later -----
commons-el.home=${base.path}/commons-el-1.0
commons-el.lib=${commons-el.home}
commons-el.jar=${commons-el.lib}/commons-el.jar
commons-el.loc=${base-commons.loc}/el/binaries/commons-el-1.0.tar.gz


# ----- Commons Logging, version 1.0.1 or later -----
# Warning: If the version number here changes, several other files have to be updated.
# Search the sources for "commons-logging-api-1.1.1.jar"
# -> tomcat.nsi, bootstrap.MF, catalina.policy
commons-logging.home=${base.path}/commons-logging-1.1.1
commons-logging.lib=${commons-logging.home}
commons-logging-api.jar=${commons-logging.lib}/commons-logging-api-1.1.1.jar
commons-logging.jar=${commons-logging.lib}/commons-logging-1.1.1.jar
commons-logging.loc=${base-commons.loc}/logging/binaries/commons-logging-1.1.1-bin.tar.gz


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

# ----- Xerces XML Parser, version 2.8.0 -----
xerces.home=${base.path}/xerces-2_9_1
xerces.lib=${xerces.home}
xercesImpl.jar=${xerces.lib}/xercesImpl.jar
xml-apis.jar=${xerces.lib}/xml-apis.jar
xerces.loc=${base-xerces.loc}/j/binaries/Xerces-J-bin.2.9.1.tar.gz


# ----- Eclipse JDT, version 3.3.1 or later -----
jdt.version=3.7.2
jdt.release=R-3.7.2-201202080800
jdt.home=${base.path}/ecj-${jdt.version}
jdt.jar=${jdt.home}/ecj-${jdt.version}.jar
# The download will be moved to the archive area eventually. We are taking care of that in advance.
# Note older JARs were called ecj.jar. Newer JARs are called ecj-${jdt.version}.jar
jdt.loc.1=http://archive.eclipse.org/eclipse/downloads/drops/${jdt.release}/ecj-${jdt.version}.jar
jdt.loc.2=http://download.eclipse.org/eclipse/downloads/drops/${jdt.release}/ecj-${jdt.version}.jar

# ----- Tomcat native library -----
tomcat-native.version=1.1.24
tomcat-native.home=${base.path}/tomcat-native-${tomcat-native.version}
tomcat-native.tar.gz=${tomcat-native.home}/tomcat-native.tar.gz
tomcat-native.loc=${base-tomcat.loc}/tomcat-connectors/native/${tomcat-native.version}/source/tomcat-native-${tomcat-native.version}-src.tar.gz
tomcat-native.win=${base-tomcat.loc}/tomcat-connectors/native/${tomcat-native.version}/binaries/tomcat-native-${tomcat-native.version}-win32-bin.zip


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


# ----- Commons DBCP, version 1.1 or later -----
commons-dbcp.version=1.3
commons-dbcp.home=${base.path}/commons-dbcp-${commons-dbcp.version}-src
commons-dbcp-src.loc=${base-commons.loc}/dbcp/source/commons-dbcp-${commons-dbcp.version}-src.tar.gz


# ----- Commons Pool, version 1.1 or later -----
commons-pool.version=1.5.7
commons-pool.home=${base.path}/commons-pool-${commons-pool.version}-src
commons-pool-src.loc=${base-commons.loc}/pool/source/commons-pool-${commons-pool.version}-src.tar.gz


# ----- Commons Collections, version 2.0 or later -----
commons-collections.home=${base.path}/commons-collections-3.2
commons-collections.lib=${commons-collections.home}
commons-collections.jar=${commons-collections.lib}/commons-collections-3.2.jar
commons-collections.loc=${base-commons.loc}/collections/binaries/commons-collections-3.2.tar.gz
commons-collections-src.loc=${base-commons.loc}/collections/source/commons-collections-3.2-src.tar.gz


# ----- Commons FileUpload, version 1.0-20030531 or later -----
commons-fileupload.home=${base.path}/commons-fileupload-1.2
commons-fileupload.lib=${commons-fileupload.home}/lib
commons-fileupload.jar=${commons-fileupload.lib}/commons-fileupload-1.2.jar
commons-fileupload.loc=${base-commons.loc}/fileupload/binaries/commons-fileupload-1.2-bin.tar.gz

# ----- Commons IO, needed by Commons Fileupload -----
commons-io.home=${base.path}/commons-io-1.4
commons-io.jar=${commons-io.home}/commons-io-1.4.jar
commons-io.loc=${base-commons.loc}/io/binaries/commons-io-1.4-bin.tar.gz

# ----- Java Management Extensions (JMX), JMX RI 1.2.1 or later or MX4J 2.0.1 or later -----
jmx.home=${base.path}/mx4j-3.0.2
jmx.lib=${jmx.home}/lib
jmx.jar=${jmx.lib}/mx4j.jar
jmx-tools.jar=${jmx.lib}/mx4j-tools.jar
jmx-remote.jar=${jmx.lib}/mx4j-remote.jar
jmx.loc=${base-sf.loc}/mx4j/mx4j-3.0.2.tar.gz


# ----- JUnit Unit Test Suite, version 3.7 or later -----
junit.home=${base.path}/junit3.8.2
junit.lib=${junit.home}
junit.jar=${junit.lib}/junit.jar
junit.loc=${base-sf.loc}/junit/junit3.8.2.zip


# ----- Rhino ------
rhino.home=${base.path}/rhino1_6R2
rhino.jar=${rhino.home}/js.jar
rhino.loc=http://ftp.mozilla.org/pub/mozilla.org/js/rhino1_6R2.zip

# ----- NSIS, version 2.0 or later -----
nsis.home=${base.path}/nsis-2.46
nsis.exe=${nsis.home}/makensis.exe
nsis.installoptions.dll=${nsis.home}/Plugins/InstallOptions.dll
nsis.nsexec.dll=${nsis.home}/Plugins/nsExec.dll
nsis.nsisdl.dll=${nsis.home}/Plugins/NSISdl.dll
nsis.loc=${base-sf.loc}/nsis/nsis-2.46.zip


# ----- Struts, version 1.2.4 or later -----
struts.home=${base.path}/struts-1.2.9-bin
struts.lib=${struts.home}/lib
struts.jar=${struts.lib}/struts.jar
struts.loc=${base-struts.loc}/binaries/struts-1.2.9-bin.tar.gz


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


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

# ----- Java Secure Sockets Extension (JSSE), version 1.0.3 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.1a or later -----
jta.home=${base.path}/jta-1_1
jta.lib=${jta.home}
jta.jar=${jta.lib}/jta.jar

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

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

# ----- Servlet API v2.4 -----
servlet-api.home=${base.path}/servlet-api-2.4
servlet-api.lib=${servlet-api.home}/lib
servlet-api.jar=${servlet-api.lib}/servlet-api.jar

# ----- JSP API v2.0 -----
jsp-api.home=${base.path}/jsp-api-2.0
jsp-api.lib=${jsp-api.home}/lib
jsp-api.jar=${jsp-api.lib}/jsp-api.jar
