]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java
EDKT96.
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / autogen / AutoGen.java
index 3aff06f9569303bc3c56946ec39210d1e33ad11e..e36945501b5a7806fb335424910843e9d408b8f3 100644 (file)
 \r
 package org.tianocore.build.autogen;\r
 \r
-import org.tianocore.build.global.GlobalData;\r
-import org.tianocore.build.global.Spd;\r
-import org.tianocore.build.global.SurfaceAreaQuery;\r
-import org.tianocore.build.id.ModuleIdentification;\r
-import org.tianocore.build.id.PackageIdentification;\r
-import org.tianocore.GuidsDocument;\r
-import org.tianocore.LibraryClassDocument.LibraryClass;\r
-import org.tianocore.PPIsDocument;\r
-import org.tianocore.ProtocolsDocument;\r
-import org.tianocore.build.pcd.action.PCDAutoGenAction;\r
-import org.tianocore.build.exception.*;\r
-import org.tianocore.logger.EdkLog;\r
-import org.apache.tools.ant.BuildException;\r
-import org.apache.xmlbeans.XmlObject;\r
-\r
 import java.io.File;\r
+import java.io.FileInputStream;\r
+import java.io.FileOutputStream;\r
 import java.io.FileReader;\r
 import java.io.FileWriter;\r
 import java.util.ArrayList;\r
@@ -43,6 +30,21 @@ import java.util.List;
 import java.util.Map;\r
 import java.util.Set;\r
 \r
+import org.apache.tools.ant.BuildException;\r
+import org.apache.xmlbeans.XmlObject;\r
+import org.tianocore.GuidsDocument;\r
+import org.tianocore.LibraryClassDocument.LibraryClass;\r
+import org.tianocore.PPIsDocument;\r
+import org.tianocore.ProtocolsDocument;\r
+import org.tianocore.build.exception.*;\r
+import org.tianocore.build.global.GlobalData;\r
+import org.tianocore.build.global.Spd;\r
+import org.tianocore.build.global.SurfaceAreaQuery;\r
+import org.tianocore.build.id.ModuleIdentification;\r
+import org.tianocore.build.id.PackageIdentification;\r
+import org.tianocore.build.pcd.action.PCDAutoGenAction;\r
+import org.tianocore.logger.EdkLog;\r
+\r
 /**\r
  * This class is to generate Autogen.h and Autogen.c according to module surface\r
  * area or library surface area.\r
@@ -52,7 +54,10 @@ public class AutoGen {
        // / The output path of Autogen.h and Autogen.c\r
        // /\r
        private String outputPath;\r
-\r
+    /// \r
+    /// The name of FV directory \r
+    /// \r
+    private String fvDir;\r
        // /\r
        // / The base name of module or library.\r
        // /\r
@@ -104,10 +109,11 @@ public class AutoGen {
         * @param arch\r
         *            Target architecture.\r
         */\r
-       public AutoGen(String outputPath, ModuleIdentification moduleId, String arch) {\r
+       public AutoGen(String fvDir, String outputPath, ModuleIdentification moduleId, String arch) {\r
                this.outputPath = outputPath;\r
                this.moduleId = moduleId;\r
                this.arch = arch;\r
+        this.fvDir = fvDir;\r
 \r
        }\r
 \r
@@ -316,7 +322,17 @@ public class AutoGen {
                }\r
                fileBuffer.append("\r\n");\r
 \r
-               //\r
+        //\r
+        //  If is TianoR8FlashMap, copy {Fv_DIR}/FlashMap.h to \r
+        // {DEST_DIR_DRBUG}/FlashMap.h\r
+        // \r
+        if (SurfaceAreaQuery.isHaveTianoR8FlashMap()) {\r
+            fileBuffer.append(CommonDefinition.include);\r
+            fileBuffer.append("  <");\r
+            fileBuffer.append(CommonDefinition.tianoR8FlashMapH + ">\r\n");\r
+            copyFlashMapHToDebugDir();\r
+        }\r
+\r
                // Write PCD autogen information to AutoGen.h.\r
                //\r
                if (this.myPcdAutogen != null) {\r
@@ -544,6 +560,17 @@ public class AutoGen {
                }\r
                fileBuffer.append("\r\n");\r
 \r
+        //\r
+        //  If is TianoR8FlashMap, copy {Fv_DIR}/FlashMap.h to \r
+        // {DEST_DIR_DRBUG}/FlashMap.h\r
+        // \r
+        if (SurfaceAreaQuery.isHaveTianoR8FlashMap()) {\r
+            fileBuffer.append(CommonDefinition.include);\r
+            fileBuffer.append("  <");\r
+            fileBuffer.append(CommonDefinition.tianoR8FlashMapH + ">\r\n");\r
+            copyFlashMapHToDebugDir();\r
+        }\r
+\r
                //\r
                // Write PCD information to library AutoGen.h.\r
                //\r
@@ -2029,4 +2056,27 @@ public class AutoGen {
 \r
        }\r
 \r
+    private void copyFlashMapHToDebugDir() throws  AutoGenException{\r
+        \r
+        File inFile = new File(fvDir + File.separatorChar + CommonDefinition.flashMapH);\r
+        int size = (int)inFile.length();\r
+        byte[] buffer = new byte[size];\r
+        File outFile = new File (this.outputPath + File.separatorChar + CommonDefinition.tianoR8FlashMapH);\r
+        try{\r
+            if (inFile.exists()) {\r
+                FileInputStream fis = new FileInputStream (inFile);\r
+                fis.read(buffer);\r
+                FileOutputStream fos = new FileOutputStream(outFile);\r
+                fos.write(buffer);\r
+                fis.close();\r
+                fos.close();\r
+            }else {\r
+                throw new AutoGenException("The flashMap.h file don't exist!!");\r
+            }\r
+        } catch (Exception e){\r
+            throw new AutoGenException(e.getMessage());\r
+        }\r
+        \r
+    }\r
+\r
 }
\ No newline at end of file