]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/AutoGen.py
BaseTools: Library PCD type will inherit from the driver
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / AutoGen.py
index 1e6511cdb5d2eeaddabd862c99c09bf09f2b6a72..14d5a94afae2f4166e3adcba01d074f49ce4ece1 100644 (file)
@@ -423,6 +423,7 @@ class WorkspaceAutoGen(AutoGen):
                                 PcdInPlatform = Platform.Pcds[key]\r
                                 if PcdInPlatform.Type:\r
                                     BuildData.Pcds[key].Type = PcdInPlatform.Type\r
+                                    BuildData.Pcds[key].Pending = False\r
 \r
                             if BuildData.MetaFile in Platform.Modules:\r
                                 PlatformModule = Platform.Modules[str(BuildData.MetaFile)]\r
@@ -430,6 +431,23 @@ class WorkspaceAutoGen(AutoGen):
                                     PcdInPlatform = PlatformModule.Pcds[key]\r
                                     if PcdInPlatform.Type:\r
                                         BuildData.Pcds[key].Type = PcdInPlatform.Type\r
+                                        BuildData.Pcds[key].Pending = False\r
+                            else:\r
+                                #Pcd used in Library, Pcd Type from reference module if Pcd Type is Pending\r
+                                if BuildData.Pcds[key].Pending:\r
+                                    MGen = ModuleAutoGen(self, BuildData.MetaFile, Target, Toolchain, Arch, self.MetaFile)\r
+                                    if MGen and MGen.IsLibrary:\r
+                                        if MGen in PGen.LibraryAutoGenList:\r
+                                            ReferenceModules = MGen._ReferenceModules\r
+                                            for ReferenceModule in ReferenceModules:\r
+                                                if ReferenceModule.MetaFile in Platform.Modules:\r
+                                                    RefPlatformModule = Platform.Modules[str(ReferenceModule.MetaFile)]\r
+                                                    if key in RefPlatformModule.Pcds:\r
+                                                        PcdInReferenceModule = RefPlatformModule.Pcds[key]\r
+                                                        if PcdInReferenceModule.Type:\r
+                                                            BuildData.Pcds[key].Type = PcdInReferenceModule.Type\r
+                                                            BuildData.Pcds[key].Pending = False\r
+                                                            break\r
 \r
                         if TAB_PCDS_DYNAMIC_EX in BuildData.Pcds[key].Type:\r
                             if BuildData.IsBinaryModule:\r