###############################################################################
# Copyright (c) 2012 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
###############################################################################

# Required. Local path to an Eclipse install.  The path is the Eclipse 
# root folder that contains the "plugins" and "features" subfolders.
#eclipse.home = /Applications/Eclipse472.app/Contents/Eclipse/

# Local path to an Eclipse delta pack install.  Not required, but 
# recommended to enable packaging for platforms other than the installed one.
# Default is eclipse.home.  If the delta pack is installed in eclipse.home, 
# eclipse.deltapack.home does not need to be set.
# eclipse.deltapack.home = /Users/ahmadswaid/Desktop/deltaPack
allowBinaryCycles=true

# Property file that describes the local checkout paths of STEM projects. 
# - For use with "hierarchical" checkouts, e.g. using "svn co" in CI systems (default)
#mapDirectoryFile = ${basedir}/maps/directories.properties
# - For use with "flat" checkouts, e.g. an Eclipse workspace
#mapDirectoryFile = ${basedir}/maps/directories.ide.properties

# Compile the Eclipse features that make up STEM.  Default is true.
#buildFeature = true

# Assemble and package the STEM product.  Default is true.
#buildProduct = true

# Run the JUnit test suite.  Default is false.
#runTests = false

# Skip compiling the STEM denominator data.  Default is false.
#skipData = true

# Major Version of the Build
#majorVersion = 1.3.0

# Build type.  Options are 'nightly', 'integration', 'stable', and 'release'.
#buildTypeFull = nightly

# Build qualifier for stable and release builds.  Example is 
# "RC1" for Release Candidate 1, etc.
#buildQualifier = RC1

# Copy the resulting build artifacts upon a successful build.  Default is false.
#publishBuild = false

# Clean the publish directory before copying the new binaries. 
# This removes old builds for the current build type.  Default is false.
#cleanupFirst = false

# Location to copy the build artifacts if publishBuild is true.  Default is
# the build home.
#publishDir = /path/to/copy/build/output

#######################################
# Advanced Properties.  Do not change #
# unless you know what you're doing.  #
#######################################

# Build date.  Default is the current date.
#buildDate = 20120101

# Overrides the default platforms that STEM is built for.  See
# Eclipse documentation for details on using this
#configs = *, *, *

# P2 repositories where dependencies will be stored.
#repoBaseLocation = /path/to/base/repository
#transformedRepoLocation = /path/to/transformed/repository

