###############################################################################
# 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=-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.500.v20190620-0530/scripts
org.eclipse.equinox.launcher_jar=org.eclipse.equinox.launcher_1.5.500.v20190715-1310.jar

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

# jdt.core fragments for extracting pre-built classes and properties:
jdt.compiler.apt=org.eclipse.jdt.compiler.apt_1.3.700.v20190704-1731.jar
jdt.compiler.tool=org.eclipse.jdt.compiler.tool_1.2.600.v20190322-0450.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

