###############################################################################
# Copyright (c) 2000, 2010 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.*
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
