diff options
author | klu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524> | 2006-08-16 13:59:00 +0000 |
---|---|---|
committer | klu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524> | 2006-08-16 13:59:00 +0000 |
commit | bd4814401e1277f19fa1498dbd187dca68923b47 (patch) | |
tree | 1c445657919990d27cd5a2a7eb8bbb7a37dd11fb /Tools | |
parent | 8c4eeeb6a58a41aee05259ae8f1cdb3de6c58bbf (diff) | |
download | edk2-platforms-bd4814401e1277f19fa1498dbd187dca68923b47.tar.xz |
Fix the track EDKT187: If a module do not use PCD, PcdLib library class need not be exist in its MSA file.
The fixing is judge whether the module's library instance use PCD, if use, build tools will add PcdLib into module's autogen.h automatically.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1297 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'Tools')
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 f3b107712e..28e72af699 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 335ff8f9d4..12deec7d53 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 4b5e1ff181..1086bb8d49 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;
}
|