# 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

bin.includes = .,\
               model/,\
               META-INF/,\
               plugin.xml,\
               plugin.properties,\
               oomph32.png,\
               about.ini,\
               about.mappings,\
               about.properties,\
               about.html
jars.compile.order = .
source.. = src/
output.. = bin/
src.includes = component.ext,\
               pom.xml,\
               about.html

doc.project = org.eclipse.oomph.targlets.doc
generateSourceReferences = true
