###############################################################################
# Copyright (c) 2007, 2010 BMW Car IT, Technische Universitaet Muenchen, 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:
#     BMW Car IT - Initial API and implementation
#     Technische Universitaet Muenchen - Major refactoring and extension
###############################################################################

# <copyright>
# </copyright>
#
# $Id$

bin.includes = .,\
               icons/,\
               META-INF/,\
               plugin.xml,\
               plugin.properties,\
               about.html
jars.compile.order = .
source.. = src/,\
           generated-src/
output.. = bin/
src.includes = about.html
