X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=Tools%2FSource%2FGenBuild%2Forg%2Ftianocore%2Fbuild%2Fautogen%2FAutoGen.java;h=28e72af699600781ba5d12fc33255b95eedfa663;hp=f3b107712ea96a2f4e3ba8e6cd7ef7b621d04e8d;hb=bd4814401e1277f19fa1498dbd187dca68923b47;hpb=11eb278ae57cfc9ba415fcf91e61dea56d6082c0 diff --git a/Tools/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java b/Tools/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java index f3b107712e..28e72af699 100644 --- a/Tools/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java +++ b/Tools/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java @@ -83,6 +83,11 @@ public class AutoGen { /// private CommonDefinition.PCD_DRIVER_TYPE pcdDriverType; + /// + /// Judge whether this module's library instance use PcdLib library class + /// + private boolean isModuleLibraryInstanceUsePcd; + /// /// The protocl list which records in module or library surface area and /// it's dependence on library instance surface area. @@ -328,6 +333,28 @@ public class AutoGen { // String[] libClassList = SurfaceAreaQuery .getLibraryClasses(CommonDefinition.AlwaysConsumed,this.arch); + boolean isModuleConsumePcdLib = false; + List libClassArray = new ArrayList(); + for (int index = 0; index < libClassList.length; index++) { + libClassArray.add(libClassList[index]); + // + // Search all library class of a module for PcdLib + // + if (libClassList[index].equalsIgnoreCase(CommonDefinition.pcdLibName)) { + isModuleConsumePcdLib = true; + } + } + + // + // If module do not use PCD but module's library use PCD. + // + if (!isModuleConsumePcdLib && this.isModuleLibraryInstanceUsePcd) { + libClassArray.add(CommonDefinition.pcdLibName); + } + + libClassList = new String[libClassArray.size()]; + libClassArray.toArray(libClassList); + if (libClassList != null) { libClassIncludeH = LibraryClassToAutogenH(libClassList); item = libClassIncludeH.iterator(); @@ -679,7 +706,6 @@ public class AutoGen { // Get include file from GlobalData's SPDTable according to // library class name. // - for (int i = 0; i < libClassList.length; i++) { includerName = GlobalData.getLibraryClassHeaderFiles( SurfaceAreaQuery.getDependencePkg(this.arch), @@ -2050,8 +2076,7 @@ public class AutoGen { // Get override map // - Map libDoc = GlobalData.getDoc( - libInstanceId, this.arch); + Map libDoc = GlobalData.getDoc(libInstanceId, this.arch); SurfaceAreaQuery.push(libDoc); // // Get , , list of this library @@ -2066,6 +2091,9 @@ public class AutoGen { .getProtocolNotifyArray(this.arch); String[] guidList = SurfaceAreaQuery .getGuidEntryArray(this.arch); + String[] libraryClassList = SurfaceAreaQuery.getLibraryClasses( + CommonDefinition.AlwaysConsumed, + this.arch); PackageIdentification[] pkgList = SurfaceAreaQuery.getDependencePkg(this.arch); // @@ -2097,7 +2125,11 @@ public class AutoGen { this.mDepPkgList.add(pkgList[index]); } } - + for (index = 0; index < libraryClassList.length; index++) { + if (libraryClassList[index].equalsIgnoreCase(CommonDefinition.pcdLibName)) { + this.isModuleLibraryInstanceUsePcd = true; + } + } // // If not yet parse this library instance's constructor // element,parse it.