# 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

source.. = src/
output.. = bin/
bin.includes = plugin.xml,\
               META-INF/,\
               .,\
               about.html,\
               plugin.properties,\
               model/,\
               about.ini,\
               about.mappings,\
               about.properties,\
               oomph32.png,\
               schema/
src.includes = about.html,\
               Setup (IDE).launch,\
               Setup (Installer Dialog).launch,\
               pom.xml,\
               Setup (Installer Dialog Online).launch

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