# Copyright (c) 2012 Eike Stepper (Berlin, Germany) and others.
# All rights reserved. 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:
#    Eike Stepper - initial API and implementation

# NLS_MESSAGEFORMAT_VAR

bin.includes = META-INF/,\
               plugin.properties,\
               about.html,\
               copyright.txt,\
               README.html,\
               config/
src.includes = about.html,\
               copyright.txt,\
               EdaptTargetServer.launch

generateSourceReferences = true
