## BEGIN PROJECT BUILD PROPERTIES ##

# default settings for all this project's builds, for this branch; see also o.e.d.common.releng/build.properties for more overrideable defaults

# To permit automatic downloads of non-EPL compatible code, set this to property to "I accept"
thirdPartyDownloadLicenseAcceptance="I accept"

# MUST BE SET #
projectid=m2m.qvtoml
zipPrefix=m2m-qvtoml
incubation=
version=3.1.1
buildType=N
mainFeatureToBuildID=org.eclipse.m2m.qvt.oml.sdk
testFeatureToBuildID=org.eclipse.m2m.qvt.oml.tests

#what steps should we do? default: build.steps=buildUpdate,buildZips,buildTests,generateDigests,test,publish,cleanup
build.steps=buildZips,buildTests,buildUpdate,generateDigests,testLocal,publish,cleanup

dependencyURLs=\
http://download.eclipse.org/eclipse/downloads/drops/R-3.7-201106131736/eclipse-SDK-3.7-linux-gtk-x86_64.tar.gz
#http://download.eclipse.org/tools/orbit/downloads/drops/R20100519200754/orbit-R20100519200754.zip

repositoryURLs=\
http://download.eclipse.org/modeling/emf/emf/updates/2.7milestones,\
http://download.eclipse.org/modeling/mdt/ocl/updates/milestones/3.1.0
#http://download.eclipse.org/tools/orbit/downloads/drops/R20100519200754/repository
featureIDsToInstall=org.eclipse.emf+org.eclipse.xsd+org.eclipse.ocl

compilerArg=-enableJavadoc -encoding ISO-8859-1
flattenDependencies=true
parallelCompilation=true
generateFeatureVersionSuffix=true
individualSourceBundles=true
allowBinaryCycles=true
generateAPIDescription=true

# MUST BE SET #
#JAVA50_HOME=/opt/public/common/ibm-java2-ppc-50
#JAVA14_HOME=/opt/public/common/ibm-java2-142
#JAVA_HOME=${JAVA50_HOME}

JAVA_HOME=${JAVA_HOME}
JAVA14_HOME=${JAVA_HOME}
JAVA50_HOME=${JAVA_HOME}
JAVA50_64_HOME=${JAVA_HOME}
JAVA60_HOME=${JAVA_HOME}
JAVADOC_HOME=${JAVA_HOME}/bin
PACK200_JAVA_HOME=${JAVA_HOME}

#################################################################################################################

#javadocEnabled=true
#JAVADOC14_HOME=/opt/public/common/ibm-java2-ppc-50/bin

# TODO: are these still required/used?
#projRelengRoot=:pserver:anonymous@dev.eclipse.org:/cvsroot/tools
projRelengRoot=:pserver:anonymous@dev.eclipse.org:/cvsroot/modeling
projRelengPath=org.eclipse.m2m/org.eclipse.m2m.qvtoml.releng
projRelengBranch=R3_1_maintenance
basebuilderBranch=R35_RC4

# TODO: not used yet
# define regex patterns to use when automatically selecting zips from a directory or list file
#dependencyRegexFilter=R3_4_maintenance:M200.*/eclipse-SDK-|R-.*200.*/eclipse-SDK-

# TODO: not used yet
# could be file://, http://, cvs path, or relative path?
#mapLocation=maps/

# TODO: implement use of packager.map for defining deps?
# TODO: could be relative, absolute (local), or http/ftp paths to archives when defining dependencyURLs above

## END PROJECT BUILD PROPERTIES ##
