]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenDepexTask.java
Remove dependence check of FD upon FlashMap.fdf
[mirror_edk2.git] / Tools / Source / FrameworkTasks / org / tianocore / framework / tasks / GenDepexTask.java
CommitLineData
878ddf1f 1/** @file\r
2 GenDepexTask class.\r
3\r
4 GenDepexTask is to call GenDepex.exe to generate depex section.\r
5 \r
6 Copyright (c) 2006, Intel Corporation\r
7 All rights reserved. This program and the accompanying materials\r
8 are licensed and made available under the terms and conditions of the BSD License\r
9 which accompanies this distribution. The full text of the license may be found at\r
10 http://opensource.org/licenses/bsd-license.php\r
11 \r
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
14\r
15 **/\r
16package org.tianocore.framework.tasks;\r
93f5dd0a 17\r
219e2247 18import java.io.File;\r
19\r
878ddf1f 20import org.apache.tools.ant.BuildException;\r
21import org.apache.tools.ant.Project;\r
22import org.apache.tools.ant.Task;\r
23import org.apache.tools.ant.taskdefs.Execute;\r
24import org.apache.tools.ant.taskdefs.LogStreamHandler;\r
25import org.apache.tools.ant.types.Commandline;\r
93f5dd0a 26\r
27import org.tianocore.common.logger.EdkLog;\r
28\r
878ddf1f 29/**\r
30 GenDepexTask\r
31 \r
32 GenDepexTask is to call GenDepex.exe to generate depex section.\r
33\r
34**/\r
35public class GenDepexTask extends Task implements EfiDefine {\r
93f5dd0a 36 private static String toolName = "GenDepex";\r
37 //\r
38 // output binary dependency files name\r
39 //\r
40 private FileArg outputFile = new FileArg();\r
41 //\r
42 // input pre-processed dependency text files name\r
43 //\r
44 private FileArg inputFile = new FileArg();\r
45 //\r
46 // padding integer value\r
47 //\r
48 private ToolArg padding = new FileArg();\r
878ddf1f 49 /**\r
50 execute\r
51 \r
52 GenDepexTask execute is to assemble tool command line & execute tool\r
53 command line.\r
54 */\r
55 public void execute() throws BuildException {\r
56\r
57 Project project = this.getOwningTarget().getProject();\r
58 //\r
59 // absolute path of edk tools\r
60 //\r
2da8968b 61 String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");\r
878ddf1f 62 String command;\r
63 if (path == null) {\r
93f5dd0a 64 command = toolName;\r
878ddf1f 65 } else {\r
93f5dd0a 66 command = path + File.separator + toolName;\r
878ddf1f 67 }\r
68 //\r
69 // argument of GenDepex tool\r
70 //\r
93f5dd0a 71 String argument = "" + inputFile + outputFile + padding;\r
878ddf1f 72 //\r
73 // reture value of GenDepex execution\r
74 //\r
75 int returnVal = -1;\r
76\r
77 try {\r
78 Commandline commandLine = new Commandline();\r
79 commandLine.setExecutable(command);\r
80 commandLine.createArgument().setLine(argument);\r
81\r
82 LogStreamHandler streamHandler = new LogStreamHandler(this,\r
83 Project.MSG_INFO, Project.MSG_WARN);\r
84\r
85 Execute runner = new Execute(streamHandler, null);\r
86 runner.setAntRun(project);\r
87 runner.setCommandline(commandLine.getCommandline());\r
88\r
93f5dd0a 89 EdkLog.log(this, EdkLog.EDK_VERBOSE, Commandline.toString(commandLine.getCommandline()));\r
90 EdkLog.log(this, inputFile.toFileList() + " => " + outputFile.toFileList());\r
91\r
878ddf1f 92 returnVal = runner.execute();\r
93 if (EFI_SUCCESS == returnVal) {\r
93f5dd0a 94 EdkLog.log(this, EdkLog.EDK_VERBOSE, "GenDepex succeeded!");\r
878ddf1f 95 } else {\r
96 //\r
97 // command execution fail\r
98 //\r
93f5dd0a 99 EdkLog.log(this, "ERROR = " + Integer.toHexString(returnVal));\r
219e2247 100 throw new BuildException("GenDepex failed!");\r
878ddf1f 101 }\r
102 } catch (Exception e) {\r
103 throw new BuildException(e.getMessage());\r
104 }\r
105 }\r
106\r
107 /**\r
108 setOutputFile\r
109 \r
110 This function is to set class member "outputFile"\r
111 @param outputFileName name of output file\r
112 **/\r
113 public void setOutputFile(String outputFileName) {\r
93f5dd0a 114 this.outputFile.setArg(" -O ", outputFileName);\r
878ddf1f 115 }\r
116\r
117 /**\r
118 getOutputFile\r
119 \r
120 This function is to get class member "outputFile".\r
121 \r
122 @return name of ouput file\r
123 **/\r
124 public String getOutputFile() {\r
93f5dd0a 125 return this.outputFile.getValue();\r
878ddf1f 126 }\r
127\r
128 /**\r
129 setInputFile\r
130 \r
131 This function is to set class member "inputFile".\r
132 @param inputFileName name of inputFile\r
133 **/\r
134 public void setInputFile(String inputFileName) {\r
93f5dd0a 135 this.inputFile.setArg(" -I ", inputFileName);\r
878ddf1f 136 }\r
137\r
138 /**\r
139 getInputFile\r
140 \r
141 This function is to get class member "inputFile"\r
142 @return name of input file\r
143 **/\r
144 public String getInputFile() {\r
93f5dd0a 145 return this.inputFile.getValue();\r
878ddf1f 146 }\r
147\r
148 /**\r
149 setPadding\r
150 \r
151 This function is to set class member "padding"\r
152 @param paddingNum padding value\r
153 **/\r
154 public void setPadding(String paddingNum) {\r
93f5dd0a 155 this.padding.setArg(" -P ", paddingNum);\r
878ddf1f 156 }\r
157\r
158 /**\r
159 getPadding\r
160 \r
161 This function is to get class member "padding"\r
162 @return value of padding\r
163 **/\r
164 public String getPadding() {\r
93f5dd0a 165 return this.padding.getValue();\r
878ddf1f 166 }\r
fad77353 167}\r