diff options
author | Bob Feng <bob.c.feng@intel.com> | 2020-11-04 11:01:39 +0800 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2020-11-05 04:27:28 +0000 |
commit | 09af9bd9be2d3e31bba979f8cf6446017b0b863e (patch) | |
tree | d7031d0a55ba1586f3cadffc42fc6a19db6c25e7 /BaseTools/Source/Python/Workspace/BuildClassObject.py | |
parent | 978b9d511f5b9cb7bc5b09749f86c39bec51525d (diff) | |
download | edk2-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.py | 12 |
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
#
|