###############################################################################
# Copyright (c) 2003, 2006 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
# 
# 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

############# PRODUCT/PACKAGING CONTROL #############
product=${builder}/product/adt.product
runPackager=true

# p2!
p2.gathering=true

# locations.  Don't need a baseLocation, the transformedRepoLocation will have what we need
buildDirectory = ${basedir}/buildDirectory
baseLocation=
transformedRepoLocation=${basedir}/transformed
repoBaseLocation=${downloadFolder}/toTransform

# tranfomedRepoLocation is also automatically a context repo
p2.context.repos= \
  jar:file:${downloadFolder}/cdt.zip!/,\
  jar:file:${downloadFolder}/cvs.zip!/

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

#don't need a base location, everything is in repos

# The list of {os, ws, arch} configurations to build. 
configs = win32,win32,x86

# Type of build.  Used in naming the build output.  Typically this value is
# one of I, N, M, S, ...
buildType=I
buildId=${timestamp}
buildLabel=${buildType}.${buildId}

skipBase=true
skipMaps=true
skipFetch=true


