Reviewed-by: Liming Gao <liming....@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.f...@intel.com>; Gao, Liming <liming....@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.f...@intel.com>
>Cc: Liming Gao <liming....@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

Reply via email to