# Copyright (c) 2004 - 2007 Eike Stepper, 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
# 
# Contributors:
#    Eike Stepper - initial API and implementation
   
# NLS_MESSAGEFORMAT_VAR

bin.includes = .,\
               META-INF/,\
               plugin.properties,\
               .options,\
               about.html,\
               copyright.txt,\
               epl-v10.html,\
               license.html,\
               plugin.xml,\
               about.ini,\
               about.mappings,\
               about.properties,\
               modeling32.png
jars.compile.order = .
source.. = src/
output.. = bin/
