summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Tools/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java40
-rw-r--r--Tools/Source/GenBuild/org/tianocore/build/autogen/CommonDefinition.java2
-rw-r--r--Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java7
3 files changed, 41 insertions, 8 deletions
diff --git a/Tools/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java b/Tools/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java
index f3b1077..28e72af 100644
--- a/Tools/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java
+++ b/Tools/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java
@@ -84,6 +84,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<String> libClassArray = new ArrayList<String>();
+ 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<String, XmlObject> libDoc = GlobalData.getDoc(
- libInstanceId, this.arch);
+ Map<String, XmlObject> libDoc = GlobalData.getDoc(libInstanceId, this.arch);
SurfaceAreaQuery.push(libDoc);
//
// Get <PPis>, <Protocols>, <Guids> 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.
diff --git a/Tools/Source/GenBuild/org/tianocore/build/autogen/CommonDefinition.java b/Tools/Source/GenBuild/org/tianocore/build/autogen/CommonDefinition.java
index 335ff8f..12deec7 100644
--- a/Tools/Source/GenBuild/org/tianocore/build/autogen/CommonDefinition.java
+++ b/Tools/Source/GenBuild/org/tianocore/build/autogen/CommonDefinition.java
@@ -59,6 +59,8 @@ public class CommonDefinition {
public final static String tianoR8FlashMapH = "TianoR8FlashMap.h";
public final static String flashMapH = "FlashMap.h";
+ public final static String pcdLibName = "PcdLib";
+
//
// The defintions for identifying current module
// is PEI Pcd driver or Dxe Pcd driver.
diff --git a/Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java b/Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java
index 4b5e1ff..1086bb8 100644
--- a/Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java
+++ b/Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java
@@ -624,10 +624,9 @@ public class SurfaceAreaQuery {
libraryClassName.add(libraryClassList[i].getKeyword());
}
}
- String[] libraryArray = new String[libraryClassName.size()];
- for (int i = 0; i < libraryClassName.size(); i++) {
- libraryArray[i] = libraryClassName.get(i);
- }
+
+ String[] libraryArray = new String[libraryClassName.size()];
+ libraryClassName.toArray(libraryArray);
return libraryArray;
}