]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/AutoGen.py
BaseTools: Fix a bug override Pcd by DSC Components section
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / AutoGen.py
index 1787decd1d9e8127fc0f70149a63d3feebad302e..e2589cfbaeb32b9dbbb52fb7362c51c7e7af8d1c 100644 (file)
@@ -2421,7 +2421,7 @@ class PlatformAutoGen(AutoGen):
             ToPcd.validlists = FromPcd.validlists\r
             ToPcd.expressions = FromPcd.expressions\r
 \r
-        if ToPcd.DatumType == "VOID*" and ToPcd.MaxDatumSize in ['', None]:\r
+        if FromPcd != None and ToPcd.DatumType == "VOID*" and ToPcd.MaxDatumSize in ['', None]:\r
             EdkLogger.debug(EdkLogger.DEBUG_9, "No MaxDatumSize specified for PCD %s.%s" \\r
                             % (ToPcd.TokenSpaceGuidCName, TokenCName))\r
             Value = ToPcd.DefaultValue\r
@@ -2494,6 +2494,19 @@ class PlatformAutoGen(AutoGen):
                             break\r
                 if Flag:\r
                     self._OverridePcd(ToPcd, PlatformModule.Pcds[Key], Module)\r
+        # use PCD value to calculate the MaxDatumSize when it is not specified\r
+        for Name, Guid in Pcds:\r
+            Pcd = Pcds[Name, Guid]\r
+            if Pcd.DatumType == "VOID*" and Pcd.MaxDatumSize in ['', None]:\r
+                Value = Pcd.DefaultValue\r
+                if Value in [None, '']:\r
+                    Pcd.MaxDatumSize = '1'\r
+                elif Value[0] == 'L':\r
+                    Pcd.MaxDatumSize = str((len(Value) - 2) * 2)\r
+                elif Value[0] == '{':\r
+                    Pcd.MaxDatumSize = str(len(Value.split(',')))\r
+                else:\r
+                    Pcd.MaxDatumSize = str(len(Value) - 1)\r
         return Pcds.values()\r
 \r
     ## Resolve library names to library modules\r