###############################################################################
# Copyright (c) 2005, 2007 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

############# CVS CONTROL ################
# The CVS tag to use when fetching the map files from the repository
mapVersionTag=HEAD

# The CVS tag to use when fetching elements to build.  By default the
# builder will use whatever is in the maps.  Use this value to override
# for example, when doing a nightly build out of HEAD
# fetchTag=HEAD

ptpTag=HEAD

############## BUILD / GENERATION CONTROL ################
# The directory into which the build elements will be fetched and where
# the build will take place.  buildDirectory and install should be the same
# value.
buildDirectory=build

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

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

# Timestamp for the build.  Used in naming the build output
timestamp=007

# Base location for anything the build needs to compile against.  For example,
# when building GEF, the baseLocation should be the location of a previously
# installed Eclipse against which the GEF code will be compiled.
baseLocation=

#Os/Ws/Arch/nl of the eclipse specified by baseLocation
#baseos
#basews
#basearch
#basenl

# The location underwhich all of the build output will be collected.  This will be
# the root path in the resultant zip file.
collPlace=eclipse

# The directory  in which to execute zip of the ${collPlace} directory
collBase=.

# 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= \
	  aix,motif,ppc \
    & linux,gtk,x86 \
    & linux,gtk,x86_64 \
    & linux,gtk,ppc \
    & macosx,carbon,ppc \
    & win32,win32,x86

outputUpdateJars=true
groupConfigurations=true

#Arguments to send to the zip executable
zipargs=

############# JAVA COMPILER OPTIONS ##############
# The location of the Java jars to compile against.  Typically the rt.jar for your JDK/JRE
#bootclasspath=d:/ibm1.3.1/jre/lib/rt.jar

javacDebugInfo=on
javacVerbose=true
javacFailOnError=false

# The version of the source code
javacSource=1.5

# The version of the byte code targeted
javacTarget=1.5
