###############################################################################
# Copyright (c) 2009, 2011 EclipseSource 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:
#     EclipseSource - initial API and implementation
###############################################################################

# See PDE build documentation for all available properties
# http://help.eclipse.org/indigo/index.jsp?topic=/org.eclipse.pde.doc.user/reference/pde_builder_config.htm

# generate distinct source bundle for each bundle 
individualSourceBundles=true

# Insert references to source code repository
generateSourceReferences=true

runPackager=true

# output dir for our clean build (with test results)
outputDirectory=<outputDirectory-set-via-system-property>

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

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

# The location under which all of the build output will be collected.
collectingFolder=eclipse

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

# platform to build against
baseLocation=<baseLocation-set-via-system-property>

############## BUILD NAMING CONTROL ################
# The directory into which the build elements are fetched and where
# the build takes place.
buildDirectory=<buildDirectory-set-via-system-property>

# Type of build.  Used in naming the build output.  Typically this value is
# one of I, N, M, S, ...
buildType=<buildType-set-via-system-property>

# ID of the build.  Used in naming the build output.
buildId=<buildId-set-via-system-property>

# Version of the build.  Used in naming the build output.
targetVersion=1.5.0

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

#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=${buildId}

#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

############# 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=:pserver:anonymous@dev.eclipse.org/cvsroot/rt
mapsRoot=org.eclipse.rap/releng/org.eclipse.rap.releng/maps
mapsCheckoutTag=<mapsCheckoutTag-set-via-system-property>

# Specify the tag to use instead of the checkout tag in the map files
fetchTag=<fetchTag-set-via-system-property>

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

outputUpdateJars=false
