]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/toolchain/ToolChainId.java
remove unnecessary check for NULL pointer.
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / toolchain / ToolChainId.java
CommitLineData
52ee46a6 1/** @file
2
3 This file is used to init tool chain and tool preference data
4 Copyright (c) 2006, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15package org.tianocore.frameworkwizard.toolchain;
16
17import java.io.*;
18import java.io.File;
19import java.lang.Integer;
20import java.util.ArrayList;
21
22import javax.swing.JOptionPane;
23
82484861 24import org.tianocore.frameworkwizard.FrameworkWizardUI;
52ee46a6 25import org.tianocore.frameworkwizard.common.DataType;
26import org.tianocore.frameworkwizard.common.Tools;
27import org.tianocore.frameworkwizard.common.Log;
28import org.tianocore.frameworkwizard.workspace.Workspace;
29
30public class ToolChainId {
31 //
32 // Define class members
33 //
34
35 private final boolean Debug = false;
36
37 private String toolDefinitionFile = null;
38
39 private final int toolDefFieldCount = 5;
40
41 private String toolsDefIdentifier = null;
42
43 private String toolsDefTargetNames = null;
44
45 private final int toolsDefTargetNameField = 0;
46
47 private String toolsDefTagNames = null;
48
49 private final int toolsDefTagNameField = 1;
50
51 private String toolsDefArchNames = null;
52
53 private final int toolsDefArchNameField = 2;
54
55 private final int toolsDefToolArgumentField = 4;
56
57 private String toolCommandCodes = null;
58
59 private final int toolsDefCmdCodeArgumentField = 3;
60
61
62 private String activePlatform = null;
63
64 private String targetArchs = null;
65
66 private String tagNames = null;
67
68 private String buildTargets = null;
69
70 private String toolFamilies = null;
71
72 private ArrayList<String> toolDefinitionContents = new ArrayList<String>(50);
73
74 private static boolean threadEnabled = false;
75
76 private static int maxThreadCount = 0;
77
78 private String toolsDir = Workspace.getCurrentWorkspace() + System.getProperty("file.separator") + "Tools"
79 + System.getProperty("file.separator") + "Conf";
80
81 private String strTargetFile = toolsDir + DataType.FILE_SEPARATOR + "target.txt";
82
83 private String defaultToolsConf = toolsDir + DataType.FILE_SEPARATOR + "tools_def.txt";
84
85 public void init() {
86 readTargetTxtFile();
87 readToolDefinitionFile();
88 }
89
90 public ToolChainId() {
91 super();
92 init();
93 }
94
95 public String getToolDefinitionFile() {
96 return toolDefinitionFile;
97 }
98
99 public String getActivePlatform() {
100 return activePlatform;
101 }
102
103 public String getBuildTargets() {
104 return buildTargets;
105 }
106
107 public String getTagNames() {
108 return tagNames;
109 }
110
111 public String getTargetArchitectures() {
112 return targetArchs;
113 }
114
115 public boolean getThreadEnabled() {
116 return threadEnabled;
117 }
118
119 public int getMaxThreadCount() {
120 return maxThreadCount;
121 }
122
123 public String getToolFamilies() {
124 return toolFamilies;
125 }
126
127 public String getToolDefinitionIdentifier() {
128 return toolsDefIdentifier;
129 }
130
131 public ArrayList<String> getToolDefinitionStatements() {
132 return toolDefinitionContents;
133 }
134
135 public String getToolsDefTagNames() {
136 return toolsDefTagNames;
137 }
138
139 public String getToolsDefTargetNames() {
140 return toolsDefTargetNames;
141 }
142
143 public String getToolsDefCommandCodes() {
144 return toolCommandCodes;
145 }
146
b8d0bba0 147 public String getToolsDefArchNames() {
148 return toolsDefArchNames;
149 }
150
52ee46a6 151 private void readTargetTxtFile() {
152 File tFile = new File(strTargetFile);
153
154 if (tFile.exists()) {
155 try {
156 FileReader fileReader = new FileReader(strTargetFile);
157 BufferedReader reader = new BufferedReader(fileReader);
158 String rLine = null;
159 String inLine[] = new String[2];
160 while ((rLine = reader.readLine()) != null) {
c0db4cdc 161 rLine = rLine.trim();
52ee46a6 162 if ((rLine.startsWith("ACTIVE_PLATFORM")) && (activePlatform == null)) {
163 // Only one active platform is permitted!
c0db4cdc 164 inLine = rLine.split("=");
165 if (inLine.length > 1) {
166 activePlatform = inLine[1].trim();
167 }
52ee46a6 168 }
169 if ((rLine.startsWith("TARGET" + " ")) || (rLine.startsWith("TARGET" + "\t"))
170 || (rLine.startsWith("TARGET="))) {
171 // Handle multiple Target Names
172 if (rLine.contains(",")) {
c0db4cdc 173 inLine = rLine.split("=");
174 if (inLine.length > 1) {
175 buildTargets = inLine[1].trim().replaceAll(",", " ");
176 }
52ee46a6 177 } else {
178 inLine = rLine.trim().split("=");
c0db4cdc 179 if (inLine.length > 1) {
180 buildTargets = inLine[1].trim();
181 }
52ee46a6 182 }
183 }
184 if (rLine.startsWith("TARGET_ARCH")) {
185 // Handle multiple Target Architectures
186 if (rLine.contains(",")) {
c0db4cdc 187 inLine = rLine.split("=");
188 if (inLine.length > 1) {
189 targetArchs = inLine[1].trim().replaceAll(",", " ");
190 }
52ee46a6 191 } else {
c0db4cdc 192 inLine = rLine.split("=");
193 if (inLine.length > 1) {
194 targetArchs = inLine[1].trim();
195 }
52ee46a6 196 }
197 }
198 if (rLine.startsWith("TOOL_CHAIN_CONF")) {
199 // Only one file is permitted
c0db4cdc 200 inLine = rLine.split("=");
201 if (inLine.length > 1) {
202 toolDefinitionFile = inLine[1].trim();
203 }
52ee46a6 204 }
205
206 if (rLine.startsWith("TOOL_CHAIN_TAG")) {
207 // Handle multiple Tool TagNames
208 if (rLine.contains(",")) {
c0db4cdc 209 inLine = rLine.split("=");
210 if (inLine.length > 1) {
211 tagNames = inLine[1].trim().replaceAll(",", " ");
212 }
52ee46a6 213 } else {
c0db4cdc 214 inLine = rLine.split("=");
215 if (inLine.length > 1) {
216 tagNames = inLine[1].trim();
217 }
52ee46a6 218 }
219 }
220
221 if (rLine.startsWith("MULTIPLE_THREAD")) {
222 // Handle Thread Enable flag
c0db4cdc 223 if ((rLine.toLowerCase().contains("enabled"))
224 || (rLine.toLowerCase().contains("true"))) {
52ee46a6 225 threadEnabled = true;
226 } else {
227 threadEnabled = false;
228 }
229 }
230
231 if (rLine.startsWith("MAX_CONCURRENT_THREAD_NUMBER")) {
232 // Handle Thread Enable flag
c0db4cdc 233 inLine = rLine.split("=");
234 if (inLine.length > 1) {
235 maxThreadCount = Integer.valueOf(inLine[1].trim());
236 }
52ee46a6 237 }
238 }
239 reader.close();
240 } catch (IOException e) {
241 Log.log(this.strTargetFile + " Read Error ", e.getMessage());
242 e.printStackTrace();
243 }
244 } else {
82484861 245 JOptionPane.showMessageDialog(FrameworkWizardUI.getInstance(), "<html>" + "Tool Preferences file: <br>" + strTargetFile
52ee46a6 246 + "<br>does not exist!</html>");
247 }
248 }
249
250 private void readToolDefinitionFile() {
251
252 // Parse the tool definition file looking for targets and architectures
253 String toolsConfFile = null;
254 if (toolDefinitionFile != null) {
255 String resString = (Tools.convertPathToCurrentOsType(toolDefinitionFile)).trim();
256 toolsConfFile = Workspace.getCurrentWorkspace() + System.getProperty("file.separator") + resString.trim();
257 File toolsDefFile = new File(toolsConfFile);
258 if (!toolsDefFile.exists()) {
82484861 259 JOptionPane.showMessageDialog(FrameworkWizardUI.getInstance(), "<html>" + "Tool Definition file, " + toolDefinitionFile
52ee46a6 260 + "<br>specified in the target.txt file does not exist!"
261 + "<br>Using the default Tool Definition File:<br>"
262 + defaultToolsConf);
263 toolsConfFile = defaultToolsConf;
264 }
265 } else {
266 toolsConfFile = defaultToolsConf;
267 }
268 String[] toolsDefFields = new String[toolDefFieldCount];
269 for (int i = 0; i < toolDefFieldCount; i++)
270 toolsDefFields[i] = null;
271 File toolDefFile = new File(toolsConfFile);
272 if (toolDefFile.exists()) {
273 try {
274 FileReader fileReader = new FileReader(toolDefFile);
275 BufferedReader reader = new BufferedReader(fileReader);
276 String rLine = null;
277 String result[];
278 while ((rLine = reader.readLine()) != null) {
279 if ((rLine.startsWith("IDENTIFIER")) && (toolsDefIdentifier == null)) {
280 result = rLine.split("=");
281 toolsDefIdentifier = (result[1]).trim();
282 } else if ((!rLine.startsWith("#")) && (rLine.contains("="))) {
283 result = rLine.split("=");
284 toolsDefFields = ((result[0]).trim()).split("_");
285 if (toolsDefTargetNames == null) {
286 toolsDefTargetNames = (toolsDefFields[toolsDefTargetNameField]).toUpperCase().trim() + " ";
287 } else if (!toolsDefTargetNames.contains((toolsDefFields[toolsDefTargetNameField]).toUpperCase().trim())) {
288 toolsDefTargetNames += (toolsDefFields[toolsDefTargetNameField]).toUpperCase().trim() + " ";
289 }
290 if (toolsDefTagNames == null) {
291 toolsDefTagNames = (toolsDefFields[toolsDefTagNameField]).toUpperCase().toUpperCase().trim() + " ";
292 } else if (!toolsDefTagNames.contains((toolsDefFields[toolsDefTagNameField]).toUpperCase().trim())) {
293 toolsDefTagNames += (toolsDefFields[toolsDefTagNameField]).toUpperCase().trim() + " ";
294 }
295 if (toolsDefArchNames == null) {
296 toolsDefArchNames = (toolsDefFields[toolsDefArchNameField]).toUpperCase().trim() + " ";
297 } else if (!toolsDefArchNames.contains((toolsDefFields[toolsDefArchNameField]).toUpperCase().trim())) {
298 toolsDefArchNames += (toolsDefFields[toolsDefArchNameField]).toUpperCase().trim() + " ";
299 }
300 if ((toolFamilies == null) && (rLine.trim().contains("FAMILY"))) {
301 toolFamilies = (toolsDefFields[toolsDefToolArgumentField]).toUpperCase().trim() + " ";
302 } else if ((rLine.trim().contains("FAMILY"))
303 && (!toolFamilies.contains((toolsDefFields[toolsDefToolArgumentField]).toUpperCase().trim()))) {
304 toolFamilies += (toolsDefFields[toolsDefToolArgumentField]).toUpperCase().trim() + " ";
305 }
306 if ((toolCommandCodes == null)) {
307 toolCommandCodes = (toolsDefFields[toolsDefCmdCodeArgumentField]).toUpperCase().trim() + " ";
308 } else if ((!toolCommandCodes.contains((toolsDefFields[toolsDefCmdCodeArgumentField]).toUpperCase().trim()))) {
309 toolCommandCodes += (toolsDefFields[toolsDefCmdCodeArgumentField].toUpperCase().trim()) + " ";
310 }
311
312 toolDefinitionContents.add(rLine.trim().replaceAll(" ", ""));
313 }
314 }
315 reader.close();
316 if (!toolsDefTargetNames.matches("[A-Z]+")) {
317 toolsDefTargetNames = toolsDefTargetNames.replace("* ", "").trim();
318 if (Debug)
319 System.out.println("tools_def file does not define build targets: '" + toolsDefTargetNames
320 + "'");
321 }
322 } catch (IOException e) {
323 Log.log(toolsConfFile + " Read Error ", e.getMessage());
324 e.printStackTrace();
325 }
326 }
327 }
328
329}