]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/FwImageTask.java
Fix cleanall can't clean all genereated files. Now .i files generated by VfrCompile...
[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
878ddf1f 28/**\r
29 FwImageTask class.\r
30\r
31 FwImageTask is used to call FwImage.ext to generate the FwImage.\r
32**/\r
33public class FwImageTask extends Task implements EfiDefine{\r
34 ///\r
ff225cbb 35 /// time&data\r
878ddf1f 36 ///\r
37 private String time = "";\r
38 ///\r
39 /// input PE image\r
ff225cbb 40 ///\r
878ddf1f 41 private String peImage = "";\r
219e2247 42 private String peImageName = "";\r
878ddf1f 43 ///\r
44 /// output EFI image\r
ff225cbb 45 ///\r
878ddf1f 46 private String outImage = "";\r
47 ///\r
48 /// component type\r
49 ///\r
50 private String componentType = "";\r
51\r
52 /**\r
53 * assemble tool command line & execute tool command line\r
ff225cbb 54 *\r
878ddf1f 55 * @throws BuildException\r
56 */\r
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
fad77353 74 command = "FwImage";\r
878ddf1f 75 } else {\r
fad77353 76 command = path + "/" + "FwImage";\r
878ddf1f 77 }\r
78 //\r
79 // argument of tools\r
80 //\r
81 String argument = time + componentType + peImage + outImage;\r
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
99 log(Commandline.toString(cmdline.getCommandline()), Project.MSG_VERBOSE);\r
100 log(this.peImageName);\r
878ddf1f 101 revl = runner.execute();\r
102 if (EFI_SUCCESS == revl) {\r
3f7b510e 103 log("FwImage succeeded!", Project.MSG_VERBOSE);\r
878ddf1f 104 } else {\r
105 //\r
106 // command execution fail\r
107 //\r
219e2247 108 log("ERROR = " + Integer.toHexString(revl));\r
3f7b510e 109 throw new BuildException("FwImage failed!");\r
878ddf1f 110 }\r
111 } catch (Exception e) {\r
112 throw new BuildException(e.getMessage());\r
113 }\r
114 }\r
115\r
116 /**\r
117 setTime\r
ff225cbb 118\r
878ddf1f 119 This function is to set operation of class member "time".\r
ff225cbb 120\r
878ddf1f 121 @param time string of time\r
122 **/\r
123 public void setTime(String time) {\r
124 this.time = " -t " + time;\r
125 }\r
126\r
127 /**\r
128 getTime\r
ff225cbb 129\r
878ddf1f 130 This function is to get class member "time"\r
131 @return time string of time\r
132 **/\r
133 public String getTime() {\r
134 return this.time;\r
135 }\r
136\r
137 /**\r
138 getPeImage\r
ff225cbb 139\r
878ddf1f 140 This function is to get class member "peImage".\r
141 @return name of PE image\r
142 **/\r
143 public String getPeImage() {\r
144 return this.peImage;\r
145 }\r
146\r
147 /**\r
148 setPeImage\r
ff225cbb 149\r
878ddf1f 150 This function is to set class member "peImage"\r
151 @param peImage name of PE image\r
152 **/\r
153 public void setPeImage(String peImage) {\r
219e2247 154 this.peImageName = (new File(peImage)).getName();\r
878ddf1f 155 this.peImage = " " + peImage;\r
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
165 return this.outImage;\r
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
175 this.outImage = " " + outImage;\r
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
186 return this.componentType;\r
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
196 this.componentType = " " + componentType;\r
197 }\r
198}\r