diff options
author | klu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524> | 2006-12-25 09:21:54 +0000 |
---|---|---|
committer | klu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524> | 2006-12-25 09:21:54 +0000 |
commit | 7432a2144462a36cd8a613a5620963152f03a3f9 (patch) | |
tree | cec8c31133bc4f6d5e5c8b0fb49435a0c42166db /Tools/Java/Source/GenBuild | |
parent | 13cbe22d4fb0bafe6938cd28ea35ee1514cf2d69 (diff) | |
download | edk2-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.java | 2 | ||||
-rw-r--r-- | Tools/Java/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java | 52 |
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;
}
/**
|