]> git.proxmox.com Git - mirror_edk2.git/blob - Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenCRC32SectionTask.java
Fixed the issue caused by introducing INCLUDE_PATH property;
[mirror_edk2.git] / Tools / Source / FrameworkTasks / org / tianocore / framework / tasks / GenCRC32SectionTask.java
1 /** @file
2 GenCRC32SectionTask class.
3
4 GenCRC32SectionTask is to call GenCRC32Section.exe to generate crc32 section.
5
6 Copyright (c) 2006, Intel Corporation
7 All rights reserved. This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
11
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14
15 **/
16
17 package org.tianocore.framework.tasks;
18
19 import java.util.*;
20 import org.apache.tools.ant.Project;
21 import org.apache.tools.ant.Task;
22 import org.apache.tools.ant.BuildException;
23 import org.apache.tools.ant.taskdefs.Execute;
24 import org.apache.tools.ant.taskdefs.LogStreamHandler;
25 import org.apache.tools.ant.types.Commandline;
26
27 /**
28 GenCRC32SectionTask
29
30 GenCRC32SectionTask is to call GenCRC32Section.exe to generate crc32 section.
31
32 **/
33 public class GenCRC32SectionTask extends Task implements EfiDefine {
34 ///
35 /// output file
36 ///
37 private String outputFile;
38 ///
39 /// inputFile list
40 ///
41 private List<NestElement> inputFileList = new ArrayList<NestElement>();
42
43 ///
44 /// Project
45 ///
46 static private Project project;
47
48 /**
49 execute
50
51 GenCRC32SectionTask execute is to assemble tool command line & execute
52 tool command line
53
54 @throws BuildException
55 **/
56 public void execute() throws BuildException {
57
58 project = this.getOwningTarget().getProject();
59 ///
60 /// absolute path of efi tools
61 ///
62 String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");
63 String command;
64 if (path == null) {
65 command = "GenCRC32Section";
66 } else {
67 command = path + "/" + "GenCRC32Section" ;
68 }
69 //
70 // string line of input files
71 //
72 String inputFiles = " -i ";
73 for (int i = 0; i < inputFileList.size(); ++i) {
74 inputFiles += inputFileList.get(i).toString(" ");
75 }
76
77 //
78 // assemble argument
79 //
80 String argument = inputFiles + outputFile;
81 //
82 // return value of fwimage execution
83 //
84 int revl = -1;
85
86 try {
87 Commandline cmdline = new Commandline();
88 cmdline.setExecutable(command);
89 cmdline.createArgument().setLine(argument);
90
91 LogStreamHandler streamHandler = new LogStreamHandler(this, Project.MSG_INFO, Project.MSG_WARN);
92 Execute runner = new Execute(streamHandler, null);
93
94 runner.setAntRun(project);
95 runner.setCommandline(cmdline.getCommandline());
96 log(Commandline.toString(cmdline.getCommandline()), Project.MSG_VERBOSE);
97 log(" ");
98 revl = runner.execute();
99 if (EFI_SUCCESS == revl){
100 //
101 // command execution success
102 //
103 log("GenCRC32Section succeeded!", Project.MSG_VERBOSE);
104 } else {
105 //
106 // command execution fail
107 //
108 log("ERROR = " + Integer.toHexString(revl));
109 // LAH Added This Line
110 throw new BuildException("GenCRC32Section failed!");
111 }
112 } catch (Exception e) {
113 throw new BuildException(e.getMessage());
114 }
115 }
116
117 /**
118 addInputFile
119
120 This function is to add a inputFile element into list
121 @param inputFile : inputFile element
122 **/
123 public void addInputfile(InputFile inputFile) {
124 inputFileList.add(inputFile);
125 }
126
127 /**
128 get class member "outputFile"
129 * @return name of output file
130 */
131 public String getOutputFile() {
132 return this.outputFile;
133 }
134 /**
135 * set class member "outputFile"
136 * @param outputFile : outputFile parameter
137 */
138 public void setOutputFile(String outputFile) {
139 this.outputFile = " -o " + outputFile;
140 }
141 }