summaryrefslogtreecommitdiff
path: root/Tools/Java/Source/GenBuild
diff options
context:
space:
mode:
authorklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>2006-12-25 09:21:54 +0000
committerklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>2006-12-25 09:21:54 +0000
commit7432a2144462a36cd8a613a5620963152f03a3f9 (patch)
treecec8c31133bc4f6d5e5c8b0fb49435a0c42166db /Tools/Java/Source/GenBuild
parent13cbe22d4fb0bafe6938cd28ea35ee1514cf2d69 (diff)
downloadedk2-platforms-7432a2144462a36cd8a613a5620963152f03a3f9.tar.xz
If "SupArchList" is defined for a PCD in MSA, should check current arch is in the range of "SupArchList".
If not exist in the range, do not autogen for that PCD. If exist, autogen it. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2136 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'Tools/Java/Source/GenBuild')
-rw-r--r--Tools/Java/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java2
-rw-r--r--Tools/Java/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java52
2 files changed, 40 insertions, 14 deletions
diff --git a/Tools/Java/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java b/Tools/Java/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java
index 68254e2294..f1f0fc0cf4 100644
--- a/Tools/Java/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java
+++ b/Tools/Java/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java
@@ -668,7 +668,7 @@ public class AutoGen {
this.myPcdAutogen = new PCDAutoGenAction(moduleId,
arch,
true,
- saq.getModulePcdEntryNameArray(),
+ saq.getModulePcdEntryNameArray(this.arch),
pcdDriverType,
parentId);
this.myPcdAutogen.execute();
diff --git a/Tools/Java/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java b/Tools/Java/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java
index b6cb329672..17f7541e09 100644
--- a/Tools/Java/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java
+++ b/Tools/Java/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java
@@ -1947,30 +1947,56 @@ public class SurfaceAreaQuery {
return new ModuleSADocument.ModuleSA[0];
}
+
/**
- Get name array of PCD in a module. In one module, token space
- is same, and token name should not be conflicted.
-
- @return String[]
+ Get name array who contains all PCDs in a module according to specified arch.
+
+ @param arch The specified architecture type.
+
+ @return String[] return all PCDs name into array, if no any PCD used by
+ this module, a String[0] array is returned.
**/
- public String[] getModulePcdEntryNameArray() {
+ public String[] getModulePcdEntryNameArray(String arch) {
PcdCodedDocument.PcdCoded.PcdEntry[] pcdEntries = null;
- String[] results;
- int index;
- String[] xPath = new String[] {"/PcdEntry"};
- Object[] returns = get ("PcdCoded", xPath);
+ java.util.List archList = null;
+ java.util.List<String> results = new java.util.ArrayList<String> ();
+ int index;
+ String[] xPath = new String[] {"/PcdEntry"};
+ Object[] returns = get ("PcdCoded", xPath);
if (returns == null) {
return new String[0];
}
- pcdEntries = (PcdCodedDocument.PcdCoded.PcdEntry[])returns;
- results = new String[pcdEntries.length];
+ pcdEntries = (PcdCodedDocument.PcdCoded.PcdEntry[])returns;
for (index = 0; index < pcdEntries.length; index ++) {
- results[index] = pcdEntries[index].getCName();
+ archList = pcdEntries[index].getSupArchList();
+ //
+ // If the ArchList is specified in MSA for this PCD, need check
+ // current arch whether can support by this PCD.
+ //
+ if (archList != null) {
+ if (archList.contains(arch)) {
+ results.add(new String(pcdEntries[index].getCName()));
+ }
+ } else {
+ //
+ // If no ArchList is specificied in MSA for this PCD, that means
+ // this PCD support all architectures.
+ //
+ results.add(new String(pcdEntries[index].getCName()));
+ }
}
- return results;
+
+ if (results.size() == 0) {
+ return new String[0];
+ }
+
+ String[] retArray = new String[results.size()];
+ results.toArray(retArray);
+
+ return retArray;
}
/**