summaryrefslogtreecommitdiffstats
path: root/make/lib/archive/cpptasks-1.0b5-darwin-patch.diff
blob: 8af11bee082647242c65818753b4b4f5031d0c57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
diff -Nur cpptasks-1.0b5/src/main/java/net/sf/antcontrib/cpptasks/gcc/AbstractLdLinker.java cpptasks-1.0b5-osx-patched/src/main/java/net/sf/antcontrib/cpptasks/gcc/AbstractLdLinker.java
--- cpptasks-1.0b5/src/main/java/net/sf/antcontrib/cpptasks/gcc/AbstractLdLinker.java	2008-04-02 19:26:44.000000000 +0200
+++ cpptasks-1.0b5-osx-patched/src/main/java/net/sf/antcontrib/cpptasks/gcc/AbstractLdLinker.java	2012-01-09 14:40:36.277639850 +0100
@@ -59,7 +59,7 @@
                 args.addElement("-bundle");
             } else {
                 if (linkType.isSharedLibrary()) {
-                    args.addElement("-prebind");
+                    // args.addElement("-prebind"); // Only required for OSX 10.3 and earlier, no auto-add (can add manually though)
                     args.addElement("-dynamiclib");
                 }
             }
diff -Nur cpptasks-1.0b5/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccLinker.java cpptasks-1.0b5-osx-patched/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccLinker.java
--- cpptasks-1.0b5/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccLinker.java	2008-04-02 19:26:44.000000000 +0200
+++ cpptasks-1.0b5-osx-patched/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccLinker.java	2012-01-09 15:25:12.994904288 +0100
@@ -17,6 +17,8 @@
 package net.sf.antcontrib.cpptasks.gcc;
 import java.io.File;
 import java.util.Vector;
+import java.util.HashSet;
+import java.util.Arrays;
 
 import net.sf.antcontrib.cpptasks.CUtil;
 import net.sf.antcontrib.cpptasks.compiler.LinkType;
@@ -33,9 +35,10 @@
     private static final String[] libtoolObjFiles = new String[]{".fo", ".a",
             ".lib", ".dll", ".so", ".sl"};
     private static String[] linkerOptions = new String[]{"-bundle",
-            "-dynamiclib", "-nostartfiles", "-nostdlib", "-prebind", "-s",
+            "-dynamiclib", "-nostartfiles", "-nostdlib", "-prebind", "-noprebind", "-s",
             "-static", "-shared", "-symbolic", "-Xlinker",
             "--export-all-symbols", "-static-libgcc",};
+    private static String[] darwinLinkerOptions = new String[]{"-arch", "-weak_framework", "-lazy_framework", "-weak_library" };
     private static final GccLinker dllLinker = new GccLinker("gcc", objFiles,
             discardFiles, "lib", ".so", false, new GccLinker("gcc", objFiles,
                     discardFiles, "lib", ".so", true, null));
@@ -97,12 +100,13 @@
                     break;
                 default :
                     boolean known = false;
-                    for (int i = 0; i < linkerOptions.length; i++) {
-                        if (linkerOptions[i].equals(arg)) {
-                            known = true;
-                            break;
-                        }
+                    HashSet allLinkerOptions = new HashSet();
+                    allLinkerOptions.addAll(Arrays.asList(linkerOptions));
+                    if (isDarwin()) {
+                        allLinkerOptions.addAll(Arrays.asList(darwinLinkerOptions));
                     }
+                    known = allLinkerOptions.contains(arg);
+
                     if (!known) {
                         buf.setLength(0);
                         buf.append("-Wl,");
diff -Nur cpptasks-1.0b5/src/test/java/net/sf/antcontrib/cpptasks/gcc/TestAbstractLdLinker.java cpptasks-1.0b5-osx-patched/src/test/java/net/sf/antcontrib/cpptasks/gcc/TestAbstractLdLinker.java
--- cpptasks-1.0b5/src/test/java/net/sf/antcontrib/cpptasks/gcc/TestAbstractLdLinker.java	2008-04-02 19:26:44.000000000 +0200
+++ cpptasks-1.0b5-osx-patched/src/test/java/net/sf/antcontrib/cpptasks/gcc/TestAbstractLdLinker.java	2012-01-09 15:29:42.379687367 +0100
@@ -73,9 +73,8 @@
         pluginOutType.setValue("shared");
         pluginType.setOutputType(pluginOutType);
         linker.addImpliedArgs(false, pluginType, args);
-        assertEquals(2, args.size());
-        assertEquals("-prebind", args.elementAt(0));
-        assertEquals("-dynamiclib", args.elementAt(1));
+        assertEquals(1, args.size());
+        assertEquals("-dynamiclib", args.elementAt(0));
     }
     /**
      * Checks for proper arguments for plugin generation on Darwin