# common properties
# easier to set here than in xml file

# set common.dir when used without ant (e.g. IvyDE)
common.dir	= ${ivy.settings.dir}

ivy.jar		= ${common.dir}/sigil/ivy-2.0.0-rc1.jar
sigil-ivy-plugin.jar = ${common.dir}/sigil/sigil-ivy-plugin.jar

build.dir	= ${basedir}/build
build_xml	= build.xml
classes.dir	= ${build.dir}/classes
deps.dir	= ${build.dir}/deps
composite.dir	= ${basedir}/xml
src.dir		= ${basedir}/src
ivy.file	= ${basedir}/ivy.xml

_build.dir	= ${build.dir}
build.lib.dir	= ${_build.dir}/lib
build.etc.dir	= ${_build.dir}/etc

top-build.dir	= ${common.dir}/../build
site.dir	= ${common.dir}/../site
dist.dir	= ${top-build.dir}/dist
install.dir	= ${top-build.dir}/install
repository.dir	= ${top-build.dir}/repository
cache.dir	= ${common.dir}/../cache
# note: clean-local task assumes repository.pattern starts with ${ivy.module}
repository.pattern = [module]/[revision]/[type]s/[artifact].[ext]

ivy.install.version=2.0.0
bnd.install.version=0.0.312
equinox.install.version=3.4.0.v20080421-2006
equinox.release=ganymede

resolve.log	= download-only

# over-ridden by hudson
buildVersion	= 0.8.0-dev

# end

