+++ /dev/null
-/** @file\r
- EfiRomTask class.\r
-\r
- EfiRomTask is used to call FlashMap.exe to lay out the flash.\r
-\r
-\r
- Copyright (c) 2006, Intel Corporation\r
- All rights reserved. This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
- **/\r
-package org.tianocore.framework.tasks;\r
-\r
-import java.io.File;\r
-import java.util.LinkedList;\r
-\r
-import org.apache.tools.ant.BuildException;\r
-import org.apache.tools.ant.Project;\r
-import org.apache.tools.ant.Task;\r
-import org.tianocore.common.logger.EdkLog;\r
-import org.apache.tools.ant.taskdefs.Execute;\r
-import org.apache.tools.ant.taskdefs.LogStreamHandler;\r
-import org.apache.tools.ant.types.Commandline;\r
-\r
-/**\r
- SecFixupTask class.\r
- \r
- SecFixupTask is used to call SecFixup.exe to fix up sec image.\r
- **/\r
-public class EfiRomTask extends Task implements EfiDefine {\r
- //\r
- // tool name\r
- //\r
- private final static String toolName = "EfiRom";\r
-\r
- //\r
- // Flash default file\r
- //\r
- private ToolArg verbose = new ToolArg();\r
-\r
- //\r
- // Flash device\r
- //\r
- private ToolArg venderId = new ToolArg();\r
-\r
- //\r
- // Flash device Image\r
- //\r
- private ToolArg deviceId = new ToolArg();\r
-\r
- //\r
- // output file\r
- //\r
- private FileArg outputFile = new FileArg();\r
-\r
- //\r
- // binary file\r
- //\r
- private Input binaryFileList = new Input();\r
-\r
- //\r
- // Efi PE32 image file\r
- //\r
- private Input pe32FileList = new Input();\r
-\r
- //\r
- // Compress efi PE32 image file\r
- //\r
- private Input pe32ComprFileList = new Input();\r
-\r
- //\r
- // Hex class code in the PCI data strutor header\r
- //\r
- private ToolArg classCode = new ToolArg();\r
-\r
- //\r
- // Hex revision in the PCI data header.\r
- //\r
- private ToolArg revision = new ToolArg();\r
-\r
- //\r
- // Dump the headers of an existing option rom image.\r
- //\r
- private ToolArg dump = new ToolArg();\r
-\r
- //\r
- // output directory\r
- //\r
- private String outputDir = ".";\r
-\r
- //\r
- // command and argument list\r
- //\r
- LinkedList<String> argList = new LinkedList<String>();\r
-\r
- /**\r
- execute\r
- \r
- EfiRomTask execute function is to assemble tool command line & execute\r
- tool command line\r
- \r
- @throws BuidException\r
- **/\r
- public void execute() throws BuildException {\r
-\r
- Project project = this.getOwningTarget().getProject();\r
-\r
- //\r
- // absolute path of efi tools\r
- //\r
- String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");\r
- String command;\r
- if (path == null) {\r
- command = toolName;\r
- } else {\r
- command = path + File.separator + toolName;\r
- }\r
-\r
- String argument = "" + verbose + venderId + deviceId + dump + revision + classCode \r
- + binaryFileList.toStringWithSinglepPrefix(" -b ")\r
- + pe32FileList.toStringWithSinglepPrefix(" -e ")\r
- + pe32ComprFileList.toStringWithSinglepPrefix(" -ec ")\r
- + outputFile;\r
-\r
- try {\r
- Commandline cmdline = new Commandline();\r
- cmdline.setExecutable(command);\r
- cmdline.createArgument().setLine(argument);\r
-\r
- LogStreamHandler streamHandler = new LogStreamHandler(this,\r
- Project.MSG_INFO, Project.MSG_WARN);\r
- Execute runner = new Execute(streamHandler, null);\r
-\r
- runner.setAntRun(project);\r
- runner.setCommandline(cmdline.getCommandline());\r
- runner.setWorkingDirectory(new File(outputDir));\r
-\r
- EdkLog.log(this, EdkLog.EDK_VERBOSE, Commandline.toString(cmdline.getCommandline()));\r
- EdkLog.log(this, EdkLog.EDK_INFO, binaryFileList.toFileList() \r
- + pe32FileList.toFileList() + pe32ComprFileList.toFileList()\r
- + " => " + outputFile.toFileList());\r
-\r
- int exitCode = runner.execute();\r
- if (exitCode != 0) {\r
- //\r
- // command execution fail\r
- //\r
- EdkLog.log(this, "ERROR = " + Integer.toHexString(exitCode));\r
- throw new BuildException(toolName + " failed!");\r
- } else {\r
- EdkLog.log(this, EdkLog.EDK_VERBOSE, toolName + " succeeded!");\r
- }\r
- } catch (Exception e) {\r
- throw new BuildException(e.getMessage());\r
- }\r
- }\r
-\r
- /**\r
- getVerbose\r
- \r
- This function is to get class member "verbose"\r
- \r
- @return verbose for verbose output.\r
- **/\r
- public String getVerbose() {\r
- return verbose.getValue();\r
- }\r
-\r
- /**\r
- setVerbose\r
- \r
- This function is to set class member "verbose"\r
- \r
- @param verbose for verbose output.\r
- **/\r
- public void setVerbose(boolean verbose) {\r
- if (verbose){\r
- this.verbose.setArg(" -", "p");\r
- }\r
- }\r
-\r
- /**\r
- getVenderId\r
- \r
- This function is to get class member "venderId"\r
- \r
- @return venderId String of venderId.\r
- **/\r
- public String getVenderId() {\r
- return venderId.getValue();\r
- }\r
-\r
- /**\r
- setVenderId\r
- \r
- This function is to set class member "venderId"\r
- \r
- @param venderId String of venderId.\r
- **/\r
- public void setVenderId(String venderId) {\r
- this.venderId.setArg(" -v ", venderId);\r
- }\r
-\r
- /**\r
- getDeviceId\r
- \r
- This function is to get class member "deviceId"\r
- \r
- @return deviceId String of device ID.\r
- **/\r
- public String getDeviceId() {\r
- return this.deviceId.getValue();\r
- }\r
-\r
- /**\r
- setDeviceId\r
- \r
- This function is to set class member "deviceId"\r
- \r
- @param deviceId String of device ID.\r
- **/\r
- public void setDeviceId(String deviceId) {\r
- this.deviceId.setArg(" -d ", deviceId);\r
- }\r
-\r
-\r
- /**\r
- getOutputFile\r
- \r
- This function is to get class member "outputFile"\r
- \r
- @return outputFile name of output directory.\r
- **/\r
- public String getOutputFile() {\r
- return outputFile.getValue();\r
- }\r
-\r
- /**\r
- setOutputFile\r
- \r
- This function is to set class member "dscFile"\r
- \r
- @param outputFile name of DSC file\r
- **/\r
- public void setOutputFile(String outputFile) {\r
- this.outputFile.setArg(" -o ", outputFile);\r
- }\r
-\r
- /**\r
- getClassCode\r
- \r
- This function is to get class member "classCode"\r
- \r
- @return fdImage name of class code file.\r
- **/\r
- public String getClassCode() {\r
- return classCode.getValue();\r
- }\r
-\r
- /**\r
- setclassCode\r
- \r
- This function is to set class member "classCode"\r
- \r
- @param fdImage name of class code file.\r
- **/\r
- public void setclassCode(String classCode) {\r
- this.classCode.setArg(" -cc ", classCode);\r
- }\r
-\r
- /**\r
- getRevision\r
- \r
- This function is to get class member "revision".\r
- \r
- @return revision hex revision in the PDI data header.\r
- **/\r
- public String getRevision() {\r
- return revision.getValue();\r
- }\r
-\r
- /**\r
- setRevision\r
- \r
- This function is to set class member "revision"\r
- \r
- @param revision hex revision in the PDI data header.\r
- **/\r
- public void setRevision(String revision) {\r
- this.revision.setArg(" -rev ", revision);\r
- }\r
-\r
- /**\r
- getFlashDeviceImage\r
- \r
- This function is to get class member "dump"\r
- \r
- @return flashDeviceImage name of flash device image\r
- **/\r
- public String getDump() {\r
- return dump.getValue();\r
- }\r
-\r
- /**\r
- setFlashDeviceImage\r
- \r
- This function is to set class member "dump"\r
- \r
- @param flashDeviceImage name of flash device image\r
- **/\r
- public void setDump(boolean dump) {\r
- if (dump) {\r
- this.dump.setArg(" -", "dump");\r
- }\r
- }\r
-\r
- /**\r
- getOutputDir\r
- \r
- This function is to get class member "outputDir"\r
- \r
- @return outputDir string of output directory\r
- **/\r
- public String getOutputDir() {\r
- return outputDir;\r
- }\r
-\r
- /**\r
- setOutputDir\r
- \r
- This function is to set class member "outputDir"\r
- \r
- @param outputDir string of output directory\r
- **/\r
- public void setOutputDir(String outputDir) {\r
- this.outputDir = outputDir;\r
- }\r
-\r
- /**\r
- addBinaryFile\r
- \r
- This function is to add binary file to binaryFile list.\r
- \r
- @param binaryFile name of binary file.\r
- **/\r
- public void addConfiguredBinaryFile(Input binaryFile){\r
- this.binaryFileList.insert(binaryFile);\r
- }\r
-\r
- /**\r
- addPe32File\r
- \r
- This function is to add pe32 file to pe32File list.\r
- \r
- @param pe32File name of pe32 file.\r
- **/\r
- public void addConfiguredPe32File(Input pe32File){\r
- this.pe32FileList.insert(pe32File);\r
- }\r
-\r
- /**\r
- addPe32ComprFile\r
- \r
- This function os to add compressed pe32 file to pe32ComprFile list.\r
- \r
- @param pe32ComprFile name of compressed pe32 file.\r
- **/\r
- public void addConfiguredPe32ComprFile(Input pe32ComprFile){\r
- this.pe32ComprFileList.insert(pe32ComprFile);\r
- }\r
-}\r