###############################################################################
# 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
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/,\
	         util/
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
