]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/GenPcdDb.py
BaseTools: Fixed build failure for the PCD value initialization.
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / GenPcdDb.py
index 22283ef7fe2384d51aa27eb4c44c25a941531196..82360ae57deb62f5ac0193f98a8bf6c4200a976d 100644 (file)
@@ -1024,6 +1024,19 @@ def NewCreatePcdDatabasePhaseSpecificAutoGen(Platform,Phase):
     def prune_sku(pcd,skuname):\r
         new_pcd = copy.deepcopy(pcd)\r
         new_pcd.SkuInfoList = {skuname:pcd.SkuInfoList[skuname]}\r
+        new_pcd.isinit = 'INIT'\r
+        if new_pcd.DatumType in ['UINT8','UINT16','UINT32','UINT64']:\r
+            for skuobj in pcd.SkuInfoList.values():\r
+                if skuobj.DefaultValue:\r
+                    defaultvalue = int(skuobj.DefaultValue,16) if skuobj.DefaultValue.upper().startswith("0X") else int(skuobj.DefaultValue,10)\r
+                    if defaultvalue  != 0:\r
+                        new_pcd.isinit = "INIT"\r
+                        break\r
+                elif skuobj.VariableName:\r
+                    new_pcd.isinit = "INIT"\r
+                    break\r
+            else:\r
+                new_pcd.isinit = "UNINIT"\r
         return new_pcd\r
     DynamicPcds = Platform.DynamicPcdList\r
     DynamicPcdSet_Sku = {(SkuName,skuobj.SkuId):[] for pcd in DynamicPcds for (SkuName,skuobj) in pcd.SkuInfoList.items() }\r
@@ -1401,8 +1414,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
                     if Sku.DefaultValue == 'TRUE':\r
                         Pcd.InitString = 'INIT'\r
                     else:\r
-                        if int(Sku.DefaultValue, 0) != 0:\r
-                            Pcd.InitString = 'INIT'\r
+                        Pcd.InitString = Pcd.isinit\r
                 #\r
                 # For UNIT64 type PCD's value, ULL should be append to avoid\r
                 # warning under linux building environment.\r