###############################################################################
#  Copyright (c) 2003, 2020 IBM Corporation 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:
#     IBM Corporation - initial API and implementation
#     Martin Oberhuber (Wind River) - [303083] Split out the Spawner
#     Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 559193
###############################################################################
bin.includes = plugin.xml,\
               plugin.properties,\
               about.html,\
               .,\
               META-INF/,\
               .options,\
               OSGI-INF/
src.includes = schema/,\
               about.html
javadoc.packages = org.eclipse.cdt.core.*,\
                   org.eclipse.cdt.core.index.*,\
                   org.eclipse.cdt.core.model.*,\
                   org.eclipse.cdt.core.resources.*,\
                   org.eclipse.cdt.core.templateengine.*,\
                   org.eclipse.cdt.utils.*,\
                   org.eclipse.cdt.utils.elf.*
source.. = src/,\
           model/,\
           parser/,\
           browser/,\
           templateengine/,\
           doxygen/,\
           utils/
