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

## Path to your IKVM installation. Set this if you want to compile
## XML Graphics Commons to a .NET DLL.
## NOTE: If you want to compile the .NET DLL you'll have to
## disable the internal codecs. See below.
#ikvm.dir=C:\\javalib\\ikvm-12-07-2004\\ikvm

## ===================================================================
## 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.
# javadoc.packages = org.apache.xmlgraphics.*

## ===================================================================
## 3. Project specific properties

version = svn-trunk

## Allows you to switch off the compilation of the internal image
## codecs which depend on Sun-private classes. Setting this to true
## enabled compatibility with non-Sun Java implementations such as
## Kaffe, IKVM, GCC/GCJ or even Apache Harmony (i.e. system which 
## are based on GNU Classpath, for example).
# internal-codecs.disabled = false
