/** @file\r
- ToolChainFactory class.\r
+ ToolChainConfig class.\r
\r
- ToolChainFactory class parse all config files and get STD_FLAGS, GLOBAL_FLAGS,\r
- and also command path + name.\r
+ ToolChainConfig class parse all config files and get tool chain information.\r
\r
Copyright (c) 2006, Intel Corporation\r
All rights reserved. This program and the accompanying materials\r
**/\r
package org.tianocore.build.toolchain;\r
\r
-import org.apache.tools.ant.BuildException;\r
-import org.tianocore.exception.EdkException;\r
+import org.tianocore.build.exception.GenBuildException;\r
import org.tianocore.build.toolchain.ToolChainKey;\r
import org.tianocore.build.toolchain.ToolChainMap;\r
\r
\r
\r
/**\r
- This class parse all config files and get STD_FLAGS, GLOBAL_FLAGS, and also \r
- command path + name.\r
+ \r
+ ToolChainConfig class parse all config files and get tool chain information.\r
\r
- @since GenBuild 1.0\r
-**/\r
+ **/\r
public class ToolChainConfig {\r
- ///\r
- /// list of attributes\r
- ///\r
- private final static String[] attributes = {"NAME", "PATH", "DPATH", "SPATH", "EXT", "FAMILY", "FLAGS"};\r
- ///\r
- /// elements which are used to define one type of tool\r
- ///\r
- private final static String[] elements = {"TARGET", "TOOLCHAIN", "ARCH", "CMD", "ATTRIBUTE" };\r
-\r
- ///\r
- /// tool chain definitions\r
- ///\r
+ //\r
+ // tool chain definitions\r
+ //\r
private ToolChainMap config = null;\r
+ //\r
+ // tool chain information (how many targets, archs, etc.)\r
+ // \r
private ToolChainInfo info = new ToolChainInfo();\r
\r
/**\r
Public construct method.\r
+ \r
+ @param toolChainFile File object representing the tool chain configuration file\r
**/\r
- public ToolChainConfig () {\r
+ public ToolChainConfig (File toolChainFile) throws GenBuildException {\r
+ config = getToolChainConfig(toolChainFile);\r
+ parseToolChainDefKey(config.keySet());\r
}\r
\r
/**\r
- Public construct method.\r
- \r
- @param confPath the path of config files\r
- @param toolChainTag TOOL_CHAIN name\r
- **/\r
- public ToolChainConfig (File toolChainFile) {\r
- try {\r
- config = ConfigReader.parseToolChainConfig(toolChainFile);\r
- parseToolChainDefKey(config.keySet());\r
- }\r
- catch (EdkException ex) {\r
- throw new BuildException(ex.getMessage());\r
+ Read tool chain definitions from specified file and put them in \r
+ ToolChainMap class.\r
+\r
+ @param ConfigFile The file containing tool chain definitions\r
+ \r
+ @return ToolChainMap\r
+ **/\r
+ private ToolChainMap getToolChainConfig(File ConfigFile) throws GenBuildException {\r
+ ToolChainMap map = new ToolChainMap();\r
+ String[][] toolChainDef = ConfigReader.parse(ConfigFile);\r
+ \r
+ for (int i = 0; i < toolChainDef[0].length; ++i) {\r
+ map.put(toolChainDef[0][i], toolChainDef[1][i]);\r
}\r
+\r
+ return map;\r
}\r
\r
- /// \r
- /// \r
- /// \r
- public void parseToolChainDefKey (Set<ToolChainKey> toolChainDefKey) {\r
+ /**\r
+ Collect target, tool chain tag, arch and command information from key part\r
+ of configuration\r
+ \r
+ @param toolChainDefKey The set of keys in tool chain configuration\r
+ **/\r
+ private void parseToolChainDefKey (Set<ToolChainKey> toolChainDefKey) {\r
Iterator it = toolChainDefKey.iterator();\r
while (it.hasNext()) {\r
ToolChainKey key = (ToolChainKey)it.next();\r
String[] keySet = key.getKeySet();\r
- info.addTargets(keySet[0]);\r
- info.addTagnames(keySet[1]);\r
- info.addArchs(keySet[2]);\r
- info.addCommands(keySet[1], keySet[3]);\r
+ info.addTargets(keySet[ToolChainElement.TARGET.value]);\r
+ info.addTagnames(keySet[ToolChainElement.TOOLCHAIN.value]);\r
+ info.addArchs(keySet[ToolChainElement.ARCH.value]);\r
+ info.addCommands(keySet[ToolChainElement.TOOLCODE.value]);\r
}\r
}\r
\r
-/**\r
- public Set<String> getTargets() {\r
- return info.getTargets();\r
- }\r
-\r
- public Set<String> getTagnames() {\r
- return info.getTagnames();\r
- }\r
-\r
- public Set<String> getArchs() {\r
- return info.getArchs();\r
- }\r
-\r
- public Set<String> getCommands() {\r
- return info.getCommands();\r
- }\r
-\r
- public String getValue(String key) {\r
- return config.get(key);\r
- }\r
-\r
- public String getValue(String[] keySet) {\r
- return config.get(keySet);\r
- }\r
-\r
- public String getValue(ToolChainKey key) {\r
- return config.get(key);\r
- }\r
- **/\r
-\r
+ /**\r
+ Return the tool chain configuration information in a Map form \r
+ \r
+ @return ToolChainMap Tool chain configurations in a ToolChainMap\r
+ **/\r
public ToolChainMap getConfig() {\r
return config;\r
}\r
\r
+ /**\r
+ Return the tool chain's target, arch, tag and commands information\r
+ \r
+ @return ToolChainInfo Tool chain information summary\r
+ **/\r
public ToolChainInfo getConfigInfo() {\r
return info;\r
}\r
\r
- ///\r
- /// override toString()\r
- /// \r
+ /**\r
+ override toString()\r
+ \r
+ @return String The converted configuration string in name=value form\r
+ **/\r
public String toString() {\r
StringBuffer ts = new StringBuffer(10240);\r
\r
while (it.hasNext()) {\r
ToolChainKey key = (ToolChainKey)it.next();\r
ts.append(key.toString() + " = ");\r
-// ts.append(config.get(key) + "\n");\r
+ ts.append(config.get(key) + "\n");\r
}\r
\r
return ts.toString();\r