]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Workspace/BuildClassObject.py
BaseTools: Enable Module Scope Structure Pcd
[mirror_edk2.git] / BaseTools / Source / Python / Workspace / BuildClassObject.py
index db40e3b10c3cf63c5f1a5934fa721fd71b8fe458..ebb65fc2fe932d8b91e1fe1f852bd759ff04bf3f 100644 (file)
@@ -70,6 +70,7 @@ class PcdClassObject(object):
             self.DscDefaultValue = Value\r
         self.PcdValueFromComm = ""\r
         self.PcdValueFromFdf = ""\r
+        self.PcdValueFromComponents = {} #{ModuleGuid:value, file_path,lineNo}\r
         self.CustomAttribute = {}\r
         self.UserDefinedDefaultStoresFlag = UserDefinedDefaultStoresFlag\r
         self._Capacity = None\r
@@ -298,6 +299,7 @@ class StructurePcd(PcdClassObject):
         self.PcdFieldValueFromComm = OrderedDict()\r
         self.PcdFieldValueFromFdf = OrderedDict()\r
         self.DefaultFromDSC=None\r
+        self.PcdFiledValueFromDscComponent = OrderedDict()\r
     def __repr__(self):\r
         return self.TypeName\r
 \r
@@ -324,6 +326,12 @@ class StructurePcd(PcdClassObject):
         self.SkuOverrideValues[SkuName][DefaultStoreName][DimensionAttr][FieldName] = [Value.strip(), FileName, LineNo]\r
         return self.SkuOverrideValues[SkuName][DefaultStoreName][DimensionAttr][FieldName]\r
 \r
+    def AddComponentOverrideValue(self,FieldName, Value, ModuleGuid, FileName="", LineNo=0, DimensionAttr = '-1'):\r
+        self.PcdFiledValueFromDscComponent.setdefault(ModuleGuid, OrderedDict())\r
+        self.PcdFiledValueFromDscComponent[ModuleGuid].setdefault(DimensionAttr,OrderedDict())\r
+        self.PcdFiledValueFromDscComponent[ModuleGuid][DimensionAttr][FieldName] =  [Value.strip(), FileName, LineNo]\r
+        return self.PcdFiledValueFromDscComponent[ModuleGuid][DimensionAttr][FieldName]\r
+\r
     def SetPcdMode (self, PcdMode):\r
         self.PcdMode = PcdMode\r
 \r
@@ -365,6 +373,7 @@ class StructurePcd(PcdClassObject):
             self.ValueChain = PcdObject.ValueChain if PcdObject.ValueChain else self.ValueChain\r
             self.PcdFieldValueFromComm = PcdObject.PcdFieldValueFromComm if PcdObject.PcdFieldValueFromComm else self.PcdFieldValueFromComm\r
             self.PcdFieldValueFromFdf = PcdObject.PcdFieldValueFromFdf if PcdObject.PcdFieldValueFromFdf else self.PcdFieldValueFromFdf\r
+            self.PcdFiledValueFromDscComponent = PcdObject.PcdFiledValueFromDscComponent if PcdObject.PcdFiledValueFromDscComponent else self.PcdFiledValueFromDscComponent\r
 \r
     def __deepcopy__(self,memo):\r
         new_pcd = StructurePcd()\r
@@ -383,6 +392,7 @@ class StructurePcd(PcdClassObject):
         new_pcd.SkuOverrideValues = CopyDict(self.SkuOverrideValues)\r
         new_pcd.PcdFieldValueFromComm = CopyDict(self.PcdFieldValueFromComm)\r
         new_pcd.PcdFieldValueFromFdf = CopyDict(self.PcdFieldValueFromFdf)\r
+        new_pcd.PcdFiledValueFromDscComponent = CopyDict(self.PcdFiledValueFromDscComponent)\r
         new_pcd.ValueChain = {item for item in self.ValueChain}\r
         return new_pcd\r
 \r
@@ -463,6 +473,8 @@ class ModuleBuildClassObject(object):
         self.Pcds                    = {}\r
         self.BuildOptions            = {}\r
         self.Depex                   = {}\r
+        self.StrPcdSet               = []\r
+        self.StrPcdOverallValue      = {}\r
 \r
     ## Convert the class to a string\r
     #\r