## 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.2.0
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=buildUpdate,buildZips,buildTests,generateDigests,testLocal,publish,cleanup

dependencyURLs=\
http://download.eclipse.org/eclipse/downloads/drops/S-3.8RC1-201205182345/eclipse-SDK-3.8RC1-linux-gtk-x86_64.tar.gz
#http://download.eclipse.org/eclipse/downloads/drops4/S-4.2RC1-201205182145/eclipse-SDK-4.2RC1-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.8milestones,\
http://download.eclipse.org/modeling/mdt/ocl/downloads/drops/4.0.0/S201205221612/mdt-ocl-Update-tools-4.0.0RC1a.zip
#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}
JAVA60_HOME=/shared/common/jdk-1.6.x86_64
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
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 ##
