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