###############################################################################
# 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.11.0.v20210429-0618/scripts
org.eclipse.equinox.launcher_jar=org.eclipse.equinox.launcher_1.6.200.v20210416-2027.jar

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

# jdt.core fragments for extracting pre-built classes and properties:
jdt.compiler.apt=org.eclipse.jdt.compiler.apt_1.3.1300.v20210419-1022.jar
jdt.compiler.tool=org.eclipse.jdt.compiler.tool_1.2.1200.v20210521-0550.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

