]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/fpd/FpdParserTask.java
Fix EDKT117. If SupArchList is not specified, then build the module with all current...
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / fpd / FpdParserTask.java
index 59bb47faa423f88b840c24218369a6c9ac661348..73db7de4f43a6c0e1afd6ebbb96b28e79af48198 100644 (file)
@@ -33,16 +33,18 @@ import org.apache.tools.ant.taskdefs.Ant;
 import org.apache.tools.ant.taskdefs.Property;\r
 import org.apache.xmlbeans.XmlObject;\r
 \r
-import org.tianocore.build.exception.EdkException;\r
 import org.tianocore.build.global.GlobalData;\r
 import org.tianocore.build.global.OutputManager;\r
 import org.tianocore.build.global.SurfaceAreaQuery;\r
 import org.tianocore.build.id.FpdModuleIdentification;\r
 import org.tianocore.build.id.ModuleIdentification;\r
 import org.tianocore.build.id.PlatformIdentification;\r
+import org.tianocore.build.pcd.action.ActionMessage;\r
+import org.tianocore.build.pcd.action.CollectPCDAction;\r
 import org.tianocore.build.toolchain.ToolChainAttribute;\r
 import org.tianocore.build.toolchain.ToolChainElement;\r
 import org.tianocore.build.toolchain.ToolChainMap;\r
+import org.tianocore.exception.EdkException;\r
 \r
 /**\r
   <code>FpdParserTask</code> is an ANT task. The main function is parsing Framework\r
@@ -136,7 +138,7 @@ public class FpdParserTask extends Task {
             if (platformName == null) {\r
                 throw new BuildException("FpdParserTask parameter error. Please specify platform name or FPD file. ");\r
             }\r
-            platformId = GlobalData.getPlatform(platformName);\r
+            platformId = GlobalData.getPlatformByName(platformName);\r
             fpdFile = platformId.getFpdFile();\r
         }\r
         \r
@@ -187,6 +189,7 @@ public class FpdParserTask extends Task {
         //\r
         // Ant call ${PLATFORM}_build.xml\r
         //\r
+        \r
         Ant ant = new Ant();\r
         ant.setProject(getProject());\r
         ant.setAntfile(platformId.getFpdFile().getParent() + File.separatorChar + platformId.getName() + "_build.xml");\r
@@ -307,7 +310,6 @@ public class FpdParserTask extends Task {
                 bw.close();\r
                 fw.close();\r
             } catch (Exception e) {\r
-                e.printStackTrace();\r
                 throw new BuildException("Generate FV file [" + fvFile.getPath() + "] failed. \n" + e.getMessage());\r
             }\r
         }\r
@@ -341,13 +343,14 @@ public class FpdParserTask extends Task {
             Map<String, XmlObject> map = new HashMap<String, XmlObject>();\r
             map.put("PlatformSurfaceArea", doc);\r
             SurfaceAreaQuery.setDoc(map);\r
-            \r
+\r
             //\r
             // Initialize\r
             //\r
             platformId = SurfaceAreaQuery.getFpdHeader();\r
             platformId.setFpdFile(fpdFile);\r
             getProject().setProperty("PLATFORM", platformId.getName());\r
+            getProject().setProperty("PLATFORM_FILE", platformId.getRelativeFpdFile().replaceAll("(\\\\)", "/"));\r
             getProject().setProperty("PLATFORM_DIR", platformId.getFpdFile().getParent().replaceAll("(\\\\)", "/"));\r
             getProject().setProperty("PLATFORM_RELATIVE_DIR", platformId.getPlatformRelativeDir().replaceAll("(\\\\)", "/"));\r
 \r
@@ -378,8 +381,17 @@ public class FpdParserTask extends Task {
             parseToolChainOptions();\r
 \r
             SurfaceAreaQuery.setDoc(map);\r
+            \r
+            //\r
+            // Pcd Collection. Call CollectPCDAction to collect pcd info.\r
+            //\r
+            try {\r
+                CollectPCDAction ca = new CollectPCDAction();\r
+                ca.perform(GlobalData.getWorkspacePath(),platformId.getFpdFile().getPath(),ActionMessage.NULL_MESSAGE_LEVEL);\r
+            } catch (Exception e){\r
+                throw new BuildException(e.getMessage());\r
+            }\r
         } catch (Exception e) {\r
-            e.printStackTrace();\r
             throw new BuildException("Load FPD file [" + fpdFile.getPath() + "] error. \n" + e.getMessage());\r
         }\r
     }\r
@@ -391,7 +403,7 @@ public class FpdParserTask extends Task {
     **/\r
     private void parseModuleSAFiles() throws EdkException{\r
         Map<FpdModuleIdentification, Map<String, XmlObject>> moduleSAs = SurfaceAreaQuery.getFpdModules();\r
-        System.out.println("Nubmer: ##" + moduleSAs.size());\r
+\r
         //\r
         // For every Module lists in FPD file.\r
         //\r