]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/fpd/FpdParserTask.java
Add Arch Check for single module build. To Fix T167 & T224.
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / fpd / FpdParserTask.java
index f0b1f021b3512a2c5af305036fdd4b45946748e9..873da774e5db93ea4118de4ea311fcd569888e2a 100644 (file)
@@ -305,18 +305,21 @@ public class FpdParserTask extends Task {
       @throws BuildException\r
                   FPD file is not valid.\r
     **/\r
-    public void parseFpdFile(File fpdFile) throws BuildException {\r
+    public void parseFpdFile(File fpdFile, ModuleIdentification singleModuleId) throws BuildException {\r
         this.fpdFile = fpdFile;\r
-        parseFpdFile();\r
+        parseFpdFile(singleModuleId);\r
     }\r
 \r
+    private void parseFpdFile() throws BuildException {\r
+        parseFpdFile(null);\r
+    }\r
     /**\r
       Parse FPD file.\r
 \r
       @throws BuildException\r
                   FPD file is not valid.\r
      **/\r
-    private void parseFpdFile() throws BuildException {\r
+    private void parseFpdFile(ModuleIdentification singleModuleId) throws BuildException {\r
         try {\r
             XmlObject doc = XmlObject.Factory.parse(fpdFile);\r
 \r
@@ -356,7 +359,7 @@ public class FpdParserTask extends Task {
             //\r
             // Parse all list modules SA\r
             //\r
-            parseModuleSAFiles();\r
+            parseModuleSAFiles(singleModuleId);\r
 \r
             //\r
             // TBD. Deal PCD and BuildOption related Info\r
@@ -381,7 +384,7 @@ public class FpdParserTask extends Task {
     /**\r
       Parse all modules listed in FPD file.\r
     **/\r
-    private void parseModuleSAFiles() throws EdkException{\r
+    private void parseModuleSAFiles(ModuleIdentification singleModuleId) throws EdkException{\r
         Map<FpdModuleIdentification, Map<String, XmlObject>> moduleSAs = SurfaceAreaQuery.getFpdModules();\r
 \r
         //\r
@@ -392,10 +395,21 @@ public class FpdParserTask extends Task {
         while (iter.hasNext()) {\r
             FpdModuleIdentification fpdModuleId = (FpdModuleIdentification) iter.next();\r
 \r
+            //\r
+            // If is stand-alone module build, just parse this module, pass others\r
+            //\r
+            if (singleModuleId != null) {\r
+                //\r
+                // pass others modules\r
+                //\r
+                if ( ! fpdModuleId.getModule().equals(singleModuleId)) {\r
+                    continue ;\r
+                }\r
+            }\r
+            \r
             //\r
             // Judge if Module is existed?\r
             // TBD\r
-\r
             GlobalData.registerFpdModuleSA(fpdModuleId, moduleSAs.get(fpdModuleId));\r
 \r
             //\r
@@ -558,4 +572,18 @@ public class FpdParserTask extends Task {
     public void setType(String type) {\r
         this.type = type;\r
     }\r
+    \r
+    public String getAllArchForModule(ModuleIdentification moduleId) {\r
+        String archs = "";\r
+        Iterator<FpdModuleIdentification> iter = outfiles.keySet().iterator();\r
+        while (iter.hasNext()) {\r
+            FpdModuleIdentification fpdModuleId = iter.next();\r
+            \r
+            if (fpdModuleId.getModule().equals(moduleId)) {\r
+                archs += fpdModuleId.getArch() + " ";\r
+            }\r
+        }\r
+        \r
+        return archs;\r
+    }\r
 }\r