if self._Header == None:\r
self._GetHeaderInfo()\r
if self._Guid == None:\r
- EdkLogger.error('build', ATTRIBUTE_NOT_AVAILABLE, "No FILE_GUID", File=self.MetaFile)\r
+ EdkLogger.error('build', ATTRIBUTE_NOT_AVAILABLE, "No PLATFORM_GUID", File=self.MetaFile)\r
return self._Guid\r
\r
## Retrieve platform version\r
if self._Header == None:\r
self._GetHeaderInfo()\r
if self._Version == None:\r
- self._Version = ''\r
+ EdkLogger.error('build', ATTRIBUTE_NOT_AVAILABLE, "No PLATFORM_VERSION", File=self.MetaFile)\r
return self._Version\r
\r
## Retrieve platform description file version\r
if self._Header == None:\r
self._GetHeaderInfo()\r
if self._DscSpecification == None:\r
- self._DscSpecification = ''\r
+ EdkLogger.error('build', ATTRIBUTE_NOT_AVAILABLE, "No DSC_SPECIFICATION", File=self.MetaFile) \r
return self._DscSpecification\r
\r
## Retrieve OUTPUT_DIRECTORY\r
if self._Header == None:\r
self._GetHeaderInfo()\r
if self._SupArchList == None:\r
- self._SupArchList = ARCH_LIST\r
+ EdkLogger.error('build', ATTRIBUTE_NOT_AVAILABLE, "No SUPPORTED_ARCHITECTURES", File=self.MetaFile)\r
return self._SupArchList\r
\r
## Retrieve BUILD_TARGETS\r
if self._Header == None:\r
self._GetHeaderInfo()\r
if self._BuildTargets == None:\r
- self._BuildTargets = ['DEBUG', 'RELEASE', 'NOOPT']\r
+ EdkLogger.error('build', ATTRIBUTE_NOT_AVAILABLE, "No BUILD_TARGETS", File=self.MetaFile)\r
return self._BuildTargets\r
\r
## Retrieve SKUID_IDENTIFIER\r
EdkLogger.error('build', ErrorCode, File=self.MetaFile, Line=LineNo,\r
ExtraData=ErrorInfo)\r
# Check duplication\r
- if ModuleFile in self._Modules:\r
+ # If arch is COMMON, no duplicate module is checked since all modules in all component sections are selected\r
+ if self._Arch != 'COMMON' and ModuleFile in self._Modules:\r
EdkLogger.error('build', FILE_DUPLICATED, File=self.MetaFile, ExtraData=str(ModuleFile), Line=LineNo)\r
\r
Module = ModuleBuildClassObject()\r
self.Pcds[Name, Guid] = PcdClassObject(Name, Guid, '', '', '', '', '', {}, False, None)\r
self.Pcds[Name, Guid].DefaultValue = Value\r
\r
+ def IsPlatformPcdDeclared(self, DecPcds):\r
+ for PcdType in (MODEL_PCD_FIXED_AT_BUILD, MODEL_PCD_PATCHABLE_IN_MODULE, MODEL_PCD_FEATURE_FLAG,\r
+ MODEL_PCD_DYNAMIC_DEFAULT, MODEL_PCD_DYNAMIC_HII, MODEL_PCD_DYNAMIC_VPD,\r
+ MODEL_PCD_DYNAMIC_EX_DEFAULT, MODEL_PCD_DYNAMIC_EX_HII, MODEL_PCD_DYNAMIC_EX_VPD):\r
+ RecordList = self._RawData[PcdType, self._Arch]\r
+ for TokenSpaceGuid, PcdCName, Setting, Arch, SkuName, Dummy3, Dummy4 in RecordList:\r
+ if (PcdCName, TokenSpaceGuid) not in DecPcds:\r
+ EdkLogger.error('build', PARSER_ERROR,\r
+ "Pcd (%s.%s) defined in DSC is not declared in DEC files." % (TokenSpaceGuid, PcdCName),\r
+ File=self.MetaFile, Line=Dummy4)\r
+\r
_Macros = property(_GetMacros)\r
Arch = property(_GetArch, _SetArch)\r
Platform = property(_GetPlatformName)\r