]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/AutoGen.py
BaseTools: Support Structure PCD value inherit between the different SKUs
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / AutoGen.py
index 783305c7ccb6d29c29cc499f651449e543416b40..be6fecd9f34c52eb67c0b555bd9cf3cd20ebada0 100644 (file)
@@ -44,7 +44,7 @@ from Common.MultipleWorkspace import MultipleWorkspace as mws
 import InfSectionParser\r
 import datetime\r
 import hashlib\r
-from GenVar import Variable,var_info\r
+from GenVar import VariableMgr,var_info\r
 \r
 ## Regular expression for splitting Dependency Expression string into tokens\r
 gDepexTokenPattern = re.compile("(\(|\)|\w+| \S+\.inf)")\r
@@ -1225,6 +1225,7 @@ class PlatformAutoGen(AutoGen):
         self.AllPcdList = []\r
         # get the original module/package/platform objects\r
         self.BuildDatabase = Workspace.BuildDatabase\r
+        self.DscBuildDataObj = Workspace.Platform\r
 \r
         # flag indicating if the makefile/C-code file has been created or not\r
         self.IsMakeFileCreated  = False\r
@@ -1354,23 +1355,21 @@ class PlatformAutoGen(AutoGen):
                     LibAuto.ConstPcd[key] = Pcd.DefaultValue\r
 \r
     def CollectVariables(self, DynamicPcdSet):\r
-        VariableInfo = Variable()\r
+        VariableInfo = VariableMgr(self.DscBuildDataObj._GetDefaultStores(),self.DscBuildDataObj._GetSkuIds())\r
         Index = 0\r
         for Pcd in DynamicPcdSet:\r
-            if not hasattr(Pcd,"DefaultStoreName"):\r
-                Pcd.DefaultStoreName = ['0']\r
-            for StorageName in Pcd.DefaultStoreName:\r
-                pcdname = ".".join((Pcd.TokenSpaceGuidCName,Pcd.TokenCName))\r
-                for SkuName in Pcd.SkuInfoList:\r
-                    Sku = Pcd.SkuInfoList[SkuName]\r
-                    SkuId = Sku.SkuId\r
-                    if SkuId == None or SkuId == '':\r
-                        continue\r
-                    if len(Sku.VariableName) > 0:\r
-                        VariableGuidStructure = Sku.VariableGuidValue\r
-                        VariableGuid = GuidStructureStringToGuidString(VariableGuidStructure)\r
-                        if Pcd.Phase == "DXE":\r
-                            VariableInfo.append_variable(var_info(Index,pcdname,StorageName,SkuId, StringToArray(Sku.VariableName),VariableGuid, Sku.VariableAttribute , Pcd.DefaultValue,Sku.HiiDefaultValue,Pcd.DatumType))\r
+            pcdname = ".".join((Pcd.TokenSpaceGuidCName,Pcd.TokenCName))\r
+            for SkuName in Pcd.SkuInfoList:\r
+                Sku = Pcd.SkuInfoList[SkuName]\r
+                SkuId = Sku.SkuId\r
+                if SkuId == None or SkuId == '':\r
+                    continue\r
+                if len(Sku.VariableName) > 0:\r
+                    VariableGuidStructure = Sku.VariableGuidValue\r
+                    VariableGuid = GuidStructureStringToGuidString(VariableGuidStructure)\r
+                    if Pcd.Phase == "DXE":\r
+                        for StorageName in Sku.DefaultStoreDict:\r
+                            VariableInfo.append_variable(var_info(Index,pcdname,StorageName,SkuName, StringToArray(Sku.VariableName),VariableGuid, Sku.VariableAttribute , Pcd.DefaultValue,Sku.DefaultStoreDict[StorageName],Pcd.DatumType))\r
             Index += 1\r
         return VariableInfo\r
     ## Collect dynamic PCDs\r
@@ -2383,7 +2382,7 @@ class PlatformAutoGen(AutoGen):
             else:\r
                 SkuName = 'DEFAULT'\r
             ToPcd.SkuInfoList = {\r
-                SkuName : SkuInfoClass(SkuName, self.Platform.SkuIds[SkuName], '', '', '', '', '', ToPcd.DefaultValue)\r
+                SkuName : SkuInfoClass(SkuName, self.Platform.SkuIds[SkuName][0], '', '', '', '', '', ToPcd.DefaultValue)\r
             }\r
 \r
     ## Apply PCD setting defined platform to a module\r