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
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
//\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
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
}\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