Add follows warpped tianotools to frameworktask:

1. CreateMtFileTask
2. EfiCompressTask
3. EfiRomTask
4. FlashMapTask
5. GenAcpiTableTask
6. GenCapsuleHdrTask
7. GenTeImageTask
8. PeiReBaseTask
9. SectApResetVectorFixupTask
10.SecFixupTask
11.SplitfileTask
12.StripTask
13.ZeroDebugDataTask

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@720 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qouyang 2006-07-03 08:25:23 +00:00
parent a2d0e90908
commit a15bb0d31f
17 changed files with 3595 additions and 2 deletions

View File

@ -9,3 +9,16 @@ genfvimage=org.tianocore.framework.tasks.GenFvImageTask
guidchk= org.tianocore.framework.tasks.GuidChkTask
gencrc32section=org.tianocore.framework.tasks.GenCRC32SectionTask
makedeps=org.tianocore.framework.tasks.MakeDeps
edkStrip=org.tianocore.framework.tasks.StripTask
splitfile=org.tianocore.framework.tasks.SplitfileTask
genacpitable=org.tianocore.framework.tasks.GenAcpiTableTask
genteimage=org.tianocore.framework.tasks.GenTeImageTask
secfixup=org.tianocore.framework.tasks.SecFixupTask
peirebase=org.tianocore.framework.tasks.PeiReBaseTask
eficompress=org.tianocore.framework.tasks.EfiCompressTask
zerodebugdata=org.tianocore.framework.tasks.ZeroDebugDataTask
createmtfile=org.tianocore.framework.tasks.CreateMtFileTask
efirom=org.tianocore.framework.tasks.EfiRomTask
secapresetvectorfixup=org.tianocore.framework.tasks.SecApResetVectorFixupTask
gencapsulehdr=org.tianocore.framework.tasks.GenCapsuleHdrTask
flashmap=org.tianocore.framework.tasks.FlashMapTask

View File

@ -17,7 +17,6 @@
package org.tianocore.framework.tasks;
import org.apache.tools.ant.BuildException;
/**
Internal class: This class is to generate the compressed section header.

View File

@ -0,0 +1,203 @@
/** @file
CreateMtFileTask class.
CreateMtFileTask is used to call CreateMtFile.exe to create MT file.
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.framework.tasks;
import java.io.File;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.LogStreamHandler;
import org.apache.tools.ant.types.Commandline;
import org.tianocore.logger.EdkLog;
/**
CreateMtFileTask class.
CreateMtFileTask is used to call CreateMtFile.exe to create MT file.
**/
public class CreateMtFileTask extends Task implements EfiDefine {
///
/// Tool name
///
private String toolName="CreateMtFile";
///
/// file size
///
private String fileSize = "";
///
/// output file
///
private String outputFile = "";
///
/// output directory, this variable is added by jave wrap
///
private String outputDir = "";
/**
* execute
*
* StripTask execute function is to assemble tool command line & execute
* tool command line
*
* @throws BuidException
*/
public void execute() throws BuildException {
Project project = this.getOwningTarget().getProject();
//
// set Logger
//
FrameworkLogger logger = new FrameworkLogger(project, "createmtfile");
EdkLog.setLogLevel(project.getProperty("env.LOGLEVEL"));
EdkLog.setLogger(logger);
//
// absolute path of efi tools
//
String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");
String command;
String argument;
if (path == null) {
command = toolName;
} else {
command = path + File.separatorChar + toolName;
}
//
// argument of tools
//
File file = new File(outputFile);
if (!file.isAbsolute() && (!this.outputDir.equalsIgnoreCase(""))) {
argument = outputDir + File.separatorChar + outputFile + " " + this.fileSize;
} else {
argument = outputFile + " " + this.fileSize;
}
//
// return value of fwimage execution
//
int revl = -1;
try {
Commandline cmdline = new Commandline();
cmdline.setExecutable(command);
cmdline.createArgument().setLine(argument);
LogStreamHandler streamHandler = new LogStreamHandler(this,
Project.MSG_INFO, Project.MSG_WARN);
Execute runner = new Execute(streamHandler, null);
runner.setAntRun(project);
runner.setCommandline(cmdline.getCommandline());
//
// Set debug log information.
//
EdkLog.log(EdkLog.EDK_INFO, Commandline.toString(cmdline.getCommandline()));
revl = runner.execute();
if (EFI_SUCCESS == revl) {
//
// command execution success
//
EdkLog.log(EdkLog.EDK_INFO,"CreateMtFile succeeded!");
} else {
//
// command execution fail
//
EdkLog.log(EdkLog.EDK_ERROR, "CreateMtFile failed. (error="
+ Integer.toHexString(revl) + ")");
throw new BuildException("CreateMtFile failed. (error="
+ Integer.toHexString(revl) + ")");
}
} catch (Exception e) {
throw new BuildException(e.getMessage());
}
}
/**
* getFileSize
*
* This function is to get class member "fileSize".
*
* @return fileSize string of file size.
*/
public String getFileSize() {
return this.fileSize;
}
/**
* setFileSize
*
* This function is to set class member "fileSize".
*
* @param fileSize
* string of file size value.
*/
public void setFileSize(String fileSize) {
this.fileSize = fileSize;
}
/**
* getOutputFile
*
* This function is to get class member "outputFile"
*
* @return outputFile string of output file name.
*/
public String getOutputFile() {
return outputFile;
}
/**
* setOutputFile
*
* This function is to set class member "outputFile"
*
* @param outputFile
* string of output file name.
*/
public void setOutputFile(String outputFile) {
this.outputFile = outputFile;
}
/**
* getOutputDir
*
* This function is to get class member "outputDir"
*
* @return outputDir string of output directory.
*/
public String getOutputDir() {
return outputDir;
}
/**
* setOutputDir
*
* This function is to set class member "outputDir"
*
* @param outputDir
* string of output directory.
*/
public void setOutputDir(String outputDir) {
this.outputDir = outputDir;
}
}

View File

@ -0,0 +1,199 @@
/** @file
EfiCompressTask class.
EfiCompressTask is used to call EfiCompress.exe to strip input file.
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.framework.tasks;
import java.io.File;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.LogStreamHandler;
import org.apache.tools.ant.types.Commandline;
import org.tianocore.logger.EdkLog;
/**
EfiCompressTask class.
EfiCompressTask is used to call EfiCompress.exe to strip input file.
**/
public class EfiCompressTask extends Task implements EfiDefine {
// /
// / input file
// /
private String inputFile = "";
// /
// / output file
// /
private String outputFile = "";
// /
// / output directory, this variable is added by jave wrap
// /
private String outputDir = "";
/**
* execute
*
* EfiCompressTask execute function is to assemble tool command line & execute
* tool command line
*
* @throws BuidException
*/
public void execute() throws BuildException {
Project project = this.getOwningTarget().getProject();
//
// set Logger
//
FrameworkLogger logger = new FrameworkLogger(project, "eficompress");
EdkLog.setLogLevel(project.getProperty("env.LOGLEVEL"));
EdkLog.setLogger(logger);
//
// absolute path of efi tools
//
String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");
String command;
String argument;
if (path == null) {
command = "EfiCompress";
} else {
command = path + File.separatorChar + "EfiCompress";
}
//
// argument of tools
//
File file = new File(outputFile);
if (!file.isAbsolute() && (!this.outputDir.equalsIgnoreCase(""))) {
argument = inputFile + " " + outputDir + File.separatorChar
+ outputFile;
} else {
argument = inputFile + " " + outputFile;
}
//
// return value of fwimage execution
//
int revl = -1;
try {
Commandline cmdline = new Commandline();
cmdline.setExecutable(command);
cmdline.createArgument().setLine(argument);
LogStreamHandler streamHandler = new LogStreamHandler(this,
Project.MSG_INFO, Project.MSG_WARN);
Execute runner = new Execute(streamHandler, null);
runner.setAntRun(project);
runner.setCommandline(cmdline.getCommandline());
//
// Set debug log information.
//
EdkLog.log(EdkLog.EDK_INFO, Commandline.toString(cmdline.getCommandline()));
revl = runner.execute();
if (EFI_SUCCESS == revl) {
//
// command execution success
//
EdkLog.log(EdkLog.EDK_INFO,"EfiCompress succeeded!");
} else {
//
// command execution fail
//
EdkLog.log(EdkLog.EDK_ERROR, "EfiCompress failed. (error="
+ Integer.toHexString(revl) + ")");
throw new BuildException("Strip failed. (error="
+ Integer.toHexString(revl) + ")");
}
} catch (Exception e) {
throw new BuildException(e.getMessage());
}
}
/**
* getInputFile
*
* This function is to get class member "inputFile".
*
* @return string of input file name.
*/
public String getInputFile() {
return inputFile;
}
/**
* setComponentType
*
* This function is to set class member "inputFile".
*
* @param inputFile
* string of input file name.
*/
public void setInputFile(String inputFile) {
this.inputFile = inputFile;
}
/**
* getOutputFile
*
* This function is to get class member "outputFile"
*
* @return outputFile string of output file name.
*/
public String getOutputFile() {
return outputFile;
}
/**
* setOutputFile
*
* This function is to set class member "outputFile"
*
* @param outputFile
* string of output file name.
*/
public void setOutputFile(String outputFile) {
this.outputFile = outputFile;
}
/**
* getOutputDir
*
* This function is to get class member "outputDir"
*
* @return outputDir string of output directory.
*/
public String getOutputDir() {
return outputDir;
}
/**
* setOutputDir
*
* This function is to set class member "outputDir"
*
* @param outputDir
* string of output directory.
*/
public void setOutputDir(String outputDir) {
this.outputDir = outputDir;
}
}

View File

@ -0,0 +1,416 @@
/** @file
EfiRomTask class.
EfiRomTask is used to call FlashMap.exe to lay out the flash.
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.framework.tasks;
import java.io.File;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.tianocore.logger.EdkLog;
/**
* SecFixupTask class.
*
* SecFixupTask is used to call SecFixup.exe to fix up sec image.
*/
public class EfiRomTask extends Task implements EfiDefine {
///
/// tool name
///
private final String toolName = "EfiRom";
///
/// Flash default file
///
private String verbose = "";
///
/// Flash device
///
private String venderId = "";
///
/// Flash device Image
///
private String deviceId = "";
///
/// MCI file
///
private String outputFile = "";
///
/// MCO file
///
private List<Input> binaryFileList = new ArrayList<Input>();
///
/// Efi PE32 image file
///
private List<Input> pe32FileList = new ArrayList<Input>();
///
/// Compress efi PE32 image file
///
private List<Input> pe32ComprFileList = new ArrayList<Input>();
///
/// Hex class code in the PCI data strutor header
///
private String classCode = "";
///
/// Hex revision in the PCI data header.
///
private String revision = "";
///
/// Dump the headers of an existing option rom image.
///
private String dump = "";
///
/// output directory
///
private String outputDir = "";
///
/// command and argument list
///
LinkedList<String> argList = new LinkedList<String>();
/**
* execute
*
* EfiRomTask execute function is to assemble tool command line & execute
* tool command line
*
* @throws BuidException
*/
public void execute() throws BuildException {
Project project = this.getOwningTarget().getProject();
//
// set Logger
//
FrameworkLogger logger = new FrameworkLogger(project, "efirom");
EdkLog.setLogLevel(project.getProperty("env.LOGLEVEL"));
EdkLog.setLogger(logger);
//
// absolute path of efi tools
//
String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");
String command;
if (path == null) {
command = toolName;
} else {
command = path + File.separatorChar + toolName;
}
argList.addFirst(command);
//
// add microcode binary files
//
if (this.binaryFileList.size() > 0){
argList.add("-b");
Iterator binList = this.binaryFileList.iterator();
while (binList.hasNext()){
argList.add(((Input)binList.next()).getFile());
}
}
//
// add pe32 file
//
if (this.pe32FileList.size() > 0){
argList.add("-e");
Iterator pe32List = this.pe32FileList.iterator();
while (pe32List.hasNext()){
argList.add(((Input)pe32List.next()).getFile());
}
}
//
// add compressed pe32 file
//
if (this.pe32ComprFileList.size() > 0){
argList.add("-ec");
Iterator pe32ComprList = this.pe32ComprFileList.iterator();
while (pe32ComprList.hasNext()){
argList.add(((Input)pe32ComprList.next()).getFile());
}
}
EdkLog.log(EdkLog.EDK_INFO, argList.toString().replaceAll(",",""));
//
// lauch the program
//
ProcessBuilder pb = new ProcessBuilder(argList);
pb.directory(new File(outputDir));
int exitCode = 0;
try {
Process cmdProc = pb.start();
InputStreamReader cmdOut = new InputStreamReader(cmdProc.getInputStream());
char[] buf = new char[1024];
exitCode = cmdProc.waitFor();
if (exitCode != 0) {
int len = cmdOut.read(buf, 0, 1024);
EdkLog.log(EdkLog.EDK_ERROR,new String(buf, 0, len));
} else {
EdkLog.log(EdkLog.EDK_INFO, "FlashMap succeed!");
}
} catch (Exception e) {
throw new BuildException(e.getMessage());
} finally {
if (exitCode != 0) {
//throw new BuildException("GenFvImage: failed to generate FV file!");
}
}
}
/**
* getVerbose
*
* This function is to get class member "verbose"
*
* @return verbose for verbose output.
*/
public String getVerbose() {
return verbose;
}
/**
* setVerbose
*
* This function is to set class member "verbose"
*
* @param verbose for verbose output.
*/
public void setVerbose(boolean verbose) {
if (verbose){
this.verbose = "-p";
argList.add(this.verbose);
}
}
/**
* getVenderId
*
* This function is to get class member "venderId"
*
* @return venderId String of venderId.
*/
public String getVenderId() {
return venderId;
}
/**
* setVenderId
*
* This function is to set class member "venderId"
*
* @param venderId String of venderId.
*/
public void setVenderId(String VenderId) {
this.venderId = VenderId;
argList.add("-v");
argList.add(this.venderId);
}
/**
* getDeviceId
*
* This function is to get class member "deviceId"
*
* @return deviceId String of device ID.
*/
public String getDeviceId() {
return this.deviceId;
}
/**
* setDeviceId
*
* This function is to set class member "deviceId"
*
* @param deviceId String of device ID.
*/
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
argList.add("-d");
argList.add(this.deviceId);
}
/**
* getOutputFile
*
* This function is to get class member "outputFile"
*
* @return outputFile name of output directory.
*/
public String getOutputFile() {
return outputFile;
}
/**
* setOutputFile
*
* This function is to set class member "dscFile"
*
* @param outputFile name of DSC file
*/
public void setOutputFile(String outputFile) {
this.outputFile = outputFile;
}
/**
* getClassCode
*
* This function is to get class member "classCode"
*
* @return fdImage name of class code file.
*/
public String getClassCode() {
return classCode;
}
/**
* setclassCode
*
* This function is to set class member "fdImage"
*
* @param fdImage name of class code file.
*/
public void setclassCode(String classCode) {
this.classCode = classCode;
argList.add("-cc");
argList.add(this.classCode);
}
/**
* getRevision
*
* This function is to get class member "revision".
*
* @return revision hex revision in the PDI data header.
*/
public String getRevision() {
return revision;
}
/**
* setRevision
*
* This function is to set class member "revision"
*
* @param revision hex revision in the PDI data header.
*/
public void setRevision(String revision) {
this.revision = revision;
argList.add("-rev");
argList.add(this.revision);
}
/**
* getFlashDeviceImage
*
* This function is to get class member "flashDeviceImage"
*
* @return flashDeviceImage name of flash device image
*/
public String getDump() {
return dump;
}
/**
* setFlashDeviceImage
*
* This function is to set class member "flashDeviceImage"
*
* @param flashDeviceImage name of flash device image
*/
public void setDump(boolean dump) {
if (dump){
this.dump = "-dump";
argList.add(this.dump);
}
}
/**
* getOutputDir
*
* This function is to get class member "outputDir"
*
* @return outputDir string of output directory
*/
public String getOutputDir() {
return outputDir;
}
/**
* setOutputDir
*
* This function is to set class member "outputDir"
*
* @param outputDir string of output directory
*/
public void setOutputDir(String outputDir) {
this.outputDir = outputDir;
}
/**
* addBinaryFile
*
* This function is to add binary file to binaryFile list.
*
* @param binaryFile name of binary file.
*/
public void addBinaryFile(Input binaryFile){
this.binaryFileList.add(binaryFile);
}
/**
* addPe32File
*
* This function is to add pe32 file to pe32File list.
*
* @param pe32File name of pe32 file.
*/
public void addPe32File(Input pe32File){
this.pe32FileList.add(pe32File);
}
/**
* addPe32ComprFile
*
* This function os to add compressed pe32 file to pe32ComprFile list.
*
* @param pe32ComprFile name of compressed pe32 file.
*/
public void addPe32ComprFile(Input pe32ComprFile){
this.pe32ComprFileList.add(pe32ComprFile);
}
}

View File

@ -0,0 +1,624 @@
/** @file
FlashMapTask class.
FlashMapTask is used to call FlashMap.exe to lay out the flash.
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.framework.tasks;
import java.io.File;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.tianocore.logger.EdkLog;
/**
* SecFixupTask class.
*
* SecFixupTask is used to call SecFixup.exe to fix up sec image.
*/
public class FlashMapTask extends Task implements EfiDefine {
// /
// / tool name
// /
private final String toolName = "FlashMap";
// /
// / Flash default file
// /
private String flashDefFile = "";
// /
// / Flash device
// /
private String flashDevice = "";
// /
// / Flash device Image
// /
private String flashDeviceImage = "";
// /
// / MCI file
// /
private String mciFile = "";
// /
// / MCO file
// /
private String mcoFile = "";
// /
// / Discover FD image
// /
private String fdImage = "";
// /
// / Dsc file
// /
private String dscFile = "";
// /
// / Asm INC file
// /
private String asmIncFile = "";
// /
// / Image out file
// /
private String imageOutFile = "";
// /
// / Header file
// /
private String headerFile = "";
// /
// / Input string file
// /
private String inStrFile = "";
// /
// / Output string file
// /
private String outStrFile = "";
// /
// / Base address
// /
private String baseAddr = "";
// /
// / Aligment
// /
private String aligment = "";
// /
// / Padding value
// /
private String padValue = "";
// /
// / output directory
// /
private String outputDir = "";
// /
// / MCI file array
// /
List<Input> mciFileArray = new ArrayList<Input>();
// /
// / command and argument list
// /
LinkedList<String> argList = new LinkedList<String>();
/**
* execute
*
* FlashMapTask execute function is to assemble tool command line & execute
* tool command line
*
* @throws BuidException
*/
public void execute() throws BuildException {
Project project = this.getOwningTarget().getProject();
//
// set Logger
//
FrameworkLogger logger = new FrameworkLogger(project, "flashmap");
EdkLog.setLogLevel(project.getProperty("env.LOGLEVEL"));
EdkLog.setLogger(logger);
//
// absolute path of efi tools
//
String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");
String command;
if (path == null) {
command = toolName;
} else {
command = path + File.separatorChar + toolName;
}
argList.addFirst(command);
//
// add substituted input file and output file
//
if (this.inStrFile != null && this.outStrFile != null
&& !this.inStrFile.equalsIgnoreCase("")
&& !this.inStrFile.equalsIgnoreCase("")) {
argList.add("-strsub");
argList.add(this.inStrFile);
argList.add(this.outStrFile);
}
//
// add microcode binary files
//
if (mciFileArray.size() > 0) {
argList.add("-mcmerge");
Iterator mciList = mciFileArray.iterator();
while (mciList.hasNext()) {
argList.add(((Input) mciList.next()).getFile());
}
}
EdkLog.log(EdkLog.EDK_INFO, argList.toString().replace(",",""));
//
// lauch the program
//
ProcessBuilder pb = new ProcessBuilder(argList);
pb.directory(new File(outputDir));
int exitCode = 0;
try {
Process cmdProc = pb.start();
InputStreamReader cmdOut = new InputStreamReader(cmdProc
.getInputStream());
char[] buf = new char[1024];
exitCode = cmdProc.waitFor();
//
// log command line string.
//
EdkLog.log(EdkLog.EDK_INFO, cmdProc.getOutputStream().toString());
if (exitCode != 0) {
int len = cmdOut.read(buf, 0, 1024);
EdkLog.log(EdkLog.EDK_ERROR, new String(buf, 0, len));
} else {
EdkLog.log(EdkLog.EDK_INFO, "FlashMap succeed!");
}
} catch (Exception e) {
throw new BuildException(e.getMessage());
} finally {
if (exitCode != 0) {
// throw new BuildException("GenFvImage: failed to generate FV
// file!");
}
}
}
/**
* getFlashDefFile
*
* This function is to get class member "flashDefFile"
*
* @return flashDeFile Name of flash definition file.
*/
public String getFlashDefFile() {
return flashDefFile;
}
/**
* setFlashDefFile
*
* This function is to set class member "flashDefFile"
*
* @param flashDefFile
* Name of flash definition file.
*/
public void setFlashDefFile(String flashDefFile) {
this.flashDefFile = flashDefFile;
argList.add("-fdf");
argList.add(this.flashDefFile);
}
/**
* getAligment
*
* This function is to get class member "aligment"
*
* @return aligment String of aligment value.
*/
public String getAligment() {
return aligment;
}
/**
* setAligment
*
* This function is to set class member "aligment"
*
* @param aligment
* String of aligment value.
*/
public void setAligment(String aligment) {
this.aligment = aligment;
argList.add("-align");
argList.add(this.aligment);
}
/**
* getAsmIncFile
*
* This function is to get class member "asmIncFile"
*
* @return asmIncFile String of ASM include file.
*/
public String getAsmIncFile() {
return asmIncFile;
}
/**
* setAsmIncFile
*
* This function is to set class member "asmIncFile"
*
* @param asmIncFile
* String of ASM include file.
*/
public void setAsmIncFile(String asmIncFile) {
this.asmIncFile = asmIncFile;
argList.add("-asmincfile");
argList.add(this.asmIncFile);
}
/**
* getBaseAddr
*
* This function is to get class member "baseAddr"
*
* @return baseAddr String of base address value.
*/
public String getBaseAddr() {
return baseAddr;
}
/**
* setBaseAddr
*
* This function is to set class member "baseAddr"
*
* @param baseAddr
* String of base address value.
*/
public void setBaseAddr(String baseAddr) {
this.baseAddr = baseAddr;
argList.add("-baseaddr");
argList.add(this.baseAddr);
}
/**
* getDscFile
*
* This function is to get class member "dscFile"
*
* @return dscFile name of DSC file
*/
public String getDscFile() {
return dscFile;
}
/**
* setDscFile
*
* This function is to set class member "dscFile"
*
* @param dscFile
* name of DSC file
*/
public void setDscFile(String dscFile) {
this.dscFile = dscFile;
argList.add("-dsc");
argList.add(this.dscFile);
}
/**
* getFdImage
*
* This function is to get class member "fdImage"
*
* @return fdImage name of input FDI image file.
*/
public String getFdImage() {
return fdImage;
}
/**
* setFdImage
*
* This function is to set class member "fdImage"
*
* @param fdImage
* name of input FDI image file.
*/
public void setFdImage(String fdImage) {
this.fdImage = fdImage;
argList.add("-discover");
argList.add(this.fdImage);
}
/**
* getFlashDevice
*
* This function is to get class member "flashDevice".
*
* @return flashDevice name of flash device.
*/
public String getFlashDevice() {
return flashDevice;
}
/**
* setFlashDevice
*
* This function is to set class member "flashDevice"
*
* @param flashDevice
* name of flash device.
*/
public void setFlashDevice(String flashDevice) {
this.flashDevice = flashDevice;
argList.add("-flashdevice");
argList.add(this.flashDevice);
}
/**
* getFlashDeviceImage
*
* This function is to get class member "flashDeviceImage"
*
* @return flashDeviceImage name of flash device image
*/
public String getFlashDeviceImage() {
return flashDeviceImage;
}
/**
* setFlashDeviceImage
*
* This function is to set class member "flashDeviceImage"
*
* @param flashDeviceImage
* name of flash device image
*/
public void setFlashDeviceImage(String flashDeviceImage) {
this.flashDeviceImage = flashDeviceImage;
argList.add("-flashdeviceimage");
argList.add(this.flashDeviceImage);
}
/**
* getHeaderFile
*
* This function is to get class member "headerFile"
*
* @return headerFile name of include file
*/
public String getHeaderFile() {
return headerFile;
}
/**
* setHeaderFile
*
* This function is to set class member "headerFile"
*
* @param headerFile
* name of include file
*/
public void setHeaderFile(String headerFile) {
this.headerFile = headerFile;
argList.add("-hfile");
argList.add(this.headerFile);
}
/**
* getImageOutFile
*
* This function is to get class member "imageOutFile"
*
* @return imageOutFile name of output image file
*/
public String getImageOutFile() {
return imageOutFile;
}
/**
* setImageOutFile
*
* This function is to set class member "ImageOutFile"
*
* @param imageOutFile
* name of output image file
*/
public void setImageOutFile(String imageOutFile) {
this.imageOutFile = imageOutFile;
argList.add("-imageout");
argList.add(this.imageOutFile);
}
/**
* getInStrFile
*
* This function is to get class member "inStrFile"
*
* @return inStrFile name of input file which used to replace symbol names.
*/
public String getInStrFile() {
return inStrFile;
}
/**
* setInStrFile
*
* This function is to set class member "inStrFile"
*
* @param inStrFile
* name of input file which used to replace symbol names.
*/
public void setInStrFile(String inStrFile) {
this.inStrFile = inStrFile;
}
/**
* getMciFile
*
* This function is to get class member "mciFile"
*
* @return mciFile name of input microcode file
*/
public String getMciFile() {
return mciFile;
}
/**
* setMciFile
*
* This function is to set class member "mciFile"
*
* @param mciFile
* name of input microcode file
*/
public void setMciFile(String mciFile) {
this.mciFile = mciFile;
argList.add("-mci");
argList.add(this.mciFile);
}
/**
* getMcoFile
*
* This function is to get class member "mcoFile"
*
* @return mcoFile name of output binary microcode image
*/
public String getMcoFile() {
return mcoFile;
}
/**
* setMcoFile
*
* This function is to set class member "mcoFile"
*
* @param mcoFile
* name of output binary microcode image
*/
public void setMcoFile(String mcoFile) {
this.mcoFile = mcoFile;
argList.add("-mco");
argList.add(this.mcoFile);
}
/**
* getOutStrFile
*
* This function is to get class member "outStrFile"
*
* @return outStrFile name of output string substitution file
*/
public String getOutStrFile() {
return outStrFile;
}
/**
* setOutStrFile
*
* This function is to set class member "outStrFile"
*
* @param outStrFile
* name of output string substitution file
*/
public void setOutStrFile(String outStrFile) {
this.outStrFile = outStrFile;
}
/**
* getPadValue
*
* This function is to get class member "padValue"
*
* @return padValue string of byte value to use as padding
*/
public String getPadValue() {
return padValue;
}
/**
* setPadValue
*
* This function is to set class member "padValue"
*
* @param padValue
* string of byte value to use as padding
*/
public void setPadValue(String padValue) {
this.padValue = padValue;
argList.add("-padvalue");
argList.add(this.padValue);
}
/**
* addMciFile
*
* This function is to add Microcode binary file
*
* @param mciFile
* instance of input class
*/
public void addMciFile(Input mciFile) {
this.mciFileArray.add(mciFile);
}
/**
* getOutputDir
*
* This function is to get class member "outputDir"
*
* @return outputDir string of output directory
*/
public String getOutputDir() {
return outputDir;
}
/**
* setOutputDir
*
* This function is to set class member "outputDir"
*
* @param outputDir
* string of output directory
*/
public void setOutputDir(String outputDir) {
this.outputDir = outputDir;
}
}

View File

@ -0,0 +1,38 @@
/*++
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
Module Name:
FrameworkLogger.java
Abstract:
--*/
package org.tianocore.framework.tasks;
import org.apache.tools.ant.Project;
import org.tianocore.logger.LogMethod;
class FrameworkLogger implements LogMethod {
private Project project;
private String titleName;
public FrameworkLogger(Project project, String taskName) {
this.project = project;
this.titleName = taskName;
}
public void putMessage(Object msgSource, int msgLevel, String msg) {
String frameworkMsg = " [" + this.titleName + "] " + msg;
this.project.log(frameworkMsg, Project.MSG_INFO);
}
}

View File

@ -22,7 +22,7 @@ import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.LogStreamHandler;
import org.apache.tools.ant.types.Commandline;
import org.tianocore.build.*;
/**
FwImageTask class.

View File

@ -0,0 +1,199 @@
/** @file
GenAcpiTable class.
GenAcpiTable is used to call GenAcpiTable.exe to generate ACPI Table image .
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.framework.tasks;
import java.io.File;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.LogStreamHandler;
import org.apache.tools.ant.types.Commandline;
import org.tianocore.logger.EdkLog;
/**
GenAcpiTable class.
GenAcpiTable is used to call GenAcpiTable.exe to generate ACPI Table image .
**/
public class GenAcpiTableTask extends Task implements EfiDefine {
// /
// / input file
// /
private String inputFile = "";
// /
// / output file
// /
private String outputFile = "";
// /
// / output directory, this variable is added by jave wrap
// /
private String outputDir = "";
/**
* execute
*
* StripTask execute function is to assemble tool command line & execute
* tool command line
*
* @throws BuidException
*/
public void execute() throws BuildException {
Project project = this.getOwningTarget().getProject();
//
// set Logger
//
FrameworkLogger logger = new FrameworkLogger(project, "genacpitable");
EdkLog.setLogLevel(project.getProperty("env.LOGLEVEL"));
EdkLog.setLogger(logger);
//
// absolute path of efi tools
//
String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");
String command;
String argument;
if (path == null) {
command = "GenAcpiTable";
} else {
command = path + File.separatorChar + "GenAcpiTable";
}
//
// argument of tools
//
File file = new File(outputFile);
if (!file.isAbsolute() && (!this.outputDir.equalsIgnoreCase(""))) {
argument = inputFile + " " + outputDir + File.separatorChar
+ outputFile;
} else {
argument = inputFile + " " + outputFile;
}
//
// return value of fwimage execution
//
int revl = -1;
try {
Commandline cmdline = new Commandline();
cmdline.setExecutable(command);
cmdline.createArgument().setLine(argument);
LogStreamHandler streamHandler = new LogStreamHandler(this,
Project.MSG_INFO, Project.MSG_WARN);
Execute runner = new Execute(streamHandler, null);
runner.setAntRun(project);
runner.setCommandline(cmdline.getCommandline());
//
// Set debug log information.
//
EdkLog.log(EdkLog.EDK_INFO, Commandline.toString(cmdline.getCommandline()));
revl = runner.execute();
if (EFI_SUCCESS == revl) {
//
// command execution success
//
EdkLog.log(EdkLog.EDK_INFO,"GenAcpiTable successed!");
} else {
//
// command execution fail
//
EdkLog.log(EdkLog.EDK_ERROR, "GenAcpiTable failed. (error="
+ Integer.toHexString(revl) + ")");
throw new BuildException("GenAcpiTable failed. (error="
+ Integer.toHexString(revl) + ")");
}
} catch (Exception e) {
throw new BuildException(e.getMessage());
}
}
/**
* getInputFile
*
* This function is to get class member "inputFile".
*
* @return string of input file name.
*/
public String getInputFile() {
return inputFile;
}
/**
* setComponentType
*
* This function is to set class member "inputFile".
*
* @param inputFile
* string of input file name.
*/
public void setInputFile(String inputFile) {
this.inputFile = inputFile;
}
/**
* getOutputFile
*
* This function is to get class member "outputFile"
*
* @return outputFile string of output file name.
*/
public String getOutputFile() {
return outputFile;
}
/**
* setOutputFile
*
* This function is to set class member "outputFile"
*
* @param outputFile
* string of output file name.
*/
public void setOutputFile(String outputFile) {
this.outputFile = outputFile;
}
/**
* getOutputDir
*
* This function is to get class member "outputDir"
*
* @return outputDir string of output directory.
*/
public String getOutputDir() {
return outputDir;
}
/**
* setOutputDir
*
* This function is to set class member "outputDir"
*
* @param outputDir
* string of output directory.
*/
public void setOutputDir(String outputDir) {
this.outputDir = outputDir;
}
}

View File

@ -0,0 +1,354 @@
/** @file
GenCapsuleHdrTask class.
GenCapsuleHdrTask is used to call GenCapsuleHdr.exe to generate capsule.
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.framework.tasks;
import java.io.File;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.LogStreamHandler;
import org.apache.tools.ant.types.Commandline;
import org.tianocore.logger.EdkLog;
/**
GenCapsuleHdrTask class.
GenCapsuleHdrTask is used to call GenCapsuleHdr.exe to generate capsule.
**/
public class GenCapsuleHdrTask extends Task implements EfiDefine {
///
/// tool name
///
private String toolName = "GenCapsuleHdr";
///
/// script file
///
private String scriptFile = "";
///
/// output file
///
private String outputFile = "";
///
/// output directory, this variable is added by jave wrap
///
private String outputDir = "";
///
/// Verbose flag
///
private String verbose = "";
///
/// Dump flag
///
private String dump = "";
///
/// Split size
///
private String size = "";
///
/// capsule into one image flag
///
private String joinFlag = "";
///
/// capsule file
///
private String capsuleFile = "";
/**
* execute
*
* GenCapsuleHdrTask execute function is to assemble tool command line & execute
* tool command line
*
* @throws BuidException
*/
public void execute() throws BuildException {
Project project = this.getOwningTarget().getProject();
//
// set Logger
//
FrameworkLogger logger = new FrameworkLogger(project, "gencapsulehdr");
EdkLog.setLogLevel(project.getProperty("env.LOGLEVEL"));
EdkLog.setLogger(logger);
//
// absolute path of efi tools
//
String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");
String command;
String argument;
if (path == null) {
command = toolName;
} else {
command = path + File.separatorChar + toolName;
}
//
// argument of tools
//
File file = new File(outputFile);
if (!file.isAbsolute() && (!this.outputDir.equalsIgnoreCase(""))) {
argument = this.verbose + this.dump + "-o " +this.outputDir
+ File.separatorChar + this.outputFile + " "
+ this.scriptFile + " " + this.size + " " + this.joinFlag + this.capsuleFile;
} else {
argument = this.verbose + this.dump + "-o " + this.outputFile
+ " " + this.scriptFile + " " + this.size + " " + this.joinFlag + this.capsuleFile;
}
//
// return value of fwimage execution
//
int revl = -1;
try {
Commandline cmdline = new Commandline();
cmdline.setExecutable(command);
cmdline.createArgument().setLine(argument);
LogStreamHandler streamHandler = new LogStreamHandler(this,
Project.MSG_INFO, Project.MSG_WARN);
Execute runner = new Execute(streamHandler, null);
runner.setAntRun(project);
runner.setCommandline(cmdline.getCommandline());
//
// Set debug log information.
//
EdkLog.log(EdkLog.EDK_INFO, Commandline.toString(cmdline
.getCommandline()));
revl = runner.execute();
if (EFI_SUCCESS == revl) {
//
// command execution success
//
EdkLog.log(EdkLog.EDK_INFO, "GenCapsuleHdr succeeded!");
} else {
//
// command execution fail
//
EdkLog.log(EdkLog.EDK_ERROR, "GenCapsuleHdr failed. (error="
+ Integer.toHexString(revl) + ")");
throw new BuildException("GenCapsuleHdr failed. (error="
+ Integer.toHexString(revl) + ")");
}
} catch (Exception e) {
throw new BuildException(e.getMessage());
}
}
/**
* getInputFile
*
* This function is to get class member "scriptFile".
*
* @return string of input file name.
*/
public String getScriptFile() {
return this.scriptFile;
}
/**
* setComponentType
*
* This function is to set class member "inputFile".
*
* @param inputFile
* string of input file name.
*/
public void setScriptFile(String scriptFile) {
this.scriptFile = "-script " + scriptFile;
}
/**
* getOutputFile
*
* This function is to get class member "outputFile"
*
* @return outputFile string of output file name.
*/
public String getOutputFile() {
return outputFile;
}
/**
* setOutputFile
*
* This function is to set class member "outputFile"
*
* @param outputFile
* string of output file name.
*/
public void setOutputFile(String outputFile) {
this.outputFile = outputFile + " ";
}
/**
* getOutputDir
*
* This function is to get class member "outputDir"
*
* @return outputDir string of output directory.
*/
public String getOutputDir() {
return outputDir;
}
/**
* setOutputDir
*
* This function is to set class member "outputDir"
*
* @param outputDir
* string of output directory.
*/
public void setOutputDir(String outputDir) {
this.outputDir = outputDir;
}
/**
* getVerbose
*
* This function is to get class member "verbose"
*
* @return verbose the flag of verbose.
*/
public String getVerbose() {
return this.verbose;
}
/**
* setVerbose
*
* This function is to set class member "verbose"
*
* @param verbose
* True or False.
*/
public void setVerbose(boolean verbose) {
if (verbose) {
this.verbose = "-v ";
}
}
/**
* getDump
*
* This function is to get class member "dump"
*
* @return verbose the flag of dump.
*/
public String getDump() {
return dump;
}
/**
* setDump
*
* This function is to set class member "dump".
*
* @param dump
* True or False.
*/
public void setDump(boolean dump) {
if (dump) {
this.dump = "-dump ";
}
}
/**
* getSize
*
* This function is to set class member "size".
*
* @return size string of size value
*/
public String getSize() {
return size;
}
/**
* setSize
*
* This function is to set class member "size".
*
* @param size string of size value.
*/
public void setSize(String size) {
this.size = "-split " + size;
}
/**
* getCapsuleFile
*
* This function is to get class member "capsuleFile"
*
* @return capsuleFile capsule file name
*/
public String getCapsuleFile() {
return capsuleFile;
}
/**
* setCapsuleFile
*
* This function is to set class member "capsuleFile"
*
* @param capsuleFile capsule file name
*/
public void setCapsuleFile(String capsuleFile) {
this.capsuleFile = capsuleFile;
}
/**
* isJoinFlag
*
* This function is to get class member "joinFlag"
*
* @return joinFlag flag of if need to join split capsule images into
* a single image.
*/
public String getJoinFlag() {
return joinFlag;
}
/**
* setJoinFlag
*
* This function is to set class member "joinFlag"
*
* @param joinFlag flag of if need to join split capsule images into
* a single image.
*/
public void setJoinFlag(boolean joinFlag) {
if (joinFlag){
this.joinFlag = "-j ";
}
}
}

View File

@ -0,0 +1,271 @@
/** @file
GenTeImageTask class.
GenTeImageTask is used to call GenTEImage.exe to generate TE image .
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.framework.tasks;
import java.io.File;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.LogStreamHandler;
import org.apache.tools.ant.types.Commandline;
import org.tianocore.logger.EdkLog;
/**
* GenTeImageTask class.
*
* GenTeImageTask is used to call GenAcpiTable.exe to generate ACPI Table image .
*/
public class GenTeImageTask extends Task implements EfiDefine {
///
/// tool name
///
private String toolName = "GenTeImage";
///
/// input file
///
private String inputFile = "";
///
/// output file
///
private String outputFile = "";
///
/// output directory, this variable is added by jave wrap
///
private String outputDir = "";
///
/// Verbose flag
///
private String verbose = "";
///
/// Dump flag
///
private String dump = "";
/**
* assemble tool command line & execute tool command line
*
* @throws BuildException
*/
/**
* execute
*
* GenTeImgaeTask execute function is to assemble tool command line & execute
* tool command line
*
* @throws BuidException
*/
public void execute() throws BuildException {
Project project = this.getOwningTarget().getProject();
//
// set Logger
//
FrameworkLogger logger = new FrameworkLogger(project, toolName.toLowerCase());
EdkLog.setLogLevel(project.getProperty("env.LOGLEVEL"));
EdkLog.setLogger(logger);
//
// absolute path of efi tools
//
String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");
String command;
String argument;
if (path == null) {
command = toolName;
} else {
command = path + File.separatorChar + toolName;
}
//
// argument of tools
//
File file = new File(outputFile);
if (!file.isAbsolute() && (!this.outputDir.equalsIgnoreCase(""))) {
argument = this.verbose + this.dump + "-o " +this.outputDir
+ File.separatorChar + this.outputFile + " "
+ this.inputFile;
} else {
argument = this.verbose + this.dump + "-o " + this.outputFile
+ " " + this.inputFile;
}
//
// return value of fwimage execution
//
int revl = -1;
try {
Commandline cmdline = new Commandline();
cmdline.setExecutable(command);
cmdline.createArgument().setLine(argument);
LogStreamHandler streamHandler = new LogStreamHandler(this,
Project.MSG_INFO, Project.MSG_WARN);
Execute runner = new Execute(streamHandler, null);
runner.setAntRun(project);
runner.setCommandline(cmdline.getCommandline());
//
// Set debug log information.
//
EdkLog.log(EdkLog.EDK_INFO, Commandline.toString(cmdline
.getCommandline()));
revl = runner.execute();
if (EFI_SUCCESS == revl) {
//
// command execution success
//
EdkLog.log(EdkLog.EDK_INFO, "GenTeImage succeeded!");
} else {
//
// command execution fail
//
EdkLog.log(EdkLog.EDK_ERROR, "GenTeImage failed. (error="
+ Integer.toHexString(revl) + ")");
throw new BuildException("GenTeImage failed. (error="
+ Integer.toHexString(revl) + ")");
}
} catch (Exception e) {
throw new BuildException(e.getMessage());
}
}
/**
* getInputFile
*
* This function is to get class member "inputFile".
*
* @return string of input file name.
*/
public String getInputFile() {
return inputFile;
}
/**
* setComponentType
*
* This function is to set class member "inputFile".
*
* @param inputFile
* string of input file name.
*/
public void setInputFile(String inputFile) {
this.inputFile = inputFile;
}
/**
* getOutputFile
*
* This function is to get class member "outputFile"
*
* @return outputFile string of output file name.
*/
public String getOutputFile() {
return outputFile;
}
/**
* setOutputFile
*
* This function is to set class member "outputFile"
*
* @param outputFile
* string of output file name.
*/
public void setOutputFile(String outputFile) {
this.outputFile = outputFile + " ";
}
/**
* getOutputDir
*
* This function is to get class member "outputDir"
*
* @return outputDir string of output directory.
*/
public String getOutputDir() {
return outputDir;
}
/**
* setOutputDir
*
* This function is to set class member "outputDir"
*
* @param outputDir
* string of output directory.
*/
public void setOutputDir(String outputDir) {
this.outputDir = outputDir;
}
/**
* getVerbose
*
* This function is to get class member "verbose"
*
* @return verbose the flag of verbose.
*/
public String getVerbose() {
return this.verbose;
}
/**
* setVerbose
*
* This function is to set class member "verbose"
*
* @param verbose
* True or False.
*/
public void setVerbose(boolean verbose) {
if (verbose) {
this.verbose = "-v ";
}
}
/**
* getDump
*
* This function is to get class member "dump"
*
* @return verbose the flag of dump.
*/
public String getDump() {
return dump;
}
/**
* setDump
*
* This function is to set class member "dump"
*
* @param dump
* True or False.
*/
public void setDump(boolean dump) {
if (dump) {
this.dump = "-dump ";
}
}
}

View File

@ -0,0 +1,267 @@
/** @file
PeiReBaseTask class.
PeiReBaseTask is used to call PeiReBase.exe to rebase efi fv file.
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.framework.tasks;
import java.io.File;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.LogStreamHandler;
import org.apache.tools.ant.types.Commandline;
import org.tianocore.logger.EdkLog;
/**
PeiReBaseTask class.
PeiReBaseTask is used to call PeiReBase.exe to rebase efi fv file.
**/
public class PeiReBaseTask extends Task implements EfiDefine {
///
/// tool name
///
private String toolName = "PeiReBase";
// /
// / Input file
// /
private String inputFile = "";
// /
// / Output file
// /
private String outputFile = "";
// /
// / Output directory, this variable is added by jave wrap
// /
private String outputDir = "";
///
/// Base address
///
private String baseAddr = "";
///
/// Architecture
///
private String arch = "";
/**
* execute
*
* PeiReBaseTask execute function is to assemble tool command line & execute
* tool command line
*
* @throws BuidException
*/
public void execute() throws BuildException {
Project project = this.getOwningTarget().getProject();
//
// set Logger
//
FrameworkLogger logger = new FrameworkLogger(project, toolName.toLowerCase());
EdkLog.setLogLevel(project.getProperty("env.LOGLEVEL"));
EdkLog.setLogger(logger);
//
// absolute path of efi tools
//
String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");
String command;
String argument;
if (this.arch.equalsIgnoreCase("IA32")){
command = toolName + "_IA32";
}else if (this.arch.equalsIgnoreCase("X64")){
command = toolName + "_X64";
}else if (this.arch.equalsIgnoreCase("IPF")){
command = toolName + "_IPF";
}else {
command = toolName + "_IA32";
}
if (path != null) {
command = path + File.separatorChar + command;
}
//
// argument of tools
//
File file = new File(outputFile);
if (!file.isAbsolute() && (!this.outputDir.equalsIgnoreCase(""))) {
argument = inputFile + " " + "-O " + outputDir + File.separatorChar
+ outputFile + " " + this.baseAddr;
} else {
argument = inputFile + " " + "-O " + outputFile + " " + this.baseAddr;
}
//
// return value of fwimage execution
//
int revl = -1;
try {
Commandline cmdline = new Commandline();
cmdline.setExecutable(command);
cmdline.createArgument().setLine(argument);
LogStreamHandler streamHandler = new LogStreamHandler(this,
Project.MSG_INFO, Project.MSG_WARN);
Execute runner = new Execute(streamHandler, null);
runner.setAntRun(project);
runner.setCommandline(cmdline.getCommandline());
//
// Set debug log information.
//
EdkLog.log(EdkLog.EDK_INFO, Commandline.toString(cmdline.getCommandline()));
revl = runner.execute();
if (EFI_SUCCESS == revl) {
//
// command execution success
//
EdkLog.log(EdkLog.EDK_INFO,"PeiBase succeeded!");
} else {
//
// command execution fail
//
EdkLog.log(EdkLog.EDK_ERROR, "PeiBase failed. (error="
+ Integer.toHexString(revl) + ")");
throw new BuildException("PeiBase failed. (error="
+ Integer.toHexString(revl) + ")");
}
} catch (Exception e) {
throw new BuildException(e.getMessage());
}
}
/**
* getInputFile
*
* This function is to get class member "inputFile".
*
* @return string of input file name.
*/
public String getInputFile() {
return inputFile;
}
/**
* setComponentType
*
* This function is to set class member "inputFile".
*
* @param inputFile
* string of input file name.
*/
public void setInputFile(String inputFile) {
this.inputFile = "-I " + inputFile;
}
/**
* getOutputFile
*
* This function is to get class member "outputFile"
*
* @return outputFile string of output file name.
*/
public String getOutputFile() {
return outputFile;
}
/**
* setOutputFile
*
* This function is to set class member "outputFile"
*
* @param outputFile
* string of output file name.
*/
public void setOutputFile(String outputFile) {
this.outputFile = outputFile;
}
/**
* getOutputDir
*
* This function is to get class member "outputDir"
*
* @return outputDir string of output directory.
*/
public String getOutputDir() {
return outputDir;
}
/**
* setOutputDir
*
* This function is to set class member "outputDir"
*
* @param outputDir
* string of output directory.
*/
public void setOutputDir(String outputDir) {
this.outputDir = outputDir;
}
/**
* getBaseAddr
*
* This function is to get class member "baseAddr"
*
* @return baseAddr string of base address.
*/
public String getBaseAddr() {
return baseAddr;
}
/**
* setBaseAddr
*
* This function is to set class member "baseAddr"
*
* @param baseAddr string of base address
*/
public void setBaseAddr(String baseAddr) {
this.baseAddr = "-B " + baseAddr;
}
/**
* getArch
*
* This function is to get class member "arch".
*
* @return arch Architecture
*/
public String getArch() {
return arch;
}
/**
* setArch
*
* This function is to set class member "arch"
*
* @param arch Architecture
*/
public void setArch(String arch) {
this.arch = arch;
}
}

View File

@ -0,0 +1,206 @@
/** @file
SecApResetVectorFixupTask class.
SecApResetVectorFixupTask is used to call SecApResetVectorFixup.exe to place
Ap reset vector.
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.framework.tasks;
import java.io.File;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.LogStreamHandler;
import org.apache.tools.ant.types.Commandline;
import org.tianocore.logger.EdkLog;
/**
SecApResetVectorFixupTask class.
SecApResetVectorFixupTask is used to call SecApResetVectorFixup.exe to place
Ap reset vector.
**/
public class SecApResetVectorFixupTask extends Task implements EfiDefine {
///
/// tool name
///
private String toolName = "SecApResetVectorFixup";
// /
// / input FV recovery file
// /
private String fvInputFile = "";
// /
// / output file
// /
private String fvOutputFile = "";
// /
// / output directory, this variable is added by jave wrap
// /
private String outputDir = "";
/**
* execute
*
* SecApResetVectorFixupTask execute function is to assemble tool command line & execute
* tool command line
*
* @throws BuidException
*/
public void execute() throws BuildException {
Project project = this.getOwningTarget().getProject();
//
// set Logger
//
FrameworkLogger logger = new FrameworkLogger(project, "secapresetvectorfixup");
EdkLog.setLogLevel(project.getProperty("env.LOGLEVEL"));
EdkLog.setLogger(logger);
//
// absolute path of efi tools
//
String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");
String command;
String argument;
if (path == null) {
command = toolName;
} else {
command = path + File.separatorChar + toolName;
}
//
// argument of tools
//
File file = new File(this.fvOutputFile);
if (!file.isAbsolute() && (!this.outputDir.equalsIgnoreCase(""))) {
argument = this.fvInputFile + " " + outputDir + File.separatorChar
+ this.fvOutputFile;
} else {
argument = this.fvInputFile + " " + this.fvOutputFile;
}
//
// return value of fwimage execution
//
int revl = -1;
try {
Commandline cmdline = new Commandline();
cmdline.setExecutable(command);
cmdline.createArgument().setLine(argument);
LogStreamHandler streamHandler = new LogStreamHandler(this,
Project.MSG_INFO, Project.MSG_WARN);
Execute runner = new Execute(streamHandler, null);
runner.setAntRun(project);
runner.setCommandline(cmdline.getCommandline());
//
// Set debug log information.
//
EdkLog.log(EdkLog.EDK_INFO, Commandline.toString(cmdline.getCommandline()));
revl = runner.execute();
if (EFI_SUCCESS == revl) {
//
// command execution success
//
EdkLog.log(EdkLog.EDK_INFO,"SecApResetVectorFixup succeeded!");
} else {
//
// command execution fail
//
EdkLog.log(EdkLog.EDK_ERROR, "SecApResetVectorFixup failed. (error="
+ Integer.toHexString(revl) + ")");
throw new BuildException("SecApResetVectorFixup failed. (error="
+ Integer.toHexString(revl) + ")");
}
} catch (Exception e) {
throw new BuildException(e.getMessage());
}
}
/**
* getInputFile
*
* This function is to get class member "fvInputFile".
*
* @return string of input file name.
*/
public String getfvInputFile() {
return this.fvInputFile;
}
/**
* setComponentType
*
* This function is to set class member "fvInputFile".
*
* @param inputFile
* string of input file name.
*/
public void setFvInputFile(String inputFile) {
this.fvInputFile = inputFile;
}
/**
* getOutputFile
*
* This function is to get class member "fvOutputFile"
*
* @return outputFile string of output file name.
*/
public String getOutputFile() {
return this.fvOutputFile;
}
/**
* setOutputFile
*
* This function is to set class member "fvOutputFile"
*
* @param outputFile
* string of output file name.
*/
public void setFvOutputFile(String outputFile) {
this.fvOutputFile = outputFile;
}
/**
* getOutputDir
*
* This function is to get class member "outputDir"
*
* @return outputDir string of output directory.
*/
public String getOutputDir() {
return outputDir;
}
/**
* setOutputDir
*
* This function is to set class member "outputDir"
*
* @param outputDir
* string of output directory.
*/
public void setOutputDir(String outputDir) {
this.outputDir = outputDir;
}
}

View File

@ -0,0 +1,235 @@
/** @file
SecFixupTask class.
SecFixupTask is used to call SecFixup.exe to fix up sec image.
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.framework.tasks;
import java.io.File;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.LogStreamHandler;
import org.apache.tools.ant.types.Commandline;
import org.tianocore.logger.EdkLog;
/**
* SecFixupTask class.
*
* SecFixupTask is used to call SecFixup.exe to fix up sec image.
*/
public class SecFixupTask extends Task implements EfiDefine {
// /
// / tool name
// /
private String toolName = "SecFixup";
// /
// / input file
// /
private String secExeFile = "";
// /
// / output file
// /
private String resetVectorDataFile = "";
// /
// / output directory, this variable is added by jave wrap
// /
private String outputFile = "";
// /
// / output directory
// /
private String outputDir = "";
/**
* execute
*
* SecFixupTask execute function is to assemble tool command line & execute
* tool command line
*
* @throws BuidException
*/
public void execute() throws BuildException {
Project project = this.getOwningTarget().getProject();
//
// set Logger
//
FrameworkLogger logger = new FrameworkLogger(project, toolName
.toLowerCase());
EdkLog.setLogLevel(project.getProperty("env.LOGLEVEL"));
EdkLog.setLogger(logger);
//
// absolute path of efi tools
//
String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");
String command;
String argument;
if (path == null) {
command = toolName;
} else {
command = path + File.separatorChar + toolName;
}
//
// argument of tools
//
if (!this.outputDir.equalsIgnoreCase("")) {
argument = this.secExeFile + " " + this.resetVectorDataFile + " "
+ this.outputDir + File.separatorChar + this.outputFile;
} else {
argument = this.secExeFile + " " + this.resetVectorDataFile + " "
+ this.outputFile;
}
//
// return value of fwimage execution
//
int revl = -1;
try {
Commandline cmdline = new Commandline();
cmdline.setExecutable(command);
cmdline.createArgument().setLine(argument);
LogStreamHandler streamHandler = new LogStreamHandler(this,
Project.MSG_INFO, Project.MSG_WARN);
Execute runner = new Execute(streamHandler, null);
runner.setAntRun(project);
runner.setCommandline(cmdline.getCommandline());
//
// Set debug log information.
//
EdkLog.log(EdkLog.EDK_INFO, Commandline.toString(cmdline
.getCommandline()));
revl = runner.execute();
if (EFI_SUCCESS == revl) {
//
// command execution success
//
EdkLog.log(EdkLog.EDK_INFO, "SecFixup succeeded!");
} else {
//
// command execution fail
//
EdkLog.log(EdkLog.EDK_ERROR, "SecFixup failed. (error="
+ Integer.toHexString(revl) + ")");
throw new BuildException("SecFixup failed. (error="
+ Integer.toHexString(revl) + ")");
}
} catch (Exception e) {
throw new BuildException(e.getMessage());
}
}
/**
* getSecExeFile
*
* This function is to get class member "secExeFile".
*
* @return string of sectExe file name.
*/
public String getSecExeFile() {
return this.secExeFile;
}
/**
* setSecExeFile
*
* This function is to set class member "secExeFile".
*
* @param secExeFile
* string of secExe file name.
*/
public void setSecExeFile(String secExeFile) {
this.secExeFile = secExeFile;
}
/**
* getResetVectorDataFile
*
* This function is to get class member "resetVectorDataFile"
*
* @return resetVectorDataFile string of resetVectorData file name.
*/
public String getResetVectorDataFile() {
return this.resetVectorDataFile;
}
/**
* setResetVectorDataFile
*
* This function is to set class member "resetVectorDataFile"
*
* @param resetVectorDataFile
* string of resetVectorData file name.
*/
public void setResetVectorDataFile(String resetVectorDataFile) {
this.resetVectorDataFile = resetVectorDataFile;
}
/**
* getOutputFile
*
* This function is to get class member "outputFile"
*
* @return outputFile string of output file name.
*/
public String getOutputFile() {
return outputFile;
}
/**
* setOutputFile
*
* This function is to set class member "outputFile"
*
* @param outputFile
* string of output file name.
*/
public void setOutputFile(String outputFile) {
this.outputFile = outputFile;
}
/**
* getOutputDir
*
* This function is to get class member "outputDir"
*
* @return outputDir name of output directory
*/
public String getOutputDir() {
return outputDir;
}
/**
* setOutputDir
*
* This function is to set class member "outputDir"
*
* @param outputDir
* name of output directory
*/
public void setOutputDir(String outputDir) {
this.outputDir = outputDir;
}
}

View File

@ -0,0 +1,169 @@
/** @file
SplitfileTask class.
SplitfileTask is used to call splitfile.exe to split input file to 2 output
file.
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.framework.tasks;
import java.io.File;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.LogStreamHandler;
import org.apache.tools.ant.types.Commandline;
import org.tianocore.logger.EdkLog;
/**
SplitfileTask class.
SplitfileTask is used to call splitfile.exe to split input file to 2 output
file.
**/
public class SplitfileTask extends Task implements EfiDefine {
///
/// input file
///
private String inputFile = "";
///
/// offset value
///
private String offset = "";
/**
* execute
*
* SplitfleTask execute function is to assemble tool command line & execute
* tool command line
*
* @throws BuidException
*/
public void execute() throws BuildException {
Project project = this.getOwningTarget().getProject();
//
// set Logger
//
FrameworkLogger logger = new FrameworkLogger(project, "splitfile");
EdkLog.setLogLevel(project.getProperty("env.LOGLEVEL"));
EdkLog.setLogger(logger);
//
// absolute path of efi tools
//
String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");
String command;
String argument;
if (path == null) {
command = "SplitFile";
} else {
command = path + File.separatorChar + "SplitFile";
}
//
// argument of tools
//
argument = inputFile + " " + offset;
//
// return value of fwimage execution
//
int revl = -1;
try {
Commandline cmdline = new Commandline();
cmdline.setExecutable(command);
cmdline.createArgument().setLine(argument);
LogStreamHandler streamHandler = new LogStreamHandler(this,
Project.MSG_INFO, Project.MSG_WARN);
Execute runner = new Execute(streamHandler, null);
runner.setAntRun(project);
runner.setCommandline(cmdline.getCommandline());
EdkLog.log(EdkLog.EDK_INFO, Commandline.toString(cmdline.getCommandline()));
revl = runner.execute();
if (EFI_SUCCESS == revl) {
//
// command execution success
//
EdkLog.log(EdkLog.EDK_INFO, "splitfile succeeded!");
} else {
//
// command execution fail
//
EdkLog.log(EdkLog.EDK_ERROR, "splitfile failed. (error="
+ Integer.toHexString(revl) + ")");
throw new BuildException("splitfile failed. (error="
+ Integer.toHexString(revl) + ")");
}
} catch (Exception e) {
throw new BuildException(e.getMessage());
}
}
/**
* getInputFile
*
* This function is to get class member "inputFile".
*
* @return string of input file name.
*/
public String getInputFile() {
return inputFile;
}
/**
* setComponentType
*
* This function is to set class member "inputFile".
*
* @param inputFile
* string of input file name.
*/
public void setInputFile(String inputFile) {
this.inputFile = inputFile;
}
/**
getOffset
This function is to get class member "offset"
@return offset value of string.
**/
public String getOffset() {
return offset;
}
/**
setOffset
This function is to set class member "offset"
@param offset
string of offset value.
**/
public void setOffset(String offset) {
this.offset = offset;
}
}

View File

@ -0,0 +1,200 @@
/** @file
StripTask class.
StripTask is used to call Strip.exe to strip input file.
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.framework.tasks;
import java.io.File;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.LogStreamHandler;
import org.apache.tools.ant.types.Commandline;
import org.tianocore.logger.EdkLog;
/**
StripTask class.
StripTask is used to call Strip.exe to strip input file.
*/
public class StripTask extends Task implements EfiDefine {
// /
// / input file
// /
private String inputFile = "";
// /
// / output file
// /
private String outputFile = "";
// /
// / output directory, this variable is added by jave wrap
// /
private String outputDir = "";
/**
* execute
*
* StripTask execute function is to assemble tool command line & execute
* tool command line
*
* @throws BuidException
*/
public void execute() throws BuildException {
Project project = this.getOwningTarget().getProject();
//
// set Logger
//
FrameworkLogger logger = new FrameworkLogger(project, "edkStrip");
EdkLog.setLogLevel(project.getProperty("env.LOGLEVEL"));
EdkLog.setLogger(logger);
//
// absolute path of efi tools
//
String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");
String command;
String argument;
if (path == null) {
command = "strip";
} else {
command = path + File.separatorChar + "Strip";
}
//
// argument of tools
//
File file = new File(outputFile);
if (!file.isAbsolute() && (!this.outputDir.equalsIgnoreCase(""))) {
argument = inputFile + " " + outputDir + File.separatorChar
+ outputFile;
} else {
argument = inputFile + " " + outputFile;
}
//
// return value of fwimage execution
//
int revl = -1;
try {
Commandline cmdline = new Commandline();
cmdline.setExecutable(command);
cmdline.createArgument().setLine(argument);
LogStreamHandler streamHandler = new LogStreamHandler(this,
Project.MSG_INFO, Project.MSG_WARN);
Execute runner = new Execute(streamHandler, null);
runner.setAntRun(project);
runner.setCommandline(cmdline.getCommandline());
//
// Set debug log information.
//
EdkLog.log(EdkLog.EDK_INFO, Commandline.toString(cmdline.getCommandline()));
revl = runner.execute();
if (EFI_SUCCESS == revl) {
//
// command execution success
//
EdkLog.log(EdkLog.EDK_INFO,"Strip succeeded!");
} else {
//
// command execution fail
//
EdkLog.log(EdkLog.EDK_ERROR, "Strip failed. (error="
+ Integer.toHexString(revl) + ")");
throw new BuildException("Strip failed. (error="
+ Integer.toHexString(revl) + ")");
}
} catch (Exception e) {
throw new BuildException(e.getMessage());
}
}
/**
* getInputFile
*
* This function is to get class member "inputFile".
*
* @return string of input file name.
*/
public String getInputFile() {
return inputFile;
}
/**
* setComponentType
*
* This function is to set class member "inputFile".
*
* @param inputFile
* string of input file name.
*/
public void setInputFile(String inputFile) {
this.inputFile = inputFile;
}
/**
* getOutputFile
*
* This function is to get class member "outputFile"
*
* @return outputFile string of output file name.
*/
public String getOutputFile() {
return outputFile;
}
/**
* setOutputFile
*
* This function is to set class member "outputFile"
*
* @param outputFile
* string of output file name.
*/
public void setOutputFile(String outputFile) {
this.outputFile = outputFile;
}
/**
* getOutputDir
*
* This function is to get class member "outputDir"
*
* @return outputDir string of output directory.
*/
public String getOutputDir() {
return outputDir;
}
/**
* setOutputDir
*
* This function is to set class member "outputDir"
*
* @param outputDir
* string of output directory.
*/
public void setOutputDir(String outputDir) {
this.outputDir = outputDir;
}
}

View File

@ -0,0 +1,200 @@
/** @file
ZeroDebugDataTask class.
ZeroDebugDataTask is used to call ZeroDebugData.exe to remove debug data.
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.framework.tasks;
import java.io.File;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.LogStreamHandler;
import org.apache.tools.ant.types.Commandline;
import org.tianocore.logger.EdkLog;
/**
ZeroDebugDataTask class.
ZeroDebugDataTask is used to call ZeroDebugData.exe to remove debug data.
**/
public class ZeroDebugDataTask extends Task implements EfiDefine {
// /
// / input PE file
// /
private String peFile = "";
// /
// / output file
// /
private String outputFile = "DebugData.dat";
// /
// / output directory, this variable is added by jave wrap
// /
private String outputDir = "";
/**
* execute
*
* ZeroDebugDataTask execute function is to assemble tool command line & execute
* tool command line
*
* @throws BuidException
*/
public void execute() throws BuildException {
Project project = this.getOwningTarget().getProject();
//
// set Logger
//
FrameworkLogger logger = new FrameworkLogger(project, "zerodebugdata");
EdkLog.setLogLevel(project.getProperty("env.LOGLEVEL"));
EdkLog.setLogger(logger);
//
// absolute path of efi tools
//
String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");
String command;
String argument;
if (path == null) {
command = "ZeroDebugData";
} else {
command = path + File.separatorChar + "ZeroDebugData";
}
//
// argument of tools
//
File file = new File(outputFile);
if (!file.isAbsolute() && (!this.outputDir.equalsIgnoreCase(""))) {
argument = this.peFile + " " + outputDir + File.separatorChar
+ outputFile;
} else {
argument = this.peFile + " " + outputFile;
}
//
// return value of fwimage execution
//
int revl = -1;
try {
Commandline cmdline = new Commandline();
cmdline.setExecutable(command);
cmdline.createArgument().setLine(argument);
LogStreamHandler streamHandler = new LogStreamHandler(this,
Project.MSG_INFO, Project.MSG_WARN);
Execute runner = new Execute(streamHandler, null);
runner.setAntRun(project);
runner.setCommandline(cmdline.getCommandline());
//
// Set debug log information.
//
EdkLog.log(EdkLog.EDK_INFO, Commandline.toString(cmdline.getCommandline()));
revl = runner.execute();
if (EFI_SUCCESS == revl) {
//
// command execution success
//
EdkLog.log(EdkLog.EDK_INFO,"ZeroDebug succeeded!");
} else {
//
// command execution fail
//
EdkLog.log(EdkLog.EDK_ERROR, "ZeroDebug failed. (error="
+ Integer.toHexString(revl) + ")");
throw new BuildException("ZeroDebug failed. (error="
+ Integer.toHexString(revl) + ")");
}
} catch (Exception e) {
throw new BuildException(e.getMessage());
}
}
/**
* getPeFile
*
* This function is to get class member "inputFile".
*
* @return string of input file name.
*/
public String getPeFile() {
return this.peFile;
}
/**
* setPeFile
*
* This function is to set class member "peFile".
*
* @param peFile
* string of input file name.
*/
public void setPeFile(String peFile) {
this.peFile = peFile;
}
/**
* getOutputFile
*
* This function is to get class member "outputFile"
*
* @return outputFile string of output file name.
*/
public String getOutputFile() {
return outputFile;
}
/**
* setOutputFile
*
* This function is to set class member "outputFile"
*
* @param outputFile
* string of output file name.
*/
public void setOutputFile(String outputFile) {
this.outputFile = outputFile;
}
/**
* getOutputDir
*
* This function is to get class member "outputDir"
*
* @return outputDir string of output directory.
*/
public String getOutputDir() {
return outputDir;
}
/**
* setOutputDir
*
* This function is to set class member "outputDir"
*
* @param outputDir
* string of output directory.
*/
public void setOutputDir(String outputDir) {
this.outputDir = outputDir;
}
}