# 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
dist.dir	= ${top-build.dir}/dist
install.dir	= ${top-build.dir}/install
cache.dir	= ${top-build.dir}/ivy-cache
repository.dir	= ${top-build.dir}/repository
# note: clean-local task assumes repository.pattern starts with ${ivy.module}
repository.pattern = [module]/[revision]/[type]s/[artifact].[ext]

community.version = 1.4.0.SNAPSHOT
jini.version	= 2.1
paremus.version	= ${default.version}
bundle.version	= ${paremus.version}
resolve.log	= download-only

# over-ridden by hudson
buildVersion	= 0.8.0-dev

# end

