###############################################################################
# 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=I20081127-0900

base=${buildArea}/targets/${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

eclipseURL=http://download.eclipse.org/eclipse/downloads/drops/${eclipseBuildId}
eclipseBaseURL=${eclipseURL}/eclipse-SDK-${eclipseBuildId}-win32.zip
eclipseTestURL=${eclipseURL}/eclipse-Automated-Tests-${eclipseBuildId}.zip

emfBuildId=I200811181800
emfURL=http://download.eclipse.org/modeling/emf/emf/downloads/drops/2.5.0/${emfBuildId}
emfBaseURL=${emfURL}/emf-runtime-${emfBuildId}.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=org.eclipse.e4
p2.root.version=4.0.0.v${buildId}

