]> git.proxmox.com Git - mirror_edk2.git/blob - Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenCRC32SectionTask.java
Fixes for case sensitive operating systems.
[mirror_edk2.git] / Tools / Source / FrameworkTasks / org / tianocore / framework / tasks / GenCRC32SectionTask.java
1 /** @file
2 GenCRC32SectionTask class.
3
4 GenCRC32SectionTask is to call GenCRC32Section.exe to generate crc32 section.
5
6 Copyright (c) 2006, Intel Corporation
7 All rights reserved. This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
11
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14
15 **/
16
17 package org.tianocore.framework.tasks;
18
19 import java.util.*;
20 import org.apache.tools.ant.Project;
21 import org.apache.tools.ant.Task;
22 import org.apache.tools.ant.BuildException;
23 import org.apache.tools.ant.taskdefs.Execute;
24 import org.apache.tools.ant.taskdefs.LogStreamHandler;
25 import org.apache.tools.ant.types.Commandline;
26
27 /**
28 GenCRC32SectionTask
29
30 GenCRC32SectionTask is to call GenCRC32Section.exe to generate crc32 section.
31
32 **/
33 public class GenCRC32SectionTask extends Task implements EfiDefine{
34 ///
35 /// output file
36 ///
37 private String outputFile;
38 ///
39 /// inputFile list
40 ///
41 private List<Object> inputFileList = new ArrayList<Object>();
42
43 ///
44 /// Project
45 ///
46 static private Project project;
47
48 /**
49 execute
50
51 GenCRC32SectionTask execute is to assemble tool command line & execute
52 tool command line
53
54 @throws BuildException
55 **/
56 public void execute() throws BuildException {
57
58 project = this.getOwningTarget().getProject();
59 ///
60 /// absolute path of efi tools
61 ///
62 String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");
63 String command;
64 if (path == null) {
65 command = "GenCRC32Section";
66 } else {
67 command = path + "/" + "GenCRC32Section" ;
68 }
69 //
70 // string line of input files
71 //
72 String inputFiles = list2Str(inputFileList, "");
73 //
74 // assemble argument
75 //
76 String argument = inputFiles + outputFile;
77 //
78 // return value of fwimage execution
79 //
80 int revl = -1;
81
82 try {
83 Commandline cmdline = new Commandline();
84 cmdline.setExecutable(command);
85 cmdline.createArgument().setLine(argument);
86
87 LogStreamHandler streamHandler = new LogStreamHandler(this, Project.MSG_INFO, Project.MSG_WARN);
88 Execute runner = new Execute(streamHandler, null);
89
90 runner.setAntRun(project);
91 runner.setCommandline(cmdline.getCommandline());
92 System.out.println(Commandline.toString(cmdline.getCommandline()));
93
94 revl = runner.execute();
95 if (EFI_SUCCESS == revl){
96 //
97 // command execution success
98 //
99 System.out.println("gencrc32section succeeded!");
100 }
101 else
102 {
103 //
104 // command execution fail
105 //
106 System.out.println("gencrc32section failed. (error=" +
107 Integer.toHexString(revl) +
108 ")"
109 );
110 }
111 } catch (Exception e) {
112 throw new BuildException(e.getMessage());
113 }
114
115 }
116
117 /**
118 addInputFile
119
120 This function is to add a inputFile element into list
121 @param inputFile : inputFile element
122 **/
123 public void addInputfile(InputFile inputFile) {
124 inputFileList.add(inputFile);
125 }
126
127 /**
128 get class member "outputFile"
129 * @return name of output file
130 */
131 public String getOutputFile() {
132 return this.outputFile;
133 }
134 /**
135 * set class member "outputFile"
136 * @param outputFile : outputFile parameter
137 */
138 public void setOutputFile(String outputFile) {
139 this.outputFile = " -o " + outputFile;
140 };
141
142 /**
143 * transfer List to String
144 * @param list : nested element list
145 * @param tag : interval tag of parameter
146 * @return string line of parameters
147 */
148 private String list2Str(List list, String tag) {
149 /*
150 * string line for return
151 */
152 String paraStr = " -i";
153 /*
154 * nested element in list
155 */
156 NestElement element;
157 /*
158 * iterator of nested element list
159 */
160 Iterator elementIter = list.iterator();
161 /*
162 * string parameter list
163 */
164 List<Object> strList = new ArrayList<Object>();
165
166 while (elementIter.hasNext()) {
167 element = (NestElement) elementIter.next();
168 if (null != element.getFile()) {
169 FileParser.loadFile(project, strList, element.getFile(), tag);
170 } else {
171 paraStr = paraStr + element.getName();
172 }
173 }
174 /*
175 * iterator of string parameter list
176 */
177 Iterator strIter = strList.iterator();
178 while (strIter.hasNext()) {
179 paraStr = paraStr + " " + strIter.next();
180 }
181 return paraStr;
182 }
183 }