]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/GenBuild/org/tianocore/build/fpd/FpdParserTask.java
Support MSA build options. Now the build options from four places: 1. tools_def.txt
[mirror_edk2.git] / Tools / Java / Source / GenBuild / org / tianocore / build / fpd / FpdParserTask.java
index 2b1f30fa0d34b738b6d868a9428ba165fbad1f94..28379796f48b531e0a9b17c9c5343d83b1531023 100644 (file)
@@ -35,6 +35,7 @@ import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlObject;\r
 \r
 import org.tianocore.common.definitions.EdkDefinitions;\r
+import org.tianocore.common.definitions.ToolDefinitions;\r
 import org.tianocore.common.exception.EdkException;\r
 import org.tianocore.common.logger.EdkLog;\r
 import org.tianocore.build.FrameworkBuildTask;\r
@@ -46,7 +47,6 @@ import org.tianocore.build.id.ModuleIdentification;
 import org.tianocore.build.id.PackageIdentification;\r
 import org.tianocore.build.id.PlatformIdentification;\r
 import org.tianocore.build.pcd.action.PlatformPcdPreprocessActionForBuilding;\r
-import org.tianocore.build.toolchain.ToolChainAttribute;\r
 import org.tianocore.build.toolchain.ToolChainElement;\r
 import org.tianocore.build.toolchain.ToolChainMap;\r
 import org.w3c.dom.NamedNodeMap;\r
@@ -337,10 +337,10 @@ public class FpdParserTask extends Task {
             }\r
         }\r
     }\r
+    \r
     /**\r
       This method is used for Single Module Build.\r
 \r
-\r
       @throws BuildException\r
                   FPD file is not valid.\r
     **/\r
@@ -516,6 +516,13 @@ public class FpdParserTask extends Task {
             //\r
             GlobalData.addModuleToolChainOption(fpdModuleId, parseModuleBuildOptions(false));\r
             GlobalData.addModuleToolChainFamilyOption(fpdModuleId, parseModuleBuildOptions(true));\r
+            \r
+            //\r
+            // parse MSA build options\r
+            //\r
+            GlobalData.addMsaBuildOption(moduleId, parseMsaBuildOptions(false));\r
+            GlobalData.addMsaFamilyBuildOption(moduleId, parseMsaBuildOptions(true));\r
+    \r
             saq.pop();\r
         }\r
     }\r
@@ -536,6 +543,14 @@ public class FpdParserTask extends Task {
         return parseOptions(options);\r
     }\r
 \r
+    ToolChainMap parseMsaBuildOptions(boolean toolChainFamilyFlag) throws EdkException {\r
+        String[][] options = saq.getMsaBuildOptions(toolChainFamilyFlag);\r
+        if (options == null || options.length == 0) {\r
+            return new ToolChainMap();\r
+        }\r
+        return parseOptions(options);\r
+    }\r
+    \r
     private ToolChainMap parseOptions(String[][] options) throws EdkException {\r
         ToolChainMap map = new ToolChainMap();\r
         int flagIndex = ToolChainElement.ATTRIBUTE.value;\r
@@ -545,7 +560,7 @@ public class FpdParserTask extends Task {
             if (flagString == null) {\r
                 flagString = "";\r
             }\r
-            options[i][flagIndex] = ToolChainAttribute.FLAGS + "";\r
+            options[i][flagIndex] = ToolDefinitions.TOOLS_DEF_ATTRIBUTE_FLAGS;\r
             map.put(options[i], flagString.trim());\r
         }\r
 \r