BaseTools/Source/Python/Workspace/BuildClassObject.py | 2 +- BaseTools/Source/Python/Workspace/DecBuildData.py | 2 +- BaseTools/Source/Python/Workspace/DscBuildData.py | 8 ++++---- BaseTools/Source/Python/Workspace/MetaFileParser.py | 4 +++- 4 files changed, 9 insertions(+), 7 deletions(-)
for structure Pcd declaration in DEC 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>
---
BaseTools/Source/Python/Workspace/BuildClassObject.py | 2 +-
BaseTools/Source/Python/Workspace/DecBuildData.py | 2 +-
BaseTools/Source/Python/Workspace/DscBuildData.py | 8 ++++----
BaseTools/Source/Python/Workspace/MetaFileParser.py | 4 +++-
4 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py b/BaseTools/Source/Python/Workspace/BuildClassObject.py
index 3afb27a9c0..0e1161c96f 100644
--- a/BaseTools/Source/Python/Workspace/BuildClassObject.py
+++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py
@@ -113,11 +113,11 @@ class StructurePcd(PcdClassObject):
if SkuInfoList is None: SkuInfoList={}
if validateranges is None: validateranges=[]
if validlists is None: validlists=[]
if expressions is None : expressions=[]
super(StructurePcd, self).__init__(Name, Guid, Type, DatumType, Value, Token, MaxDatumSize, SkuInfoList, IsOverrided, GuidValue, validateranges, validlists, expressions)
- self.StructuredPcdIncludeFile = StructuredPcdIncludeFile
+ self.StructuredPcdIncludeFile = [] if StructuredPcdIncludeFile is None else StructuredPcdIncludeFile
self.PackageDecs = Packages
self.DefaultStoreName = [default_store]
self.DefaultValues = collections.OrderedDict({})
self.PcdMode = None
self.SkuOverrideValues = collections.OrderedDict({})
diff --git a/BaseTools/Source/Python/Workspace/DecBuildData.py b/BaseTools/Source/Python/Workspace/DecBuildData.py
index f6b908dee6..2fd3820dcc 100644
--- a/BaseTools/Source/Python/Workspace/DecBuildData.py
+++ b/BaseTools/Source/Python/Workspace/DecBuildData.py
@@ -374,11 +374,11 @@ class DecBuildData(PackageBuildClassObject):
for pcdname in s_pcd_set:
dep_pkgs = []
struct_pcd = StructurePcd()
for item,LineNo in s_pcd_set[pcdname]:
if "<HeaderFiles>" in item.TokenCName:
- struct_pcd.StructuredPcdIncludeFile = item.DefaultValue
+ struct_pcd.StructuredPcdIncludeFile.append(item.DefaultValue)
elif "<Packages>" in item.TokenCName:
dep_pkgs.append(item.DefaultValue)
elif item.DatumType == item.TokenCName:
struct_pcd.copy(item)
struct_pcd.TokenValue = struct_pcd.TokenValue.strip("{").strip()
diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py b/BaseTools/Source/Python/Workspace/DscBuildData.py
index 256fdd6875..0384b96997 100644
--- a/BaseTools/Source/Python/Workspace/DscBuildData.py
+++ b/BaseTools/Source/Python/Workspace/DscBuildData.py
@@ -1669,14 +1669,14 @@ class DscBuildData(PlatformBuildClassObject):
CApp = PcdMainCHeader
Includes = {}
for PcdName in StructuredPcds:
Pcd = StructuredPcds[PcdName]
- IncludeFile = Pcd.StructuredPcdIncludeFile
- if IncludeFile not in Includes:
- Includes[IncludeFile] = True
- CApp = CApp + '#include <%s>\n' % (IncludeFile)
+ for IncludeFile in Pcd.StructuredPcdIncludeFile:
+ if IncludeFile not in Includes:
+ Includes[IncludeFile] = True
+ CApp = CApp + '#include <%s>\n' % (IncludeFile)
CApp = CApp + '\n'
for PcdName in StructuredPcds:
Pcd = StructuredPcds[PcdName]
if not Pcd.SkuOverrideValues:
diff --git a/BaseTools/Source/Python/Workspace/MetaFileParser.py b/BaseTools/Source/Python/Workspace/MetaFileParser.py
index 8f4b5e5cc1..4359ba4b33 100644
--- a/BaseTools/Source/Python/Workspace/MetaFileParser.py
+++ b/BaseTools/Source/Python/Workspace/MetaFileParser.py
@@ -1889,26 +1889,28 @@ class DecParser(MetaFileParser):
self._ValueList[0] = self._CurrentStructurePcdName
if "|" not in self._CurrentLine:
if "<HeaderFiles>" == self._CurrentLine:
self._include_flag = True
+ self._package_flag = False
self._ValueList = None
return
if "<Packages>" == self._CurrentLine:
self._package_flag = True
self._ValueList = None
+ self._include_flag = False
return
if self._include_flag:
self._ValueList[1] = "<HeaderFiles>_" + md5.new(self._CurrentLine).hexdigest()
self._ValueList[2] = self._CurrentLine
- self._include_flag = False
if self._package_flag and "}" != self._CurrentLine:
self._ValueList[1] = "<Packages>_" + md5.new(self._CurrentLine).hexdigest()
self._ValueList[2] = self._CurrentLine
if self._CurrentLine == "}":
self._package_flag = False
+ self._include_flag = False
self._ValueList = None
return
else:
PcdTockens = self._CurrentLine.split(TAB_VALUE_SPLIT)
PcdNames = PcdTockens[0].split(TAB_SPLIT)
--
2.14.3.windows.1
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Reviewed-by: Liming Gao <liming.gao@intel.com> >-----Original Message----- >From: Feng, Bob C >Sent: Monday, January 29, 2018 2:10 PM >To: edk2-devel@lists.01.org >Cc: Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming <liming.gao@intel.com> >Subject: [Patch] BaseTools: Support multiple .h file > >for structure Pcd declaration in DEC 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> >--- > BaseTools/Source/Python/Workspace/BuildClassObject.py | 2 +- > BaseTools/Source/Python/Workspace/DecBuildData.py | 2 +- > BaseTools/Source/Python/Workspace/DscBuildData.py | 8 ++++---- > BaseTools/Source/Python/Workspace/MetaFileParser.py | 4 +++- > 4 files changed, 9 insertions(+), 7 deletions(-) > >diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py >b/BaseTools/Source/Python/Workspace/BuildClassObject.py >index 3afb27a9c0..0e1161c96f 100644 >--- a/BaseTools/Source/Python/Workspace/BuildClassObject.py >+++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py >@@ -113,11 +113,11 @@ class StructurePcd(PcdClassObject): > if SkuInfoList is None: SkuInfoList={} > if validateranges is None: validateranges=[] > if validlists is None: validlists=[] > if expressions is None : expressions=[] > super(StructurePcd, self).__init__(Name, Guid, Type, DatumType, Value, >Token, MaxDatumSize, SkuInfoList, IsOverrided, GuidValue, validateranges, >validlists, expressions) >- self.StructuredPcdIncludeFile = StructuredPcdIncludeFile >+ self.StructuredPcdIncludeFile = [] if StructuredPcdIncludeFile is None >else StructuredPcdIncludeFile > self.PackageDecs = Packages > self.DefaultStoreName = [default_store] > self.DefaultValues = collections.OrderedDict({}) > self.PcdMode = None > self.SkuOverrideValues = collections.OrderedDict({}) >diff --git a/BaseTools/Source/Python/Workspace/DecBuildData.py >b/BaseTools/Source/Python/Workspace/DecBuildData.py >index f6b908dee6..2fd3820dcc 100644 >--- a/BaseTools/Source/Python/Workspace/DecBuildData.py >+++ b/BaseTools/Source/Python/Workspace/DecBuildData.py >@@ -374,11 +374,11 @@ class DecBuildData(PackageBuildClassObject): > for pcdname in s_pcd_set: > dep_pkgs = [] > struct_pcd = StructurePcd() > for item,LineNo in s_pcd_set[pcdname]: > if "<HeaderFiles>" in item.TokenCName: >- struct_pcd.StructuredPcdIncludeFile = item.DefaultValue >+ struct_pcd.StructuredPcdIncludeFile.append(item.DefaultValue) > elif "<Packages>" in item.TokenCName: > dep_pkgs.append(item.DefaultValue) > elif item.DatumType == item.TokenCName: > struct_pcd.copy(item) > struct_pcd.TokenValue = struct_pcd.TokenValue.strip("{").strip() >diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py >b/BaseTools/Source/Python/Workspace/DscBuildData.py >index 256fdd6875..0384b96997 100644 >--- a/BaseTools/Source/Python/Workspace/DscBuildData.py >+++ b/BaseTools/Source/Python/Workspace/DscBuildData.py >@@ -1669,14 +1669,14 @@ class DscBuildData(PlatformBuildClassObject): > CApp = PcdMainCHeader > > Includes = {} > for PcdName in StructuredPcds: > Pcd = StructuredPcds[PcdName] >- IncludeFile = Pcd.StructuredPcdIncludeFile >- if IncludeFile not in Includes: >- Includes[IncludeFile] = True >- CApp = CApp + '#include <%s>\n' % (IncludeFile) >+ for IncludeFile in Pcd.StructuredPcdIncludeFile: >+ if IncludeFile not in Includes: >+ Includes[IncludeFile] = True >+ CApp = CApp + '#include <%s>\n' % (IncludeFile) > CApp = CApp + '\n' > > for PcdName in StructuredPcds: > Pcd = StructuredPcds[PcdName] > if not Pcd.SkuOverrideValues: >diff --git a/BaseTools/Source/Python/Workspace/MetaFileParser.py >b/BaseTools/Source/Python/Workspace/MetaFileParser.py >index 8f4b5e5cc1..4359ba4b33 100644 >--- a/BaseTools/Source/Python/Workspace/MetaFileParser.py >+++ b/BaseTools/Source/Python/Workspace/MetaFileParser.py >@@ -1889,26 +1889,28 @@ class DecParser(MetaFileParser): > self._ValueList[0] = self._CurrentStructurePcdName > > if "|" not in self._CurrentLine: > if "<HeaderFiles>" == self._CurrentLine: > self._include_flag = True >+ self._package_flag = False > self._ValueList = None > return > if "<Packages>" == self._CurrentLine: > self._package_flag = True > self._ValueList = None >+ self._include_flag = False > return > > if self._include_flag: > self._ValueList[1] = "<HeaderFiles>_" + >md5.new(self._CurrentLine).hexdigest() > self._ValueList[2] = self._CurrentLine >- self._include_flag = False > if self._package_flag and "}" != self._CurrentLine: > self._ValueList[1] = "<Packages>_" + >md5.new(self._CurrentLine).hexdigest() > self._ValueList[2] = self._CurrentLine > if self._CurrentLine == "}": > self._package_flag = False >+ self._include_flag = False > self._ValueList = None > return > else: > PcdTockens = self._CurrentLine.split(TAB_VALUE_SPLIT) > PcdNames = PcdTockens[0].split(TAB_SPLIT) >-- >2.14.3.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
© 2016 - 2024 Red Hat, Inc.