]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/GenBuild/org/tianocore/build/fpd/FpdParserTask.java
Fixed the build error.
[mirror_edk2.git] / Tools / Java / Source / GenBuild / org / tianocore / build / fpd / FpdParserTask.java
index 86fb256e95afff47e82bcdad9e0fefd889952af0..7d86c64a2d82d84512252a6f33b8d503f6204c2c 100644 (file)
@@ -49,6 +49,7 @@ import org.tianocore.build.id.PlatformIdentification;
 import org.tianocore.build.pcd.action.PlatformPcdPreprocessActionForBuilding;\r
 import org.tianocore.build.toolchain.ToolChainElement;\r
 import org.tianocore.build.toolchain.ToolChainMap;\r
+import org.tianocore.build.toolchain.ToolChainInfo;\r
 import org.w3c.dom.NamedNodeMap;\r
 import org.w3c.dom.Node;\r
 import org.w3c.dom.NodeList;\r
@@ -337,10 +338,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
@@ -447,6 +448,11 @@ public class FpdParserTask extends Task {
             parseToolChainFamilyOptions();\r
             parseToolChainOptions();\r
 \r
+            //\r
+            // check if the tool chain is valid or not\r
+            // \r
+            checkToolChain();\r
+\r
             saq.push(map);\r
 \r
             //\r
@@ -516,6 +522,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 +549,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
@@ -753,4 +774,25 @@ public class FpdParserTask extends Task {
             }\r
         }\r
     }\r
+\r
+\r
+    private void checkToolChain() throws EdkException {\r
+        ToolChainInfo toolChainInfo = GlobalData.getToolChainInfo();\r
+\r
+        if (toolChainInfo.getTargets().length == 0) {\r
+            throw new EdkException("No valid target specified! Please check your TARGET definition in Tools/Conf/target.txt.");\r
+        }\r
+\r
+        if (toolChainInfo.getTagnames().length == 0) {\r
+            throw new EdkException("No valid tool chain specified! Please check your TOOL_CHAIN_TAG definition in Tools/Conf/target.txt.");\r
+        }\r
+\r
+        if (toolChainInfo.getArchs().length == 0) {\r
+            throw new EdkException("No valid ARCH specified! Please check your TARGET_ARCH definition in Tools/Conf/target.txt.");\r
+        }\r
+\r
+        if (toolChainInfo.getCommands().length == 0) {\r
+            throw new EdkException("No valid COMMAND specified! Please check your TARGET definition in Tools/Conf/tools_def.txt.");\r
+        }\r
+    }\r
 }\r