###############################################################################
# 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
customBuildCallbacks.inheritall=true
bin.includes = plugin.xml,\
               plugin.properties,\
               about.html,\
               .,\
               jdtCompilerAdapter.jar,\
               .options,\
               META-INF/
javadoc.packages = org.eclipse.jdt.core.*,\
                   org.eclipse.jdt.core.formatter.*,\
                   org.eclipse.jdt.core.compiler.*,\
                   org.eclipse.jdt.core.eval.*,\
                   org.eclipse.jdt.core.jdom.*,\
                   org.eclipse.jdt.core.dom.*,\
                   org.eclipse.jdt.core.dom.rewrite.*,\
                   org.eclipse.jdt.core.search.*,\
                   org.eclipse.jdt.core.index.*
source.. =   batch/,\
	         codeassist/,\
	         compiler/,\
	         eval/,\
	         formatter/,\
	         dom/,\
	         search/,\
	         model/
output.. = bin/
output.jdtCompilerAdapter.jar = antbin/
source.jdtCompilerAdapter.jar = antadapter/
jars.compile.order=.,jdtCompilerAdapter.jar
jars.extra.classpath=platform:/plugin/org.apache.ant/lib/ant.jar
src.includes = about.html,\
               schema/
generateSourceReferences=true
