a29c47e0 |
1 | /** @file\r |
5f42a4ba |
2 | ToolChainConfig class.\r |
ff225cbb |
3 | \r |
5f42a4ba |
4 | ToolChainFactory class parse all config files and get tool chain information.\r |
ff225cbb |
5 | \r |
a29c47e0 |
6 | Copyright (c) 2006, Intel Corporation\r |
7 | All rights reserved. This program and the accompanying materials\r |
8 | are licensed and made available under the terms and conditions of the BSD License\r |
9 | which accompanies this distribution. The full text of the license may be found at\r |
10 | http://opensource.org/licenses/bsd-license.php\r |
11 | \r |
12 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r |
13 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r |
14 | \r |
15 | **/\r |
16 | package org.tianocore.build.toolchain;\r |
17 | \r |
18 | import org.apache.tools.ant.BuildException;\r |
ff225cbb |
19 | \r |
20 | import org.tianocore.common.exception.EdkException;\r |
a29c47e0 |
21 | import org.tianocore.build.toolchain.ToolChainKey;\r |
22 | import org.tianocore.build.toolchain.ToolChainMap;\r |
23 | \r |
24 | import java.io.File;\r |
25 | import java.util.Iterator;\r |
26 | import java.util.Set;\r |
27 | \r |
28 | \r |
29 | /**\r |
ff225cbb |
30 | \r |
5f42a4ba |
31 | ToolChainFactory class parse all config files and get tool chain information.\r |
ff225cbb |
32 | \r |
5f42a4ba |
33 | **/\r |
a29c47e0 |
34 | public class ToolChainConfig {\r |
a29c47e0 |
35 | ///\r |
36 | /// tool chain definitions\r |
37 | ///\r |
38 | private ToolChainMap config = null;\r |
5f42a4ba |
39 | ///\r |
40 | /// tool chain information (how many targets, archs, etc.)\r |
ff225cbb |
41 | ///\r |
a29c47e0 |
42 | private ToolChainInfo info = new ToolChainInfo();\r |
43 | \r |
44 | /**\r |
45 | Public construct method.\r |
5f42a4ba |
46 | **/\r |
a29c47e0 |
47 | public ToolChainConfig () {\r |
48 | }\r |
49 | \r |
50 | /**\r |
51 | Public construct method.\r |
ff225cbb |
52 | \r |
5f42a4ba |
53 | @param toolChainFile File object representing the tool chain configuration file\r |
a29c47e0 |
54 | **/\r |
55 | public ToolChainConfig (File toolChainFile) {\r |
56 | try {\r |
57 | config = ConfigReader.parseToolChainConfig(toolChainFile);\r |
58 | parseToolChainDefKey(config.keySet());\r |
59 | }\r |
60 | catch (EdkException ex) {\r |
61 | throw new BuildException(ex.getMessage());\r |
62 | }\r |
63 | }\r |
64 | \r |
5f42a4ba |
65 | /**\r |
66 | Collect target, tool chain tag, arch and command information from key part\r |
67 | of configuration\r |
ff225cbb |
68 | \r |
5f42a4ba |
69 | @param toolChainDefKey The set of keys in tool chain configuration\r |
70 | **/\r |
71 | private void parseToolChainDefKey (Set<ToolChainKey> toolChainDefKey) {\r |
a29c47e0 |
72 | Iterator it = toolChainDefKey.iterator();\r |
73 | while (it.hasNext()) {\r |
74 | ToolChainKey key = (ToolChainKey)it.next();\r |
75 | String[] keySet = key.getKeySet();\r |
76 | info.addTargets(keySet[0]);\r |
77 | info.addTagnames(keySet[1]);\r |
78 | info.addArchs(keySet[2]);\r |
79 | info.addCommands(keySet[1], keySet[3]);\r |
80 | }\r |
81 | }\r |
82 | \r |
5f42a4ba |
83 | /**\r |
ff225cbb |
84 | Return the tool chain configuration information in a Map form\r |
85 | \r |
5f42a4ba |
86 | @return ToolChainMap Tool chain configurations in a ToolChainMap\r |
87 | **/\r |
a29c47e0 |
88 | public ToolChainMap getConfig() {\r |
89 | return config;\r |
90 | }\r |
91 | \r |
5f42a4ba |
92 | /**\r |
93 | Return the tool chain's target, arch, tag and commands information\r |
ff225cbb |
94 | \r |
5f42a4ba |
95 | @return ToolChainInfo\r |
96 | **/\r |
a29c47e0 |
97 | public ToolChainInfo getConfigInfo() {\r |
98 | return info;\r |
99 | }\r |
100 | \r |
5f42a4ba |
101 | /**\r |
102 | override toString()\r |
ff225cbb |
103 | \r |
5f42a4ba |
104 | @return String The converted configuration string in name=value form\r |
105 | **/\r |
a29c47e0 |
106 | public String toString() {\r |
107 | StringBuffer ts = new StringBuffer(10240);\r |
108 | \r |
109 | Iterator it = config.keySet().iterator();\r |
110 | while (it.hasNext()) {\r |
111 | ToolChainKey key = (ToolChainKey)it.next();\r |
112 | ts.append(key.toString() + " = ");\r |
5f42a4ba |
113 | ts.append(config.get(key) + "\n");\r |
a29c47e0 |
114 | }\r |
115 | \r |
116 | return ts.toString();\r |
117 | }\r |
118 | }\r |
119 | \r |