diff options
Diffstat (limited to 'java/eclipse/files/patch-submodules')
-rw-r--r-- | java/eclipse/files/patch-submodules | 2459 |
1 files changed, 2459 insertions, 0 deletions
diff --git a/java/eclipse/files/patch-submodules b/java/eclipse/files/patch-submodules new file mode 100644 index 000000000000..74bd1f094a34 --- /dev/null +++ b/java/eclipse/files/patch-submodules @@ -0,0 +1,2459 @@ +diff --git a/eclipse.jdt/org.eclipse.jdt-feature/pom.xml b/eclipse.jdt/org.eclipse.jdt-feature/pom.xml +index 5f21fad..7ef6f2e 100644 +--- a/eclipse.jdt/org.eclipse.jdt-feature/pom.xml ++++ b/eclipse.jdt/org.eclipse.jdt-feature/pom.xml +@@ -56,6 +56,8 @@ + <excludes> + <plugin id="org.eclipse.jdt"/> + <plugin id="org.eclipse.jdt.doc.user"/> ++ <plugin id="org.eclipse.jdt.launching.macosx"/> ++ <plugin id="org.eclipse.jdt.launching.ui.macosx"/> + </excludes> + </configuration> + </execution> +diff --git a/eclipse.pde.build/org.eclipse.pde.build/scripts/productBuild/allElements.xml b/eclipse.pde.build/org.eclipse.pde.build/scripts/productBuild/allElements.xml +index 1c2033f..e80dcd8 100644 +--- a/eclipse.pde.build/org.eclipse.pde.build/scripts/productBuild/allElements.xml ++++ b/eclipse.pde.build/org.eclipse.pde.build/scripts/productBuild/allElements.xml +@@ -70,6 +70,20 @@ + </ant> + </target> + ++ <property name="assemble.org.eclipse.pde.build.container.feature.freebsd.gtk.x86" value="true" /> ++ <target name="assemble.org.eclipse.pde.build.container.feature.freebsd.gtk.x86"> ++ <ant antfile="${assembleScriptName}" dir="${buildDirectory}"> ++ <property name="archiveName" value="${archiveNamePrefix}-freebsd.gtk.x86.zip"/> ++ </ant> ++ </target> ++ ++ <property name="assemble.org.eclipse.pde.build.container.feature.freebsd.gtk.x86_64" value="true" /> ++ <target name="assemble.org.eclipse.pde.build.container.feature.freebsd.gtk.x86_64"> ++ <ant antfile="${assembleScriptName}" dir="${buildDirectory}"> ++ <property name="archiveName" value="${archiveNamePrefix}-freebsd.gtk.x86_64.zip"/> ++ </ant> ++ </target> ++ + <property name="assemble.org.eclipse.pde.build.container.feature.linux.gtk.x86" value="true" /> + <target name="assemble.org.eclipse.pde.build.container.feature.linux.gtk.x86"> + <ant antfile="${assembleScriptName}" dir="${buildDirectory}"> +diff --git a/eclipse.pde.build/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/Utils.java b/eclipse.pde.build/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/Utils.java +index 442bd6c..119ce58 100644 +--- a/eclipse.pde.build/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/Utils.java ++++ b/eclipse.pde.build/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/Utils.java +@@ -694,7 +694,7 @@ public final class Utils implements IPDEBuildConstants, IBuildPropertiesConstant + arguments.add("-sf"); //$NON-NLS-1$ + arguments.add(links[i]); + arguments.add(links[i + 1]); +- script.printExecTask("ln", dir, arguments, "Linux"); //$NON-NLS-1$ //$NON-NLS-2$ ++ script.printExecTask("ln", dir, arguments, "Linux,FreeBSD"); //$NON-NLS-1$ //$NON-NLS-2$ + arguments.clear(); + } + } +diff --git a/eclipse.pde.build/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java b/eclipse.pde.build/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java +index 08540fa..582bc74 100644 +--- a/eclipse.pde.build/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java ++++ b/eclipse.pde.build/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java +@@ -933,7 +933,7 @@ public class ModelBuildScriptGenerator extends AbstractBuildScriptGenerator { + for (int i = 0; i < links.length; i += 2) { + arguments.add(links[i]); + arguments.add(links[i + 1]); +- script.printExecTask("ln -s", dir, arguments, "Linux"); //$NON-NLS-1$ //$NON-NLS-2$ ++ script.printExecTask("ln -s", dir, arguments, "Linux,FreeBSD"); //$NON-NLS-1$ //$NON-NLS-2$ + arguments.clear(); + } + } +diff --git a/eclipse.pde.build/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/JNLPGenerator.java b/eclipse.pde.build/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/JNLPGenerator.java +index 5399a48..e395cb5 100644 +--- a/eclipse.pde.build/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/JNLPGenerator.java ++++ b/eclipse.pde.build/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/JNLPGenerator.java +@@ -314,6 +314,8 @@ public class JNLPGenerator extends DefaultHandler { + return "HP-UX"; //$NON-NLS-1$ + if ("aix".equalsIgnoreCase(os)) //$NON-NLS-1$ + return "AIX"; //$NON-NLS-1$ ++ if ("freebsd".equalsIgnoreCase(os)) //$NON-NLS-1$ ++ return "FreeBSD"; //$NON-NLS-1$ + return os; + } + +diff --git a/eclipse.pde.build/org.eclipse.pde.build/templates/headless-build/build.properties b/eclipse.pde.build/org.eclipse.pde.build/templates/headless-build/build.properties +index 432b6e0..2d69832 100644 +--- a/eclipse.pde.build/org.eclipse.pde.build/templates/headless-build/build.properties ++++ b/eclipse.pde.build/org.eclipse.pde.build/templates/headless-build/build.properties +@@ -48,6 +48,8 @@ configs = *, *, * + #configs=win32, win32, x86 & \ + # win32,win32,x86_64 & \ + # win32,win32,wpf & \ ++# freebsd, gtk, x86 & \ ++# freebsd, gtk, x86_64 & \ + # linux, gtk, ppc & \ + # linux, gtk, x86 & \ + # linux, gtk, x86_64 & \ +@@ -72,10 +74,12 @@ configs = *, *, * + #The format of the archive. By default a zip is created using antZip. + #The list can only contain the configuration for which the desired format is different than zip. + #archivesFormat=win32, win32, x86 - antZip& \ ++# freebsd, gtk, x86 - antZip& \ ++# freebsd, gtk, x86_64 - antZip& \ + # linux, gtk, ppc - antZip &\ +-# linux, gtk, x86 - antZip& \ ++# linux, gtk, x86 - antZip& \ + # linux, gtk, x86_64 - antZip& \ +-# linux, motif, x86 - antZip& \ ++# linux, motif, x86 - antZip& \ + # solaris, motif, sparc - antZip& \ + # solaris, gtk, sparc - antZip& \ + # aix, motif, ppc - antZip& \ +diff --git a/eclipse.pde.build/org.eclipse.pde.build/templates/packager/customTargets.xml b/eclipse.pde.build/org.eclipse.pde.build/templates/packager/customTargets.xml +index eac9576..9081501 100644 +--- a/eclipse.pde.build/org.eclipse.pde.build/templates/packager/customTargets.xml ++++ b/eclipse.pde.build/org.eclipse.pde.build/templates/packager/customTargets.xml +@@ -18,6 +18,18 @@ + </ant> + </target> + ++ <target name="assemble.freebsd.gtk.x86.xml"> ++ <ant antfile="${assembleScriptName}" > ++ <property name="archiveName" value="${archiveNamePrefix}-freebsd.gtk.x86.zip"/> ++ </ant> ++ </target> ++ ++ <target name="assemble.freebsd.gtk.x86_64.xml"> ++ <ant antfile="${assembleScriptName}" > ++ <property name="archiveName" value="${archiveNamePrefix}-freebsd.gtk.x86_64.zip"/> ++ </ant> ++ </target> ++ + <target name="assemble.linux.gtk.x86.xml"> + <ant antfile="${assembleScriptName}" > + <property name="archiveName" value="${archiveNamePrefix}-linux.gtk.x86.zip"/> +diff --git a/eclipse.pde.build/org.eclipse.pde.build/templates/packager/packaging.properties b/eclipse.pde.build/org.eclipse.pde.build/templates/packager/packaging.properties +index be53c51..7e89865 100644 +--- a/eclipse.pde.build/org.eclipse.pde.build/templates/packager/packaging.properties ++++ b/eclipse.pde.build/org.eclipse.pde.build/templates/packager/packaging.properties +@@ -18,6 +18,8 @@ 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.freebsd.gtk.x86=eclipse,libcairo-swt.so,about_files/,about.html,icon.xpm ++root.freebsd.gtk.x86_64=eclipse,libcairo-swt.so,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 +diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/ProductExportOperation.java b/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/ProductExportOperation.java +index 436c5b0..dd4b3fc 100644 +--- a/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/ProductExportOperation.java ++++ b/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/ProductExportOperation.java +@@ -336,6 +336,8 @@ public class ProductExportOperation extends FeatureExportOperation { + images = getExpandedPath(info.getIconPath(ILauncherInfo.LINUX_ICON)); + } else if (configs[i][0].equals("macosx")) { //$NON-NLS-1$ + images = getExpandedPath(info.getIconPath(ILauncherInfo.MACOSX_ICON)); ++ } else if (configs[i][0].equals("freebsd")) { //$NON-NLS-1$ ++ images = getExpandedPath(info.getIconPath(ILauncherInfo.FREEBSD_ICON)); + } + if (images != null) { + if (icons.length() > 0) +diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/iproduct/IArgumentsInfo.java b/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/iproduct/IArgumentsInfo.java +index c007fe1..47d93ec 100644 +--- a/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/iproduct/IArgumentsInfo.java ++++ b/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/iproduct/IArgumentsInfo.java +@@ -13,22 +13,25 @@ package org.eclipse.pde.internal.core.iproduct; + public interface IArgumentsInfo extends IProductObject { + + public static final String P_PROG_ARGS = "programArgs"; //$NON-NLS-1$ ++ public static final String P_PROG_ARGS_FRE = "programArgsFre"; //$NON-NLS-1$ + public static final String P_PROG_ARGS_LIN = "programArgsLin"; //$NON-NLS-1$ + public static final String P_PROG_ARGS_MAC = "programArgsMac"; //$NON-NLS-1$ + public static final String P_PROG_ARGS_SOL = "programArgsSol"; //$NON-NLS-1$ + public static final String P_PROG_ARGS_WIN = "programArgsWin"; //$NON-NLS-1$ + + public static final String P_VM_ARGS = "vmArgs"; //$NON-NLS-1$ ++ public static final String P_VM_ARGS_FRE = "vmArgsFre"; //$NON-NLS-1$ + public static final String P_VM_ARGS_LIN = "vmArgsLin"; //$NON-NLS-1$ + public static final String P_VM_ARGS_MAC = "vmArgsMac"; //$NON-NLS-1$ + public static final String P_VM_ARGS_SOL = "vmArgsSol"; //$NON-NLS-1$ + public static final String P_VM_ARGS_WIN = "vmArgsWin"; //$NON-NLS-1$ + + public static final int L_ARGS_ALL = 0; +- public static final int L_ARGS_LINUX = 1; +- public static final int L_ARGS_MACOS = 2; +- public static final int L_ARGS_SOLAR = 3; +- public static final int L_ARGS_WIN32 = 4; ++ public static final int L_ARGS_FRBSD = 1; ++ public static final int L_ARGS_LINUX = 2; ++ public static final int L_ARGS_MACOS = 3; ++ public static final int L_ARGS_SOLAR = 4; ++ public static final int L_ARGS_WIN32 = 5; + + void setProgramArguments(String args, int platform); + +diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/iproduct/ILauncherInfo.java b/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/iproduct/ILauncherInfo.java +index e88ee99..40628dc 100644 +--- a/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/iproduct/ILauncherInfo.java ++++ b/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/iproduct/ILauncherInfo.java +@@ -12,6 +12,8 @@ package org.eclipse.pde.internal.core.iproduct; + + public interface ILauncherInfo extends IProductObject { + ++ public static final String FREEBSD_ICON = "freebsdIcon"; //$NON-NLS-1$ ++ + public static final String LINUX_ICON = "linuxIcon"; //$NON-NLS-1$ + + public static final String MACOSX_ICON = "macosxIcon"; //$NON-NLS-1$ +diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/ArgumentsInfo.java b/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/ArgumentsInfo.java +index 66dedcb..0f82bad 100644 +--- a/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/ArgumentsInfo.java ++++ b/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/ArgumentsInfo.java +@@ -20,12 +20,14 @@ public class ArgumentsInfo extends ProductObject implements IArgumentsInfo { + + private static final long serialVersionUID = 1L; + private String fProgramArgs = ""; //$NON-NLS-1$ ++ private String fProgramArgsFre = ""; //$NON-NLS-1$ + private String fProgramArgsLin = ""; //$NON-NLS-1$ + private String fProgramArgsMac = ""; //$NON-NLS-1$ + private String fProgramArgsSol = ""; //$NON-NLS-1$ + private String fProgramArgsWin = ""; //$NON-NLS-1$ + + private String fVMArgs = ""; //$NON-NLS-1$ ++ private String fVMArgsFre = ""; //$NON-NLS-1$ + private String fVMArgsLin = ""; //$NON-NLS-1$ + private String fVMArgsMac = ""; //$NON-NLS-1$ + private String fVMArgsSol = ""; //$NON-NLS-1$ +@@ -46,6 +48,12 @@ public class ArgumentsInfo extends ProductObject implements IArgumentsInfo { + if (isEditable()) + firePropertyChanged(P_PROG_ARGS, old, fProgramArgs); + break; ++ case L_ARGS_FRBSD : ++ old = fProgramArgsFre; ++ fProgramArgsFre = args; ++ if (isEditable()) ++ firePropertyChanged(P_PROG_ARGS_FRE, old, fProgramArgsFre); ++ break; + case L_ARGS_LINUX : + old = fProgramArgsLin; + fProgramArgsLin = args; +@@ -77,6 +85,8 @@ public class ArgumentsInfo extends ProductObject implements IArgumentsInfo { + switch (platform) { + case L_ARGS_ALL : + return fProgramArgs; ++ case L_ARGS_FRBSD : ++ return fProgramArgsFre; + case L_ARGS_LINUX : + return fProgramArgsLin; + case L_ARGS_MACOS : +@@ -98,6 +108,8 @@ public class ArgumentsInfo extends ProductObject implements IArgumentsInfo { + return getCompleteArgs(getProgramArguments(L_ARGS_MACOS), fProgramArgs); + } else if (Platform.OS_SOLARIS.equals(os)) { + return getCompleteArgs(getProgramArguments(L_ARGS_SOLAR), fProgramArgs); ++ } else if (Platform.OS_FREEBSD.equals(os)) { ++ return getCompleteArgs(getProgramArguments(L_ARGS_FRBSD), fProgramArgs); + } else { + return getProgramArguments(L_ARGS_ALL); + } +@@ -114,6 +126,12 @@ public class ArgumentsInfo extends ProductObject implements IArgumentsInfo { + if (isEditable()) + firePropertyChanged(P_VM_ARGS, old, fVMArgs); + break; ++ case L_ARGS_FRBSD : ++ old = fVMArgsFre; ++ fVMArgsFre = args; ++ if (isEditable()) ++ firePropertyChanged(P_VM_ARGS_FRE, old, fVMArgsFre); ++ break; + case L_ARGS_LINUX : + old = fVMArgsLin; + fVMArgsLin = args; +@@ -145,6 +163,8 @@ public class ArgumentsInfo extends ProductObject implements IArgumentsInfo { + switch (platform) { + case L_ARGS_ALL : + return fVMArgs; ++ case L_ARGS_FRBSD : ++ return fVMArgsFre; + case L_ARGS_LINUX : + return fVMArgsLin; + case L_ARGS_MACOS : +@@ -166,6 +186,8 @@ public class ArgumentsInfo extends ProductObject implements IArgumentsInfo { + return getCompleteArgs(getVMArguments(L_ARGS_MACOS), fVMArgs); + } else if (Platform.OS_SOLARIS.equals(os)) { + return getCompleteArgs(getVMArguments(L_ARGS_SOLAR), fVMArgs); ++ } else if (Platform.OS_FREEBSD.equals(os)) { ++ return getCompleteArgs(getVMArguments(L_ARGS_FRBSD), fVMArgs); + } else { + return getVMArguments(L_ARGS_ALL); + } +@@ -193,6 +215,8 @@ public class ArgumentsInfo extends ProductObject implements IArgumentsInfo { + fProgramArgsSol = getText(child); + } else if (child.getNodeName().equals(P_PROG_ARGS_WIN)) { + fProgramArgsWin = getText(child); ++ } else if (child.getNodeName().equals(P_PROG_ARGS_FRE)) { ++ fProgramArgsFre = getText(child); + } else if (child.getNodeName().equals(P_VM_ARGS)) { + fVMArgs = getText(child); + } else if (child.getNodeName().equals(P_VM_ARGS_LIN)) { +@@ -203,6 +227,8 @@ public class ArgumentsInfo extends ProductObject implements IArgumentsInfo { + fVMArgsSol = getText(child); + } else if (child.getNodeName().equals(P_VM_ARGS_WIN)) { + fVMArgsWin = getText(child); ++ } else if (child.getNodeName().equals(P_VM_ARGS_FRE)) { ++ fVMArgsFre = getText(child); + } + } + } +@@ -234,6 +260,9 @@ public class ArgumentsInfo extends ProductObject implements IArgumentsInfo { + if (fProgramArgsWin.length() > 0) { + writer.println(indent + " " + "<" + P_PROG_ARGS_WIN + ">" + getWritableString(fProgramArgsWin) + "</" + P_PROG_ARGS_WIN + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ + } ++ if (fProgramArgsFre.length() > 0) { ++ writer.println(indent + " " + "<" + P_PROG_ARGS_FRE + ">" + getWritableString(fProgramArgsFre) + "</" + P_PROG_ARGS_FRE + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ ++ } + if (fVMArgs.length() > 0) { + writer.println(indent + " " + "<" + P_VM_ARGS + ">" + getWritableString(fVMArgs) + "</" + P_VM_ARGS + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ + } +@@ -249,6 +278,9 @@ public class ArgumentsInfo extends ProductObject implements IArgumentsInfo { + if (fVMArgsWin.length() > 0) { + writer.println(indent + " " + "<" + P_VM_ARGS_WIN + ">" + getWritableString(fVMArgsWin) + "</" + P_VM_ARGS_WIN + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ + } ++ if (fVMArgsFre.length() > 0) { ++ writer.println(indent + " " + "<" + P_VM_ARGS_FRE + ">" + getWritableString(fVMArgsFre) + "</" + P_VM_ARGS_FRE + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ ++ } + writer.println(indent + "</launcherArgs>"); //$NON-NLS-1$ + } + +diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/ConfigurationFileInfo.java b/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/ConfigurationFileInfo.java +index c3c286b..ab12da0 100644 +--- a/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/ConfigurationFileInfo.java ++++ b/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/ConfigurationFileInfo.java +@@ -24,11 +24,13 @@ public class ConfigurationFileInfo extends ProductObject implements IConfigurati + private String fUse; + private String fPath; + ++ private static final String FRE = Constants.OS_FREEBSD; + private static final String LIN = Constants.OS_LINUX; + private static final String MAC = Constants.OS_MACOSX; + private static final String SOL = Constants.OS_SOLARIS; + private static final String WIN = Constants.OS_WIN32; + ++ private String fFrePath, fFreUse; + private String fLinPath, fLinUse; + private String fMacPath, fMacUse; + private String fSolPath, fSolUse; +@@ -79,6 +81,9 @@ public class ConfigurationFileInfo extends ProductObject implements IConfigurati + } else if (child.getNodeName().equals(WIN)) { + fWinPath = getText(child); + fWinUse = fWinPath == null ? "default" : "custom"; //$NON-NLS-1$ //$NON-NLS-2$ ++ } else if (child.getNodeName().equals(FRE)) { ++ fFrePath = getText(child); ++ fFreUse = fFrePath == null ? "default" : "custom"; //$NON-NLS-1$ //$NON-NLS-2$ + } + } + } +@@ -101,6 +106,10 @@ public class ConfigurationFileInfo extends ProductObject implements IConfigurati + fWinPath = fWinPath == null ? fPath : null; + fWinUse = "custom"; //$NON-NLS-1$ + } ++ if (fFreUse == null) { ++ fFrePath = fFrePath == null ? fPath : null; ++ fFreUse = "custom"; //$NON-NLS-1$ ++ } + // null out things + fPath = null; + fUse = "default"; //$NON-NLS-1$ +@@ -159,6 +168,12 @@ public class ConfigurationFileInfo extends ProductObject implements IConfigurati + writer.print(getWritableString(fWinPath.trim())); + writer.println("</" + WIN + ">"); //$NON-NLS-1$ //$NON-NLS-2$ + } ++ if (fFrePath != null) { ++ writer.print(indent); ++ writer.print(" <" + FRE + ">"); //$NON-NLS-1$ //$NON-NLS-2$ ++ writer.print(getWritableString(fFrePath.trim())); ++ writer.println("</" + FRE + ">"); //$NON-NLS-1$ //$NON-NLS-2$ ++ } + + writer.print(indent + "</configIni>"); //$NON-NLS-1$ + writer.println(); +@@ -192,6 +207,11 @@ public class ConfigurationFileInfo extends ProductObject implements IConfigurati + fSolUse = use; + if (isEditable()) + firePropertyChanged(SOL, old, fSolUse); ++ } else if (Platform.OS_FREEBSD.equals(os)) { ++ String old = fFreUse; ++ fFreUse = use; ++ if (isEditable()) ++ firePropertyChanged(FRE, old, fFreUse); + } + } + +@@ -207,6 +227,8 @@ public class ConfigurationFileInfo extends ProductObject implements IConfigurati + return fMacUse; + } else if (Platform.OS_SOLARIS.equals(os)) { + return fSolUse; ++ } else if (Platform.OS_FREEBSD.equals(os)) { ++ return fFreUse; + } + return null; + } +@@ -239,6 +261,11 @@ public class ConfigurationFileInfo extends ProductObject implements IConfigurati + fSolPath = path; + if (isEditable()) + firePropertyChanged(SOL, old, fSolPath); ++ } else if (Platform.OS_FREEBSD.equals(os)) { ++ String old = fFrePath; ++ fFrePath = path; ++ if (isEditable()) ++ firePropertyChanged(FRE, old, fFrePath); + } + } + +@@ -254,6 +281,8 @@ public class ConfigurationFileInfo extends ProductObject implements IConfigurati + return fMacPath; + } else if (Platform.OS_SOLARIS.equals(os)) { + return fSolPath; ++ } else if (Platform.OS_FREEBSD.equals(os)) { ++ return fFrePath; + } + return null; + } +diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/JREInfo.java b/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/JREInfo.java +index e0d0333..d8b9100 100644 +--- a/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/JREInfo.java ++++ b/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/JREInfo.java +@@ -22,17 +22,20 @@ import org.w3c.dom.NodeList; + + public class JREInfo extends ProductObject implements IJREInfo { + ++ private static final String JRE_FRE = "freebsd"; //$NON-NLS-1$ + private static final String JRE_LIN = "linux"; //$NON-NLS-1$ + private static final String JRE_MAC = "macos"; //$NON-NLS-1$ + private static final String JRE_SOL = "solaris"; //$NON-NLS-1$ + private static final String JRE_WIN = "windows"; //$NON-NLS-1$ + + private static final long serialVersionUID = 1L; ++ private IPath fJVMFre; + private IPath fJVMLin; + private IPath fJVMMac; + private IPath fJVMSol; + private IPath fJVMWin; + ++ private boolean bIncludeFre; + private boolean bIncludeLin; + private boolean bIncludeMac; + private boolean bIncludeSol; +@@ -54,6 +57,8 @@ public class JREInfo extends ProductObject implements IJREInfo { + return fJVMMac; + } else if (Platform.OS_SOLARIS.equals(os)) { + return fJVMSol; ++ } else if (Platform.OS_FREEBSD.equals(os)) { ++ return fJVMFre; + } + return null; + } +@@ -82,6 +87,11 @@ public class JREInfo extends ProductObject implements IJREInfo { + fJVMSol = jreContainerPath; + if (isEditable()) + firePropertyChanged(JRE_SOL, old, fJVMSol); ++ } else if (Platform.OS_FREEBSD.equals(os)) { ++ IPath old = fJVMFre; ++ fJVMFre = jreContainerPath; ++ if (isEditable()) ++ firePropertyChanged(JRE_FRE, old, fJVMFre); + } + } + +@@ -118,6 +128,9 @@ public class JREInfo extends ProductObject implements IJREInfo { + } else if (child.getNodeName().equals(JRE_SOL)) { + fJVMSol = getPath(child); + bIncludeSol = include; ++ } else if (child.getNodeName().equals(JRE_FRE)) { ++ fJVMFre = getPath(child); ++ bIncludeFre = include; + } else if (child.getNodeName().equals(JRE_WIN)) { + fJVMWin = getPath(child); + bIncludeWin = include; +@@ -166,6 +179,12 @@ public class JREInfo extends ProductObject implements IJREInfo { + writer.print(fJVMSol.toPortableString()); + writer.println("</" + JRE_SOL + ">"); //$NON-NLS-1$ //$NON-NLS-2$ + } ++ if (fJVMFre != null) { ++ writer.print(indent); ++ writer.print(" <" + JRE_FRE + " include=\"" + String.valueOf(bIncludeFre) + "\">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ ++ writer.print(fJVMFre.toPortableString()); ++ writer.println("</" + JRE_FRE + ">"); //$NON-NLS-1$ //$NON-NLS-2$ ++ } + if (fJVMWin != null) { + writer.print(indent); + writer.print(" <" + JRE_WIN + " include=\"" + String.valueOf(bIncludeWin) + "\">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ +@@ -184,6 +203,8 @@ public class JREInfo extends ProductObject implements IJREInfo { + return bIncludeMac; + } else if (Platform.OS_SOLARIS.equals(os)) { + return bIncludeSol; ++ } else if (Platform.OS_FREEBSD.equals(os)) { ++ return bIncludeFre; + } + return false; + } +@@ -209,6 +230,11 @@ public class JREInfo extends ProductObject implements IJREInfo { + bIncludeSol = includeJRE; + if (isEditable()) + firePropertyChanged(JRE_SOL, old, Boolean.valueOf(bIncludeSol)); ++ } else if (Platform.OS_FREEBSD.equals(os)) { ++ Boolean old = Boolean.valueOf(bIncludeFre); ++ bIncludeFre = includeJRE; ++ if (isEditable()) ++ firePropertyChanged(JRE_FRE, old, Boolean.valueOf(bIncludeFre)); + } + } + +diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/LauncherInfo.java b/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/LauncherInfo.java +index 9387921..5e461cc 100644 +--- a/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/LauncherInfo.java ++++ b/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/LauncherInfo.java +@@ -71,7 +71,9 @@ public class LauncherInfo extends ProductObject implements ILauncherInfo { + Node child = children.item(i); + if (child.getNodeType() == Node.ELEMENT_NODE) { + String name = child.getNodeName(); +- if (name.equals("linux")) { //$NON-NLS-1$ ++ if (name.equals("freebsd")) { //$NON-NLS-1$ ++ parseFreeBSD((Element) child); ++ } else if (name.equals("linux")) { //$NON-NLS-1$ + parseLinux((Element) child); + } else if (name.equals("macosx")) { //$NON-NLS-1$ + parseMac((Element) child); +@@ -122,12 +124,17 @@ public class LauncherInfo extends ProductObject implements ILauncherInfo { + fIcons.put(LINUX_ICON, element.getAttribute("icon")); //$NON-NLS-1$ + } + ++ private void parseFreeBSD(Element element) { ++ fIcons.put(FREEBSD_ICON, element.getAttribute("icon")); //$NON-NLS-1$ ++ } ++ + public void write(String indent, PrintWriter writer) { + writer.print(indent + "<launcher"); //$NON-NLS-1$ + if (fLauncherName != null && fLauncherName.length() > 0) + writer.print(" name=\"" + fLauncherName + "\""); //$NON-NLS-1$ //$NON-NLS-2$ + writer.println(">"); //$NON-NLS-1$ + ++ writeFreeBSD(indent + " ", writer); //$NON-NLS-1$ + writeLinux(indent + " ", writer); //$NON-NLS-1$ + writeMac(indent + " ", writer); //$NON-NLS-1$ + writeSolaris(indent + " ", writer); //$NON-NLS-1$ +@@ -182,4 +189,10 @@ public class LauncherInfo extends ProductObject implements ILauncherInfo { + writer.println(indent + "<linux icon=\"" + getWritableString(icon) + "\"/>"); //$NON-NLS-1$ //$NON-NLS-2$ + } + ++ private void writeFreeBSD(String indent, PrintWriter writer) { ++ String icon = fIcons.get(FREEBSD_ICON); ++ if (icon != null && icon.length() > 0) ++ writer.println(indent + "<freebsd icon=\"" + getWritableString(icon) + "\"/>"); //$NON-NLS-1$ //$NON-NLS-2$ ++ } ++ + } +diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/rcp/IntroTemplate.java b/eclipse.pde.ui/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/rcp/IntroTemplate.java +index 8ee34a0..d6aaf40 100644 +--- a/eclipse.pde.ui/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/rcp/IntroTemplate.java ++++ b/eclipse.pde.ui/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/rcp/IntroTemplate.java +@@ -160,7 +160,7 @@ public class IntroTemplate extends PDETemplateSection { + presentationElement.setAttribute("home-page-id", "root"); //$NON-NLS-1$ //$NON-NLS-2$ + IPluginElement implementationElement = factory.createElement(presentationElement); + implementationElement.setName("implementation"); //$NON-NLS-1$ +- implementationElement.setAttribute("os", "win32,linux,macosx"); //$NON-NLS-1$ //$NON-NLS-2$ ++ implementationElement.setAttribute("os", "win32,linux,macosx,freebsd"); //$NON-NLS-1$ //$NON-NLS-2$ + if (getTargetVersion() == 3.0) + implementationElement.setAttribute("style", "content/shared.css"); //$NON-NLS-1$//$NON-NLS-2$ + +diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java b/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java +index 32e395e..994e51d 100644 +--- a/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java ++++ b/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java +@@ -1004,6 +1004,7 @@ public class PDEUIMessages extends NLS { + public static String LauncherSection_48High; + public static String LauncherSection_256High; + public static String LauncherSection_linuxLabel; ++ public static String LauncherSection_freebsdLabel; + public static String LauncherSection_large; + public static String LauncherSection_medium; + public static String LauncherSection_small; +diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/ArgumentsSection.java b/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/ArgumentsSection.java +index 06ee395..ee92f5c 100644 +--- a/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/ArgumentsSection.java ++++ b/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/ArgumentsSection.java +@@ -34,6 +34,7 @@ public class ArgumentsSection extends PDESection { + private static final String[] TAB_LABELS = new String[5]; + static { + TAB_LABELS[IArgumentsInfo.L_ARGS_ALL] = PDEUIMessages.ArgumentsSection_allPlatforms; ++ TAB_LABELS[IArgumentsInfo.L_ARGS_FRBSD] = "freebsd"; //$NON-NLS-1$ + TAB_LABELS[IArgumentsInfo.L_ARGS_LINUX] = "linux"; //$NON-NLS-1$ + TAB_LABELS[IArgumentsInfo.L_ARGS_MACOS] = "macosx"; //$NON-NLS-1$ + TAB_LABELS[IArgumentsInfo.L_ARGS_SOLAR] = "solaris"; //$NON-NLS-1$ +diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/ConfigurationSection.java b/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/ConfigurationSection.java +index e6bde32..6334e65 100644 +--- a/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/ConfigurationSection.java ++++ b/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/ConfigurationSection.java +@@ -50,8 +50,8 @@ public class ConfigurationSection extends PDESection { + private FormEntry fCustomEntry; + private boolean fBlockChanges; + +- private static final String[] TAB_LABELS = {"linux", "macosx", "solaris", "win32"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ +- private static final String[] TAB_OS = {Platform.OS_LINUX, Platform.OS_MACOSX, Platform.OS_SOLARIS, Platform.OS_WIN32}; ++ private static final String[] TAB_LABELS = {"freebsd", "linux", "macosx", "solaris", "win32"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ ++ private static final String[] TAB_OS = {Platform.OS_FREEBSD, Platform.OS_LINUX, Platform.OS_MACOSX, Platform.OS_SOLARIS, Platform.OS_WIN32}; + + private CTabFolder fTabFolder; + private int fLastTab; +diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/JRESection.java b/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/JRESection.java +index e51b309..d44ec23 100644 +--- a/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/JRESection.java ++++ b/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/JRESection.java +@@ -63,8 +63,8 @@ public class JRESection extends PDESection { + private ComboViewerPart fEEsCombo; + private boolean fBlockChanges; + +- private static final String[] TAB_LABELS = {"linux", "macosx", "solaris", "win32"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ +- private static final String[] TAB_OS = {Platform.OS_LINUX, Platform.OS_MACOSX, Platform.OS_SOLARIS, Platform.OS_WIN32}; ++ private static final String[] TAB_LABELS = {"freebsd", "linux", "macosx", "solaris", "win32"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ ++ private static final String[] TAB_OS = {Platform.OS_FREEBSD, Platform.OS_LINUX, Platform.OS_MACOSX, Platform.OS_SOLARIS, Platform.OS_WIN32}; + + private CTabFolder fTabFolder; + private int fLastTab; +diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/LauncherSection.java b/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/LauncherSection.java +index 7be4406..92d3bcd 100644 +--- a/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/LauncherSection.java ++++ b/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/LauncherSection.java +@@ -60,6 +60,7 @@ public class LauncherSection extends PDESection { + private CTabFolder fTabFolder; + private Composite fNotebook; + private StackLayout fNotebookLayout; ++ private Composite fFreeBSDSection; + private Composite fLinuxSection; + private Composite fMacSection; + private Composite fSolarisSection; +@@ -156,6 +157,7 @@ public class LauncherSection extends PDESection { + fNotebookLayout = new StackLayout(); + fNotebook.setLayout(fNotebookLayout); + ++ fFreeBSDSection = addFreeBSDSection(fNotebook, toolkit); + fLinuxSection = addLinuxSection(fNotebook, toolkit); + fMacSection = addMacSection(fNotebook, toolkit); + fSolarisSection = addSolarisSection(fNotebook, toolkit); +@@ -181,6 +183,7 @@ public class LauncherSection extends PDESection { + } + + private void createTabs() { ++ addTab("freebsd"); //$NON-NLS-1$ + addTab("linux"); //$NON-NLS-1$ + addTab("macosx"); //$NON-NLS-1$ + addTab("solaris"); //$NON-NLS-1$ +@@ -188,16 +191,19 @@ public class LauncherSection extends PDESection { + + String currentTarget = TargetPlatform.getOS(); + if ("win32".equals(currentTarget)) { //$NON-NLS-1$ +- fTabFolder.setSelection(3); ++ fTabFolder.setSelection(4); + fNotebookLayout.topControl = fWin32Section; + } else if ("macosx".equals(currentTarget)) { //$NON-NLS-1$ +- fTabFolder.setSelection(1); ++ fTabFolder.setSelection(2); + fNotebookLayout.topControl = fMacSection; + } else if ("solaris".equals(currentTarget)) { //$NON-NLS-1$ +- fTabFolder.setSelection(2); ++ fTabFolder.setSelection(3); + fNotebookLayout.topControl = fSolarisSection; +- } else { ++ } else if ("freebsd".equals(currentTarget)) { //$NON-NLS-1$ + fTabFolder.setSelection(0); ++ fNotebookLayout.topControl = fFreeBSDSection; ++ } else { ++ fTabFolder.setSelection(1); + fNotebookLayout.topControl = fLinuxSection; + } + } +@@ -290,6 +296,14 @@ public class LauncherSection extends PDESection { + } + } + ++ private Composite addFreeBSDSection(Composite parent, FormToolkit toolkit) { ++ Composite comp = createComposite(parent, toolkit); ++ createLabel(comp, toolkit, PDEUIMessages.LauncherSection_freebsdLabel, 3); ++ fIcons.add(new IconEntry(comp, toolkit, PDEUIMessages.LauncherSection_icon, ILauncherInfo.FREEBSD_ICON)); ++ toolkit.paintBordersFor(comp); ++ return comp; ++ } ++ + private Composite addLinuxSection(Composite parent, FormToolkit toolkit) { + Composite comp = createComposite(parent, toolkit); + createLabel(comp, toolkit, PDEUIMessages.LauncherSection_linuxLabel, 3); +@@ -446,7 +460,7 @@ public class LauncherSection extends PDESection { + } + + private String getExtension(String iconId) { +- if (iconId.equals(ILauncherInfo.LINUX_ICON)) ++ if (iconId.equals(ILauncherInfo.LINUX_ICON) || iconId.equals(ILauncherInfo.FREEBSD_ICON)) + return "xpm"; //$NON-NLS-1$ + if (iconId.equals(ILauncherInfo.MACOSX_ICON)) + return "icns"; //$NON-NLS-1$ +@@ -473,15 +487,18 @@ public class LauncherSection extends PDESection { + Control oldPage = fNotebookLayout.topControl; + switch (index) { + case 0 : +- fNotebookLayout.topControl = fLinuxSection; ++ fNotebookLayout.topControl = fFreeBSDSection; + break; + case 1 : +- fNotebookLayout.topControl = fMacSection; ++ fNotebookLayout.topControl = fLinuxSection; + break; + case 2 : +- fNotebookLayout.topControl = fSolarisSection; ++ fNotebookLayout.topControl = fMacSection; + break; + case 3 : ++ fNotebookLayout.topControl = fSolarisSection; ++ break; ++ case 4 : + fNotebookLayout.topControl = fWin32Section; + break; + } +diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties b/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties +index fecf4aa..de25e4f 100644 +--- a/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties ++++ b/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties +@@ -596,6 +596,7 @@ LauncherSection_48Low=48x48 (8-bit): + LauncherSection_48High=48x48 (32-bit): + LauncherSection_256High=256x256 (32-bit): + LauncherSection_linuxLabel=A single XPM icon is required: ++LauncherSection_freebsdLabel=A single XPM icon is required: + LauncherSection_large=Large: + LauncherSection_medium=Medium: + LauncherSection_small=Small: +diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/product/ProductIntroOperation.java b/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/product/ProductIntroOperation.java +index 3c8c426..fa46f72 100644 +--- a/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/product/ProductIntroOperation.java ++++ b/eclipse.pde.ui/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/product/ProductIntroOperation.java +@@ -128,7 +128,7 @@ public class ProductIntroOperation extends BaseManifestOperation implements IVar + implementation.setName("implementation"); //$NON-NLS-1$ + implementation.setAttribute("kind", "html"); //$NON-NLS-1$ //$NON-NLS-2$ + implementation.setAttribute("style", "content/shared.css"); //$NON-NLS-1$ //$NON-NLS-2$ +- implementation.setAttribute("os", "win32,linux,macosx"); //$NON-NLS-1$ //$NON-NLS-2$ ++ implementation.setAttribute("os", "win32,linux,macosx,freebsd"); //$NON-NLS-1$ //$NON-NLS-2$ + + presentation.add(implementation); + +diff --git a/eclipse.platform.releng/features/org.eclipse.platform-feature/pom.xml b/eclipse.platform.releng/features/org.eclipse.platform-feature/pom.xml +index 4be88a5..27e2cd3 100644 +--- a/eclipse.platform.releng/features/org.eclipse.platform-feature/pom.xml ++++ b/eclipse.platform.releng/features/org.eclipse.platform-feature/pom.xml +@@ -59,6 +59,7 @@ + <plugin id="org.eclipse.core.filesystem.aix.ppc"/> + <plugin id="org.eclipse.core.filesystem.aix.ppc64"/> + <plugin id="org.eclipse.core.filesystem.hpux.ia64"/> ++ <plugin id="org.eclipse.core.filesystem.freebsd.%%ECLIPSE_ARCH%%"/> + <plugin id="org.eclipse.core.filesystem.linux.x86"/> + <plugin id="org.eclipse.core.filesystem.linux.x86_64"/> + <plugin id="org.eclipse.core.filesystem.solaris.sparc"/> +@@ -73,9 +75,13 @@ + <plugin id="org.eclipse.core.net.linux.x86_64"/> + <plugin id="org.eclipse.core.net.win32.x86"/> + <plugin id="org.eclipse.core.net.win32.x86_64"/> ++ <plugin id="org.eclipse.compare.win32"/> ++ <plugin id="org.eclipse.ui.win32"/> + <plugin id="org.eclipse.update.core.linux"/> + <plugin id="org.eclipse.update.core.win32"/> + <plugin id="org.eclipse.equinox.security.macosx"/> ++ <plugin id="org.eclipse.equinox.security.win32.x86"/> ++ <plugin id="org.eclipse.equinox.security.win32.x86_64"/> + </excludes> + </configuration> + </execution> +diff --git a/eclipse.platform.releng/features/org.eclipse.sdk.examples-feature/pom.xml b/eclipse.platform.releng/features/org.eclipse.sdk.examples-feature/pom.xml +index c949520..11ee54a 100644 +--- a/eclipse.platform.releng/features/org.eclipse.sdk.examples-feature/pom.xml ++++ b/eclipse.platform.releng/features/org.eclipse.sdk.examples-feature/pom.xml +@@ -36,6 +36,7 @@ + <configuration> + <excludes> + <plugin id="org.eclipse.sdk.examples"/> ++ <plugin id="org.eclipse.swt.examples.ole.win32"/> + <feature id="org.eclipse.sdk.examples.source"/> + </excludes> + </configuration> +diff --git a/eclipse.platform.resources/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/local/LocalFileSystem.java b/eclipse.platform.resources/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/local/LocalFileSystem.java +index a335001..003e20a 100644 +--- a/eclipse.platform.resources/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/local/LocalFileSystem.java ++++ b/eclipse.platform.resources/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/local/LocalFileSystem.java +@@ -98,7 +98,7 @@ public class LocalFileSystem extends FileSystem { + String arch = System.getProperty("osgi.arch", ""); //$NON-NLS-1$ //$NON-NLS-2$ + if (os.equals(Constants.OS_WIN32)) + attributes |= EFS.ATTRIBUTE_ARCHIVE | EFS.ATTRIBUTE_HIDDEN; +- else if (os.equals(Constants.OS_LINUX) || (os.equals(Constants.OS_SOLARIS) && arch.equals(Constants.ARCH_SPARC))) ++ else if (os.equals(Constants.OS_FREEBSD) || os.equals(Constants.OS_LINUX) || (os.equals(Constants.OS_SOLARIS) && arch.equals(Constants.ARCH_SPARC))) + attributes |= EFS.ATTRIBUTE_EXECUTABLE | EFS.ATTRIBUTE_SYMLINK | EFS.ATTRIBUTE_LINK_TARGET; + else if (os.equals(Constants.OS_MACOSX) || os.equals(Constants.OS_HPUX) || os.equals(Constants.OS_QNX)) + attributes |= EFS.ATTRIBUTE_EXECUTABLE; +diff --git a/eclipse.platform.resources/pom.xml b/eclipse.platform.resources/pom.xml +index 4b33285..6b6fcc7 100644 +--- a/eclipse.platform.resources/pom.xml ++++ b/eclipse.platform.resources/pom.xml +@@ -43,6 +43,7 @@ + + <modules> + <module>bundles/org.eclipse.core.filesystem</module> ++ <module>bundles/org.eclipse.core.filesystem.freebsd.%%ECLIPSE_ARCH%%</module> + <module>bundles/org.eclipse.core.filesystem.hpux.ia64</module> + <module>bundles/org.eclipse.core.filesystem.hpux.PA_RISC</module> + <module>bundles/org.eclipse.core.filesystem.linux.ppc</module> +diff --git a/eclipse.platform.resources/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/filesystem/SymlinkTest.java b/eclipse.platform.resources/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/filesystem/SymlinkTest.java +index 7c8ad8c..b15bbf6 100644 +--- a/eclipse.platform.resources/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/filesystem/SymlinkTest.java ++++ b/eclipse.platform.resources/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/filesystem/SymlinkTest.java +@@ -49,8 +49,8 @@ public class SymlinkTest extends FileSystemTest { + public static boolean isTestablePlatform() { + // A Platform is testable if it supports the "ln -s" command. + String os = Platform.getOS(); +- //currently we only support linux, solaris and mac os +- if (os.equals(Platform.OS_LINUX) || os.equals(Platform.OS_SOLARIS) || os.equals(Platform.OS_MACOSX) || os.equals(Platform.OS_AIX) ++ //currently we only support freebsd, linux, solaris and mac os ++ if (os.equals(Platform.OS_FREEBSD) || os.equals(Platform.OS_LINUX) || os.equals(Platform.OS_SOLARIS) || os.equals(Platform.OS_MACOSX) || os.equals(Platform.OS_AIX) + // ||os.equals(Platform.OS_HPUX) + // || isWindowsVistaOrHigher() + ) { +@@ -339,7 +339,7 @@ public class SymlinkTest extends FileSystemTest { + public void testSymlinkEnabled() { + String os = Platform.getOS(); + String arch = Platform.getOSArch(); +- if (Platform.OS_LINUX.equals(os) || (Platform.OS_SOLARIS.equals(os) && Platform.ARCH_SPARC.equals(arch)) || Platform.OS_MACOSX.equals(os) || Platform.OS_AIX.equals(os) || isWindowsVistaOrHigher()) { ++ if (Platform.OS_FREEBSD.equals(os) || Platform.OS_LINUX.equals(os) || (Platform.OS_SOLARIS.equals(os) && Platform.ARCH_SPARC.equals(arch)) || Platform.OS_MACOSX.equals(os) || Platform.OS_AIX.equals(os) || isWindowsVistaOrHigher()) { + assertTrue(haveSymlinks()); + } else { + assertFalse(haveSymlinks()); +diff --git a/eclipse.platform.runtime/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/boot/BootLoader.java b/eclipse.platform.runtime/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/boot/BootLoader.java +index 652119f..30482b0 100644 +--- a/eclipse.platform.runtime/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/boot/BootLoader.java ++++ b/eclipse.platform.runtime/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/boot/BootLoader.java +@@ -94,6 +94,16 @@ public final class BootLoader { + public static final String OS_HPUX = "hpux";//$NON-NLS-1$ + + /** ++ * Constant string (value "freebsd") indicating the platform is running on an ++ * FreeBSD-based operating system. ++ * Note: This constant is not officially supported by the eclipse project ++ * and is only available on eclipse versions built from the FreeBSD ports ++ * tree. ++ * @deprecated Replaced by {@link Platform#OS_FREEBSD. ++ */ ++ public static final String OS_FREEBSD = "freebsd";//$NON-NLS-1$ ++ ++ /** + * Constant string (value "qnx") indicating the platform is running on a + * QNX-based operating system. + * @deprecated Replaced by {@link Platform#OS_QNX}. +diff --git a/eclipse.platform.runtime/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/InternalPlatform.java b/eclipse.platform.runtime/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/InternalPlatform.java +index 8ace8e8..21ba40f 100644 +--- a/eclipse.platform.runtime/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/InternalPlatform.java ++++ b/eclipse.platform.runtime/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/InternalPlatform.java +@@ -62,7 +62,7 @@ public final class InternalPlatform { + //XXX This is not synchronized + private static Map logs = new HashMap(5); + +- private static final String[] OS_LIST = {Platform.OS_AIX, Platform.OS_HPUX, Platform.OS_LINUX, Platform.OS_MACOSX, Platform.OS_QNX, Platform.OS_SOLARIS, Platform.OS_WIN32}; ++ private static final String[] OS_LIST = {Platform.OS_AIX, Platform.OS_FREEBSD, Platform.OS_HPUX, Platform.OS_LINUX, Platform.OS_MACOSX, Platform.OS_QNX, Platform.OS_SOLARIS, Platform.OS_WIN32}; + private static String password = ""; //$NON-NLS-1$ + private static final String PASSWORD = "-password"; //$NON-NLS-1$ + +diff --git a/eclipse.platform.runtime/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Platform.java b/eclipse.platform.runtime/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Platform.java +index 18b64e4..344be72 100644 +--- a/eclipse.platform.runtime/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Platform.java ++++ b/eclipse.platform.runtime/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Platform.java +@@ -261,6 +261,17 @@ public final class Platform { + public static final String OS_MACOSX = "macosx";//$NON-NLS-1$ + + /** ++ * Constant string (value "freebsd") indicating the platform is running on a ++ * FreeBSD operating system. ++ * <p> ++ * Note this constant is not officially supported by the eclipse project ++ * and is only available on eclipse versions built from the FreeBSD ports ++ * tree. ++ * </p> ++ */ ++ public static final String OS_FREEBSD = "freebsd";//$NON-NLS-1$ ++ ++ /** + * Constant string (value "unknown") indicating the platform is running on a + * machine running an unknown operating system. + * <p> +diff --git a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.cpp b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.cpp +index 7c713c7..f166708 100644 +--- a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.cpp ++++ b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.cpp +@@ -180,7 +180,7 @@ JNIEXPORT jint JNICALL XPCOM_NATIVE(_1NS_1NewLocalFile) + jint rc = 0; + XPCOM_NATIVE_ENTER(env, that, _1NS_1NewLocalFile_FUNC); + if (arg2) if ((lparg2 = env->GetIntLongArrayElements(arg2, NULL)) == NULL) goto fail; +- rc = (jint)NS_NewLocalFile(*(nsAString *)arg0, arg1, (nsILocalFile**)lparg2); ++ rc = (jint)NS_NewLocalFile(*(nsAString *)arg0, arg1, (nsIFile**)lparg2); + fail: + if (arg2 && lparg2) env->ReleaseIntLongArrayElements(arg2, lparg2, 0); + XPCOM_NATIVE_EXIT(env, that, _1NS_1NewLocalFile_FUNC); +diff --git a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.h b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.h +index afc18ec..3b6da84 100644 +--- a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.h ++++ b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.h +@@ -32,6 +32,8 @@ + + #define XPCOM_LOAD_FUNCTION LOAD_FUNCTION + ++#define nsStaticModuleInfo void ++ + #ifdef _WIN32 + #if !(defined(__i386__) || defined(_M_IX86) || defined(_X86_)) + #define nsStaticModuleInfo void /* define on 64-bit win32 due to use of XULRunner 10 SDK */ +diff --git a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/build.sh b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/build.sh +index 689616e..86afdfe 100644 +--- a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/build.sh ++++ b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/build.sh +@@ -12,12 +12,12 @@ + # Tom Tromey (Red Hat, Inc.) + #******************************************************************************* + ++COMPONENTS_DIR=`pwd`/../../components + cd `dirname $0` + + MAKE_TYPE=make + + # Check if we have to compile external.xpt from external.idl +-COMPONENTS_DIR=`pwd`/../../components + if test ! -f ${COMPONENTS_DIR}/external.xpt; then + if test ! -f ${COMPONENTS_DIR}/external.idl; then + echo "Can't find ${COMPONENTS_DIR}/external.idl" +@@ -64,6 +64,8 @@ case $OS in + "FreeBSD") + SWT_OS=freebsd + MAKEFILE=make_freebsd.mak ++ MAKE_TYPE=gmake ++ MODEL=`uname -m` + ;; + *) + SWT_OS=`uname -s | tr -s '[:upper:]' '[:lower:]'` +@@ -407,6 +409,34 @@ case $SWT_OS.$SWT_ARCH in + export PKG_CONFIG_PATH="/opt/gtk_64bit/lib/hpux64/pkgconfig" + fi + ;; ++ "freebsd.x86"|"freebsd.x86_64") ++# PATH="/export/home/SUNWspro/bin:/usr/ccs/bin:/usr/bin:$PATH" ++ if [ "${CC}" = "" ]; then ++ CC="cc" ++ fi ++ if [ "${CXX}" = "" ]; then ++ CXX="c++" ++ fi ++ if [ "${CDE_HOME}" = "" ]; then ++ CDE_HOME="/usr/dt" ++ fi ++ if [ "${JAVA_HOME}" = "" ]; then ++ JAVA_HOME="/usr/local/openjdk7" ++ fi ++ if [ "${PKG_CONFIG_PATH}" = "" ]; then ++ PKG_CONFIG_PATH="/usr/local/libdata/pkgconfig/" ++ fi ++# if [ "${MOZILLA_SDK}" = "" ]; then ++# MOZILLA_SDK="/bluebird/teamswt/swt-builddir/geckoSDK/1.4/gecko-sdk" ++# fi ++# if [ "${MOZILLA_INCLUDES}" = "" ]; then ++# MOZILLA_INCLUDES="-I${MOZILLA_SDK} -I${MOZILLA_SDK}/xpcom/include -I${MOZILLA_SDK}/nspr/include -I${MOZILLA_SDK}/embed_base/include -I${MOZILLA_SDK}/embedstring/include -I${MOZILLA_SDK}/string/include" ++# fi ++# if [ "${MOZILLA_LIBS}" = "" ]; then ++# MOZILLA_LIBS="${MOZILLA_SDK}/embedstring/bin/libembedstring.a -L${MOZILLA_SDK}/xpcom/bin -L${MOZILLA_SDK}/nspr/bin -lxpcom -lnspr4 -lplds4 -lplc4" ++# fi ++ export PATH CC CXX CDE_HOME JAVA_HOME PKG_CONFIG_PATH MOZILLA_SDK MOZILLA_INCLUDES MOZILLA_LIBS; ++ ;; + esac + + +@@ -478,24 +508,35 @@ if [ -z "${MOZILLA_INCLUDES}" -a -z "${MOZILLA_LIBS}" -a ${MODEL} != 'sparc64' ] + export MOZILLA_INCLUDES + export MOZILLA_LIBS + MAKE_MOZILLA=make_mozilla ++ echo "Mozilla/XPCOM found, compiling Mozilla embedded browser support" + elif [ x`pkg-config --exists firefox-xpcom && echo YES` = "xYES" ]; then + MOZILLA_INCLUDES=`pkg-config --cflags firefox-xpcom` + MOZILLA_LIBS=`pkg-config --libs firefox-xpcom` + export MOZILLA_INCLUDES + export MOZILLA_LIBS + MAKE_MOZILLA=make_mozilla +- elif [ x`pkg-config --exists libxul && echo YES` = "xYES" ]; then +- XULRUNNER_INCLUDES=`pkg-config --cflags libxul` +- XULRUNNER_LIBS=`pkg-config --libs libxul` ++ echo "Firefox/XPCOM found, compiling Mozilla embedded browser support" ++ elif [ x`pkg-config --exists libxul libxul-embedding && echo YES` = "xNO" ]; then # don't bother, it doesn't work ++ XULRUNNER_INCLUDES="-include /usr/local/include/libxul/mozilla-config.h `pkg-config --cflags libxul libxul-embedding`" ++ XULRUNNER_LIBS=`pkg-config --libs libxul-embedding` + export XULRUNNER_INCLUDES + export XULRUNNER_LIBS + MAKE_MOZILLA=make_xulrunner ++ echo "XULRunner/XPCOM found, compiling Mozilla embedded browser support" + else + echo "None of the following libraries were found: Mozilla/XPCOM, Firefox/XPCOM, or XULRunner/XPCOM" + echo " *** Mozilla embedding support will not be compiled." + fi + fi + ++if [ x`pkg-config --exists webkit-1.0 && echo YES` = "xYES" ]; then ++ echo "WebKit found, compiling webkit embedded browser support." ++ MAKE_WEBKIT=make_webkit ++else ++ echo "WebKit not found:" ++ echo " *** WebKit embedding support will not be compiled." ++fi ++ + # Find AWT if available + if [ -z "${AWT_LIB_PATH}" ]; then + if [ -f ${JAVA_HOME}/jre/lib/${AWT_ARCH}/libjawt.* ]; then +@@ -524,5 +565,5 @@ fi + if [ "x${1}" = "xclean" ]; then + ${MAKE_TYPE} -f $MAKEFILE clean + else +- ${MAKE_TYPE} -f $MAKEFILE all $MAKE_GNOME $MAKE_CAIRO $MAKE_AWT $MAKE_MOZILLA ${1} ${2} ${3} ${4} ${5} ${6} ${7} ${8} ${9} ++ ${MAKE_TYPE} -f $MAKEFILE all $MAKE_GNOME $MAKE_CAIRO $MAKE_AWT $MAKE_MOZILLA $MAKE_WEBKIT ${1} ${2} ${3} ${4} ${5} ${6} ${7} ${8} ${9} + fi +diff --git a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_freebsd.mak b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_freebsd.mak +index 0bf9416..e955aa9 100644 +--- a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_freebsd.mak ++++ b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_freebsd.mak +@@ -9,7 +9,7 @@ + # IBM Corporation - initial API and implementation + #******************************************************************************* + +-# Makefile for creating SWT libraries for Linux GTK ++# Makefile for creating SWT libraries for FreeBSD GTK + + include make_common.mak + +@@ -27,6 +27,7 @@ GNOME_PREFIX = swt-gnome + MOZILLA_PREFIX = swt-mozilla$(GCC_VERSION) + XULRUNNER_PREFIX = swt-xulrunner + XPCOMINIT_PREFIX = swt-xpcominit ++WEBKIT_PREFIX = swt-webkit + GLX_PREFIX = swt-glx + + SWT_LIB = lib$(SWT_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).so +@@ -39,6 +40,7 @@ GNOME_LIB = lib$(GNOME_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).so + MOZILLA_LIB = lib$(MOZILLA_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).so + XULRUNNER_LIB = lib$(XULRUNNER_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).so + XPCOMINIT_LIB = lib$(XPCOMINIT_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).so ++WEBKIT_LIB = lib$(WEBKIT_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).so + GLX_LIB = lib$(GLX_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).so + + CAIROCFLAGS = `pkg-config --cflags cairo` +@@ -46,7 +48,7 @@ CAIROLIBS = `pkg-config --libs-only-L cairo` -lcairo + + # Do not use pkg-config to get libs because it includes unnecessary dependencies (i.e. pangoxft-1.0) + GTKCFLAGS = `pkg-config --cflags gtk+-2.0` +-GTKLIBS = `pkg-config --libs-only-L gtk+-2.0 gthread-2.0` -lgtk-x11-2.0 -lgthread-2.0 -L/usr/X11R6/lib $(XLIB64) -lXtst ++GTKLIBS = `pkg-config --libs-only-L gtk+-2.0 gthread-2.0` -lgtk-x11-2.0 -lgthread-2.0 -L/usr/local/lib $(XLIB64) -lXtst + + CDE_LIBS = -L$(CDE_HOME)/lib -R$(CDE_HOME)/lib -lXt -lX11 -lDtSvc + +@@ -59,7 +61,8 @@ ATKLIBS = `pkg-config --libs-only-L atk gtk+-2.0` -latk-1.0 -lgtk-x11-2.0 + GNOMECFLAGS = `pkg-config --cflags gnome-vfs-module-2.0 libgnome-2.0 libgnomeui-2.0` + GNOMELIBS = `pkg-config --libs-only-L gnome-vfs-module-2.0 libgnome-2.0 libgnomeui-2.0` -lgnomevfs-2 -lgnome-2 -lgnomeui-2 + +-GLXLIBS = -L/usr/X11R6/lib -lGL -lGLU -lm ++GLXCFLAGS = -I/usr/local/include ++GLXLIBS = -L/usr/local/lib -lGL -lGLU -lm + + # Uncomment for Native Stats tool + #NATIVE_STATS = -DNATIVE_STATS +@@ -76,9 +79,22 @@ MOZILLACFLAGS = -O \ + -I. \ + -I$(JAVA_HOME)/include \ + -I$(JAVA_HOME)/include/freebsd \ ++ -std=c++11 \ + ${SWT_PTR_CFLAGS} + MOZILLALFLAGS = -shared -Wl,--version-script=mozilla_exports -Bsymbolic ++XULRUNNER_EXCLUDES =-DNO__1XPCOMGlueShutdown ++ ++WEBKITCFLAGS = `pkg-config --cflags glib-2.0` ++ ++SWT_OBJECTS = swt.o c.o c_stats.o callback.o ++CDE_OBJECTS = swt.o cde.o cde_structs.o cde_stats.o ++AWT_OBJECTS = swt_awt.o ++SWTPI_OBJECTS = swt.o os.o os_structs.o os_custom.o os_stats.o ++CAIRO_OBJECTS = swt.o cairo.o cairo_structs.o cairo_stats.o ++ATK_OBJECTS = swt.o atk.o atk_structs.o atk_custom.o atk_stats.o + ++WEBKITCFLAGS = `pkg-config --cflags glib-2.0` ++ + SWT_OBJECTS = swt.o c.o c_stats.o callback.o + CDE_OBJECTS = swt.o cde.o cde_structs.o cde_stats.o + AWT_OBJECTS = swt_awt.o +@@ -87,8 +103,9 @@ CAIRO_OBJECTS = swt.o cairo.o cairo_structs.o cairo_stats.o + ATK_OBJECTS = swt.o atk.o atk_structs.o atk_custom.o atk_stats.o + GNOME_OBJECTS = swt.o gnome.o gnome_structs.o gnome_stats.o + MOZILLA_OBJECTS = swt.o xpcom.o xpcom_custom.o xpcom_structs.o xpcom_stats.o +-XULRUNNER_OBJECTS = swt.o xpcomxul.o xpcomxul_custom.o xpcomxul_structs.o xpcomxul_stats.o xpcomxulglue.o xpcomxulglue_stats.o ++XULRUNNER_OBJECTS = swt.o xpcomxul.o xpcomxul_custom.o xpcomxul_structs.o xpcomxul_stats.o + XPCOMINIT_OBJECTS = swt.o xpcominit.o xpcominit_structs.o xpcominit_stats.o ++WEBKIT_OBJECTS = swt.o webkit.o webkit_structs.o webkit_stats.o + GLX_OBJECTS = swt.o glx.o glx_structs.o glx_stats.o + + CFLAGS = -O -Wall \ +@@ -101,13 +118,16 @@ CFLAGS = -O -Wall \ + ${SWT_PTR_CFLAGS} + LFLAGS = -shared -fPIC + ++CFLAGS := $(CFLAGS) -I/usr/local/include ++LDFLAGS := $(LDFLAGS) -L/usr/local/lib ++ + ifndef NO_STRIP + AWT_LFLAGS := $(AWT_LFLAGS) -s + MOZILLALFLAGS := $(MOZILLALFLAGS) -s + LFLAGS := $(LFLAGS) -s + endif + +-all: make_swt make_atk make_gnome make_glx ++all: make_swt make_atk make_glx + + # + # SWT libs +@@ -164,7 +184,7 @@ $(CDE_LIB): $(CDE_OBJECTS) + make_awt:$(AWT_LIB) + + $(AWT_LIB): $(AWT_OBJECTS) +- $(CC) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS) ++ $(CC) $(CFLAGS) $(LDFLAGS) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS) + + # + # Atk lib +@@ -203,22 +223,22 @@ gnome_stats.o: gnome_stats.c gnome_stats.h + # + # Mozilla lib + # +-make_mozilla:$(MOZILLA_LIB) ++##make_mozilla:$(MOZILLA_LIB) + +-$(MOZILLA_LIB): $(MOZILLA_OBJECTS) +- $(CXX) -o $(MOZILLA_LIB) $(MOZILLA_OBJECTS) $(MOZILLALFLAGS) ${MOZILLA_LIBS} ++##$(MOZILLA_LIB): $(MOZILLA_OBJECTS) ++## $(CXX) -o $(MOZILLA_LIB) $(MOZILLA_OBJECTS) $(MOZILLALFLAGS) ${MOZILLA_LIBS} + +-xpcom.o: xpcom.cpp +- $(CXX) $(MOZILLACFLAGS) ${MOZILLA_INCLUDES} -c xpcom.cpp ++##xpcom.o: xpcom.cpp ++## $(CXX) $(MOZILLACFLAGS) ${MOZILLA_INCLUDES} -c xpcom.cpp + +-xpcom_structs.o: xpcom_structs.cpp +- $(CXX) $(MOZILLACFLAGS) ${MOZILLA_INCLUDES} -c xpcom_structs.cpp ++##xpcom_structs.o: xpcom_structs.cpp ++## $(CXX) $(MOZILLACFLAGS) ${MOZILLA_INCLUDES} -c xpcom_structs.cpp + +-xpcom_custom.o: xpcom_custom.cpp +- $(CXX) $(MOZILLACFLAGS) ${MOZILLA_INCLUDES} -c xpcom_custom.cpp ++##xpcom_custom.o: xpcom_custom.cpp ++## $(CXX) $(MOZILLACFLAGS) ${MOZILLA_INCLUDES} -c xpcom_custom.cpp + +-xpcom_stats.o: xpcom_stats.cpp +- $(CXX) $(MOZILLACFLAGS) ${MOZILLA_INCLUDES} -c xpcom_stats.cpp ++##xpcom_stats.o: xpcom_stats.cpp ++## $(CXX) $(MOZILLACFLAGS) ${MOZILLA_INCLUDES} -c xpcom_stats.cpp + + # + # XULRunner lib +@@ -229,22 +249,22 @@ $(XULRUNNER_LIB): $(XULRUNNER_OBJECTS) + $(CXX) -o $(XULRUNNER_LIB) $(XULRUNNER_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS} + + xpcomxul.o: xpcom.cpp +- $(CXX) -o xpcomxul.o $(MOZILLACFLAGS) ${XULRUNNER_INCLUDES} -c xpcom.cpp ++ $(CXX) -o xpcomxul.o $(MOZILLACFLAGS) ${XULRUNNER_EXCLUDES} ${XULRUNNER_INCLUDES} -c xpcom.cpp + + xpcomxul_structs.o: xpcom_structs.cpp +- $(CXX) -o xpcomxul_structs.o $(MOZILLACFLAGS) ${XULRUNNER_INCLUDES} -c xpcom_structs.cpp ++ $(CXX) -o xpcomxul_structs.o $(MOZILLACFLAGS) ${XULRUNNER_EXCLUDES} ${XULRUNNER_INCLUDES} -c xpcom_structs.cpp + + xpcomxul_custom.o: xpcom_custom.cpp +- $(CXX) -o xpcomxul_custom.o $(MOZILLACFLAGS) ${XULRUNNER_INCLUDES} -c xpcom_custom.cpp ++ $(CXX) -o xpcomxul_custom.o $(MOZILLACFLAGS) ${XULRUNNER_EXCLUDES} ${XULRUNNER_INCLUDES} -c xpcom_custom.cpp + + xpcomxul_stats.o: xpcom_stats.cpp +- $(CXX) -o xpcomxul_stats.o $(MOZILLACFLAGS) ${XULRUNNER_INCLUDES} -c xpcom_stats.cpp ++ $(CXX) -o xpcomxul_stats.o $(MOZILLACFLAGS) ${XULRUNNER_EXCLUDES} ${XULRUNNER_INCLUDES} -c xpcom_stats.cpp + + xpcomxulglue.o: xpcomglue.cpp +- $(CXX) -o xpcomxulglue.o $(MOZILLACFLAGS) ${XULRUNNER_INCLUDES} -c xpcomglue.cpp ++ $(CXX) -o xpcomxulglue.o $(MOZILLACFLAGS) ${XULRUNNER_EXCLUDES} ${XULRUNNER_INCLUDES} -c xpcomglue.cpp + + xpcomxulglue_stats.o: xpcomglue_stats.cpp +- $(CXX) -o xpcomxulglue_stats.o $(MOZILLACFLAGS) ${XULRUNNER_INCLUDES} -c xpcomglue_stats.cpp ++ $(CXX) -o xpcomxulglue_stats.o $(MOZILLACFLAGS) ${XULRUNNER_EXCLUDES} ${XULRUNNER_INCLUDES} -c xpcomglue_stats.cpp + + # + # XPCOMInit lib +@@ -264,6 +284,23 @@ xpcominit_stats.o: xpcominit_stats.cpp + $(CXX) $(MOZILLACFLAGS) ${XULRUNNER_INCLUDES} -c xpcominit_stats.cpp + + # ++# WebKit lib ++# ++make_webkit: $(WEBKIT_LIB) ++ ++$(WEBKIT_LIB): $(WEBKIT_OBJECTS) ++ $(CC) $(LFLAGS) -o $(WEBKIT_LIB) $(WEBKIT_OBJECTS) ++ ++webkit.o: webkitgtk.c ++ $(CC) $(CFLAGS) $(WEBKITCFLAGS) -c webkitgtk.c -o webkit.o ++ ++webkit_structs.o: webkitgtk_structs.c ++ $(CC) $(CFLAGS) $(WEBKITCFLAGS) -c webkitgtk_structs.c -o webkit_structs.o ++ ++webkit_stats.o: webkitgtk_stats.c webkitgtk_stats.h ++ $(CC) $(CFLAGS) $(WEBKITCFLAGS) -c webkitgtk_stats.c -o webkit_stats.o ++ ++# + # GLX lib + # + make_glx: $(GLX_LIB) +diff --git a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c +index 8392189..f02a5ef 100644 +--- a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c ++++ b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c +@@ -4162,11 +4162,17 @@ JNIEXPORT void JNICALL OS_NATIVE(_1g_1thread_1init) + JNIEXPORT jboolean JNICALL OS_NATIVE(_1g_1thread_1supported) + (JNIEnv *env, jclass that) + { ++ return 1; ++ /* ++ g_thread_supported is non-existent in glib-2.36+, ++ but is still referenced. ++ + jboolean rc = 0; + OS_NATIVE_ENTER(env, that, _1g_1thread_1supported_FUNC); + rc = (jboolean)g_thread_supported(); + OS_NATIVE_EXIT(env, that, _1g_1thread_1supported_FUNC); + return rc; ++ */ + } + #endif + +diff --git a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java +index 7e282a9..59f36c5 100644 +--- a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java ++++ b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java +@@ -33,18 +33,19 @@ public class OS extends C { + } + + /** OS Constants */ +- public static final boolean IsAIX, IsSunOS, IsLinux, IsHPUX, BIG_ENDIAN; ++ public static final boolean IsAIX, IsSunOS, IsLinux, IsHPUX, IsFreeBSD, BIG_ENDIAN; + static { + + /* Initialize the OS flags and locale constants */ + String osName = System.getProperty ("os.name"); +- boolean isAIX = false, isSunOS = false, isLinux = false, isHPUX = false; ++ boolean isAIX = false, isSunOS = false, isLinux = false, isHPUX = false, isFreeBSD = false; + if (osName.equals ("Linux")) isLinux = true; + if (osName.equals ("AIX")) isAIX = true; + if (osName.equals ("Solaris")) isSunOS = true; + if (osName.equals ("SunOS")) isSunOS = true; + if (osName.equals ("HP-UX")) isHPUX = true; +- IsAIX = isAIX; IsSunOS = isSunOS; IsLinux = isLinux; IsHPUX = isHPUX; ++ if (osName.equals ("FreeBSD")) isFreeBSD = true; ++ IsAIX = isAIX; IsSunOS = isSunOS; IsLinux = isLinux; IsHPUX = isHPUX; IsFreeBSD = isFreeBSD; + + byte[] buffer = new byte[4]; + long /*int*/ ptr = OS.malloc(4); +diff --git a/eclipse.platform.swt.binaries/pom.xml b/eclipse.platform.swt.binaries/pom.xml +index 7dd0536..fc0d72c 100644 +--- a/eclipse.platform.swt.binaries/pom.xml ++++ b/eclipse.platform.swt.binaries/pom.xml +@@ -55,6 +55,7 @@ + <module>bundles/org.eclipse.swt.gtk.linux.s390x</module> + <module>bundles/org.eclipse.swt.gtk.linux.x86</module> + <module>bundles/org.eclipse.swt.gtk.linux.x86_64</module> ++ <module>bundles/org.eclipse.swt.gtk.freebsd.%%ECLIPSE_ARCH%%</module> + <module>bundles/org.eclipse.swt.gtk.solaris.sparc</module> + <module>bundles/org.eclipse.swt.gtk.solaris.x86</module> + <module>bundles/org.eclipse.swt.win32.win32.x86</module> +diff --git a/eclipse.platform.team/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.c b/eclipse.platform.team/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.c +index 2417b4e..c665afe 100644 +--- a/eclipse.platform.team/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.c ++++ b/eclipse.platform.team/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.c +@@ -17,7 +17,7 @@ + #include <gconf/gconf-value.h> + #include <gconf/gconf-client.h> + +-#ifdef __linux__ ++#ifdef __STDC__ + #include <string.h> + #else + #include <strings.h> +diff --git a/eclipse.platform.team/pom.xml b/eclipse.platform.team/pom.xml +index 8637ed3..7623ba6 100644 +--- a/eclipse.platform.team/pom.xml ++++ b/eclipse.platform.team/pom.xml +@@ -63,6 +63,7 @@ + <module>features/org.eclipse.cvs-feature</module> + + <!-- creatively located fragments --> ++ <module>bundles/org.eclipse.core.net/fragments/org.eclipse.core.net.freebsd.%%ECLIPSE_ARCH%%</module> + <module>bundles/org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86</module> + <module>bundles/org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86_64</module> + <module>bundles/org.eclipse.core.net/fragments/org.eclipse.core.net.win32.x86</module> +diff --git a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/base/HelpBasePreferenceInitializer.java b/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/base/HelpBasePreferenceInitializer.java +index 7482d60..c3150b7 100644 +--- a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/base/HelpBasePreferenceInitializer.java ++++ b/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/base/HelpBasePreferenceInitializer.java +@@ -39,6 +39,9 @@ public class HelpBasePreferenceInitializer extends + } else if (os.indexOf("linux") != -1) { //$NON-NLS-1$ + prefs.put("custom_browser_path", //$NON-NLS-1$ + "konqueror %1"); //$NON-NLS-1$ ++ } else if (os.indexOf("freebsd") != -1) { //$NON-NLS-1$ ++ prefs.put("custom_browser_path", //$NON-NLS-1$ ++ "firefox %1"); //$NON-NLS-1$ + } else { + prefs.put("custom_browser_path", "mozilla %1"); //$NON-NLS-1$ //$NON-NLS-2$ + } +diff --git a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/browser/BrowserManager.java b/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/browser/BrowserManager.java +index 3fc1fd7..47ab00d 100644 +--- a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/browser/BrowserManager.java ++++ b/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/browser/BrowserManager.java +@@ -99,6 +99,7 @@ public class BrowserManager { + if (Constants.WS_WIN32.equalsIgnoreCase(os)) { + setDefaultBrowserID(BROWSER_ID_SYSTEM); + } else if (Constants.OS_AIX.equalsIgnoreCase(os) ++ || (Constants.OS_FREEBSD.equalsIgnoreCase(os)) + || (Constants.OS_HPUX.equalsIgnoreCase(os)) + || (Constants.OS_LINUX.equalsIgnoreCase(os)) + || (Constants.OS_SOLARIS.equalsIgnoreCase(os))) { +diff --git a/eclipse.platform.ua/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/browser/embedded/EmbeddedBrowserFactory.java b/eclipse.platform.ua/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/browser/embedded/EmbeddedBrowserFactory.java +index dec7f54..859167c 100644 +--- a/eclipse.platform.ua/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/browser/embedded/EmbeddedBrowserFactory.java ++++ b/eclipse.platform.ua/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/browser/embedded/EmbeddedBrowserFactory.java +@@ -64,7 +64,8 @@ public class EmbeddedBrowserFactory implements IBrowserFactory { + */ + private boolean test() { + if (!Constants.OS_WIN32.equalsIgnoreCase(Platform.getOS()) +- && !Constants.OS_LINUX.equalsIgnoreCase(Platform.getOS())) { ++ && !Constants.OS_LINUX.equalsIgnoreCase(Platform.getOS()) ++ && !Constants.OS_FREEBSD.equalsIgnoreCase(Platform.getOS())) { + return false; + } + if (!tested) { +diff --git a/eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml b/eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml +index 242e712..a6ade82 100644 +--- a/eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml ++++ b/eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml +@@ -459,6 +469,16 @@ + fragment="true"/> + + <plugin ++ id="org.eclipse.equinox.launcher.gtk.freebsd.%%ECLIPSE_ARCH%%" ++ os="freebsd" ++ ws="gtk" ++ arch="%%ECLIPSE_ARCH%%" ++ download-size="0" ++ install-size="0" ++ version="0.0.0" ++ fragment="true"/> ++ ++ <plugin + id="org.eclipse.equinox.launcher.gtk.linux.x86_64" + os="linux" + ws="gtk" +@@ -625,6 +656,17 @@ + unpack="false"/> + + <plugin ++ id="org.eclipse.swt.gtk.freebsd.%%ECLIPSE_ARCH%%" ++ os="freebsd" ++ ws="gtk" ++ arch="%%ECLIPSE_ARCH%%" ++ download-size="0" ++ install-size="0" ++ version="0.0.0" ++ fragment="true" ++ unpack="false"/> ++ ++ <plugin + id="org.eclipse.swt.gtk.linux.x86_64" + os="linux" + ws="gtk" +diff --git a/eclipse.platform.ui/features/org.eclipse.e4.rcp/pom.xml b/eclipse.platform.ui/features/org.eclipse.e4.rcp/pom.xml +index 63b62c4..6523ad9 100644 +--- a/eclipse.platform.ui/features/org.eclipse.e4.rcp/pom.xml ++++ b/eclipse.platform.ui/features/org.eclipse.e4.rcp/pom.xml +@@ -45,6 +45,7 @@ + <plugin id="org.eclipse.equinox.launcher.cocoa.macosx"/> + <plugin id="org.eclipse.equinox.launcher.cocoa.macosx"/> + <plugin id="org.eclipse.equinox.launcher.cocoa.macosx.x86_64"/> ++ <plugin id="org.eclipse.equinox.launcher.gtk.freebsd.%%ECLIPSE_ARCH%%"/> + <plugin id="org.eclipse.equinox.launcher.gtk.linux.ppc"/> + <plugin id="org.eclipse.equinox.launcher.gtk.linux.ppc64"/> + <plugin id="org.eclipse.equinox.launcher.gtk.linux.x86"/> +@@ -57,6 +59,8 @@ + <plugin id="org.eclipse.equinox.launcher.win32.win32.x86"/> + <plugin id="org.eclipse.equinox.launcher.win32.win32.x86_64"/> + <plugin id="org.eclipse.swt"/> ++ <plugin id="org.eclipse.swt.gtk.linux.x86"/> ++ <plugin id="org.eclipse.swt.gtk.linux.x86_64"/> + <plugin id="org.eclipse.swt.gtk.linux.s390x"/> + <plugin id="org.eclipse.swt.gtk.linux.s390"/> + <plugin id="org.eclipse.swt.gtk.solaris.sparc"/> +@@ -64,10 +68,13 @@ + <plugin id="org.eclipse.swt.gtk.linux.ppc"/> + <plugin id="org.eclipse.swt.gtk.linux.ppc64"/> + <plugin id="org.eclipse.swt.cocoa.macosx"/> +- <plugin id="org.eclipse.swt.cocoa.macosx"/> ++ <plugin id="org.eclipse.swt.cocoa.macosx.x86_64"/> + <plugin id="org.eclipse.swt.gtk.aix.ppc"/> + <plugin id="org.eclipse.swt.gtk.aix.ppc64"/> + <plugin id="org.eclipse.swt.gtk.hpux.ia64"/> ++ <plugin id="org.eclipse.swt.win32.win32.x86"/> ++ <plugin id="org.eclipse.swt.win32.win32.x86_64"/> ++ <plugin id="org.eclipse.e4.ui.workbench.renderers.swt.cocoa"/> + <plugin id="org.w3c.css.sac"/> + <plugin id="org.w3c.dom.smil"/> + <plugin id="org.w3c.dom.svg"/> +diff --git a/rt.equinox.bundles/features/org.eclipse.equinox.starterkit.product.feature/pom.xml b/rt.equinox.bundles/features/org.eclipse.equinox.starterkit.product.feature/pom.xml +index 661fd6c..2363b60 100644 +--- a/rt.equinox.bundles/features/org.eclipse.equinox.starterkit.product.feature/pom.xml ++++ b/rt.equinox.bundles/features/org.eclipse.equinox.starterkit.product.feature/pom.xml +@@ -31,6 +31,12 @@ + <resolver>p2</resolver> + <environments> + <environment> ++ <os>freebsd</os> ++ <ws>gtk</ws> ++ <arch>%%ECLIPSE_ARCH%%</arch> ++ </environment> ++<!-- ++ <environment> + <os>linux</os> + <ws>gtk</ws> + <arch>x86</arch> +@@ -55,6 +66,7 @@ + <ws>cocoa</ws> + <arch>x86_64</arch> + </environment> ++--> + </environments> + </configuration> + </plugin> +diff --git a/rt.equinox.framework/bundles/org.eclipse.equinox.launcher/pom.xml b/rt.equinox.framework/bundles/org.eclipse.equinox.launcher/pom.xml +index 659d332..e06e120 100644 +--- a/rt.equinox.framework/bundles/org.eclipse.equinox.launcher/pom.xml ++++ b/rt.equinox.framework/bundles/org.eclipse.equinox.launcher/pom.xml +@@ -21,4 +21,411 @@ + <artifactId>org.eclipse.equinox.launcher</artifactId> + <version>1.3.0-SNAPSHOT</version> + <packaging>eclipse-plugin</packaging> ++ ++ <profiles> ++ <profile> ++ <id>build-native-launchers-gtk.freebsd.%%ECLIPSE_ARCH%%</id> ++ <activation> ++ <property> ++ <name>native</name> ++ <value>gtk.freebsd.%%ECLIPSE_ARCH%%</value> ++ </property> ++ </activation> ++ <build> ++ <plugins> ++ <plugin> ++ <artifactId>maven-antrun-plugin</artifactId> ++ <version> 1.7 </version> ++ <executions> ++ <execution> ++ <id>compile-executable-natives</id> ++ <phase>generate-resources</phase> ++ <configuration> ++ <target> ++ <ant antfile="build.xml" dir="../../features/org.eclipse.equinox.executable.feature/library/gtk/" target="build_eclipse"/> ++ </target> ++ </configuration> ++ <goals> ++ <goal>run</goal> ++ </goals> ++ </execution> ++ </executions> ++ <dependencies> ++ <dependency> ++ <groupId>bsf</groupId> ++ <artifactId>bsf</artifactId> ++ <version>2.4.0</version> ++ </dependency> ++ <dependency> ++ <groupId>rhino</groupId> ++ <artifactId>js</artifactId> ++ <version>1.7R2</version> ++ </dependency> ++ <dependency> ++ <groupId>org.apache.ant</groupId> ++ <artifactId>ant-apache-bsf</artifactId> ++ <version>1.8.3</version> ++ </dependency> ++ <dependency> ++ <groupId>org.apache.ant</groupId> ++ <artifactId>ant-nodeps</artifactId> ++ <version>1.8.1</version> ++ </dependency> ++ </dependencies> ++ </plugin> ++ </plugins> ++ </build> ++ </profile> ++ <profile> ++ <id>build-native-launchers-gtk.linux.x86_64</id> ++ <activation> ++ <property> ++ <name>native</name> ++ <value>gtk.linux.x86_64</value> ++ </property> ++ </activation> ++ <build> ++ <plugins> ++ <plugin> ++ <artifactId>maven-antrun-plugin</artifactId> ++ <version> 1.7 </version> ++ <executions> ++ <execution> ++ <id>compile-executable-natives</id> ++ <phase>generate-resources</phase> ++ <configuration> ++ <target> ++ <ant antfile="build.xml" dir="../../features/org.eclipse.equinox.executable.feature/library/gtk/" target="build_eclipse"/> ++ </target> ++ </configuration> ++ <goals> ++ <goal>run</goal> ++ </goals> ++ </execution> ++ </executions> ++ <dependencies> ++ <dependency> ++ <groupId>bsf</groupId> ++ <artifactId>bsf</artifactId> ++ <version>2.4.0</version> ++ </dependency> ++ <dependency> ++ <groupId>rhino</groupId> ++ <artifactId>js</artifactId> ++ <version>1.7R2</version> ++ </dependency> ++ <dependency> ++ <groupId>org.apache.ant</groupId> ++ <artifactId>ant-apache-bsf</artifactId> ++ <version>1.8.3</version> ++ </dependency> ++ <dependency> ++ <groupId>org.apache.ant</groupId> ++ <artifactId>ant-nodeps</artifactId> ++ <version>1.8.1</version> ++ </dependency> ++ </dependencies> ++ </plugin> ++ </plugins> ++ </build> ++ </profile> ++ <profile> ++ <id>build-native-launchers-gtk.linux.x86</id> ++ <activation> ++ <property> ++ <name>native</name> ++ <value>gtk.linux.x86</value> ++ </property> ++ </activation> ++ <build> ++ <plugins> ++ <plugin> ++ <artifactId>maven-antrun-plugin</artifactId> ++ <version> 1.7 </version> ++ <executions> ++ <execution> ++ <id>compile-executable-natives</id> ++ <phase>generate-resources</phase> ++ <configuration> ++ <target> ++ <ant antfile="build.xml" dir="../../features/org.eclipse.equinox.executable.feature/library/gtk/" target="build_eclipse"/> ++ </target> ++ </configuration> ++ <goals> ++ <goal>run</goal> ++ </goals> ++ </execution> ++ </executions> ++ <dependencies> ++ <dependency> ++ <groupId>bsf</groupId> ++ <artifactId>bsf</artifactId> ++ <version>2.4.0</version> ++ </dependency> ++ <dependency> ++ <groupId>rhino</groupId> ++ <artifactId>js</artifactId> ++ <version>1.7R2</version> ++ </dependency> ++ <dependency> ++ <groupId>org.apache.ant</groupId> ++ <artifactId>ant-apache-bsf</artifactId> ++ <version>1.8.3</version> ++ </dependency> ++ <dependency> ++ <groupId>org.apache.ant</groupId> ++ <artifactId>ant-nodeps</artifactId> ++ <version>1.8.1</version> ++ </dependency> ++ </dependencies> ++ </plugin> ++ </plugins> ++ </build> ++ </profile> ++ <profile> ++ <id>build-native-launchers-win32.win32.x86_64</id> ++ <activation> ++ <property> ++ <name>native</name> ++ <value>win32.win32.x86_64</value> ++ </property> ++ </activation> ++ <build> ++ <plugins> ++ <plugin> ++ <artifactId>maven-antrun-plugin</artifactId> ++ <version> 1.7 </version> ++ <executions> ++ <execution> ++ <id>compile-executable-natives</id> ++ <phase>generate-resources</phase> ++ <configuration> ++ <target> ++ <ant antfile="build.xml" dir="../../features/org.eclipse.equinox.executable.feature/library/win32/" target="build_eclipse"/> ++ </target> ++ </configuration> ++ <goals> ++ <goal>run</goal> ++ </goals> ++ </execution> ++ </executions> ++ <dependencies> ++ <dependency> ++ <groupId>bsf</groupId> ++ <artifactId>bsf</artifactId> ++ <version>2.4.0</version> ++ </dependency> ++ <dependency> ++ <groupId>rhino</groupId> ++ <artifactId>js</artifactId> ++ <version>1.7R2</version> ++ </dependency> ++ <dependency> ++ <groupId>org.apache.ant</groupId> ++ <artifactId>ant-apache-bsf</artifactId> ++ <version>1.8.3</version> ++ </dependency> ++ <dependency> ++ <groupId>org.apache.ant</groupId> ++ <artifactId>ant-nodeps</artifactId> ++ <version>1.8.1</version> ++ </dependency> ++ </dependencies> ++ </plugin> ++ </plugins> ++ </build> ++ </profile> ++ <profile> ++ <id>build-native-launchers-win32.win32.x86</id> ++ <activation> ++ <property> ++ <name>native</name> ++ <value>win32.win32.x86</value> ++ </property> ++ </activation> ++ <build> ++ <plugins> ++ <plugin> ++ <artifactId>maven-antrun-plugin</artifactId> ++ <version> 1.7 </version> ++ <executions> ++ <execution> ++ <id>compile-executable-natives</id> ++ <phase>generate-resources</phase> ++ <configuration> ++ <target> ++ <ant antfile="build.xml" dir="../../features/org.eclipse.equinox.executable.feature/library/win32/" target="build_eclipse"/> ++ </target> ++ </configuration> ++ <goals> ++ <goal>run</goal> ++ </goals> ++ </execution> ++ </executions> ++ <dependencies> ++ <dependency> ++ <groupId>bsf</groupId> ++ <artifactId>bsf</artifactId> ++ <version>2.4.0</version> ++ </dependency> ++ <dependency> ++ <groupId>rhino</groupId> ++ <artifactId>js</artifactId> ++ <version>1.7R2</version> ++ </dependency> ++ <dependency> ++ <groupId>org.apache.ant</groupId> ++ <artifactId>ant-apache-bsf</artifactId> ++ <version>1.8.3</version> ++ </dependency> ++ <dependency> ++ <groupId>org.apache.ant</groupId> ++ <artifactId>ant-nodeps</artifactId> ++ <version>1.8.1</version> ++ </dependency> ++ </dependencies> ++ </plugin> ++ </plugins> ++ </build> ++ </profile> ++ <profile> ++ <id>build-native-launchers-cocoa.macosx.x86_64</id> ++ <activation> ++ <property> ++ <name>native</name> ++ <value>cocoa.macosx.x86_64</value> ++ </property> ++ </activation> ++ <build> ++ <plugins> ++ <plugin> ++ <artifactId>maven-antrun-plugin</artifactId> ++ <version> 1.7 </version> ++ <executions> ++ <execution> ++ <id>compile-executable-natives</id> ++ <phase>generate-resources</phase> ++ <configuration> ++ <target> ++ <ant antfile="build.xml" dir="../../features/org.eclipse.equinox.executable.feature/library/carbon/" target="build_eclipse"/> ++ </target> ++ </configuration> ++ <goals> ++ <goal>run</goal> ++ </goals> ++ </execution> ++ </executions> ++ <dependencies> ++ <dependency> ++ <groupId>bsf</groupId> ++ <artifactId>bsf</artifactId> ++ <version>2.4.0</version> ++ </dependency> ++ <dependency> ++ <groupId>rhino</groupId> ++ <artifactId>js</artifactId> ++ <version>1.7R2</version> ++ </dependency> ++ <dependency> ++ <groupId>org.apache.ant</groupId> ++ <artifactId>ant-apache-bsf</artifactId> ++ <version>1.8.3</version> ++ </dependency> ++ <dependency> ++ <groupId>org.apache.ant</groupId> ++ <artifactId>ant-nodeps</artifactId> ++ <version>1.8.1</version> ++ </dependency> ++ </dependencies> ++ </plugin> ++ </plugins> ++ </build> ++ </profile> ++ <profile> ++ <id>assemble-launchers</id> ++ <activation> ++ <property> ++ <!-- workaround. activeByDefault is disabled when another profile is ++ selected. --> ++ <name>!longnotexistingproperty</name> ++ </property> ++ </activation> ++ <build> ++ <plugins> ++ <plugin> ++ <artifactId>maven-antrun-plugin</artifactId> ++ <version> 1.7 </version> ++ <executions> ++ <execution> ++ <id>copy-executable-natives</id> ++ <phase>process-resources</phase> ++ <configuration> ++ <target> ++ <!-- We need to get binary bits from binary repo --> ++ <!-- If local binaries had been built, copy will not overwrite ++ them --> ++ <copy todir="bin"> ++ <fileset dir="../../../rt.equinox.binaries/org.eclipse.equinox.executable/bin/"> ++ <include name="**/*"/> ++ </fileset> ++ </copy> ++ <copy todir="contributed"> ++ <fileset dir="../../../rt.equinox.binaries/org.eclipse.equinox.executable/contributed/"> ++ <include name="**/*"/> ++ </fileset> ++ </copy> ++ ++ <!-- Things below were copied from custombuildCallbacks.xml, as ++ Tycho does not support that --> ++ <copy includeEmptyDirs="false" todir="tempBin"> ++ <fileset dir="bin"/> ++ </copy> ++ <delete dir="bin"/> ++ <move todir="bin"> ++ <fileset dir="tempBin"/> ++ </move> ++ ++ <!-- rename eclipse launchers to "launcher" --> ++ <move todir="bin" verbose="true"> ++ <fileset dir="bin"/> ++ <regexpmapper from="^(.*[/\\])eclipse(.exe)?$" to="\1launcher\2"/> ++ </move> ++ <move todir="contributed" verbose="true"> ++ <fileset dir="contributed"/> ++ <regexpmapper from="^(.*[/\\])eclipse(.exe)?$" to="\1launcher\2"/> ++ </move> ++ </target> ++ </configuration> ++ <goals> ++ <goal>run</goal> ++ </goals> ++ </execution> ++ </executions> ++ <dependencies> ++ <dependency> ++ <groupId>bsf</groupId> ++ <artifactId>bsf</artifactId> ++ <version>2.4.0</version> ++ </dependency> ++ <dependency> ++ <groupId>rhino</groupId> ++ <artifactId>js</artifactId> ++ <version>1.7R2</version> ++ </dependency> ++ <dependency> ++ <groupId>org.apache.ant</groupId> ++ <artifactId>ant-apache-bsf</artifactId> ++ <version>1.8.3</version> ++ </dependency> ++ <dependency> ++ <groupId>org.apache.ant</groupId> ++ <artifactId>ant-nodeps</artifactId> ++ <version>1.8.1</version> ++ </dependency> ++ </dependencies> ++ </plugin> ++ </plugins> ++ </build> ++ </profile> ++ </profiles> + </project> +diff --git a/rt.equinox.framework/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/internal/launcher/Constants.java b/rt.equinox.framework/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/internal/launcher/Constants.java +index 6e83b71..db56cd5 100644 +--- a/rt.equinox.framework/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/internal/launcher/Constants.java ++++ b/rt.equinox.framework/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/internal/launcher/Constants.java +@@ -26,6 +26,7 @@ public class Constants { + public static final String INTERNAL_OS_OS400 = "OS/400"; //$NON-NLS-1$ + public static final String INTERNAL_OS_OS390 = "OS/390"; //$NON-NLS-1$ + public static final String INTERNAL_OS_ZOS = "z/OS"; //$NON-NLS-1$ ++ public static final String INTERNAL_OS_FREEBSD = "FreeBSD"; //$NON-NLS-1$ + + public static final String ARCH_X86 = "x86";//$NON-NLS-1$ + public static final String ARCH_X86_64 = "x86_64";//$NON-NLS-1$ +@@ -91,6 +92,17 @@ public class Constants { + public static final String OS_ZOS = "z/os"; //$NON-NLS-1$ + + /** ++ * Constant string (value "freebsd") indicating the platform is running on a ++ * FreeBSD operating system. ++ * <p> ++ * Note this constant is not officially supported by the eclipse project ++ * and is only available on eclipse versions built from the FreeBSD ports ++ * tree. ++ * </p> ++ */ ++ public static final String OS_FREEBSD = "freebsd"; //$NON-NLS-1$ ++ ++ /** + * Constant string (value "unknown") indicating the platform is running on a + * machine running an unknown operating system. + */ +diff --git a/rt.equinox.framework/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/Main.java b/rt.equinox.framework/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/Main.java +index 85417f6..5448261 100644 +--- a/rt.equinox.framework/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/Main.java ++++ b/rt.equinox.framework/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/Main.java +@@ -336,6 +336,8 @@ public class Main { + return Constants.WS_GTK; + if (osName.equals(Constants.OS_QNX)) + return Constants.WS_PHOTON; ++ if (osName.equals(Constants.OS_FREEBSD)) ++ return Constants.WS_GTK; + return Constants.WS_UNKNOWN; + } + +@@ -382,6 +384,8 @@ public class Main { + // os.name on Mac OS can be either Mac OS or Mac OS X + if (osName.regionMatches(true, 0, Constants.INTERNAL_OS_MACOSX, 0, Constants.INTERNAL_OS_MACOSX.length())) + return Constants.OS_MACOSX; ++ if (osName.equalsIgnoreCase(Constants.INTERNAL_OS_FREEBSD)) ++ return Constants.OS_FREEBSD; + return Constants.OS_UNKNOWN; + } + +diff --git a/rt.equinox.framework/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/util/TextProcessor.java b/rt.equinox.framework/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/util/TextProcessor.java +index 6f2b039..7feb9b6 100644 +--- a/rt.equinox.framework/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/util/TextProcessor.java ++++ b/rt.equinox.framework/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/util/TextProcessor.java +@@ -77,7 +77,7 @@ public class TextProcessor { + + if ("iw".equals(lang) || "he".equals(lang) || "ar".equals(lang) || "fa".equals(lang) || "ur".equals(lang)) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ + String osName = System.getProperty("os.name").toLowerCase(); //$NON-NLS-1$ +- if (osName.startsWith("windows") || osName.startsWith("linux") || osName.startsWith("mac")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ ++ if (osName.startsWith("windows") || osName.startsWith("linux") || osName.startsWith("mac") || osName.startsWith("freebsd")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + IS_PROCESSING_NEEDED = true; + } + } +diff --git a/rt.equinox.framework/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseEnvironmentInfo.java b/rt.equinox.framework/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseEnvironmentInfo.java +index 0d091d7..5acffe0 100644 +--- a/rt.equinox.framework/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseEnvironmentInfo.java ++++ b/rt.equinox.framework/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseEnvironmentInfo.java +@@ -40,6 +40,7 @@ public class EclipseEnvironmentInfo implements EnvironmentInfo { + private static final String INTERNAL_OS_OS400 = "OS/400"; //$NON-NLS-1$ + private static final String INTERNAL_OS_OS390 = "OS/390"; //$NON-NLS-1$ + private static final String INTERNAL_OS_ZOS = "z/OS"; //$NON-NLS-1$ ++ private static final String INTERNAL_OS_FREEBSD = "FreeBSD"; //$NON-NLS-1$ + + // While we recognize the i386 architecture, we change + // this internally to be x86. +@@ -202,6 +203,8 @@ public class EclipseEnvironmentInfo implements EnvironmentInfo { + return Constants.WS_GTK; + if (osName.equals(Constants.OS_QNX)) + return Constants.WS_PHOTON; ++ if (osName.equals(Constants.OS_FREEBSD)) ++ return Constants.WS_GTK; + return Constants.WS_UNKNOWN; + } + +@@ -230,6 +233,8 @@ public class EclipseEnvironmentInfo implements EnvironmentInfo { + // os.name on Mac OS can be either Mac OS or Mac OS X + if (osName.regionMatches(true, 0, INTERNAL_OS_MACOSX, 0, INTERNAL_OS_MACOSX.length())) + return Constants.OS_MACOSX; ++ if (osName.equalsIgnoreCase(INTERNAL_OS_FREEBSD)) ++ return Constants.OS_FREEBSD; + return Constants.OS_UNKNOWN; + } + +diff --git a/rt.equinox.framework/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/PluginConverterImpl.java b/rt.equinox.framework/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/PluginConverterImpl.java +index fe1447f..3160fd5 100644 +--- a/rt.equinox.framework/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/PluginConverterImpl.java ++++ b/rt.equinox.framework/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/PluginConverterImpl.java +@@ -68,7 +68,7 @@ public class PluginConverterImpl implements PluginConverter { + static public final String FRAGMENT_MANIFEST = "fragment.xml"; //$NON-NLS-1$ + static public final String GENERATED_FROM = "Generated-from"; //$NON-NLS-1$ + static public final String MANIFEST_TYPE_ATTRIBUTE = "type"; //$NON-NLS-1$ +- private static final String[] OS_LIST = {org.eclipse.osgi.service.environment.Constants.OS_AIX, org.eclipse.osgi.service.environment.Constants.OS_HPUX, org.eclipse.osgi.service.environment.Constants.OS_LINUX, org.eclipse.osgi.service.environment.Constants.OS_MACOSX, org.eclipse.osgi.service.environment.Constants.OS_QNX, org.eclipse.osgi.service.environment.Constants.OS_SOLARIS, org.eclipse.osgi.service.environment.Constants.OS_WIN32}; ++ private static final String[] OS_LIST = {org.eclipse.osgi.service.environment.Constants.OS_AIX, org.eclipse.osgi.service.environment.Constants.OS_FREEBSD, org.eclipse.osgi.service.environment.Constants.OS_HPUX, org.eclipse.osgi.service.environment.Constants.OS_LINUX, org.eclipse.osgi.service.environment.Constants.OS_MACOSX, org.eclipse.osgi.service.environment.Constants.OS_QNX, org.eclipse.osgi.service.environment.Constants.OS_SOLARIS, org.eclipse.osgi.service.environment.Constants.OS_WIN32}; + protected static final String PI_RUNTIME = "org.eclipse.core.runtime"; //$NON-NLS-1$ + protected static final String PI_BOOT = "org.eclipse.core.boot"; //$NON-NLS-1$ + protected static final String PI_RUNTIME_COMPATIBILITY = "org.eclipse.core.runtime.compatibility"; //$NON-NLS-1$ +diff --git a/rt.equinox.framework/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/environment/Constants.java b/rt.equinox.framework/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/environment/Constants.java +index 4b017cd..013d6b1 100644 +--- a/rt.equinox.framework/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/environment/Constants.java ++++ b/rt.equinox.framework/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/environment/Constants.java +@@ -93,6 +93,15 @@ public interface Constants { + public static final String OS_ZOS = "z/os"; //$NON-NLS-1$ + + /** ++ * Constant string (value "freebsd") indicating the platform is running on a ++ * FreeBSD operating system. ++ * Note this constant is not officially supported by the eclipse project ++ * and is only available on eclipse versions built from the FreeBSD ports ++ * tree. ++ */ ++ public static final String OS_FREEBSD = "freebsd"; //$NON-NLS-1$ ++ ++ /** + * Constant string (value "unknown") indicating the platform is running on a + * machine running an unknown operating system. + */ +diff --git a/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/feature.xml b/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/feature.xml +index 7b4a01b..fbbbe06 100644 +--- a/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/feature.xml ++++ b/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/feature.xml +@@ -92,6 +92,16 @@ + fragment="true"/> + + <plugin ++ id="org.eclipse.equinox.launcher.gtk.freebsd.%%ECLIPSE_ARCH%%" ++ os="freebsd" ++ ws="gtk" ++ arch="%%ECLIPSE_ARCH%%" ++ download-size="0" ++ install-size="0" ++ version="0.0.0" ++ fragment="true"/> ++ ++ <plugin + id="org.eclipse.equinox.launcher.gtk.linux.x86" + os="linux" + ws="gtk" +diff --git a/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/library/gtk/build.sh b/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/library/gtk/build.sh +index 29d3871..0ca7ccd 100644 +--- a/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/library/gtk/build.sh ++++ b/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/library/gtk/build.sh +@@ -40,6 +40,7 @@ defaultJava=DEFAULT_JAVA_JNI + defaultJavaHome="" + javaHome="" + makefile="" ++MAKE=make + if [ "${CC}" = "" ]; then + CC=cc + export CC +@@ -124,6 +125,28 @@ case $defaultOS in + ;; + esac + ;; ++ "FreeBSD" | "freebsd") ++ MODEL=`uname -m` ++ makefile="make_freebsd.mak" ++ MAKE=gmake ++ defaultOS="freebsd" ++ case $MODEL in ++ "amd64") ++ defaultOSArch="x86_64" ++ defaultJava=DEFAULT_JAVA_EXEC ++ [ -d ${JAVA_HOME}/jre ] && defaultJavaHome="${JAVA_HOME}/jre" ++ OUTPUT_DIR="$EXEC_DIR/bin/$defaultWS/$defaultOS/$defaultOSArch" ++ ;; ++ i?86 | "x86") ++ defaultOSArch="x86" ++ [ -d ${JAVA_HOME}/jre ] && defaultJavaHome="${JAVA_HOME}/jre" ++ OUTPUT_DIR="$EXEC_DIR/bin/$defaultWS/$defaultOS/$defaultOSArch" ++ ;; ++ *) ++ echo "*** Unknown MODEL <${MODEL}>" ++ ;; ++ esac ++ ;; + "AIX" | "aix") + makefile="make_aix.mak" + defaultOS="aix" +@@ -220,13 +243,14 @@ export OUTPUT_DIR PROGRAM_OUTPUT DEFAULT_OS DEFAULT_OS_ARCH DEFAULT_WS DEFAULT_J + # If the OS is supported (a makefile exists) + if [ "$makefile" != "" ]; then + if [ "$extraArgs" != "" ]; then +- make -f $makefile $extraArgs ++ echo "Building $OS launcher with args $extraArgs. Defaults: -os $DEFAULT_OS -arch $DEFAULT_OS_ARCH -ws $DEFAULT_WS" ++ ${MAKE} -f $makefile $extraArgs + else + echo "Building $OS launcher. Defaults: -os $DEFAULT_OS -arch $DEFAULT_OS_ARCH -ws $DEFAULT_WS" +- make -f $makefile clean ++ ${MAKE} -f $makefile clean + case x$CC in +- x*gcc*) make -f $makefile all PICFLAG=-fpic ;; +- *) make -f $makefile all ;; ++ x*cc*) ${MAKE} -f $makefile all PICFLAG=-fpic ;; ++ *) ${MAKE} -f $makefile all ;; + esac + fi + else +diff --git a/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/pom.xml b/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/pom.xml +index 939c8b5..c2491a5 100644 +--- a/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/pom.xml ++++ b/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/pom.xml +@@ -101,6 +101,7 @@ + </build> + + <profiles> ++<!-- + <profile> + <id>build-native-launchers-gtk.linux.x86_64</id> + <activation> +@@ -208,6 +209,59 @@ + </build> + </profile> + <profile> ++ <id>build-native-launchers-gtk.freebsd.%%ECLIPSE_ARCH%%</id> ++ <activation> ++ <property> ++ <name>native</name> ++ <value>gtk.freebsd.%%ECLIPSE_ARCH%%</value> ++ </property> ++ </activation> ++ <build> ++ <plugins> ++ <plugin> ++ <artifactId>maven-antrun-plugin</artifactId> ++ <version> 1.7 </version> ++ <executions> ++ <execution> ++ <id>compile-executable-natives</id> ++ <phase>generate-resources</phase> ++ <configuration> ++ <target> ++ <ant antfile="build.xml" dir="library/gtk/" target="build_eclipse"/> ++ </target> ++ </configuration> ++ <goals> ++ <goal>run</goal> ++ </goals> ++ </execution> ++ </executions> ++ <dependencies> ++ <dependency> ++ <groupId>bsf</groupId> ++ <artifactId>bsf</artifactId> ++ <version>2.4.0</version> ++ </dependency> ++ <dependency> ++ <groupId>rhino</groupId> ++ <artifactId>js</artifactId> ++ <version>1.7R2</version> ++ </dependency> ++ <dependency> ++ <groupId>org.apache.ant</groupId> ++ <artifactId>ant-apache-bsf</artifactId> ++ <version>1.8.3</version> ++ </dependency> ++ <dependency> ++ <groupId>org.apache.ant</groupId> ++ <artifactId>ant-nodeps</artifactId> ++ <version>1.8.1</version> ++ </dependency> ++ </dependencies> ++ </plugin> ++ </plugins> ++ </build> ++ </profile> ++ <profile> + <id>build-native-launchers-win32.win32.x86_64</id> + <activation> + <property> +@@ -366,6 +473,7 @@ + </plugins> + </build> + </profile> ++--> + <profile> + <id>assemble-launchers</id> + <activation> +diff --git a/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/resources/build.properties b/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/resources/build.properties +index 0f30a87..36382de 100644 +--- a/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/resources/build.properties ++++ b/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/resources/build.properties +@@ -19,6 +19,11 @@ root.win32.win32.x86.permissions.755=launcher.exe + root.win32.win32.x86_64=file:bin/win32/win32/x86_64/launcher.exe + root.win32.win32.x86_64.permissions.755=launcher.exe + ++root.freebsd.gtk.x86=bin/gtk/freebsd/x86,gtk_root ++root.freebsd.gtk.x86.permissions.755=launcher,libcairo-swt.so ++root.freebsd.gtk.x86_64=bin/gtk/freebsd/x86_64,gtk_root ++root.freebsd.gtk.x86_64.permissions.755=launcher,libcairo-swt.so ++ + root.linux.gtk.x86=bin/gtk/linux/x86,gtk_root + root.linux.gtk.x86.permissions.755=launcher,libcairo-swt.so + +diff --git a/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/resources/build.xml b/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/resources/build.xml +index cdded03..a2a0af3 100644 +--- a/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/resources/build.xml ++++ b/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/resources/build.xml +@@ -128,6 +128,22 @@ + <chmod perm="755" dir="${feature.base}/macosx.cocoa.x86_64/${collectingFolder}" includes="${launcherName}" /> + <chmod perm="755" dir="${feature.base}/macosx.cocoa.x86_64/${collectingFolder}" includes="Eclipse.app/Contents/MacOS/launcher" /> + </target> ++ <target name="rootFilesfreebsd_gtk_x86"> ++ <mkdir dir="${feature.base}/freebsd.gtk.x86/${collectingFolder}"/> ++ <copy todir="${feature.base}/freebsd.gtk.x86/${collectingFolder}" failonerror="true" overwrite="true"> ++ <fileset dir="${basedir}/bin/gtk/freebsd/x86" includes="**" /> ++ <fileset dir="${basedir}/gtk_root" includes="**" /> ++ </copy> ++ <chmod perm="755" dir="${feature.base}/freebsd.gtk.x86/${collectingFolder}" includes="launcher" /> ++ </target> ++ <target name="rootFilesfreebsd_gtk_x86_64"> ++ <mkdir dir="${feature.base}/freebsd.gtk.x86_64/${collectingFolder}"/> ++ <copy todir="${feature.base}/freebsd.gtk.x86_64/${collectingFolder}" failonerror="true" overwrite="true"> ++ <fileset dir="${basedir}/bin/gtk/freebsd/x86_64" includes="**" /> ++ <fileset dir="${basedir}/gtk_root" includes="**" /> ++ </copy> ++ <chmod perm="755" dir="${feature.base}/freebsd.gtk.x86_64/${collectingFolder}" includes="launcher" /> ++ </target> + <target name="rootFileslinux_gtk_x86"> + <mkdir dir="${feature.base}/linux.gtk.x86/${collectingFolder}"/> + <copy todir="${feature.base}/linux.gtk.x86/${collectingFolder}" failonerror="true" overwrite="true"> +@@ -278,6 +294,8 @@ + <antcall target="rootFilesmacosx_carbon_x86"/> + <antcall target="rootFilesmacosx_cocoa_ppc"/> + <antcall target="rootFilesmacosx_cocoa_x86"/> ++ <antcall target="rootFilesfreebsd_gtk_x86"/> ++ <antcall target="rootFilesfreebsd_gtk_x86_64"/> + <antcall target="rootFileslinux_gtk_x86"/> + <antcall target="rootFileslinux_gtk_ppc"/> + <antcall target="rootFileslinux_gtk_ppc64"/> +@@ -319,4 +337,4 @@ + <target name="gather.logs" depends="init"> + </target> + +-</project> +\ No newline at end of file ++</project> +diff --git a/rt.equinox.framework/pom.xml b/rt.equinox.framework/pom.xml +index b46cdc6..d46c81d 100644 +--- a/rt.equinox.framework/pom.xml ++++ b/rt.equinox.framework/pom.xml +@@ -60,6 +60,7 @@ + <module>bundles/org.eclipse.equinox.launcher.gtk.linux.s390x</module> + <module>bundles/org.eclipse.equinox.launcher.gtk.linux.x86</module> + <module>bundles/org.eclipse.equinox.launcher.gtk.linux.x86_64</module> ++ <module>bundles/org.eclipse.equinox.launcher.gtk.freebsd.%%ECLIPSE_ARCH%%</module> + <module>bundles/org.eclipse.equinox.launcher.gtk.solaris.sparc</module> + <module>bundles/org.eclipse.equinox.launcher.gtk.solaris.x86</module> + <module>bundles/org.eclipse.equinox.launcher.motif.aix.ppc</module> +diff --git a/rt.equinox.p2/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/BrandingIron.java b/rt.equinox.p2/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/BrandingIron.java +index 3cf2fe1..53f82b3 100644 +--- a/rt.equinox.p2/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/BrandingIron.java ++++ b/rt.equinox.p2/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/BrandingIron.java +@@ -123,6 +123,8 @@ public class BrandingIron { + brandAIX(descriptor); + else if ("hpux".equals(os)) //$NON-NLS-1$ + brandHPUX(descriptor); ++ else if ("freebsd".equals(os)) //$NON-NLS-1$ ++ brandFreeBSD(descriptor); + else + renameLauncher(descriptor); + descriptor.setExecutableName(name, true); +@@ -178,6 +180,14 @@ public class BrandingIron { + } + } + ++ private void brandFreeBSD(ExecutablesDescriptor descriptor) throws Exception { ++ renameLauncher(descriptor); ++ ++ File root = descriptor.getLocation(); ++ if (brandIcons) ++ Utils.copy(new File(icons[0]), new File(root, "icon.xpm")); //$NON-NLS-1$ ++ } ++ + private void brandMac(ExecutablesDescriptor descriptor) throws Exception { + //Initially the files are in: <root>/Eclipse.app/ + //and they must appear in <root>/MyAppName.app/ +diff --git a/rt.equinox.p2/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java b/rt.equinox.p2/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java +index 324c94f..f1b0d14 100644 +--- a/rt.equinox.p2/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java ++++ b/rt.equinox.p2/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java +@@ -58,11 +58,13 @@ public class ProductFile extends DefaultHandler implements IProductDescriptor { + private final static SAXParserFactory parserFactory = SAXParserFactory.newInstance(); + + private static final String PROGRAM_ARGS = "programArgs"; //$NON-NLS-1$ ++ private static final String PROGRAM_ARGS_FREEBSD = "programArgsFre"; //$NON-NLS-1$ + private static final String PROGRAM_ARGS_LINUX = "programArgsLin"; //$NON-NLS-1$ + private static final String PROGRAM_ARGS_MAC = "programArgsMac"; //$NON-NLS-1$ + private static final String PROGRAM_ARGS_SOLARIS = "programArgsSol"; //$NON-NLS-1$ + private static final String PROGRAM_ARGS_WIN = "programArgsWin"; //$NON-NLS-1$ + private static final String VM_ARGS = "vmArgs"; //$NON-NLS-1$ ++ private static final String VM_ARGS_FREEBSD = "vmArgsFre"; //$NON-NLS-1$ + private static final String VM_ARGS_LINUX = "vmArgsLin"; //$NON-NLS-1$ + private static final String VM_ARGS_MAC = "vmArgsMac"; //$NON-NLS-1$ + private static final String VM_ARGS_SOLARIS = "vmArgsSol"; //$NON-NLS-1$ +@@ -85,6 +87,7 @@ public class ProductFile extends DefaultHandler implements IProductDescriptor { + private static final String OS_LINUX = "linux";//$NON-NLS-1$ + private static final String OS_SOLARIS = "solaris";//$NON-NLS-1$ + private static final String OS_MACOSX = "macosx";//$NON-NLS-1$ ++ private static final String OS_FREEBSD = "freebsd";//$NON-NLS-1$ + + //element names + private static final String EL_FEATURES = "features"; //$NON-NLS-1$ +@@ -110,20 +113,22 @@ public class ProductFile extends DefaultHandler implements IProductDescriptor { + private static final int STATE_PLUGINS = 4; + private static final int STATE_FEATURES = 5; + private static final int STATE_PROGRAM_ARGS = 6; +- private static final int STATE_PROGRAM_ARGS_LINUX = 7; +- private static final int STATE_PROGRAM_ARGS_MAC = 8; +- private static final int STATE_PROGRAM_ARGS_SOLARIS = 9; +- private static final int STATE_PROGRAM_ARGS_WIN = 10; +- private static final int STATE_VM_ARGS = 11; +- private static final int STATE_VM_ARGS_LINUX = 12; +- private static final int STATE_VM_ARGS_MAC = 13; +- private static final int STATE_VM_ARGS_SOLARIS = 14; +- private static final int STATE_VM_ARGS_WIN = 15; +- private static final int STATE_CONFIG_INI = 16; +- private static final int STATE_CONFIGURATIONS = 17; +- private static final int STATE_LICENSE = 18; +- private static final int STATE_LICENSE_URL = 19; +- private static final int STATE_LICENSE_TEXT = 20; ++ private static final int STATE_PROGRAM_ARGS_FREEBSD = 7; ++ private static final int STATE_PROGRAM_ARGS_LINUX = 8; ++ private static final int STATE_PROGRAM_ARGS_MAC = 9; ++ private static final int STATE_PROGRAM_ARGS_SOLARIS = 10; ++ private static final int STATE_PROGRAM_ARGS_WIN = 11; ++ private static final int STATE_VM_ARGS = 12; ++ private static final int STATE_VM_ARGS_FREEBSD = 13; ++ private static final int STATE_VM_ARGS_LINUX = 14; ++ private static final int STATE_VM_ARGS_MAC = 15; ++ private static final int STATE_VM_ARGS_SOLARIS = 16; ++ private static final int STATE_VM_ARGS_WIN = 17; ++ private static final int STATE_CONFIG_INI = 18; ++ private static final int STATE_CONFIGURATIONS = 19; ++ private static final int STATE_LICENSE = 20; ++ private static final int STATE_LICENSE_URL = 21; ++ private static final int STATE_LICENSE_TEXT = 22; + + private static final String PI_PDEBUILD = "org.eclipse.pde.build"; //$NON-NLS-1$ + private final static int EXCEPTION_PRODUCT_FORMAT = 23; +@@ -437,6 +442,8 @@ public class ProductFile extends DefaultHandler implements IProductDescriptor { + key = VM_ARGS_MAC; + } else if (os.equals(OS_SOLARIS)) { + key = VM_ARGS_SOLARIS; ++ } else if (os.equals(OS_FREEBSD)) { ++ key = VM_ARGS_FREEBSD; + } + + String prefix = launcherArgs.getProperty(VM_ARGS); +@@ -466,6 +473,8 @@ public class ProductFile extends DefaultHandler implements IProductDescriptor { + key = PROGRAM_ARGS_MAC; + } else if (os.equals(OS_SOLARIS)) { + key = PROGRAM_ARGS_SOLARIS; ++ } else if (os.equals(OS_FREEBSD)) { ++ key = PROGRAM_ARGS_FREEBSD; + } + + String prefix = launcherArgs.getProperty(PROGRAM_ARGS); +@@ -532,6 +541,8 @@ public class ProductFile extends DefaultHandler implements IProductDescriptor { + processLinux(attributes); + } else if (OS_MACOSX.equals(localName)) { + processMac(attributes); ++ } else if (OS_FREEBSD.equals(localName)) { ++ processFreeBSD(attributes); + } + if ("ico".equals(localName)) { //$NON-NLS-1$ + processIco(attributes); +@@ -543,6 +554,8 @@ public class ProductFile extends DefaultHandler implements IProductDescriptor { + case STATE_LAUNCHER_ARGS : + if (PROGRAM_ARGS.equals(localName)) { + state = STATE_PROGRAM_ARGS; ++ } else if (PROGRAM_ARGS_FREEBSD.equals(localName)) { ++ state = STATE_PROGRAM_ARGS_FREEBSD; + } else if (PROGRAM_ARGS_LINUX.equals(localName)) { + state = STATE_PROGRAM_ARGS_LINUX; + } else if (PROGRAM_ARGS_MAC.equals(localName)) { +@@ -553,6 +566,8 @@ public class ProductFile extends DefaultHandler implements IProductDescriptor { + state = STATE_PROGRAM_ARGS_WIN; + } else if (VM_ARGS.equals(localName)) { + state = STATE_VM_ARGS; ++ } else if (VM_ARGS_FREEBSD.equals(localName)) { ++ state = STATE_VM_ARGS_FREEBSD; + } else if (VM_ARGS_LINUX.equals(localName)) { + state = STATE_VM_ARGS_LINUX; + } else if (VM_ARGS_MAC.equals(localName)) { +@@ -658,11 +673,13 @@ public class ProductFile extends DefaultHandler implements IProductDescriptor { + break; + + case STATE_PROGRAM_ARGS : ++ case STATE_PROGRAM_ARGS_FREEBSD : + case STATE_PROGRAM_ARGS_LINUX : + case STATE_PROGRAM_ARGS_MAC : + case STATE_PROGRAM_ARGS_SOLARIS : + case STATE_PROGRAM_ARGS_WIN : + case STATE_VM_ARGS : ++ case STATE_VM_ARGS_FREEBSD : + case STATE_VM_ARGS_LINUX : + case STATE_VM_ARGS_MAC : + case STATE_VM_ARGS_SOLARIS : +@@ -689,6 +706,9 @@ public class ProductFile extends DefaultHandler implements IProductDescriptor { + case STATE_PROGRAM_ARGS : + addLaunchArgumentToMap(PROGRAM_ARGS, String.valueOf(ch, start, length)); + break; ++ case STATE_PROGRAM_ARGS_FREEBSD : ++ addLaunchArgumentToMap(PROGRAM_ARGS_FREEBSD, String.valueOf(ch, start, length)); ++ break; + case STATE_PROGRAM_ARGS_LINUX : + addLaunchArgumentToMap(PROGRAM_ARGS_LINUX, String.valueOf(ch, start, length)); + break; +@@ -704,6 +724,9 @@ public class ProductFile extends DefaultHandler implements IProductDescriptor { + case STATE_VM_ARGS : + addLaunchArgumentToMap(VM_ARGS, String.valueOf(ch, start, length)); + break; ++ case STATE_VM_ARGS_FREEBSD : ++ addLaunchArgumentToMap(VM_ARGS_FREEBSD, String.valueOf(ch, start, length)); ++ break; + case STATE_VM_ARGS_LINUX : + addLaunchArgumentToMap(VM_ARGS_LINUX, String.valueOf(ch, start, length)); + break; +@@ -867,6 +890,10 @@ public class ProductFile extends DefaultHandler implements IProductDescriptor { + addIcon(OS_WIN32, attributes.getValue(WIN32_256_HIGH)); + } + ++ private void processFreeBSD(Attributes attributes) { ++ addIcon(OS_FREEBSD, attributes.getValue(ATTRIBUTE_ICON)); ++ } ++ + private void processLinux(Attributes attributes) { + addIcon(OS_LINUX, attributes.getValue(ATTRIBUTE_ICON)); + } +diff --git a/rt.equinox.p2/examples/org.eclipse.equinox.p2.examples.rcp.cloud.releng/build.properties b/rt.equinox.p2/examples/org.eclipse.equinox.p2.examples.rcp.cloud.releng/build.properties +index d8e85b5..10e1c66 100644 +--- a/rt.equinox.p2/examples/org.eclipse.equinox.p2.examples.rcp.cloud.releng/build.properties ++++ b/rt.equinox.p2/examples/org.eclipse.equinox.p2.examples.rcp.cloud.releng/build.properties +@@ -29,7 +29,8 @@ collectingFolder=${archivePrefix} + # configs=win32,win32,x86 & linux,motif,x86 + # By default the value is *,*,* + configs = win32, win32, x86 & \ +- linux, gtk, x86 & ++ linux, gtk, x86 & \ ++ freebsd, gtk, %%ECLIPSE_ARCH%% + #configs=win32, win32, x86 & \ + # linux, gtk, ppc &\ + # linux, gtk, x86 & \ +diff --git a/rt.equinox.p2/examples/org.eclipse.equinox.p2.examples.rcp.discovery.releng/build.properties b/rt.equinox.p2/examples/org.eclipse.equinox.p2.examples.rcp.discovery.releng/build.properties +index 4be192c..10e1c66 100644 +--- a/rt.equinox.p2/examples/org.eclipse.equinox.p2.examples.rcp.discovery.releng/build.properties ++++ b/rt.equinox.p2/examples/org.eclipse.equinox.p2.examples.rcp.discovery.releng/build.properties +@@ -29,7 +29,8 @@ collectingFolder=${archivePrefix} + # configs=win32,win32,x86 & linux,motif,x86 + # By default the value is *,*,* + configs = win32, win32, x86 & \ +- linux, gtk, x86 ++ linux, gtk, x86 & \ ++ freebsd, gtk, %%ECLIPSE_ARCH%% + #configs=win32, win32, x86 & \ + # linux, gtk, ppc &\ + # linux, gtk, x86 & \ +diff --git a/rt.equinox.p2/features/org.eclipse.equinox.p2.core.feature/pom.xml b/rt.equinox.p2/features/org.eclipse.equinox.p2.core.feature/pom.xml +index 70fdde5..d9807d9 100644 +--- a/rt.equinox.p2/features/org.eclipse.equinox.p2.core.feature/pom.xml ++++ b/rt.equinox.p2/features/org.eclipse.equinox.p2.core.feature/pom.xml +@@ -39,6 +39,9 @@ + <excludes> + <plugin id="org.sat4j.core"/> + <plugin id="org.sat4j.pb"/> ++ <plugin id="org.eclipse.equinox.security.macosx"/> ++ <plugin id="org.eclipse.equinox.security.win32.x86"/> ++ <plugin id="org.eclipse.equinox.security.win32.x86_64"/> + </excludes> + </configuration> + </execution> +diff --git a/rt.equinox.p2/org.eclipse.equinox.p2.releng/org.eclipse.equinox.p2-parent/pom.xml b/rt.equinox.p2/org.eclipse.equinox.p2.releng/org.eclipse.equinox.p2-parent/pom.xml +index b3ed6f8..7544d34 100644 +--- a/rt.equinox.p2/org.eclipse.equinox.p2.releng/org.eclipse.equinox.p2-parent/pom.xml ++++ b/rt.equinox.p2/org.eclipse.equinox.p2.releng/org.eclipse.equinox.p2-parent/pom.xml +@@ -54,18 +54,6 @@ + <executionEnvironment>J2SE-1.5</executionEnvironment> + </configuration> + </plugin> +- <plugin> +- <groupId>org.eclipse.tycho</groupId> +- <artifactId>tycho-compiler-plugin</artifactId> +- <configuration> +- <!-- +- Many (all?) bundles use java 5 generics, do not compile against libraries +- of their respective execution environments and we force compilation against +- SYSTEM JRE libraries that are guaranteed to be java5+ +- --> +- <useJDK>BREE</useJDK> +- </configuration> +- </plugin> + </plugins> + </build> + |