summaryrefslogtreecommitdiff
path: root/java/eclipse/files/patch-submodules
diff options
context:
space:
mode:
Diffstat (limited to 'java/eclipse/files/patch-submodules')
-rw-r--r--java/eclipse/files/patch-submodules2459
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>
+