summaryrefslogtreecommitdiffstats
path: root/BaseTools/Source/Python/Workspace/BuildClassObject.py
diff options
context:
space:
mode:
authorBob Feng <bob.c.feng@intel.com>2020-11-04 11:01:39 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2020-11-05 04:27:28 +0000
commit09af9bd9be2d3e31bba979f8cf6446017b0b863e (patch)
treed7031d0a55ba1586f3cadffc42fc6a19db6c25e7 /BaseTools/Source/Python/Workspace/BuildClassObject.py
parent978b9d511f5b9cb7bc5b09749f86c39bec51525d (diff)
downloadedk2-09af9bd9be2d3e31bba979f8cf6446017b0b863e.tar.gz
edk2-09af9bd9be2d3e31bba979f8cf6446017b0b863e.tar.bz2
edk2-09af9bd9be2d3e31bba979f8cf6446017b0b863e.zip
BaseTools: Enable Module Scope Structure Pcd
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2648 This patch is to enable the Module scoped Structure Pcd usage. User can set structure pcd field value in module scope. For example, under the [components] section of a dsc file, user can override some field value for a specific module. Package/Module.inf{ <PcdsFixedAtBuild> gUefiTokenSpaceGuid.StructurePcdModule.FieldName | 5 } Signed-off-by: Bob Feng <bob.c.feng@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Yuwei Chen <yuwei.chen@intel.com> Tested-by: Liming Gao <gaoliming@byosoft.com.cn> Acked-by: Liming Gao <gaoliming@byosoft.com.cn>
Diffstat (limited to 'BaseTools/Source/Python/Workspace/BuildClassObject.py')
-rw-r--r--BaseTools/Source/Python/Workspace/BuildClassObject.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py b/BaseTools/Source/Python/Workspace/BuildClassObject.py
index db40e3b10c..ebb65fc2fe 100644
--- a/BaseTools/Source/Python/Workspace/BuildClassObject.py
+++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py
@@ -70,6 +70,7 @@ class PcdClassObject(object):
self.DscDefaultValue = Value
self.PcdValueFromComm = ""
self.PcdValueFromFdf = ""
+ self.PcdValueFromComponents = {} #{ModuleGuid:value, file_path,lineNo}
self.CustomAttribute = {}
self.UserDefinedDefaultStoresFlag = UserDefinedDefaultStoresFlag
self._Capacity = None
@@ -298,6 +299,7 @@ class StructurePcd(PcdClassObject):
self.PcdFieldValueFromComm = OrderedDict()
self.PcdFieldValueFromFdf = OrderedDict()
self.DefaultFromDSC=None
+ self.PcdFiledValueFromDscComponent = OrderedDict()
def __repr__(self):
return self.TypeName
@@ -324,6 +326,12 @@ class StructurePcd(PcdClassObject):
self.SkuOverrideValues[SkuName][DefaultStoreName][DimensionAttr][FieldName] = [Value.strip(), FileName, LineNo]
return self.SkuOverrideValues[SkuName][DefaultStoreName][DimensionAttr][FieldName]
+ def AddComponentOverrideValue(self,FieldName, Value, ModuleGuid, FileName="", LineNo=0, DimensionAttr = '-1'):
+ self.PcdFiledValueFromDscComponent.setdefault(ModuleGuid, OrderedDict())
+ self.PcdFiledValueFromDscComponent[ModuleGuid].setdefault(DimensionAttr,OrderedDict())
+ self.PcdFiledValueFromDscComponent[ModuleGuid][DimensionAttr][FieldName] = [Value.strip(), FileName, LineNo]
+ return self.PcdFiledValueFromDscComponent[ModuleGuid][DimensionAttr][FieldName]
+
def SetPcdMode (self, PcdMode):
self.PcdMode = PcdMode
@@ -365,6 +373,7 @@ class StructurePcd(PcdClassObject):
self.ValueChain = PcdObject.ValueChain if PcdObject.ValueChain else self.ValueChain
self.PcdFieldValueFromComm = PcdObject.PcdFieldValueFromComm if PcdObject.PcdFieldValueFromComm else self.PcdFieldValueFromComm
self.PcdFieldValueFromFdf = PcdObject.PcdFieldValueFromFdf if PcdObject.PcdFieldValueFromFdf else self.PcdFieldValueFromFdf
+ self.PcdFiledValueFromDscComponent = PcdObject.PcdFiledValueFromDscComponent if PcdObject.PcdFiledValueFromDscComponent else self.PcdFiledValueFromDscComponent
def __deepcopy__(self,memo):
new_pcd = StructurePcd()
@@ -383,6 +392,7 @@ class StructurePcd(PcdClassObject):
new_pcd.SkuOverrideValues = CopyDict(self.SkuOverrideValues)
new_pcd.PcdFieldValueFromComm = CopyDict(self.PcdFieldValueFromComm)
new_pcd.PcdFieldValueFromFdf = CopyDict(self.PcdFieldValueFromFdf)
+ new_pcd.PcdFiledValueFromDscComponent = CopyDict(self.PcdFiledValueFromDscComponent)
new_pcd.ValueChain = {item for item in self.ValueChain}
return new_pcd
@@ -463,6 +473,8 @@ class ModuleBuildClassObject(object):
self.Pcds = {}
self.BuildOptions = {}
self.Depex = {}
+ self.StrPcdSet = []
+ self.StrPcdOverallValue = {}
## Convert the class to a string
#