import collections\r
import struct\r
from Common import EdkLogger\r
-\r
+from Common import GlobalData\r
from Common.BuildToolError import *\r
from Common.DataType import *\r
from Common.Misc import *\r
if Info.IsLibrary:\r
PcdList = Info.LibraryPcdList\r
else:\r
- PcdList = Info.ModulePcdList\r
+ PcdList = Info.ModulePcdList + Info.LibraryPcdList\r
PcdExCNameTest = 0\r
for PcdModule in PcdList:\r
if PcdModule.Type in PCD_DYNAMIC_EX_TYPE_SET and Pcd.TokenCName == PcdModule.TokenCName:\r
EdkLogger.error("build", AUTOGEN_ERROR,\r
"PCD value is not valid dec or hex number for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
ExtraData="[%s]" % str(Info))\r
- if Pcd.DatumType == TAB_UINT64:\r
- if ValueNumber < 0:\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- "PCD can't be set to negative value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
- ExtraData="[%s]" % str(Info))\r
- elif ValueNumber >= 0x10000000000000000:\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- "Too large PCD value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
- ExtraData="[%s]" % str(Info))\r
- if not Value.endswith('ULL'):\r
- Value += 'ULL'\r
- elif Pcd.DatumType == TAB_UINT32:\r
- if ValueNumber < 0:\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- "PCD can't be set to negative value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
- ExtraData="[%s]" % str(Info))\r
- elif ValueNumber >= 0x100000000:\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- "Too large PCD value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
- ExtraData="[%s]" % str(Info))\r
- if not Value.endswith('U'):\r
- Value += 'U'\r
- elif Pcd.DatumType == TAB_UINT16:\r
- if ValueNumber < 0:\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- "PCD can't be set to negative value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
- ExtraData="[%s]" % str(Info))\r
- elif ValueNumber >= 0x10000:\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- "Too large PCD value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
- ExtraData="[%s]" % str(Info))\r
- if not Value.endswith('U'):\r
- Value += 'U'\r
- elif Pcd.DatumType == TAB_UINT8:\r
- if ValueNumber < 0:\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- "PCD can't be set to negative value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
- ExtraData="[%s]" % str(Info))\r
- elif ValueNumber >= 0x100:\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- "Too large PCD value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
- ExtraData="[%s]" % str(Info))\r
- if not Value.endswith('U'):\r
- Value += 'U'\r
+ if ValueNumber < 0:\r
+ EdkLogger.error("build", AUTOGEN_ERROR,\r
+ "PCD can't be set to negative value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
+ ExtraData="[%s]" % str(Info))\r
+ elif ValueNumber > MAX_VAL_TYPE[Pcd.DatumType]:\r
+ EdkLogger.error("build", AUTOGEN_ERROR,\r
+ "Too large PCD value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
+ ExtraData="[%s]" % str(Info))\r
+ if Pcd.DatumType == TAB_UINT64 and not Value.endswith('ULL'):\r
+ Value += 'ULL'\r
+ elif Pcd.DatumType != TAB_UINT64 and not Value.endswith('U'):\r
+ Value += 'U'\r
+\r
if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
if not Pcd.MaxDatumSize:\r
EdkLogger.error("build", AUTOGEN_ERROR,\r
AutoGenH.Append('//#define %s ASSERT(FALSE) // It is not allowed to set value for a FIXED_AT_BUILD PCD\n' % SetModeName)\r
\r
ConstFixedPcd = False\r
- if PcdItemType == TAB_PCDS_FIXED_AT_BUILD and (key in Info.ConstPcd or (Info.IsLibrary and not Info._ReferenceModules)):\r
+ if PcdItemType == TAB_PCDS_FIXED_AT_BUILD and (key in Info.ConstPcd or (Info.IsLibrary and not Info.ReferenceModules)):\r
ConstFixedPcd = True\r
if key in Info.ConstPcd:\r
Pcd.DefaultValue = Info.ConstPcd[key]\r