# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
#  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 
# 
#  Based on ideas from Xtext, Xtend, Xcore
#   
#  Contributors:  
#  		Joerg Riegel - Initial implementation 
#  

bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  .,\
               model/,\
               META-INF/,\
               plugin.xml,\
               plugin.properties,\
               .classpath,\
               .gitignore,\
               .settings/,\
               license.html,\
               LICENSE.txt,\
               epl-v10.html
src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
               LICENSE.txt,\
               epl-v10.html			   
jars.compile.order = .
source.. = emf-gen/,\
           src-gen/,\
           src/,\
           xtend-gen/
