From 1ae469b9ed59306f43419e2beb4a547399c096ac Mon Sep 17 00:00:00 2001 From: Bob Feng Date: Fri, 10 Apr 2015 07:06:13 +0000 Subject: [PATCH] BaseTools/Build: Add all support skuid to the Pcd DB system skuid table Update PcdDataBase System SkuIdTable. The system SkuId Table should have all the platform supported skuid. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: "Bob Feng" Reviewed-by: "Chen, Hesheng" Reviewed-by: "Liu, Yingke D" git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17159 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/Source/Python/AutoGen/GenPcdDb.py | 5 ++++- BaseTools/Source/Python/Common/Misc.py | 18 ++++++++++++++---- .../Python/Workspace/WorkspaceDatabase.py | 8 +++++++- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/BaseTools/Source/Python/AutoGen/GenPcdDb.py b/BaseTools/Source/Python/AutoGen/GenPcdDb.py index 4ccd2d65e3..20f4a23371 100644 --- a/BaseTools/Source/Python/AutoGen/GenPcdDb.py +++ b/BaseTools/Source/Python/AutoGen/GenPcdDb.py @@ -1046,7 +1046,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, Phase): } - SkuObj = SkuClass(Platform.Platform.SkuName,Platform.Platform.SkuIds) + SkuObj = SkuClass(Platform.Platform.AvilableSkuIds, Platform.Platform.SkuIds) Dict['SYSTEM_SKU_ID_VALUE'] = Platform.Platform.SkuIds[SkuObj.SystemSkuId] Dict['PCD_INFO_FLAG'] = Platform.Platform.PcdInfoFlag @@ -1592,6 +1592,9 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, Phase): if NumberOfSkuEnabledPcd != 0: Dict['SKU_HEAD_SIZE'] = str(NumberOfSkuEnabledPcd) + 'U' + for AvailableSkuNumber in SkuObj.SkuIdNumberSet: + if AvailableSkuNumber not in Dict['SKUID_VALUE']: + Dict['SKUID_VALUE'].append(AvailableSkuNumber) Dict['SKUID_VALUE'][0] = len(Dict['SKUID_VALUE']) - 1 AutoGenH.Append(gPcdDatabaseAutoGenH.Replace(Dict)) diff --git a/BaseTools/Source/Python/Common/Misc.py b/BaseTools/Source/Python/Common/Misc.py index 79073e2fef..fc1680b5ed 100644 --- a/BaseTools/Source/Python/Common/Misc.py +++ b/BaseTools/Source/Python/Common/Misc.py @@ -1955,17 +1955,26 @@ class SkuClass(): self.AvailableSkuIds = sdict() self.SkuIdSet = [] - + self.SkuIdNumberSet = [] if SkuIdentifier == '' or SkuIdentifier is None: self.SkuIdSet = ['DEFAULT'] + self.SkuIdNumberSet = ['0U'] elif SkuIdentifier == 'ALL': self.SkuIdSet = SkuIds.keys() + self.SkuIdNumberSet = [num.strip() + 'U' for num in SkuIds.values()] else: r = SkuIdentifier.split('|') self.SkuIdSet=[r[k].strip() for k in range(len(r))] + k = None + try: + self.SkuIdNumberSet = [SkuIds[k].strip() + 'U' for k in self.SkuIdSet] + except Exception: + EdkLogger.error("build", PARAMETER_INVALID, + ExtraData = "SKU-ID [%s] is not supported by the platform. [Valid SKU-ID: %s]" + % (k, " ".join(SkuIds.keys()))) if len(self.SkuIdSet) == 2 and 'DEFAULT' in self.SkuIdSet and SkuIdentifier != 'ALL': self.SkuIdSet.remove('DEFAULT') - + self.SkuIdNumberSet.remove('0U') for each in self.SkuIdSet: if each in SkuIds: self.AvailableSkuIds[each] = SkuIds[each] @@ -1992,11 +2001,12 @@ class SkuClass(): return self.SkuIdSet[0] else: return 'DEFAULT' - + def __GetAvailableSkuIdNumber(self): + return self.SkuIdNumberSet SystemSkuId = property(__GetSystemSkuID) AvailableSkuIdSet = property(__GetAvailableSkuIds) SkuUsageType = property(__SkuUsageType) - + AvailableSkuIdNumSet = property(__GetAvailableSkuIdNumber) ## # # This acts like the main() function for the script, unless it is 'import'ed into another diff --git a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py index 9f79f74e8f..14cd22d064 100644 --- a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py +++ b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py @@ -132,6 +132,7 @@ class DscBuildData(PlatformBuildClassObject): self._BuildTargets = None self._SkuName = None self._SkuIdentifier = None + self._AvilableSkuIds = None self._PcdInfoFlag = None self._VarCheckFlag = None self._FlashDefinition = None @@ -232,6 +233,7 @@ class DscBuildData(PlatformBuildClassObject): if self._SkuName == None: self._SkuName = Record[2] self._SkuIdentifier = Record[2] + self._AvilableSkuIds = Record[2] elif Name == TAB_DSC_DEFINES_PCD_INFO_GENERATION: self._PcdInfoFlag = Record[2] elif Name == TAB_DSC_DEFINES_PCD_VAR_CHECK_GENERATION: @@ -362,7 +364,10 @@ class DscBuildData(PlatformBuildClassObject): return True else: return False - + def _GetAviableSkuIds(self): + if self._AvilableSkuIds: + return self._AvilableSkuIds + return self.SkuIdentifier def _GetSkuIdentifier(self): if self._SkuName: return self._SkuName @@ -1177,6 +1182,7 @@ class DscBuildData(PlatformBuildClassObject): BuildTargets = property(_GetBuildTarget) SkuName = property(_GetSkuName, _SetSkuName) SkuIdentifier = property(_GetSkuIdentifier) + AvilableSkuIds = property(_GetAviableSkuIds) PcdInfoFlag = property(_GetPcdInfoFlag) VarCheckFlag = property(_GetVarCheckFlag) FlashDefinition = property(_GetFdfFile) -- 2.39.2