]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/FwImageTask.java
Update log.
[mirror_edk2.git] / Tools / Source / FrameworkTasks / org / tianocore / framework / tasks / FwImageTask.java
CommitLineData
878ddf1f 1/** @file\r
2 FwImageTask class.\r
3\r
4 FwImageTask is used to call FwImage.ext to generate the FwImage.\r
ff225cbb 5\r
6\r
878ddf1f 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
878ddf1f 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
219e2247 19import java.io.File;\r
20\r
878ddf1f 21import org.apache.tools.ant.BuildException;\r
219e2247 22import org.apache.tools.ant.Project;\r
23import org.apache.tools.ant.Task;\r
878ddf1f 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
93f5dd0a 28import org.tianocore.common.logger.EdkLog;\r
29\r
878ddf1f 30/**\r
31 FwImageTask class.\r
32\r
33 FwImageTask is used to call FwImage.ext to generate the FwImage.\r
34**/\r
93f5dd0a 35public class FwImageTask extends Task implements EfiDefine {\r
36 //\r
37 // fwimage tool name\r
38 // \r
39 private static String toolName = "FwImage";\r
40 //\r
41 // time&data\r
42 //\r
43 private ToolArg time = new ToolArg();\r
44 //\r
45 // input PE image\r
46 //\r
47 private FileArg peImage = new FileArg();\r
48 //\r
49 // output EFI image\r
50 //\r
51 private FileArg outImage = new FileArg();\r
52 //\r
53 // component type\r
54 //\r
55 private ToolArg componentType = new ToolArg();\r
878ddf1f 56\r
57 /**\r
58 * assemble tool command line & execute tool command line\r
ff225cbb 59 *\r
878ddf1f 60 * @throws BuildException\r
61 */\r
62 /**\r
ff225cbb 63 execute\r
64\r
878ddf1f 65 FwimageTask execute function is to assemble tool command line & execute\r
66 tool command line\r
ff225cbb 67\r
878ddf1f 68 @throws BuidException\r
69 **/\r
70 public void execute() throws BuildException {\r
71\r
72 Project project = this.getOwningTarget().getProject();\r
73 //\r
74 // absolute path of efi tools\r
75 //\r
2da8968b 76 String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");\r
878ddf1f 77 String command;\r
78 if (path == null) {\r
93f5dd0a 79 command = toolName;\r
878ddf1f 80 } else {\r
93f5dd0a 81 command = path + "/" + toolName;\r
878ddf1f 82 }\r
83 //\r
84 // argument of tools\r
85 //\r
93f5dd0a 86 String argument = "" + time + componentType + peImage + outImage;\r
878ddf1f 87 //\r
88 // return value of fwimage execution\r
89 //\r
90 int revl = -1;\r
91\r
92 try {\r
93 Commandline cmdline = new Commandline();\r
94 cmdline.setExecutable(command);\r
95 cmdline.createArgument().setLine(argument);\r
96\r
97 LogStreamHandler streamHandler = new LogStreamHandler(this,\r
98 Project.MSG_INFO, Project.MSG_WARN);\r
99 Execute runner = new Execute(streamHandler, null);\r
100\r
101 runner.setAntRun(project);\r
102 runner.setCommandline(cmdline.getCommandline());\r
219e2247 103\r
93f5dd0a 104 EdkLog.log(this, EdkLog.EDK_VERBOSE, Commandline.toString(cmdline.getCommandline()));\r
105 EdkLog.log(this, peImage.toFileList() + " => " + outImage.toFileList());\r
106\r
878ddf1f 107 revl = runner.execute();\r
108 if (EFI_SUCCESS == revl) {\r
93f5dd0a 109 EdkLog.log(this, EdkLog.EDK_VERBOSE, "FwImage succeeded!");\r
878ddf1f 110 } else {\r
111 //\r
112 // command execution fail\r
113 //\r
93f5dd0a 114 EdkLog.log(this, "ERROR = " + Integer.toHexString(revl));\r
3f7b510e 115 throw new BuildException("FwImage failed!");\r
878ddf1f 116 }\r
117 } catch (Exception e) {\r
118 throw new BuildException(e.getMessage());\r
119 }\r
120 }\r
121\r
122 /**\r
123 setTime\r
ff225cbb 124\r
878ddf1f 125 This function is to set operation of class member "time".\r
ff225cbb 126\r
878ddf1f 127 @param time string of time\r
128 **/\r
129 public void setTime(String time) {\r
93f5dd0a 130 this.time.setArg(" -t ", time);\r
878ddf1f 131 }\r
132\r
133 /**\r
134 getTime\r
ff225cbb 135\r
878ddf1f 136 This function is to get class member "time"\r
137 @return time string of time\r
138 **/\r
139 public String getTime() {\r
93f5dd0a 140 return this.time.getValue();\r
878ddf1f 141 }\r
142\r
143 /**\r
144 getPeImage\r
ff225cbb 145\r
878ddf1f 146 This function is to get class member "peImage".\r
147 @return name of PE image\r
148 **/\r
149 public String getPeImage() {\r
93f5dd0a 150 return this.peImage.getValue();\r
878ddf1f 151 }\r
152\r
153 /**\r
154 setPeImage\r
ff225cbb 155\r
878ddf1f 156 This function is to set class member "peImage"\r
157 @param peImage name of PE image\r
158 **/\r
159 public void setPeImage(String peImage) {\r
93f5dd0a 160 this.peImage.setArg(" ", peImage);\r
878ddf1f 161 }\r
162\r
163 /**\r
164 getOutImage\r
ff225cbb 165\r
878ddf1f 166 This function is to get class member "outImage".\r
167 @return name of output EFI image\r
168 **/\r
169 public String getOutImage() {\r
93f5dd0a 170 return this.outImage.getValue();\r
878ddf1f 171 }\r
172\r
173 /**\r
174 setOutImage\r
ff225cbb 175\r
878ddf1f 176 This function is to set class member "outImage".\r
177 @param outImage name of output EFI image\r
178 **/\r
179 public void setOutImage(String outImage) {\r
93f5dd0a 180 this.outImage.setArg(" ", outImage);\r
878ddf1f 181 }\r
182\r
183 /**\r
184 getComponentType\r
ff225cbb 185\r
878ddf1f 186 This function is to get class member "componentType".\r
ff225cbb 187\r
878ddf1f 188 @return string of componentType\r
189 **/\r
190 public String getComponentType() {\r
93f5dd0a 191 return this.componentType.getValue();\r
878ddf1f 192 }\r
193\r
194 /**\r
195 setComponentType\r
ff225cbb 196\r
878ddf1f 197 This function is to set class member "componentType".\r
198 @param componentType string of component type\r
199 **/\r
200 public void setComponentType(String componentType) {\r
93f5dd0a 201 this.componentType.setArg(" ", componentType);\r
878ddf1f 202 }\r
203}\r