# Copyright (c) 2014-2016 Eike Stepper (Loehne, Germany) and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v2.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v20.html
#
# Contributors:
#    Eike Stepper - initial API and implementation

# UpdateTrigger = 20160322-1212

jars.compile.order = .
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
               about.html,\
               about.ini,\
               about.mappings,\
               about.properties,\
               plugin.properties,\
               plugin.xml,\
               toc.xml,\
               html/,\
               images/,\
               toc.xmi,\
               javadoc/,\
               schemadoc/,\
               oomph32.png
src.includes = about.html

doc.depends = org.eclipse.oomph.util.doc,\
              org.eclipse.oomph.p2.doc,\
              org.eclipse.oomph.targlets.doc

generateSourceReferences = true
