###############################################################################
#  Copyright (c) 2000, 2014 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
###############################################################################

#root.permissions.755=eclipse
root.win32.win32.x86=../../rt.equinox.binaries/org.eclipse.equinox.executable/bin/win32/win32/x86
root.win32.win32.x86.permissions.755=eclipse.exe
root.win32.win32.x86_64=../../rt.equinox.binaries/org.eclipse.equinox.executable/bin/win32/win32/x86_64
root.win32.win32.x86_64.permissions.755=eclipse.exe

# from org.eclipse.equinox.core.feature
#root.win32.win32.x86=file:executables/win32.win32.x86/eclipsec.exe
#root.win32.win32.x86_64=file:executables/win32.win32.x86_64/eclipsec.exe

root.aix.gtk.ppc=../../rt.equinox.binaries/org.eclipse.equinox.executable/bin/gtk/aix/ppc
root.aix.gtk.ppc.permissions.755=eclipse
root.aix.gtk.ppc64=../../rt.equinox.binaries/org.eclipse.equinox.executable/bin/gtk/aix/ppc64
root.aix.gtk.ppc64.permissions.755=eclipse

root.hpux.gtk.ia64=../../rt.equinox.binaries/org.eclipse.equinox.executable/bin/gtk/hpux/ia64
root.hpux.gtk.ia64.permissions.755=eclipse

root.solaris.gtk.sparc=../../rt.equinox.binaries/org.eclipse.equinox.executable/bin/gtk/solaris/sparc
root.solaris.gtk.sparc.permissions.755=eclipse
root.solaris.gtk.x86=../../rt.equinox.binaries/org.eclipse.equinox.executable/bin/gtk/solaris/x86
root.solaris.gtk.x86.permissions.755=eclipse

root.linux.gtk.x86=rootfiles/linux.gtk.x86,../../rt.equinox.binaries/org.eclipse.equinox.executable/bin/gtk/linux/x86
root.linux.gtk.x86.permissions.755=libcairo-swt.so,eclipse
root.linux.gtk.ppc=rootfiles/linux.gtk.ppc64,../../rt.equinox.binaries/org.eclipse.equinox.executable/bin/gtk/linux/ppc
root.linux.gtk.ppc.permissions.755=eclipse
root.linux.gtk.ppc64=rootfiles/linux.gtk.ppc64,../../rt.equinox.binaries/org.eclipse.equinox.executable/bin/gtk/linux/ppc64
root.linux.gtk.ppc64.permissions.755=eclipse
root.linux.gtk.x86_64=rootfiles/linux.gtk.x86_64,../../rt.equinox.binaries/org.eclipse.equinox.executable/bin/gtk/linux/x86_64
root.linux.gtk.x86_64.permissions.755=libcairo-swt.so,eclipse

root.linux.gtk.s390x=rootfiles/linux.gtk.s390x,../../rt.equinox.binaries/org.eclipse.equinox.executable/contributed/gtk/linux/s390x
root.linux.gtk.s390x.permissions.755=eclipse
root.linux.gtk.s390=rootfiles/linux.gtk.s390,../../rt.equinox.binaries/org.eclipse.equinox.executable/contributed/gtk/linux/s390
root.linux.gtk.s390.permissions.755=eclipse


bin.includes = feature.properties


