]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools: include variable namespace GUIDs of HII PCDs in Guid.xref
authorzhijufan <zhijux.fan@intel.com>
Tue, 28 Aug 2018 02:08:08 +0000 (10:08 +0800)
committerYonghong Zhu <yonghong.zhu@intel.com>
Thu, 30 Aug 2018 12:59:18 +0000 (20:59 +0800)
[PcdsDynamicHii]
gFooTokenSpaceGuid.PcdBar|L"Variable"|gVarNameSpaceGuid|0x0|FALSE|NV,BS

This patch add the variable namespace GUIDs in "Guid.xref" that are
used with dynamic HII PCDs.

Fixes: https://bugzilla.tianocore.org/show_bug.cgi?id=452
Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Zhiju.Fan <zhijux.fan@intel.com>
Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
BaseTools/Source/Python/GenFds/GenFds.py

index 2307a19cbeec7ae9013aaa0033418eead42240e4..9dec9c5eb57d3885ec36401d833b9838ffcddaa6 100644 (file)
@@ -603,12 +603,23 @@ class GenFds :
     def GenerateGuidXRefFile(BuildDb, ArchList, FdfParserObj):\r
         GuidXRefFileName = os.path.join(GenFdsGlobalVariable.FvDir, "Guid.xref")\r
         GuidXRefFile = BytesIO('')\r
+        PkgGuidDict = {}\r
         GuidDict = {}\r
         ModuleList = []\r
         FileGuidList = []\r
         GuidPattern = gGuidPattern\r
         for Arch in ArchList:\r
             PlatformDataBase = BuildDb.BuildObject[GenFdsGlobalVariable.ActivePlatform, Arch, GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]\r
+            PkgList = GenFdsGlobalVariable.WorkSpace.GetPackageList(GenFdsGlobalVariable.ActivePlatform, Arch, GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag)\r
+            for P in PkgList:\r
+                PkgGuidDict.update(P.Guids)\r
+            for Name, Guid in PlatformDataBase.Pcds:\r
+                Pcd = PlatformDataBase.Pcds[Name, Guid]\r
+                if Pcd.Type in [TAB_PCDS_DYNAMIC_HII, TAB_PCDS_DYNAMIC_EX_HII]:\r
+                    for SkuId in Pcd.SkuInfoList:\r
+                        Sku = Pcd.SkuInfoList[SkuId]\r
+                        if Sku.VariableGuid and Sku.VariableGuid in PkgGuidDict.keys():\r
+                            GuidDict[Sku.VariableGuid] = PkgGuidDict[Sku.VariableGuid]\r
             for ModuleFile in PlatformDataBase.Modules:\r
                 Module = BuildDb.BuildObject[ModuleFile, Arch, GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]\r
                 if Module in ModuleList:\r