# -----------------------------------------------------------------------------
# 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.dll=${base-tomcat.loc}/tomcat-connectors/native/${tomcat-native.version}/binaries


# --------------------------------------------------
#              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
