]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
Sync BaseTools Trunk (version r2518) to EDKII main trunk.
[mirror_edk2.git] / BaseTools / Source / Python / Workspace / WorkspaceDatabase.py
index 6ff33db329cdf819c960ef6ee3932c62baaec392..16766d32dc38dacd18f9668a246d73d6ec3dd363 100644 (file)
@@ -262,7 +262,7 @@ class DscBuildData(PlatformBuildClassObject):
             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
@@ -271,7 +271,7 @@ class DscBuildData(PlatformBuildClassObject):
             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
@@ -280,7 +280,7 @@ class DscBuildData(PlatformBuildClassObject):
             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
@@ -298,7 +298,7 @@ class DscBuildData(PlatformBuildClassObject):
             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
@@ -307,7 +307,7 @@ class DscBuildData(PlatformBuildClassObject):
             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
@@ -463,7 +463,8 @@ class DscBuildData(PlatformBuildClassObject):
                 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
@@ -841,6 +842,17 @@ class DscBuildData(PlatformBuildClassObject):
             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