###############################################################################
# Copyright (c) 2000, 2011 IBM Corporation 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:
#     IBM Corporation - initial API and implementation
###############################################################################

customBuildCallbacks=customBuildCallbacks.xml

bin.includes = about.html,\
               concepts/,\
               contexts_CDT.xml,\
               contexts_CDT_DEBUGGER.xml,\
               contexts_CDT_DEBUGGER_MI.xml,\
               contexts_CDT_LAUNCH.xml,\
               contexts_CDT_make.xml,\
               getting_started/,\
               help.css,\
               images/,\
               plugin.properties,\
               plugin.xml,\
               reference/,\
               tasks/,\
               toc.xml,\
               topics_Concepts.xml,\
               topics_Getting_Started.xml,\
               topics_Reference.xml,\
               topics_Tasks.xml,\
               META-INF/,\
               cheatsheets/,\
               intro/,\
               notices.html,\
               book.css,\
               index*/

bin.excludes = build.properties,\
			   customBuildCallbacks.xml
