]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/build/BuildReport.py
BaseTools: Add *B Flag for the field that from command line
[mirror_edk2.git] / BaseTools / Source / Python / build / BuildReport.py
index d6e943d2f1d48e9d5b66f48ae60e2b8122cc6806..21144991bf796b725f6af878a4bf1d33e79af68e 100644 (file)
@@ -37,6 +37,7 @@ from Common.InfClassObject import gComponentType2ModuleType
 from Common.BuildToolError import FILE_WRITE_FAILURE\r
 from Common.BuildToolError import CODE_ERROR\r
 from Common.BuildToolError import COMMAND_FAILURE\r
+from Common.BuildToolError import FORMAT_INVALID\r
 from Common.LongFilePathSupport import OpenLongFilePath as open\r
 from Common.MultipleWorkspace import MultipleWorkspace as mws\r
 import Common.GlobalData as GlobalData\r
@@ -45,7 +46,7 @@ from Common.Misc import PathClass
 from Common.String import NormPath\r
 from Common.DataType import *\r
 import collections\r
-from Common.Expression import ValueExpressionEx\r
+from Common.Expression import *\r
 \r
 ## Pattern to extract contents in EDK DXS files\r
 gDxsDependencyPattern = re.compile(r"DEPENDENCY_START(.+)DEPENDENCY_END", re.DOTALL)\r
@@ -952,10 +953,14 @@ class PcdReport(object):
                     #\r
                     DecDefaultValue = self.DecPcdDefault.get((Pcd.TokenCName, Pcd.TokenSpaceGuidCName, DecType))\r
                     DscDefaultValue = self.DscPcdDefault.get((Pcd.TokenCName, Pcd.TokenSpaceGuidCName))\r
-                    DscDefaultValBak= DscDefaultValue\r
+                    DscDefaultValBak = DscDefaultValue\r
                     DscDefaultValue = self.FdfPcdSet.get((Pcd.TokenCName, Key), DscDefaultValue)\r
-                    if DscDefaultValue:\r
-                        DscDefaultValue = ValueExpressionEx(DscDefaultValue, Pcd.DatumType, self._GuidDict)(True)\r
+                    if DscDefaultValue != DscDefaultValBak:\r
+                        try:\r
+                            DscDefaultValue = ValueExpressionEx(DscDefaultValue, Pcd.DatumType, self._GuidDict)(True)\r
+                        except BadExpression, Value:\r
+                            EdkLogger.error('BuildReport', FORMAT_INVALID, "PCD Value: %s, Type: %s" %(DscDefaultValue, Pcd.DatumType))\r
+\r
                     InfDefaultValue = None\r
                     \r
                     PcdValue = DecDefaultValue\r
@@ -1231,14 +1236,10 @@ class PcdReport(object):
     def PrintStructureInfo(self, File, Struct):\r
         NewInfo = collections.OrderedDict()\r
         for Key, Value in Struct.items():\r
-            if Key not in NewInfo:\r
-                NewInfo[Key] = Value[0]\r
+            if Value[1] and 'build command options' in Value[1]:\r
+                FileWrite(File, '    *B  %-*s = %s' % (self.MaxLen + 4, '.' + Key, Value[0]))\r
             else:\r
-                del NewInfo[Key]\r
-                NewInfo[Key] = Value[0]\r
-        if NewInfo:\r
-            for item in NewInfo:\r
-                FileWrite(File, '        %-*s = %s' % (self.MaxLen + 4, '.' + item, NewInfo[item]))\r
+                FileWrite(File, '        %-*s = %s' % (self.MaxLen + 4, '.' + Key, Value[0]))\r
 \r
     def StrtoHex(self, value):\r
         try:\r