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

# Note: for some reason, only one vm-argument is possible.
#vm.args=-Xmx256m

# this one is used by eclipse junit tests:
vmargs=-Xmx768m -XX:-UseGCOverheadLimit

# Version dependent names:

# ------------- insert current versions here ---------------
# Details of the Eclipse SDK built upon:
run.eclipseScriptDir=plugins/org.eclipse.pde.build_3.9.200.v20161007-1117/scripts
org.eclipse.equinox.launcher_jar=org.eclipse.equinox.launcher_1.4.0.v20161107-2019.jar

# for patching our patch feature to match this version with any suffix:
jdt.feature.version=3.13.0.v20161124-2000
jdt.feature.version.next=3.13.0.v20161124-2001

# jdt.core fragments for extracting pre-built classes and properties:
jdt.compiler.apt=org.eclipse.jdt.compiler.apt_1.3.0.v20161101-1413.jar
jdt.compiler.tool=org.eclipse.jdt.compiler.tool_1.2.0.v20160907-0458.jar
# -----------------------------------------------------------

#Git Support for PDE BUILD:
# (Note: this file must be provided in ${OTScriptDir}/lib)
# orig:
#git.pde.build=org.eclipse.egit.fetchfactory_0.12.0.201108111757.jar
# enhanced (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=365944):
git.pde.build=org.eclipse.egit.fetchfactory_0.12.0.201208152153.jar

