From 7432a2144462a36cd8a613a5620963152f03a3f9 Mon Sep 17 00:00:00 2001 From: klu2 Date: Mon, 25 Dec 2006 09:21:54 +0000 Subject: [PATCH] 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 --- .../org/tianocore/build/autogen/AutoGen.java | 2 +- .../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 results = new java.util.ArrayList (); + 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; } /** -- 2.39.2