#----------------------------------------------
#  Cocoon Build Properties
#----------------------------------------------

# NOTE: don't modify this file directly but copy the properties you need
# to modify over to a file named 'local.build.properties' and modify that. 
# The build system will override these properties with the ones in the 
# 'local.build.properties' file.

# ---- Webapp ------------------------------------------------------------------

#exclude.webapp.documentation=true
#exclude.webapp.javadocs=true
#exclude.webapp.idldocs=true
#exclude.webapp.scratchpad=true
#exclude.webapp.samples=true

# ---- Build Exclusions --------------------------------------------------------

#exclude.scratchpad=true
#exclude.deprecated=true
#exclude.javadocs=true
#exclude.idldocs=true

# ---- Validation --------------------------------------------------------------

validate.config=true
validate.xdocs=true
validate.jars=true

# ---- Forrest -----------------------------------------------------------------

forrest.home=../xml-forrest/build/dist/shbat/

# ---- Build -------------------------------------------------------------------

build.root=build
build=${build.root}/${name}-${version}
build.dest=${build}/classes
build.mocks=${build}/mocks
build.test=${build}/test
build.docs=${build}/docs
build.docs.printer=${build}/printer-docs
build.xdocs=${build}/xdocs
build.idldocs=${build}/idldocs
build.javadocs=${build}/javadocs
build.context=${build}/documentation
build.context.printer=${build}/printer-documentation
build.blocks=${build}/blocks
build.deprecated=${build}/deprecated
build.scratchpad=${build}/scratchpad
build.scratchpad.src=${build.scratchpad}/src
build.scratchpad.dest=${build.scratchpad}/dest
build.samples=${build}/samples
build.temp=${build}/temp

build.docs.loglevel=ERROR
build.docs.printer.loglevel=ERROR

# ------ Webapp Build Properties -----------------------------------------------

build.webapp=${build.root}/webapp
build.webapp.webinf=${build.webapp}/WEB-INF
build.webapp.classes=${build.webapp.webinf}/classes
build.webapp.lib=${build.webapp.webinf}/lib
build.webapp.samples=${build.webapp}/samples
build.webapp.docs=${build.webapp}/docs
build.webapp.javadocs=${build.webapp}/api/java
build.webapp.idldocs=${build.webapp}/api/fom
build.war=${build}/${name}.war

# ------ Standalone-demo Build Properties --------------------------------------
build.standalone.demo=${build.root}/standalone-demo

# ---- Compilation -------------------------------------------------------------

compiler=modern
compiler.debug=on
compiler.optimize=on
compiler.deprecation=off
compiler.nowarn=on
compiler.emacs=on
compiler.warnings=on
compiler.pedantic=off
compiler.depend=on
compiler.fulldepend=on


# ------ System Properties -----------------------------------------------------

# WARNING: you shouldn't need to modify anything below here since there is a
# very high change of breaking the build system. Do it only if you know what
# you're doing.

packages=org.apache

# Project descriptor
gump.descriptor=gump.xml

# Directory Layout
src=src
idl=${src}/idl
java=${src}/java
mocks=${src}/mocks
test=${src}/test
resources=${src}/resources
resources.styles=${resources}/styles
resources.logos=${resources}/logos
resources.javadoc=${resources}/javadoc
documentation=${src}/documentation
docs=${documentation}/xdocs
images=${documentation}/images
blocks=${src}${file.separator}blocks
samples=${src}/samples
webapp=${src}/webapp
webapp.samples=${webapp}/samples

# Scratchpad Stuff
scratchpad=${src}/scratchpad
scratchpad.src=${scratchpad}/src
scratchpad.lib=${scratchpad}/lib
scratchpad.samples=${scratchpad}/webapp/samples

# Deprecated Stuff
deprecated=${src}/deprecated
deprecated.src=${deprecated}/java
deprecated.conf=${deprecated}/conf

# Tools
tools=tools
tools.lib=${tools}/lib
tools.src=${tools}/src
tools.tasks.src=${tools.src}/anttasks
tools.tasks.dest=${tools}/anttasks
tools.loader.src=${tools.src}/loader
tools.loader.dest=${tools}/loader
tools.jetty=${tools}/jetty

# Libraries
lib=lib
lib.core=${lib}/core
lib.endorsed=${lib}/endorsed
lib.optional=${lib}/optional
lib.local=${lib}/local

# Distribution Directories
dist.root=dist
dist=${dist.root}/${name}-${version}
dist.name=${name}-${version}
dist.target=${dist.root}

# Site Directory
site=../cocoon-site/site/2.1

# Legal
legal=legal
