ModuleData = self._Bdb[ModuleFile, self._Arch, self._Target, self._Toolchain]\r
PkgSet.update(ModuleData.Packages)\r
\r
- self._DecPcds = GetDeclaredPcd(self, self._Bdb, self._Arch, self._Target, self._Toolchain,PkgSet)\r
+ self._DecPcds, self._GuidDict = GetDeclaredPcd(self, self._Bdb, self._Arch, self._Target, self._Toolchain,PkgSet)\r
\r
\r
if (PcdCName, TokenSpaceGuid) not in self._DecPcds:\r
ValueList[Index] = ValueExpression(ValueList[Index], GlobalData.gPlatformPcds)(True)\r
except WrnExpression, Value:\r
ValueList[Index] = Value.result\r
+ except BadExpression, Value:\r
+ EdkLogger.error('Parser', FORMAT_INVALID, Value, File=self.MetaFile, Line=self._LineIndex + 1)\r
except EvaluationException, Excpt:\r
if hasattr(Excpt, 'Pcd'):\r
if Excpt.Pcd in GlobalData.gPlatformOtherPcds:\r
else:\r
EdkLogger.error('Parser', FORMAT_INVALID, "Invalid expression: %s" % str(Excpt),\r
File=self.MetaFile, Line=LineNo)\r
- if ValueList[Index] == 'True':\r
- ValueList[Index] = '1'\r
- elif ValueList[Index] == 'False':\r
- ValueList[Index] = '0'\r
if ValueList[Index]:\r
+ DatumType = self._DecPcds[PcdCName, TokenSpaceGuid].DatumType\r
+ try:\r
+ ValueList[Index] = ValueExpressionEx(ValueList[Index], DatumType, self._GuidDict)(True)\r
+ except BadExpression, Value:\r
+ EdkLogger.error('Parser', FORMAT_INVALID, Value, File=self.MetaFile, Line=LineNo,\r
+ ExtraData="PCD [%s.%s] Value \"%s\" " % (TokenSpaceGuid, PcdCName, ValueList[Index]))\r
Valid, ErrStr = CheckPcdDatum(self._DecPcds[PcdCName, TokenSpaceGuid].DatumType, ValueList[Index])\r
if not Valid:\r
EdkLogger.error('build', FORMAT_INVALID, ErrStr, File=self.MetaFile, Line=LineNo,\r
continue\r
ModuleData = self._Bdb[ModuleFile, self._Arch, self._Target, self._Toolchain]\r
PkgSet.update(ModuleData.Packages)\r
- self._DecPcds = GetDeclaredPcd(self, self._Bdb, self._Arch, self._Target, self._Toolchain,PkgSet)\r
+ self._DecPcds, self._GuidDict = GetDeclaredPcd(self, self._Bdb, self._Arch, self._Target, self._Toolchain,PkgSet)\r
return self._DecPcds\r
_Macros = property(_GetMacros)\r
Arch = property(_GetArch, _SetArch)\r