###############################################################################
# Copyright (c) 2003, 2009 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
topLevelElementId = org.eclipse.sdk

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

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

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

# 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=\
	win32, win32, x86 &\
	win32, win32, x86_64 &\
	wce_ppc, win32, arm &\
	linux, gtk, x86 & \
	linux, gtk, ppc64 & \
	linux, gtk, x86_64 &\
	linux, gtk, s390x &\
	linux, gtk, s390 &\
	solaris, gtk, sparc & \
	solaris, gtk, x86 & \
	aix, gtk, ppc & \
	aix, gtk, ppc64 & \
	hpux, gtk, ia64_32 & \
	macosx, cocoa, x86 & \
	macosx, cocoa, x86_64
#   solaris, motif, sparc & \


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

#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>
#sign.keypass=<key 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}

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

base=/eclipse/test/4.0.0
buildDirectory=${base}/${buildLabel}
baseLocation=
repoTargetId=${buildLabel}

targetDir=${base}/targets
fetchCacheLocation=${base}/scmCache
pluginPath=${localRepoLocation}
p2.context.repos=file:${localRepoLocation}

eclipseRepoURL = http://download.eclipse.org/eclipse/updates/3.8-I-builds
emfRepoURL=http://download.eclipse.org/modeling/emf/emf/updates/2.8milestones/base
#e4RepoURL = http://download.eclipse.org/e4/updates/0.11-I-builds
indigoRepoURL = http://download.eclipse.org/releases/indigo
localRepoLocation=${targetDir}/helios-repo-${repoTargetId}
transformedRepoLocation=${buildDirectory}/transformedRepos

#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

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

#mapsRepo=:pserver:anonymous@dev.eclipse.org/cvsroot/eclipse
#mapsRoot_sdk=e4/releng/org.eclipse.e4.sdk/maps
#mapsRoot_e4=e4/releng/org.eclipse.e4.ui.releng/maps
#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/jdk-1.6.0_10
JAVA50_64_HOME=/opt/public/common/jdk-1.5.0-22.x86_64
JAVA50_HOME=/opt/public/common/jdk-1.5.0_16
JAVA14_HOME=/opt/public/common/j2sdk1.4.2_19


# 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=/shared/common/org.eclipse.sdk-feature/libs/ee.foundation-1.0.jar
CDC-1.1/Foundation-1.1=/shared/common/org.eclipse.sdk-feature/libs/ee.foundation.jar
#OSGi/Minimum-1.0=
#OSGi/Minimum-1.1=
#JRE-1.1=
#J2SE-1.2=
#J2SE-1.3=
#J2SE-1.4=
#J2SE-1.5=
#JavaSE-1.6=
#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=
JavaSE-1.6=${JAVA60_HOME}/jre/lib/resources.jar:${JAVA60_HOME}/jre/lib/rt.jar:${JAVA60_HOME}/jre/lib/jsse.jar:${JAVA60_HOME}/jre/lib/jce.jar:${JAVA60_HOME}/jre/lib/charsets.jar
J2SE-1.5=${JAVA50_HOME}/jre/lib/rt.jar:${JAVA50_HOME}/jre/lib/jsse.jar:${JAVA50_HOME}/jre/lib/jce.jar:${JAVA50_HOME}/jre/lib/charsets.jar
J2SE-1.4=${JAVA14_HOME}/jre/lib/rt.jar:${JAVA14_HOME}/jre/lib/jsse.jar:${JAVA14_HOME}/jre/lib/jce.jar:${JAVA14_HOME}/jre/lib/charsets.jar



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

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

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

# 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

compilerArg=-inlineJSR -enableJavadoc -encoding ISO-8859-1

individualSourceBundles=true
generateFeatureVersionSuffix=true
generateSourceReferences=true

p2.repo=${buildDirectory}/${buildLabel}/repository
p2.build.repo=file:${p2.repo}

signingArchive=${buildDirectory}/${buildLabel}/eclipse-master-${buildId}.zip

#p2.category.definition=file:${builder}/e4-category.xml
skipMirroring=true
p2.gathering=true

p2.flavor=tooling
p2.root.name=${topLevelElementId}
p2.root.version=4.2.0.v${buildId}
p2.repo.name=Eclipse 4.2 SDK build ${buildId}
eclipse.p2.mirrors=false

