]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/fpd/FpdParserTask.java
Add thread control classes. (2)
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / fpd / FpdParserTask.java
index 46fe580c762d74ed2a56f3f9836ab0832a68d81b..c044856de3674d6620973090be2004c93c8cfe78 100644 (file)
@@ -77,26 +77,28 @@ public class FpdParserTask extends Task {
 \r
     private File fpdFile = null;\r
 \r
-    private PlatformIdentification platformId;\r
+    PlatformIdentification platformId;\r
 \r
     private String type;\r
 \r
     ///\r
     /// Mapping from modules identification to out put file name\r
     ///\r
-    private Map<FpdModuleIdentification, String> outfiles = new LinkedHashMap<FpdModuleIdentification, String>();\r
+    Map<FpdModuleIdentification, String> outfiles = new LinkedHashMap<FpdModuleIdentification, String>();\r
 \r
     ///\r
     /// Mapping from FV name to its modules\r
     ///\r
-    private Map<String, Set<FpdModuleIdentification>> fvs = new HashMap<String, Set<FpdModuleIdentification>>();\r
+    Map<String, Set<FpdModuleIdentification>> fvs = new HashMap<String, Set<FpdModuleIdentification>>();\r
 \r
     ///\r
     /// FpdParserTask can specify some ANT properties.\r
     ///\r
     private Vector<Property> properties = new Vector<Property>();\r
 \r
-    private boolean isUnified = true;\r
+    SurfaceAreaQuery saq = null;\r
+    \r
+    boolean isUnified = true;\r
 \r
     /**\r
       Public construct method. It is necessary for ANT task.\r
@@ -169,7 +171,7 @@ public class FpdParserTask extends Task {
         //\r
         // Gen build.xml\r
         //\r
-        PlatformBuildFileGenerator fileGenerator = new PlatformBuildFileGenerator(getProject(), outfiles, fvs, isUnified);\r
+        PlatformBuildFileGenerator fileGenerator = new PlatformBuildFileGenerator(getProject(), outfiles, fvs, isUnified, saq);\r
         fileGenerator.genBuildFile();\r
 \r
         //\r
@@ -193,13 +195,13 @@ public class FpdParserTask extends Task {
       @throws BuildException\r
                   File write FV.inf files error.\r
     **/\r
-    private void genFvInfFiles(String ffsCommonDir) throws BuildException {\r
-        String[] validFv = SurfaceAreaQuery.getFpdValidImageNames();\r
+    void genFvInfFiles(String ffsCommonDir) throws BuildException {\r
+        String[] validFv = saq.getFpdValidImageNames();\r
         for (int i = 0; i < validFv.length; i++) {\r
             //\r
             // Get all global variables from FPD and set them to properties\r
             //\r
-            String[][] globalVariables = SurfaceAreaQuery.getFpdGlobalVariable();\r
+            String[][] globalVariables = saq.getFpdGlobalVariable();\r
             for (int j = 0; j < globalVariables.length; j++) {\r
                 getProject().setProperty(globalVariables[j][0], globalVariables[j][1]);\r
             }\r
@@ -216,7 +218,7 @@ public class FpdParserTask extends Task {
                 //\r
                 // Options\r
                 //\r
-                String[][] options = SurfaceAreaQuery.getFpdOptions(validFv[i]);\r
+                String[][] options = saq.getFpdOptions(validFv[i]);\r
                 if (options.length > 0) {\r
                     bw.write("[options]");\r
                     bw.newLine();\r
@@ -237,7 +239,7 @@ public class FpdParserTask extends Task {
                 //\r
                 // Attributes;\r
                 //\r
-                String[][] attributes = SurfaceAreaQuery.getFpdAttributes(validFv[i]);\r
+                String[][] attributes = saq.getFpdAttributes(validFv[i]);\r
                 if (attributes.length > 0) {\r
                     bw.write("[attributes]");\r
                     bw.newLine();\r
@@ -258,7 +260,7 @@ public class FpdParserTask extends Task {
                 //\r
                 // Components\r
                 //\r
-                String[][] components = SurfaceAreaQuery.getFpdComponents(validFv[i]);\r
+                String[][] components = saq.getFpdComponents(validFv[i]);\r
                 if (components.length > 0) {\r
                     bw.write("[components]");\r
                     bw.newLine();\r
@@ -305,21 +307,18 @@ public class FpdParserTask extends Task {
       @throws BuildException\r
                   FPD file is not valid.\r
     **/\r
-    public void parseFpdFile(File fpdFile, ModuleIdentification singleModuleId) throws BuildException {\r
+    public void parseFpdFile(File fpdFile) throws BuildException {\r
         this.fpdFile = fpdFile;\r
-        parseFpdFile(singleModuleId);\r
+        parseFpdFile();\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(ModuleIdentification singleModuleId) throws BuildException {\r
+    void parseFpdFile() throws BuildException {\r
         try {\r
             XmlObject doc = XmlObject.Factory.parse(fpdFile);\r
 \r
@@ -329,12 +328,12 @@ public class FpdParserTask extends Task {
 \r
             Map<String, XmlObject> map = new HashMap<String, XmlObject>();\r
             map.put("PlatformSurfaceArea", doc);\r
-            SurfaceAreaQuery.setDoc(map);\r
+            saq = new SurfaceAreaQuery(map);\r
 \r
             //\r
             // Initialize\r
             //\r
-            platformId = SurfaceAreaQuery.getFpdHeader();\r
+            platformId = saq.getFpdHeader();\r
             platformId.setFpdFile(fpdFile);\r
             getProject().setProperty("PLATFORM", platformId.getName());\r
             getProject().setProperty("PLATFORM_FILE", platformId.getRelativeFpdFile().replaceAll("(\\\\)", "/"));\r
@@ -344,22 +343,22 @@ public class FpdParserTask extends Task {
             //\r
             // Build mode. User-defined output dir.\r
             //\r
-            String buildMode = SurfaceAreaQuery.getFpdIntermediateDirectories();\r
-            String userDefinedOutputDir = SurfaceAreaQuery.getFpdOutputDirectory();\r
+            String buildMode = saq.getFpdIntermediateDirectories();\r
+            String userDefinedOutputDir = saq.getFpdOutputDirectory();\r
 \r
             OutputManager.getInstance().setup(userDefinedOutputDir, buildMode);\r
 \r
             //\r
             // TBD. Deal PCD and BuildOption related Info\r
             //\r
-            GlobalData.setFpdBuildOptions(SurfaceAreaQuery.getFpdBuildOptions());\r
+            GlobalData.setFpdBuildOptions(saq.getFpdBuildOptions());\r
 \r
-            GlobalData.setToolChainPlatformInfo(SurfaceAreaQuery.getFpdToolChainInfo());\r
+            GlobalData.setToolChainPlatformInfo(saq.getFpdToolChainInfo());\r
 \r
             //\r
             // Parse all list modules SA\r
             //\r
-            parseModuleSAFiles(singleModuleId);\r
+            parseModuleSAFiles();\r
 \r
             //\r
             // TBD. Deal PCD and BuildOption related Info\r
@@ -367,7 +366,7 @@ public class FpdParserTask extends Task {
             parseToolChainFamilyOptions();\r
             parseToolChainOptions();\r
 \r
-            SurfaceAreaQuery.setDoc(map);\r
+            saq.push(map);\r
 \r
             //\r
             // Pcd Collection. Call CollectPCDAction to collect pcd info.\r
@@ -379,13 +378,11 @@ public class FpdParserTask extends Task {
         }\r
     }\r
 \r
-\r
-\r
     /**\r
       Parse all modules listed in FPD file.\r
     **/\r
-    private void parseModuleSAFiles(ModuleIdentification singleModuleId) throws EdkException{\r
-        Map<FpdModuleIdentification, Map<String, XmlObject>> moduleSAs = SurfaceAreaQuery.getFpdModules();\r
+    void parseModuleSAFiles() throws EdkException{\r
+        Map<FpdModuleIdentification, Map<String, XmlObject>> moduleSAs = saq.getFpdModules();\r
 \r
         //\r
         // For every Module lists in FPD file.\r
@@ -395,18 +392,6 @@ 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
@@ -415,8 +400,8 @@ public class FpdParserTask extends Task {
             //\r
             // Put fpdModuleId to the corresponding FV\r
             //\r
-            SurfaceAreaQuery.push(GlobalData.getDoc(fpdModuleId));\r
-            String fvBinding = SurfaceAreaQuery.getModuleFvBindingKeyword();\r
+            saq.push(GlobalData.getDoc(fpdModuleId));\r
+            String fvBinding = saq.getModuleFvBindingKeyword();\r
 \r
             fpdModuleId.setFvBinding(fvBinding);\r
             updateFvs(fvBinding, fpdModuleId);\r
@@ -426,7 +411,7 @@ public class FpdParserTask extends Task {
             //\r
             ModuleIdentification moduleId = fpdModuleId.getModule();\r
 \r
-            String baseName = SurfaceAreaQuery.getModuleOutputFileBasename();\r
+            String baseName = saq.getModuleOutputFileBasename();\r
             \r
             if (baseName == null) {\r
                 baseName = moduleId.getName();\r
@@ -440,12 +425,12 @@ public class FpdParserTask extends Task {
             //\r
             GlobalData.addModuleToolChainOption(fpdModuleId, parseModuleBuildOptions(false));\r
             GlobalData.addModuleToolChainFamilyOption(fpdModuleId, parseModuleBuildOptions(true));\r
-            SurfaceAreaQuery.pop();\r
+            saq.pop();\r
         }\r
     }\r
 \r
-    private ToolChainMap parseModuleBuildOptions(boolean toolChainFamilyFlag) throws EdkException {\r
-        String[][] options = SurfaceAreaQuery.getModuleBuildOptions(toolChainFamilyFlag);\r
+    ToolChainMap parseModuleBuildOptions(boolean toolChainFamilyFlag) throws EdkException {\r
+        String[][] options = saq.getModuleBuildOptions(toolChainFamilyFlag);\r
         if (options == null || options.length == 0) {\r
             return new ToolChainMap();\r
         }\r
@@ -453,7 +438,7 @@ public class FpdParserTask extends Task {
     }\r
 \r
     private ToolChainMap parsePlatformBuildOptions(boolean toolChainFamilyFlag) throws EdkException {\r
-        String[][] options = SurfaceAreaQuery.getPlatformBuildOptions(toolChainFamilyFlag);\r
+        String[][] options = saq.getPlatformBuildOptions(toolChainFamilyFlag);\r
         if (options == null || options.length == 0) {\r
             return new ToolChainMap();\r
         }\r
@@ -490,7 +475,7 @@ public class FpdParserTask extends Task {
       @param fvName current FV name\r
       @param moduleName current module identification\r
     **/\r
-    private void updateFvs(String fvName, FpdModuleIdentification fpdModuleId) {\r
+    void updateFvs(String fvName, FpdModuleIdentification fpdModuleId) {\r
         if (fvName == null || fvName.trim().length() == 0) {\r
             fvName = "NULL";\r
         }\r