]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainConfig.java
Update GenBuild to append FLAGS from FPD files to the FLAGS defined in tools_def.txt
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / toolchain / ToolChainConfig.java
index 232046c5908944f0067b2ad5b0fcf886a0b39601..b12c43662c5ab884ad628dd279eec9c1507a5bdd 100644 (file)
@@ -1,8 +1,7 @@
 /** @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
@@ -16,8 +15,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 **/\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
@@ -27,105 +25,90 @@ import java.util.Set;
 \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
@@ -133,7 +116,7 @@ public class ToolChainConfig {
         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