###############################################################################
# Copyright (c) 2010, 2011 Stephan Herrmann 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:
#     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=-Xmx1200m -XX:-UseGCOverheadLimit

# Version dependent names:

# ------------- insert current versions here ---------------
# Details of the Eclipse SDK built upon:
run.eclipseScriptDir=plugins/org.eclipse.pde.build_3.10.800.v20200410-1419/scripts
org.eclipse.equinox.launcher_jar=org.eclipse.equinox.launcher_1.5.800.v20200727-1323.jar

# for patching our patch feature to match this version with any suffix:
jdt.feature.version=3.18.500.v20200902-1800
jdt.feature.version.next=3.18.500.v20200902-1801

# jdt.core fragments for extracting pre-built classes and properties:
jdt.compiler.apt=org.eclipse.jdt.compiler.apt_1.3.1100.v20200828-0941.jar
jdt.compiler.tool=org.eclipse.jdt.compiler.tool_1.2.1000.v20200828-0941.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

