summaryrefslogtreecommitdiffstats
path: root/BaseTools/Source/Python/Workspace/BuildClassObject.py
diff options
context:
space:
mode:
authorBobCF <bob.c.feng@intel.com>2018-06-22 17:14:13 +0800
committerLiming Gao <liming.gao@intel.com>2018-07-13 17:25:43 +0800
commit543f5ac30facfbb40eafb2b4908649a427784080 (patch)
tree4225636a5ca48691912bfe1a7bd3ee45d7bdfd55 /BaseTools/Source/Python/Workspace/BuildClassObject.py
parente550f259a94ecbd97bff5bfaba4dd3d5ed272be8 (diff)
downloadedk2-543f5ac30facfbb40eafb2b4908649a427784080.tar.gz
edk2-543f5ac30facfbb40eafb2b4908649a427784080.tar.bz2
edk2-543f5ac30facfbb40eafb2b4908649a427784080.zip
BaseTools: Enable structure pcd in FDF file
Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Bob Feng <bob.c.feng@intel.com> Cc: Liming Gao <liming.gao@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
Diffstat (limited to 'BaseTools/Source/Python/Workspace/BuildClassObject.py')
-rw-r--r--BaseTools/Source/Python/Workspace/BuildClassObject.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py b/BaseTools/Source/Python/Workspace/BuildClassObject.py
index c188b47534..3b47715cbc 100644
--- a/BaseTools/Source/Python/Workspace/BuildClassObject.py
+++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py
@@ -70,7 +70,8 @@ class PcdClassObject(object):
if IsDsc:
self.DscDefaultValue = Value
self.PcdValueFromComm = ""
- self.DefinitionPosition = ("", "")
+ self.PcdValueFromFdf = ""
+ self.DefinitionPosition = ("","")
## Get the maximum number of bytes
def GetPcdMaxSize(self):
@@ -78,6 +79,16 @@ class PcdClassObject(object):
return MAX_SIZE_TYPE[self.DatumType]
MaxSize = int(self.MaxDatumSize, 10) if self.MaxDatumSize else 0
+ if self.PcdValueFromFdf:
+ if self.PcdValueFromFdf.startswith("{") and self.PcdValueFromFdf.endswith("}"):
+ MaxSize = max([len(self.PcdValueFromFdf.split(",")),MaxSize])
+ elif self.PcdValueFromFdf.startswith("\"") or self.PcdValueFromFdf.startswith("\'"):
+ MaxSize = max([len(self.PcdValueFromFdf)-2+1,MaxSize])
+ elif self.PcdValueFromFdf.startswith("L\""):
+ MaxSize = max([2*(len(self.PcdValueFromFdf)-3+1),MaxSize])
+ else:
+ MaxSize = max([len(self.PcdValueFromFdf),MaxSize])
+
if self.PcdValueFromComm:
if self.PcdValueFromComm.startswith("{") and self.PcdValueFromComm.endswith("}"):
return max([len(self.PcdValueFromComm.split(",")), MaxSize])
@@ -169,6 +180,7 @@ class StructurePcd(PcdClassObject):
self.DefaultValueFromDec = ""
self.ValueChain = set()
self.PcdFieldValueFromComm = collections.OrderedDict()
+ self.PcdFieldValueFromFdf = collections.OrderedDict()
def __repr__(self):
return self.TypeName
@@ -216,6 +228,7 @@ class StructurePcd(PcdClassObject):
self.expressions = PcdObject.expressions if PcdObject.expressions else self.expressions
self.DscRawValue = PcdObject.DscRawValue if PcdObject.DscRawValue else self.DscRawValue
self.PcdValueFromComm = PcdObject.PcdValueFromComm if PcdObject.PcdValueFromComm else self.PcdValueFromComm
+ self.PcdValueFromFdf = PcdObject.PcdValueFromFdf if PcdObject.PcdValueFromFdf else self.PcdValueFromFdf
self.DefinitionPosition = PcdObject.DefinitionPosition if PcdObject.DefinitionPosition else self.DefinitionPosition
if isinstance(PcdObject, StructurePcd):
self.StructuredPcdIncludeFile = PcdObject.StructuredPcdIncludeFile if PcdObject.StructuredPcdIncludeFile else self.StructuredPcdIncludeFile
@@ -231,6 +244,7 @@ class StructurePcd(PcdClassObject):
self.PkgPath = PcdObject.PkgPath if PcdObject.PkgPath else self.PkgPath
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
## LibraryClassObject
#