###############################################################################
# Copyright (c) 2013 Willink Transformations and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     E.D.Willink - initial API and implementation
###############################################################################
## BEGIN PROJECT BUILD PROPERTIES ##

thirdPartyDownloadLicenseAcceptance="I accept"

projectid=mdt.ocl
zipPrefix=mdt-ocl
incubation=
version=3.1.0
buildType=N
mainFeatureToBuildID=org.eclipse.ocl.master
testFeatureToBuildID=org.eclipse.ocl.tests

build.steps=buildZips,buildTests,buildUpdate,generateDigests,testLocal,publish,cleanup

# The Orbit ZIP is used only for the LPG fetch in buildExtra.xml -- find a repo solution
dependencyURLs=http://download.eclipse.org/eclipse/downloads/drops/S-3.7M2a-201009211024/eclipse-SDK-3.7M2a-linux-gtk-x86_64.tar.gz,\
http://download.eclipse.org/tools/orbit/downloads/drops/R20100519200754/orbit-R20100519200754.zip

repositoryURLs=\
http://download.eclipse.org/modeling/tmf/xtext/downloads/drops/1.0.0/R201006161118/tmf-xtext-Update-1.0.0.zip,\
http://download.eclipse.org/modeling/m2t/xpand/downloads/drops/1.0.0/R201006150611/m2t-xpand-Update-1.0.0.zip,\
http://download.eclipse.org/modeling/emft/mwe/downloads/drops/1.0.0/R201006150535/emft-mwe-2-Update-1.0.0.zip,\
http://download.eclipse.org/modeling/emft/mwe/downloads//drops/1.0.0/R201006150535/emft-mwe-Update-1.0.0.zip,\
http://download.eclipse.org/modeling/mdt/uml2/downloads/drops/3.2.0/S201011081142/mdt-uml2-Update-3.2.0M3.zip,\
http://download.eclipse.org/modeling/emf/emf/downloads/drops/2.7.0/I201012061555/emf-xsd-Update-I201012061555.zip,\
http://download.eclipse.org/tools/orbit/downloads/drops/R20100519200754/repository
pluginIDsToInstall=org.apache.commons.cli+org.apache.commons.lang+org.apache.commons.logging+com.google.inject
featureIDsToInstall=org.eclipse.emf+org.eclipse.xsd+org.eclipse.uml2+org.eclipse.emf.mwe.ui+org.eclipse.emf.mwe2.runtime.sdk+org.eclipse.xpand+org.eclipse.xtend+org.eclipse.xtext.runtime+org.eclipse.xtext.ui

compilerArg=-enableJavadoc -encoding UTF-8
flattenDependencies=true
parallelCompilation=true
generateFeatureVersionSuffix=true
individualSourceBundles=true
allowBinaryCycles=true

#JAVA50_HOME=/opt/public/common/jdk-1.5.0-22.x86_64
#JAVA50_64_HOME=/opt/public/common/jdk-1.5.0-22.x86_64
#JAVA14_HOME=/opt/public/common/ibm-java2-142
#JAVA_HOME=${JAVA50_64_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}


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

#TODO: [269290] make javadokken work.
#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.mdt/org.eclipse.ocl/releng
basebuilderBranch=R35_RC4

LPGRuntimeVersion = 2.0.17
domainNamespace=*
projNamespace=org.eclipse.ocl
projRelengName=org.eclipse.ocl.releng

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