X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=BaseTools%2FSource%2FPython%2FWorkspace%2FBuildClassObject.py;h=7e96370d955024a15144b3b12059e8cf1b9219e1;hp=209315d901b2cc192cd86ea4889b7e11ca207419;hb=71127ce88392d2a0392cb0cb90eaa0245da14f05;hpb=5565a8c4d2196b5e55e702169feefeeb07a330d9 diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py b/BaseTools/Source/Python/Workspace/BuildClassObject.py index 209315d901..7e96370d95 100644 --- a/BaseTools/Source/Python/Workspace/BuildClassObject.py +++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py @@ -11,11 +11,6 @@ # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # -import Common.LongFilePathOs as os - -from collections import OrderedDict -from Common.Misc import RealPath2 -from Common.BuildToolError import * from Common.DataType import * import collections @@ -66,10 +61,11 @@ class PcdClassObject(object): self.validlists = validlists self.expressions = expressions self.DscDefaultValue = None - self.DscRawValue = None + self.DscRawValue = {} if IsDsc: self.DscDefaultValue = Value self.PcdValueFromComm = "" + self.PcdValueFromFdf = "" self.DefinitionPosition = ("","") ## Get the maximum number of bytes @@ -77,16 +73,26 @@ class PcdClassObject(object): if self.DatumType in TAB_PCD_NUMERIC_TYPES: return MAX_SIZE_TYPE[self.DatumType] - MaxSize = int(self.MaxDatumSize,10) if self.MaxDatumSize else 0 + 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]) + return max([len(self.PcdValueFromComm.split(",")), MaxSize]) elif self.PcdValueFromComm.startswith("\"") or self.PcdValueFromComm.startswith("\'"): - return max([len(self.PcdValueFromComm)-2+1,MaxSize]) + return max([len(self.PcdValueFromComm)-2+1, MaxSize]) elif self.PcdValueFromComm.startswith("L\""): - return max([2*(len(self.PcdValueFromComm)-3+1),MaxSize]) + return max([2*(len(self.PcdValueFromComm)-3+1), MaxSize]) else: - return max([len(self.PcdValueFromComm),MaxSize]) + return max([len(self.PcdValueFromComm), MaxSize]) return MaxSize ## Get the number of bytes @@ -169,6 +175,7 @@ class StructurePcd(PcdClassObject): self.DefaultValueFromDec = "" self.ValueChain = set() self.PcdFieldValueFromComm = collections.OrderedDict() + self.PcdFieldValueFromFdf = collections.OrderedDict() def __repr__(self): return self.TypeName @@ -178,7 +185,7 @@ class StructurePcd(PcdClassObject): self.DefaultValues[FieldName] = [Value.strip(), FileName, LineNo] return self.DefaultValues[FieldName] - def SetDecDefaultValue(self,DefaultValue): + def SetDecDefaultValue(self, DefaultValue): self.DefaultValueFromDec = DefaultValue def AddOverrideValue (self, FieldName, Value, SkuName, DefaultStoreName, FileName="", LineNo=0): if SkuName not in self.SkuOverrideValues: @@ -216,8 +223,9 @@ 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 type(PcdObject) is StructurePcd: + if isinstance(PcdObject, StructurePcd): self.StructuredPcdIncludeFile = PcdObject.StructuredPcdIncludeFile if PcdObject.StructuredPcdIncludeFile else self.StructuredPcdIncludeFile self.PackageDecs = PcdObject.PackageDecs if PcdObject.PackageDecs else self.PackageDecs self.DefaultValues = PcdObject.DefaultValues if PcdObject.DefaultValues else self.DefaultValues @@ -231,6 +239,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 # @@ -239,18 +248,14 @@ class StructurePcd(PcdClassObject): # @param object: Inherited from object class # @param Name: Input value for LibraryClassName, default is None # @param SupModList: Input value for SupModList, default is [] -# @param Type: Input value for Type, default is None # # @var LibraryClass: To store value for LibraryClass # @var SupModList: To store value for SupModList -# @var Type: To store value for Type # class LibraryClassObject(object): - def __init__(self, Name = None, SupModList = [], Type = None): + def __init__(self, Name = None, SupModList = []): self.LibraryClass = Name self.SupModList = SupModList - if Type is not None: - self.SupModList = CleanString(Type).split(DataType.TAB_SPACE_SPLIT) ## ModuleBuildClassObject # @@ -318,7 +323,7 @@ class ModuleBuildClassObject(object): self.Binaries = [] self.Sources = [] - self.LibraryClasses = OrderedDict() + self.LibraryClasses = collections.OrderedDict() self.Libraries = [] self.Protocols = [] self.Ppis = []