###############################################################################
# Copyright (c) 2003, 2006 IBM Corporation 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:
#     IBM Corporation - initial API and implementation
###############################################################################
#####################
# Parameters describing how and where to execute the build.
# Typical users need only update the following properties:
#    baseLocation - where things you are building against are installed
#    bootclasspath - The base jars to compile against (typicaly rt.jar)
#    configs - the list of {os, ws, arch} configurations to build.  
#
# Of course any of the settings here can be overridden by spec'ing 
# them on the command line (e.g., -DbaseLocation=d:/eclipse

#The type of the top level element we are building,  generally "feature"
topLevelElementType = feature

#The id of the top level element we are building
# Required
#topLevelElementId = org.eclipse.e4.resources.feature

############# PRODUCT/PACKAGING CONTROL #############
#product=/plugin or feature id/path/to/.product
#runPackager=true

#Set the name of the archive that will result from the product build.
archiveNamePrefix=e4

# The prefix that will be used in the generated archive.
archivePrefix=eclipse

# The location underwhich all of the build output will be collected.
collectingFolder=${archiveNamePrefix}

# The list of {os, ws, arch} configurations to build.  This 
# value is a '&' separated list of ',' separate triples.  For example, 
#     configs=win32,win32,x86 & linux,motif,x86
# By default the value is *,*,*
#configs = *, *, *

configs=\
	win32, win32, x86 &\
	win32, win32, x86_64 &\
	win32, wpf, x86 &\
	win32, win32, ia64 &\
	macosx, carbon, ppc & \
	macosx, cocoa, x86 & \
	linux, gtk, x86 & \
	linux, gtk, ppc & \
	linux, gtk, x86_64 &\
	linux, gtk, ia64 &\
	linux, gtk, s390 &\
	linux, gtk, s390x &\
	linux, motif, x86 & \
	solaris, gtk, sparc & \
	solaris, gtk, x86 & \
	solaris, motif, sparc & \
	aix, motif, ppc & \
	hpux, motif, PA_RISC & \
	hpux, motif, ia64_32 & \
	qnx, photon, x86


# By default PDE creates one archive (result) per entry listed in the configs property.
# Setting this value to true will cause PDE to only create one output containing all 
# artifacts for all the platforms listed in the configs property.
# To control the output format for the group, add a "group, group, group - <format>" entry to the
# archivesFormat. 
groupConfigurations=true

#The format of the archive. By default a zip is created using antZip.
#The list can only contain the configuration for which the desired format is different than zip.
#archivesFormat=win32, win32, x86 - antZip& \
#	linux, gtk, ppc - antZip &\
#    linux, gtk, x86 - antZip& \
#	linux, gtk, x86_64 - antZip& \
# linux, motif, x86 - antZip& \
#	solaris, motif, sparc - antZip& \
#	solaris, gtk, sparc - antZip& \
#	aix, motif, ppc - antZip& \
#	hpux, motif, PA_RISC - antZip& \
#	macosx, carbon, ppc - antZip

#Allow cycles involving at most one bundle that needs to be compiled with the rest being binary bundles.
allowBinaryCycles = true

#Sort bundles depenedencies across all features instead of just within a given feature.
flattenDependencies = true

#Parallel compilation, requires flattenedDependencies=true
#parallelCompilation=true
#parallelThreadCount=
#parallelThreadsPerProcessor=
	
#Set to true if you want the output to be ready for an update jar (no site.xml generated)
#outputUpdateJars = true

#Set to true for Jnlp generation
#codebase should be a URL that will be used as the root of all relative URLs in the output.
#generateJnlp=false
#jnlp.codebase=<codebase url>
#jnlp.j2se=<j2se version>
#jnlp.locale=<a locale>
#jnlp.generateOfflineAllowed=true or false generate <offlineAllowed/> attribute in the generated features
#jnlp.configs=${configs}			#uncomment to filter the content of the generated jnlp files based on the configuration being built

#Set to true if you want to sign jars
#signJars=false
#sign.alias=<alias>
#sign.keystore=<keystore location>
#sign.storepass=<keystore password>

#Arguments to send to the zip executable
zipargs=

#Arguments to send to the tar executable
tarargs=--owner=0 --group=0 

#Control the creation of a file containing the version included in each configuration - on by default 
#generateVersionsLists=false

############## BUILD NAMING CONTROL ################

# Type of build.  Used in naming the build output.  Typically this value is
# one of I, N, M, S, ...
buildType=I

# ID of the build.  Used in naming the build output.
buildId=${builddate}-${buildtime}

# Label for the build.  Used in naming the build output
buildLabel=${buildType}${buildId}

# Timestamp for the build.  Used in naming the build output
timestamp=${builddate}${buildtime}

buildArea=/opt/public/cbi/eclipse.build
# The directory into which the build elements are fetched and where
# the build takes place.
buildDirectory=${buildArea}/${buildLabel}

#The value to be used for the qualifier of a plugin or feature when you want to override the value computed by pde.
#The value will only be applied to plugin or features indicating build.properties, qualifier = context 
#forceContextQualifier=<the value for the qualifier>

#Enable / disable the generation of a suffix for the features that use .qualifier. 
#The generated suffix is computed according to the content of the feature   
#generateFeatureVersionSuffix=true

############# BASE CONTROL #############
# Settings for the base Eclipse components and Java class libraries 
# against which you are building.
# Base location for anything the build needs to compile against.  For example,
# in most RCP app or a plug-in,  the baseLocation should be the location of a previously
# installed Eclipse against which the application or plug-in code will be compiled and the RCP delta pack.
eclipseBuildId=I20081202-1812
targetDir=${buildArea}/targets
targetZips=${targetDir}/downloads
base=${targetDir}/${eclipseBuildId}
#base=/opt/local/eclipse/I1104-0916
baseLocation=${base}/eclipse
#Os/Ws/Arch/nl of the eclipse specified by baseLocation
baseos=win32
basews=win32
basearch=x86

#this property indicates whether you want the set of plug-ins and features to be considered during the build to be limited to the ones reachable from the features / plugins being built
filteredDependencyCheck=false

#this property indicates whether the resolution should be done in development mode (i.e. ignore multiple bundles with singletons)
resolution.devMode=false

#pluginPath is a list of locations in which to find plugins and features.  This list is separated by the platform file separator (; or :)
#a location is one of:  
#- the location of the jar or folder that is the plugin or feature : /path/to/foo.jar or /path/to/foo
#- a directory that contains a /plugins or /features subdirectory
#- the location of a feature.xml, or for 2.1 style plugins, the plugin.xml or fragment.xml
#pluginPath=

#skipBase=true
#eclipseURL=http://www.eclipse.org/external/eclipse/downloads/drops/S-3.5M3-200810301917
archProp=
eclipseBaseURL=http://download.eclipse.org/eclipse/downloads/drops/${eclipseBuildId}
eclipseBaseName=eclipse-SDK-${eclipseBuildId}-linux-gtk${archProp}.tar.gz
eclipseTestName=eclipse-Automated-Tests-${eclipseBuildId}.zip

emfBuildId=I200903101800
emfBaseURL=http://download.eclipse.org/modeling/emf/emf/downloads/drops/2.5.0/${emfBuildId}
emfBaseName=emf-runtime-2.5.0M5.zip

#WST requirements
xsdBaseName=xsd-runtime-2.5.0M5.zip

gefBaseURL=http://download.eclipse.org/tools/gef/downloads/drops/3.5.0/I200903061148
gefBaseName=GEF-SDK-3.5.0M5.zip

#WST
wstBaseURL=http://download.eclipse.org/webtools/downloads/drops/R3.1/S-3.1M6-20090315011944
wstBaseName=wtp-wst-S-3.1M5-20090206233640.zip



############# MAP FILE CONTROL ################
# This section defines CVS tags to use when fetching the map files from the repository.
# If you want to fetch the map file from repository / location, change the getMapFiles target in the customTargets.xml

#skipMaps=true
#mapsRepo=pwebster@dev.eclipse.org:/cvsroot/eclipse
mapsRepo=:pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse
mapsRoot=e4/releng
mapsCheckoutTag=HEAD

#tagMaps=true
mapsTagTag=v${buildId}


############ REPOSITORY CONTROL ###############
# This section defines properties parameterizing the repositories where plugins, fragments
# bundles and features are being obtained from. 

# The tags to use when fetching elements to build.
# By default thebuilder will use whatever is in the maps.  
# This value takes the form of a comma separated list of repository identifier (like used in the map files) and the 
# overriding value
# For example fetchTag=CVS=HEAD, SVN=v20050101
# fetchTag=HEAD
# skipFetch=true


############# JAVA COMPILER OPTIONS ##############
# The location of the Java jars to compile against.  Typically the rt.jar for your JDK/JRE
#bootclasspath=${java.home}/lib/rt.jar
JAVA60_HOME=/opt/public/common/ibm-java-jdk-ppc-60
JAVA50_64_HOME=/opt/public/common/ibm-java2-ppc64-50
JAVA50_HOME=/opt/public/common/ibm-java2-ppc-50
JAVA14_HOME=/opt/public/common/ibm-java2-142


# specific JRE locations to compile against. These values are used to compile bundles specifying a 
# Bundle-RequiredExecutionEnvironment. Uncomment and set values for environments that you support
#CDC-1.0/Foundation-1.0= /path/to/rt.jar
#CDC-1.1/Foundation-1.1=
#OSGi/Minimum-1.0=
#OSGi/Minimum-1.1=
#JRE-1.1=
#J2SE-1.2=
#J2SE-1.3=

JavaSE-1.6=${JAVA60_HOME}/jre/lib/annotation.jar:${JAVA60_HOME}/jre/lib/beans.jar:${JAVA60_HOME}/jre/lib/ibmorbapi.jar:${JAVA60_HOME}/jre/lib/java.util.jar:${JAVA60_HOME}/jre/lib/jlm.jar:${JAVA60_HOME}/jre/lib/logging.jar:${JAVA60_HOME}/jre/lib/resources.jar:${JAVA60_HOME}/jre/lib/rt.jar:${JAVA60_HOME}/jre/lib/security.jar:${JAVA60_HOME}/jre/lib/sql.jar:${JAVA60_HOME}/jre/lib/vm.jar:${JAVA60_HOME}/jre/lib/xmldsigfw.jar:${JAVA60_HOME}/jre/lib/xml.jar:${JAVA60_HOME}/lib/dt.jar
J2SE-1.5=${JAVA50_HOME}/jre/lib/vm.jar:${JAVA50_HOME}/jre/lib/core.jar:${JAVA50_HOME}/jre/lib/xml.jar:${JAVA50_HOME}/jre/lib/graphics.jar:${JAVA50_HOME}/jre/lib/server.jar:${JAVA50_HOME}/jre/lib/ibmorbapi.jar:${JAVA50_HOME}/jre/lib/security.jar
J2SE-1.4=${JAVA14_HOME}/jre/lib/rt.jar:${JAVA14_HOME}/jre/lib/core.jar:${JAVA14_HOME}/jre/lib/xml.jar:${JAVA14_HOME}/jre/lib/graphics.jar:${JAVA14_HOME}/jre/lib/server.jar:${JAVA14_HOME}/jre/lib/ibmorbapi.jar:${JAVA14_HOME}/jre/lib/security.jar

#PersonalJava-1.1=
#PersonalJava-1.2=
#CDC-1.0/PersonalBasis-1.0=
#CDC-1.0/PersonalJava-1.0=
#CDC-1.1/PersonalBasis-1.1=
#CDC-1.1/PersonalJava-1.1=

# Specify the output format of the compiler log when eclipse jdt is used
logExtension=.log

# Whether or not to include debug info in the output jars
javacDebugInfo=true 

# Whether or not to fail the build if there are compiler errors
javacFailOnError=true

# Enable or disable verbose mode of the compiler
javacVerbose=false

# Extra arguments for the compiler. These are specific to the java compiler being used.
compilerArg=-inlineJSR -enableJavadoc -encoding ISO-8859-1

# Default value for the version of the source code. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacSource in build.properties
#javacSource=1.3

# Default value for the version of the byte code targeted. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacTarget in build.properties.
#javacTarget=1.1

individualSourceBundles=true
generateFeatureVersionSuffix=true
flex.sdk=/opt/public/common/flex_sdk_3.2.0.3794_mpl

# go p2
p2.repo=${buildDirectory}/${buildLabel}/repository
#generate.p2.metadata=true
p2.metadata.repo=file:${p2.repo}
p2.artifact.repo=file:${p2.repo}
p2.flavor=tooling
#p2.publish.artifacts=true
p2.root.name=${topLevelElementId}
p2.root.version=0.9.0.v${buildId}
# This won't quite do what you want
#p2.category.site=file:${buildDirectory}/features/${topLevelElementId}/site.xml

# a list of archived p2 repos to compile against
repoBaseLocation=${untransformed.dir}
transformedRepoLocation=${untransformed.dir}-trans


