]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/FrameworkTasks/org/tianocore/framework/tasks/GenCapsuleHdrTask.java
- Fixed EDKT240. Now the Blank.pad file for alignment purpose will no longer be needed.
[mirror_edk2.git] / Tools / Java / Source / FrameworkTasks / org / tianocore / framework / tasks / GenCapsuleHdrTask.java
CommitLineData
a15bb0d3 1/** @file\r
2 GenCapsuleHdrTask class.\r
3\r
4 GenCapsuleHdrTask is used to call GenCapsuleHdr.exe to generate capsule.\r
ff225cbb 5\r
6\r
a15bb0d3 7 Copyright (c) 2006, Intel Corporation\r
8 All rights reserved. This program and the accompanying materials\r
9 are licensed and made available under the terms and conditions of the BSD License\r
10 which accompanies this distribution. The full text of the license may be found at\r
11 http://opensource.org/licenses/bsd-license.php\r
ff225cbb 12\r
a15bb0d3 13 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
14 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
15\r
16 **/\r
17package org.tianocore.framework.tasks;\r
18\r
19import java.io.File;\r
20\r
21import org.apache.tools.ant.Task;\r
22import org.apache.tools.ant.Project;\r
23import org.apache.tools.ant.BuildException;\r
24import org.apache.tools.ant.taskdefs.Execute;\r
25import org.apache.tools.ant.taskdefs.LogStreamHandler;\r
26import org.apache.tools.ant.types.Commandline;\r
ff225cbb 27\r
28import org.tianocore.common.logger.EdkLog;\r
a15bb0d3 29\r
30/**\r
31 GenCapsuleHdrTask class.\r
32\r
33 GenCapsuleHdrTask is used to call GenCapsuleHdr.exe to generate capsule.\r
34**/\r
35public class GenCapsuleHdrTask extends Task implements EfiDefine {\r
0fdb42ac 36 //\r
37 // tool name\r
38 //\r
a15bb0d3 39 private String toolName = "GenCapsuleHdr";\r
ff225cbb 40\r
0fdb42ac 41 //\r
42 // script file\r
43 //\r
44 private FileArg scriptFile = new FileArg();\r
a15bb0d3 45\r
0fdb42ac 46 //\r
47 // output file\r
48 //\r
49 private FileArg outputFile = new FileArg();\r
a15bb0d3 50\r
0fdb42ac 51 //\r
52 // output directory, this variable is added by jave wrap\r
53 //\r
54 private String outputDir = ".";\r
a15bb0d3 55\r
0fdb42ac 56 //\r
57 // Verbose flag\r
58 //\r
59 private ToolArg verbose = new ToolArg();\r
a15bb0d3 60\r
0fdb42ac 61 //\r
62 // Dump flag\r
63 //\r
64 private ToolArg dump = new ToolArg();\r
ff225cbb 65\r
0fdb42ac 66 //\r
67 // Split size\r
68 //\r
69 private ToolArg size = new ToolArg();\r
ff225cbb 70\r
0fdb42ac 71 //\r
72 // capsule into one image flag\r
73 //\r
74 private ToolArg joinFlag = new ToolArg();\r
ff225cbb 75\r
0fdb42ac 76 //\r
77 // capsule file\r
78 //\r
79 private FileArg capsuleFile = new FileArg();\r
a15bb0d3 80\r
81\r
82 /**\r
0fdb42ac 83 execute\r
84 \r
85 GenCapsuleHdrTask execute function is to assemble tool command line & execute\r
86 tool command line\r
87 \r
88 @throws BuidException\r
89 **/\r
a15bb0d3 90 public void execute() throws BuildException {\r
91\r
92 Project project = this.getOwningTarget().getProject();\r
93 //\r
a15bb0d3 94 // absolute path of efi tools\r
95 //\r
96 String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");\r
97 String command;\r
98 String argument;\r
99 if (path == null) {\r
100 command = toolName;\r
101 } else {\r
0fdb42ac 102 command = path + File.separator + toolName;\r
a15bb0d3 103 }\r
104 //\r
105 // argument of tools\r
106 //\r
0fdb42ac 107 argument = "" + this.verbose + this.dump + this.outputFile\r
108 + this.scriptFile + this.size + this.joinFlag + this.capsuleFile;\r
109\r
a15bb0d3 110 //\r
111 // return value of fwimage execution\r
112 //\r
113 int revl = -1;\r
114\r
115 try {\r
116 Commandline cmdline = new Commandline();\r
117 cmdline.setExecutable(command);\r
118 cmdline.createArgument().setLine(argument);\r
119\r
120 LogStreamHandler streamHandler = new LogStreamHandler(this,\r
121 Project.MSG_INFO, Project.MSG_WARN);\r
122 Execute runner = new Execute(streamHandler, null);\r
123\r
124 runner.setAntRun(project);\r
125 runner.setCommandline(cmdline.getCommandline());\r
0fdb42ac 126 runner.setWorkingDirectory(new File(outputDir));\r
127\r
a15bb0d3 128 //\r
129 // Set debug log information.\r
130 //\r
91f7d582 131 EdkLog.log(this, EdkLog.EDK_VERBOSE, Commandline.toString(cmdline.getCommandline()));\r
0fdb42ac 132 EdkLog.log(this, EdkLog.EDK_INFO, scriptFile.toFileList() + " => " +\r
133 outputFile.toFileList() + capsuleFile.toFileList());\r
a15bb0d3 134\r
0fdb42ac 135 revl = runner.execute();\r
a15bb0d3 136 if (EFI_SUCCESS == revl) {\r
137 //\r
138 // command execution success\r
139 //\r
0fdb42ac 140 EdkLog.log(this, EdkLog.EDK_VERBOSE, toolName + " succeeded!");\r
a15bb0d3 141 } else {\r
142 //\r
143 // command execution fail\r
144 //\r
91f7d582 145 EdkLog.log(this, EdkLog.EDK_ERROR, "ERROR = " + Integer.toHexString(revl));\r
0fdb42ac 146 throw new BuildException(toolName + " failed!");\r
a15bb0d3 147 }\r
148 } catch (Exception e) {\r
149 throw new BuildException(e.getMessage());\r
150 }\r
151 }\r
152\r
153 /**\r
0fdb42ac 154 getInputFile\r
155 \r
156 This function is to get class member "scriptFile".\r
157 \r
158 @return string of input file name.\r
159 **/\r
a15bb0d3 160 public String getScriptFile() {\r
0fdb42ac 161 return this.scriptFile.getValue();\r
a15bb0d3 162 }\r
163\r
164 /**\r
0fdb42ac 165 setComponentType\r
166 \r
167 This function is to set class member "inputFile".\r
168 \r
169 @param inputFile\r
170 string of input file name.\r
171 **/\r
a15bb0d3 172 public void setScriptFile(String scriptFile) {\r
0fdb42ac 173 this.scriptFile.setArg(" -script ", scriptFile);\r
a15bb0d3 174 }\r
175\r
176 /**\r
0fdb42ac 177 getOutputFile\r
178 \r
179 This function is to get class member "outputFile"\r
180 \r
181 @return outputFile string of output file name.\r
182 **/\r
a15bb0d3 183 public String getOutputFile() {\r
0fdb42ac 184 return outputFile.getValue();\r
a15bb0d3 185 }\r
186\r
187 /**\r
0fdb42ac 188 setOutputFile\r
189 \r
190 This function is to set class member "outputFile"\r
191 \r
192 @param outputFile\r
193 string of output file name.\r
194 **/\r
a15bb0d3 195 public void setOutputFile(String outputFile) {\r
0fdb42ac 196 this.outputFile.setArg(" -o ", outputFile);\r
a15bb0d3 197 }\r
198\r
199 /**\r
0fdb42ac 200 getOutputDir\r
201 \r
202 This function is to get class member "outputDir"\r
203 \r
204 @return outputDir string of output directory.\r
205 **/\r
a15bb0d3 206 public String getOutputDir() {\r
207 return outputDir;\r
208 }\r
209\r
210 /**\r
0fdb42ac 211 setOutputDir\r
212 \r
213 This function is to set class member "outputDir"\r
214 \r
215 @param outputDir\r
216 string of output directory.\r
217 **/\r
a15bb0d3 218 public void setOutputDir(String outputDir) {\r
219 this.outputDir = outputDir;\r
220 }\r
221\r
222 /**\r
0fdb42ac 223 getVerbose\r
224 \r
225 This function is to get class member "verbose"\r
226 \r
227 @return verbose the flag of verbose.\r
228 **/\r
a15bb0d3 229 public String getVerbose() {\r
0fdb42ac 230 return this.verbose.getValue();\r
a15bb0d3 231 }\r
232\r
233 /**\r
0fdb42ac 234 setVerbose\r
235 \r
236 This function is to set class member "verbose"\r
237 \r
238 @param verbose\r
239 True or False.\r
240 **/\r
a15bb0d3 241 public void setVerbose(boolean verbose) {\r
242 if (verbose) {\r
0fdb42ac 243 this.verbose.setArg(" -", "v");\r
a15bb0d3 244 }\r
245 }\r
246\r
247 /**\r
0fdb42ac 248 getDump\r
249 \r
250 This function is to get class member "dump"\r
251 \r
252 @return verbose the flag of dump.\r
253 **/\r
a15bb0d3 254 public String getDump() {\r
0fdb42ac 255 return dump.getValue();\r
a15bb0d3 256 }\r
257\r
258 /**\r
0fdb42ac 259 setDump\r
260 \r
261 This function is to set class member "dump".\r
262 \r
263 @param dump\r
264 True or False.\r
265 **/\r
a15bb0d3 266 public void setDump(boolean dump) {\r
267 if (dump) {\r
0fdb42ac 268 this.dump.setArg(" -", "dump");\r
a15bb0d3 269 }\r
270 }\r
271\r
272 /**\r
0fdb42ac 273 getSize\r
274 \r
275 This function is to set class member "size".\r
276 \r
277 @return size string of size value\r
278 **/\r
a15bb0d3 279 public String getSize() {\r
0fdb42ac 280 return size.getValue();\r
a15bb0d3 281 }\r
282\r
283 /**\r
0fdb42ac 284 setSize\r
285 \r
286 This function is to set class member "size".\r
287 \r
288 @param size string of size value.\r
289 **/\r
a15bb0d3 290 public void setSize(String size) {\r
0fdb42ac 291 this.size.setArg(" -split ", size);\r
a15bb0d3 292 }\r
293\r
294 /**\r
0fdb42ac 295 getCapsuleFile\r
296 \r
297 This function is to get class member "capsuleFile"\r
298 \r
299 @return capsuleFile capsule file name\r
300 **/\r
a15bb0d3 301 public String getCapsuleFile() {\r
0fdb42ac 302 return capsuleFile.getValue();\r
a15bb0d3 303 }\r
304\r
305 /**\r
0fdb42ac 306 setCapsuleFile\r
307 \r
308 This function is to set class member "capsuleFile"\r
309 \r
310 @param capsuleFile capsule file name\r
311 **/\r
a15bb0d3 312 public void setCapsuleFile(String capsuleFile) {\r
0fdb42ac 313 this.capsuleFile.setArg(" ", capsuleFile);\r
a15bb0d3 314 }\r
315\r
316 /**\r
0fdb42ac 317 isJoinFlag\r
318 \r
319 This function is to get class member "joinFlag"\r
320 \r
321 @return joinFlag flag of if need to join split capsule images into\r
322 a single image.\r
323 **/\r
a15bb0d3 324 public String getJoinFlag() {\r
0fdb42ac 325 return joinFlag.getValue();\r
a15bb0d3 326 }\r
327\r
328 /**\r
0fdb42ac 329 setJoinFlag\r
330 \r
331 This function is to set class member "joinFlag"\r
332 \r
333 @param joinFlag flag of if need to join split capsule images into\r
334 a single image.\r
335 **/\r
a15bb0d3 336 public void setJoinFlag(boolean joinFlag) {\r
337 if (joinFlag){\r
0fdb42ac 338 this.joinFlag.setArg(" -", "j");\r
a15bb0d3 339 }\r
a15bb0d3 340 }\r
341}\r