# Copyright (c) 2015, 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.mappings,\
               schema/
src.includes = about.html,\
               pom.xml,\
               php/

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