Add Arch Check for single module build. To Fix T167 & T224.
authorwuyizhong <wuyizhong@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 30 Aug 2006 03:11:48 +0000 (03:11 +0000)
committerwuyizhong <wuyizhong@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 30 Aug 2006 03:11:48 +0000 (03:11 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1404 6f19259b-4bc3-4df7-8a09-765794883524

Tools/Source/GenBuild/org/tianocore/build/GenBuildTask.java
Tools/Source/GenBuild/org/tianocore/build/fpd/FpdParserTask.java

index 42d3313ad3e95335c7a7863040af65e5dbb81f5c..9b4dfa3486c7b1c93a26ffde9412591bf09c4854 100644 (file)
@@ -342,7 +342,8 @@ public class GenBuildTask extends Ant {
         //\r
         FpdParserTask fpdParser = new FpdParserTask();\r
         fpdParser.setProject(getProject());\r
-        fpdParser.parseFpdFile(platformId.getFpdFile());\r
+        fpdParser.parseFpdFile(platformId.getFpdFile(), moduleId);\r
+        PropertyManager.setProperty("ARCH", fpdParser.getAllArchForModule(moduleId));\r
 \r
         //\r
         // Prepare for Platform related common properties\r
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