]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/FrameworkTasks/org/tianocore/framework/tasks/EfiRomTask.java
Restructuring for better separation of Tool packages.
[mirror_edk2.git] / Tools / Java / Source / FrameworkTasks / org / tianocore / framework / tasks / EfiRomTask.java
diff --git a/Tools/Java/Source/FrameworkTasks/org/tianocore/framework/tasks/EfiRomTask.java b/Tools/Java/Source/FrameworkTasks/org/tianocore/framework/tasks/EfiRomTask.java
new file mode 100644 (file)
index 0000000..acfb2ba
--- /dev/null
@@ -0,0 +1,376 @@
+/** @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