# Copyright (c) 2007-2013 Eike Stepper (Berlin, Germany) and others.
# 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 = feature.xml,\
               feature.properties,\
               CDOServer.product,\
               epl-v10.html,\
               about.html,\
               license.html
src.includes = about.html,\
               epl-v10.html,\
               buckminster.cspex,\
               license.html,\
               rootfiles/

root = rootfiles,../../plugins/org.eclipse.emf.cdo.server.product/config
