###############################################################################
# Copyright (c) 2006, 2007 IBM Corporation 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:
#     IBM Corporation - initial API and implementation
###############################################################################
# The chmod and links must indicate a path relative to the root directory.

# List the files and folders to be copied into the root of eclipse for all platform
# configurations
root=epl-v10.html, notice.html, configuration/, startup.jar, .eclipseproduct, eclipse.ini, readme/
root.permissions.755=eclipse,*.so*
root.macosx.carbon.ppc.permissions.755=Eclipse.app/Contents/MacOS/eclipse

root.win32.win32.x86=eclipse.exe, eclipsec.exe
root.linux.motif.x86=eclipse,libcairo-swt.so,libXm.so.2,about_files/,about.html,icon.xpm
root.linux.gtk.x86=eclipse,libcairo-swt.so,about_files/,about.html,icon.xpm
root.linux.gtk.x86_64=eclipse,libcairo-swt.so,about_files/,about.html,icon.xpm
root.linux.gtk.ppc=eclipse
root.macosx.carbon.ppc=eclipse,Eclipse.app/
root.macosx.carbon.ppc.link=Eclipse.app/Contents/MacOS/eclipse,eclipse,../../../MacOS,Eclipse.app/Contents/Resources/Splash.app/Contents/MacOS
root.aix.motif.ppc=eclipse
root.hpux.motif.PA_RISC=eclipse
root.solaris.gtk.sparc=eclipse,Eclipse.l.pm,Eclipse.m.pm,Eclipse.s.pm,Eclipse.t.pm
