--- plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ProductFile.java.orig	2007-06-26 04:57:03.000000000 +0900
+++ plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ProductFile.java	2007-09-13 13:38:20.000000000 +0900
@@ -214,6 +214,9 @@
 			key = VM_ARGS_WIN;
 		} else if( os.equals(Platform.OS_LINUX)) {
 			key = VM_ARGS_LINUX;
+		} else if( os.equals(Platform.OS_FREEBSD)) {
+		    // You do not like this?
+		        key = VM_ARGS_LINUX;
 		} else if( os.equals(Platform.OS_MACOSX)) {
 			key = VM_ARGS_MAC;
 		} else if(os.equals(Platform.OS_SOLARIS)) {
@@ -237,6 +240,8 @@
 			key = PROGRAM_ARGS_WIN;
 		} else if( os.equals(Platform.OS_LINUX)) {
 			key = PROGRAM_ARGS_LINUX;
+		} else if( os.equals(Platform.OS_FREEBSD)) {
+			key = PROGRAM_ARGS_LINUX;
 		} else if( os.equals(Platform.OS_MACOSX)) {
 			key = PROGRAM_ARGS_MAC;
 		} else if(os.equals(Platform.OS_SOLARIS)) {
@@ -494,7 +499,7 @@
 	}
 
 	private void processLinux(Attributes attributes) {
-		if (!osMatch(Platform.OS_LINUX)) 
+		if (!osMatch(Platform.OS_LINUX) && !osMatch(Platform.OS_FREEBSD) ) 
 			return;
 		result.add(attributes.getValue("icon")); //$NON-NLS-1$
 	}


--- plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/Utils.java.orig	2007-06-26 04:57:09.000000000 +0900
+++ plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/Utils.java	2007-09-13 15:40:52.000000000 +0900
@@ -419,12 +419,18 @@
 
 	private static void generateLinkInstruction(AntScript script, String dir, String files) {
 		String[] links = Utils.getArrayFromString(files, ","); //$NON-NLS-1$
-		List arguments = new ArrayList(2);
+	    	List arguments = new ArrayList(2);
+		String os_running = "FreeBSD";
+
+		String os = System.getProperty("os.name"); //$NON-NLS-1$
+		if (os != null && os.toLowerCase().indexOf("lin") >= 0) os_running = "Linux"; //$NON-NLS-1$
+		if (os != null && os.toLowerCase().indexOf("free") >= 0) os_running = "FreeBSD"; //$NON-NLS-1$
+
 		for (int i = 0; i < links.length; i += 2) {
 			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, os_running); //$NON-NLS-1$ //$NON-NLS-2$
 			arguments.clear();
 		}
 	}


--- plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/JNLPGenerator.java.orig	2007-06-26 04:57:06.000000000 +0900
+++ plugins/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/tasks/JNLPGenerator.java	2007-09-13 13:45:14.000000000 +0900
@@ -307,6 +307,8 @@
 			return "Mac"; //$NON-NLS-1$
 		if ("linux".equalsIgnoreCase(os)) //$NON-NLS-1$
 			return "Linux"; //$NON-NLS-1$
+		if ("freebsd".equalsIgnoreCase(os)) //$NON-NLS-1$
+			return "FreeBSD"; //$NON-NLS-1$
 		if ("solaris".equalsIgnoreCase(os)) //$NON-NLS-1$
 			return "Solaris"; //$NON-NLS-1$
 		if ("hpux".equalsIgnoreCase(os)) //$NON-NLS-1$


--- plugins/org.eclipse.ui.browser/src/org/eclipse/ui/internal/browser/WebBrowserUtil.java.orig	2007-06-26 04:57:14.000000000 +0900
+++ plugins/org.eclipse.ui.browser/src/org/eclipse/ui/internal/browser/WebBrowserUtil.java	2007-09-13 13:48:02.000000000 +0900
@@ -70,6 +70,18 @@
 	}
 
 	/**
+	 * Returns true if we're running on freebsd.
+	 * 
+	 * @return boolean
+	 */
+	public static boolean isFreeBSD() {
+		String os = System.getProperty("os.name"); //$NON-NLS-1$
+		if (os != null && os.toLowerCase().indexOf("free") >= 0) //$NON-NLS-1$
+			return true;
+		return false;
+	}
+
+	/**
 	 * Open a dialog window.
 	 * 
 	 * @param message
@@ -293,4 +305,4 @@
 		}
 		return encodedId;
 	}
-}
\ No newline at end of file
+}


--- plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java.orig	2007-06-26 04:57:21.000000000 +0900
+++ plugins/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java	2007-09-13 15:40:33.000000000 +0900
@@ -561,10 +561,15 @@
 	private void generateLinkInstruction(String dir, String files) {
 		String[] links = Utils.getArrayFromString(files, ","); //$NON-NLS-1$
 		List arguments = new ArrayList(2);
+		String os_running = "FreeBSD";
+		String os = System.getProperty("os.name"); //$NON-NLS-1$
+		if (os != null && os.toLowerCase().indexOf("lin") >= 0) os_running = "Linux"; //$NON-NLS-1$
+		if (os != null && os.toLowerCase().indexOf("free") >= 0) os_running = "FreeBSD"; //$NON-NLS-1$
+
 		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", dir, arguments, os_running); //$NON-NLS-1$ //$NON-NLS-2$
 			arguments.clear();
 		}
 	}
