]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/Cpptasks/net/sf/antcontrib/cpptasks/userdefine/CommandLineUserDefine.java
Fixed GCC ld issue
[mirror_edk2.git] / Tools / Source / Cpptasks / net / sf / antcontrib / cpptasks / userdefine / CommandLineUserDefine.java
index b77f2db624f5f6f23d88c2e351c6bc456ecb70fc..1e4c0ce2b7e34ad34fc5209bb9cc6b5e54af3964 100644 (file)
@@ -39,6 +39,7 @@ public class CommandLineUserDefine {
     String outputDelimiter = null;\r
     \r
     public void command(CCTask cctask, UserDefineDef userdefine){\r
+        boolean isGccCommand = userdefine.getFamily().equalsIgnoreCase("GCC");\r
         File workdir;\r
         Project project = cctask.getProject();\r
         if(userdefine.getWorkdir() == null) {\r
@@ -117,6 +118,9 @@ public class CommandLineUserDefine {
         String[] libSet = userdefine.get_libset();\r
         if (libSet != null && libSet.length > 0){\r
             cmdLen = cmdLen + libSet.length;\r
+            if (isGccCommand) {\r
+                cmdLen += 2;    // we need -( and -) to group libs for GCC\r
+            }\r
         }\r
 \r
         //\r
@@ -190,9 +194,15 @@ public class CommandLineUserDefine {
         }\r
         \r
         if (libSet != null && libSet.length > 0){\r
+            if (isGccCommand) {\r
+                cmd[index++] = "-(";\r
+            }\r
             for (int k = 0; k < libSet.length ; k++){\r
                 cmd[index++] = libSet[k];\r
             }\r
+            if (isGccCommand) {\r
+                cmd[index++] = "-)";\r
+            }\r
         }\r
         for (int j = 0; j < fileNames.length; j++){\r
             // execute the command\r