###############################################################################
# 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
###############################################################################

#custom = true
bin.includes = bin/,\
               feature.xml,\
               feature.properties,\
               gtk_root/

####Even though marked as custom, the content of the build.properties needs to be updated to ensure correctness of RCP app exported 
#root.permissions.755=${launcherName}

root.win32.win32.x86=bin/win32/win32/x86
root.win32.win32.x86.permissions.755=launcher.exe
root.win32.win32.x86_64=bin/win32/win32/x86_64
root.win32.win32.x86_64.permissions.755=launcher.exe

root.linux.gtk.x86=bin/gtk/linux/x86,gtk_root
root.linux.gtk.x86.permissions.755=launcher,libcairo-swt.so

root.linux.gtk.ppc64=bin/gtk/linux/ppc64,gtk_root
root.linux.gtk.ppc64.permissions.755=launcher

root.linux.gtk.ppc64le=bin/gtk/linux/ppc64le,gtk_root
root.linux.gtk.ppc64le.permissions.755=launcher

root.macosx.cocoa.x86_64=bin/cocoa/macosx/x86_64
root.macosx.cocoa.x86_64.permissions.755=Eclipse.app/Contents/MacOS/launcher

root.linux.gtk.x86_64=bin/gtk/linux/x86_64,gtk_root
root.linux.gtk.x86_64.permissions.755=libcairo-swt.so
