## This is a template for settings which are useful to be
## overridden in a developer specific property files.
## Copy this to build-local.properties, uncomment and change
## properties which should be overridden.
## The file buil-local.properties is not stored in the code
## repository and ignored for file adds.

## ===================================================================
## 1. Path settings

## All Jars from the optional lib directory are added used for
## compilation and JUnit tests. Put your jars for additional
## dependencies and tools here.
# optional.lib.dir = /home/bart/java/lib

## Checkstyle home directory. This is meant to be the top level of the
## checkstyle binary distribution.
# checkstyle.home.dir = /home/bart/stuff/checkstyle-4.0-beta6

## Path to the java 1.4 runtime libary (rt.jar on most systems)
## On OS X this is /System/Library/Frameworks/JavaVM.framework/Versions/1.4/Classes/classes.jar
#java14.rt.lib=/opt/j2re1.4.2_07/lib/rt.jar
## Path to the java 1.4 jce libary (jce.jar on most systems)
## On OS X this is /System/Library/Frameworks/JavaVM.framework/Versions/1.4/Classes/jce.jar
#java14.jce.lib=/opt/j2re1.4.2_07/lib/jce.jar

## ===================================================================
## 2. Switches for common tasks

## Javac switches
# javac.debug = on
# javac.optimize = off
# javac.deprecation = on
# javac.source = 1.4
# javac.target = 1.4
# javac.fork = on

## JUnit task switches
# junit.fork = on

## Packages to produce javadoc.
## Add packages for FOP extensions if necessary.
# javadoc.packages = org.apache.fop.*,fopextension.*

## ===================================================================
## 3. FOP specific properties

## Specify an alternate file that contains a list of disabled layout
## engine tests.
# layoutengine.disabled = test/layoutengine/disabled-testcases.txt

## Specify an alternate directory to scan for user supplied
## hyphenation pattern files.
# user.hyph.dir = /home/bart/offo
