]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/global/GlobalData.java
New tool.
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / global / GlobalData.java
index 99cccc364cc3211317f79f2894155cffa89a2d40..e843362c290266e95a76acc0348752daa26b06b0 100644 (file)
@@ -21,20 +21,21 @@ import org.apache.xmlbeans.XmlObject;
 import org.tianocore.DbPathAndFilename;\r
 import org.tianocore.FrameworkDatabaseDocument;\r
 import org.tianocore.ModuleSurfaceAreaDocument;\r
+import org.tianocore.PcdBuildDefinitionDocument;\r
 import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
-import org.tianocore.build.exception.EdkException;\r
 import org.tianocore.build.id.FpdModuleIdentification;\r
 import org.tianocore.build.id.ModuleIdentification;\r
 import org.tianocore.build.id.PackageIdentification;\r
 import org.tianocore.build.id.PlatformIdentification;\r
+import org.tianocore.build.pcd.entity.MemoryDatabaseManager;\r
 import org.tianocore.build.toolchain.ToolChainAttribute;\r
 import org.tianocore.build.toolchain.ToolChainConfig;\r
 import org.tianocore.build.toolchain.ToolChainElement;\r
 import org.tianocore.build.toolchain.ToolChainInfo;\r
 import org.tianocore.build.toolchain.ToolChainKey;\r
 import org.tianocore.build.toolchain.ToolChainMap;\r
-//import org.tianocore.build.pcd.entity.MemoryDatabaseManager;\r
-//import org.tianocore.logger.EdkLog;\r
+import org.tianocore.exception.EdkException;\r
+import org.tianocore.logger.EdkLog;\r
 \r
 import java.io.File;\r
 import java.util.HashMap;\r
@@ -130,7 +131,7 @@ public class GlobalData {
     private static Map<FpdModuleIdentification, ToolChainMap> moduleToolChainOption = new HashMap<FpdModuleIdentification, ToolChainMap>();\r
     private static Map<FpdModuleIdentification, ToolChainMap> moduleToolChainFamilyOption = new HashMap<FpdModuleIdentification, ToolChainMap>();\r
 \r
-//    private static final MemoryDatabasseManager pcdDbManager = new MemoryDatabaseManager();\r
+    private static final MemoryDatabaseManager pcdDbManager = new MemoryDatabaseManager();\r
 \r
     \r
 \r
@@ -341,7 +342,7 @@ public class GlobalData {
         //\r
         // First part: get the MSA files info\r
         //\r
-        doc = getNativeMsa(moduleId);\r
+        doc.putAll(getNativeMsa(moduleId));\r
         \r
         //\r
         // Second part: put build options\r
@@ -413,6 +414,7 @@ public class GlobalData {
             msaMap.put("PPIs", cloneXmlObject(msa.getPPIs(), true));\r
             msaMap.put("Guids", cloneXmlObject(msa.getGuids(), true));\r
             msaMap.put("Externs", cloneXmlObject(msa.getExterns(), true));\r
+            msaMap.put("PcdCoded", cloneXmlObject(msa.getPcdCoded(), true));\r
             return msaMap;\r
         }\r
         catch (Exception ex){\r
@@ -507,15 +509,16 @@ public class GlobalData {
     /**\r
      * return two values: {cName, GuidValue}\r
      */\r
-    public static String[] getGuid(PackageIdentification[] packages, String name)\r
+    public static String[] getGuid(List<PackageIdentification> packages, String name)\r
             throws BuildException {\r
         if (packages == null) {\r
             // throw Exception or not????\r
             return new String[0];\r
         }\r
         String[] result = null;\r
-        for (int i = 0; i < packages.length; i++) {\r
-            Spd spd = spdTable.get(packages[i]);\r
+        Iterator item = packages.iterator();\r
+        while (item.hasNext()){\r
+            Spd spd = spdTable.get(item.next());\r
             //\r
             // If find one package defined the GUID\r
             //\r
@@ -523,20 +526,22 @@ public class GlobalData {
                 return result;\r
             }\r
         }\r
+\r
         return null;\r
     }\r
 \r
     /**\r
      * return two values: {cName, GuidValue}\r
      */\r
-    public static String[] getPpiGuid(PackageIdentification[] packages,\r
+    public static String[] getPpiGuid(List<PackageIdentification> packages,\r
             String name) throws BuildException {\r
         if (packages == null) {\r
             return new String[0];\r
         }\r
         String[] result = null;\r
-        for (int i = 0; i < packages.length; i++) {\r
-            Spd spd = spdTable.get(packages[i]);\r
+        Iterator item = packages.iterator();\r
+        while (item.hasNext()){\r
+            Spd spd = spdTable.get(item.next());\r
             //\r
             // If find one package defined the Ppi GUID\r
             //\r
@@ -551,18 +556,19 @@ public class GlobalData {
     /**\r
      * return two values: {cName, GuidValue}\r
      */\r
-    public static String[] getProtocolGuid(PackageIdentification[] packages,\r
+    public static String[] getProtocolGuid(List<PackageIdentification> packages,\r
             String name) throws BuildException {\r
         if (packages == null) {\r
             return new String[0];\r
         }\r
         String[] result = null;\r
-        for (int i = 0; i < packages.length; i++) {\r
-            Spd spd = spdTable.get(packages[i]);\r
+        Iterator item = packages.iterator();\r
+        while (item.hasNext()){\r
+            Spd spd = spdTable.get(item.next());\r
             //\r
             // If find one package defined the protocol GUID\r
             //\r
-            if ((result = spd.getProtocol(name)) != null) {\r
+            if ((result = spd.getProtocol(name))!= null){\r
                 return result;\r
             }\r
         }\r
@@ -750,52 +756,61 @@ public class GlobalData {
     //\r
     // for PCD\r
     //\r
-//    public synchronized static MemoryDatabaseManager getPCDMemoryDBManager() {\r
-//        return pcdDbManager;\r
-//    }\r
+    public synchronized static MemoryDatabaseManager getPCDMemoryDBManager() {\r
+        return pcdDbManager;\r
+    }\r
 \r
     //\r
-    // For PCD\r
+    // For PCD get tokenSpaceGUid\r
     //\r
-    /**\r
-     * \r
-     * @param guidName\r
-     * @return\r
-     */\r
-//    public synchronized static String[] getGuidInfoGuid(String guidName) {\r
-//        String[] cNameGuid = null;\r
-//        Set set = spdTable.keySet();\r
-//        Iterator iter = set.iterator();\r
-//\r
-//        while (iter.hasNext()) {\r
-//            Spd spd = (Spd) spdTable.get(iter.next());\r
-//            cNameGuid = spd.getGuidNameArray(guidName);\r
-//            if (cNameGuid != null) {\r
-//                break;\r
-//            }\r
-//        }\r
-//        return cNameGuid;\r
-//    }\r
+    public synchronized static String[] getGuidInfoFromCname(String cName){\r
+        String cNameGuid[] = null;\r
+        String guid = null;\r
+        Set set = spdTable.keySet();\r
+        Iterator iter = set.iterator();\r
+        \r
+        while (iter.hasNext()){\r
+            Spd spd = (Spd) spdTable.get(iter.next());\r
+            guid = spd.getGuidFromCname(cName);\r
+            if (guid != null){\r
+                cNameGuid[0] = new String(cName);\r
+                cNameGuid[1] = new String(guid);\r
+                break;\r
+            }\r
+        }\r
+        return cNameGuid;\r
+    }\r
 \r
     //\r
     // For PCD\r
     //\r
-//    public synchronized static Map<FpdModuleIdentification, XmlObject> getFpdModuleSaXmlObject(\r
-//            String xmlObjectName) {\r
-//        Set<FpdModuleIdentification> fpdModuleSASet = fpdModuleSA.keySet();\r
-//        Iterator item = fpdModuleSASet.iterator();\r
-//\r
-//        Map<FpdModuleIdentification, XmlObject> SAPcdBuildDef = new HashMap<FpdModuleIdentification, XmlObject>();\r
-//        Map<String, XmlObject> SANode = new HashMap<String, XmlObject>();\r
-//        FpdModuleIdentification moduleId;\r
-//        while (item.hasNext()) {\r
-//            moduleId = (FpdModuleIdentification) item.next();\r
-//            SANode = fpdModuleSA.get(item.next());\r
-//            SAPcdBuildDef.put(moduleId,\r
-//                    (PcdBuildDefinitionDocument.PcdBuildDefinition) SANode\r
-//                            .get(xmlObjectName));\r
-//        }\r
-//        return SAPcdBuildDef;\r
-//    }\r
+    public synchronized static Map<FpdModuleIdentification, XmlObject> getFpdModuleSaXmlObject(\r
+            String xmlObjectName) {\r
+        Set<FpdModuleIdentification> fpdModuleSASet = fpdModuleSA.keySet();\r
+        Iterator item = fpdModuleSASet.iterator();\r
+        \r
+\r
+        Map<FpdModuleIdentification, XmlObject> SAPcdBuildDef = new HashMap<FpdModuleIdentification, XmlObject>();\r
+        Map<String, XmlObject> SANode = new HashMap<String, XmlObject>();\r
+        FpdModuleIdentification moduleId;\r
+        while (item.hasNext()) {\r
+            \r
+            moduleId = (FpdModuleIdentification) item.next();\r
+            SANode = fpdModuleSA.get(moduleId);\r
+            try{\r
+                if (SANode.get(xmlObjectName)!= null){\r
+                    SAPcdBuildDef.put(moduleId,\r
+                            (XmlObject) SANode\r
+                                    .get(xmlObjectName));\r
+\r
+                }\r
+                            \r
+                \r
+            } catch (Exception e){\r
+                EdkLog.log(EdkLog.EDK_INFO, e.getMessage());\r
+            }\r
+            }\r
+        return SAPcdBuildDef;\r
+    }\r
 }\r
 \r