diff --git a/Tools/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java b/Tools/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java index 62bb4c6b59..53f5fa908f 100644 --- a/Tools/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java +++ b/Tools/Source/GenBuild/org/tianocore/build/autogen/AutoGen.java @@ -414,11 +414,11 @@ public class AutoGen { null, this.arch, null, - baseName.equalsIgnoreCase("PcdEmulatorPeim"), - false); + false, + SurfaceAreaQuery.getModulePcdEntryNameArray()); this.myPcdAutogen.execute(); } catch (Exception e) { - throw new BuildException("PCD Autogen failed:" + e.getMessage()); + throw new BuildException("PCD Autogen for module failed:" + e.getMessage()); } if (this.myPcdAutogen != null) { @@ -555,11 +555,11 @@ public class AutoGen { null, this.arch, null, - baseName.equalsIgnoreCase("PcdEmulatorPeim"), - true); + true, + SurfaceAreaQuery.getModulePcdEntryNameArray()); this.myPcdAutogen.execute(); } catch (Exception e) { - throw new BuildException(e.getMessage()); + throw new BuildException("Pcd Autogen for library failed! " + e.getMessage()); } if (this.myPcdAutogen != null) { @@ -2015,4 +2015,4 @@ public class AutoGen { } -} \ No newline at end of file +} diff --git a/Tools/Source/GenBuild/org/tianocore/build/global/OverrideProcess.java b/Tools/Source/GenBuild/org/tianocore/build/global/OverrideProcess.java index dae2ca29aa..9354def6ba 100644 --- a/Tools/Source/GenBuild/org/tianocore/build/global/OverrideProcess.java +++ b/Tools/Source/GenBuild/org/tianocore/build/global/OverrideProcess.java @@ -36,7 +36,7 @@ import org.tianocore.LibrariesDocument; import org.tianocore.LibraryClassDefinitionsDocument; import org.tianocore.MsaHeaderDocument; import org.tianocore.MsaLibHeaderDocument; -import org.tianocore.PCDsDocument; +import org.tianocore.PcdCodedDocument; import org.tianocore.PPIsDocument; import org.tianocore.ProtocolsDocument; import org.tianocore.SourceFilesDocument; @@ -113,7 +113,7 @@ public class OverrideProcess { "SourceFiles", "Includes", "Libraries", "Protocols", "Events", "Hobs", "PPIs", "Variables", "BootModes", "SystemTables", "DataHubs", "Formsets", "Guids", "Externs", - "PCDs", "BuildOptions" }; + "PcdCoded", "BuildOptions" }; /// /// list of exclusive elements @@ -223,8 +223,8 @@ public class OverrideProcess { newMap.put("Externs", ((ExternsDocument) map.get("Externs")) .getExterns()); } - if (map.get("PCDs") != null) { - newMap.put("PCDs", ((PCDsDocument) map.get("PCDs")).getPCDs()); + if (map.get("PcdCoded") != null) { + newMap.put("PcdCoded", ((PcdCodedDocument) map.get("PcdCoded")).getPcdCoded()); } if (map.get("BuildOptions") != null) { newMap.put("BuildOptions", ((BuildOptionsDocument) map diff --git a/Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaParser.java b/Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaParser.java index 96003c2e71..a2780e626c 100644 --- a/Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaParser.java +++ b/Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaParser.java @@ -91,18 +91,14 @@ public class SurfaceAreaParser { msaMap.put("Variables", doc.getModuleSurfaceArea().getVariables()); msaMap.put("BootModes", doc.getModuleSurfaceArea().getBootModes()); - msaMap - .put("SystemTables", doc.getModuleSurfaceArea() - .getSystemTables()); + msaMap.put("SystemTables", doc.getModuleSurfaceArea().getSystemTables()); msaMap.put("DataHubs", doc.getModuleSurfaceArea().getDataHubs()); msaMap.put("Formsets", doc.getModuleSurfaceArea().getFormsets()); msaMap.put("Guids", doc.getModuleSurfaceArea().getGuids()); msaMap.put("Externs", doc.getModuleSurfaceArea().getExterns()); - msaMap.put("PCDs", doc.getModuleSurfaceArea().getPCDs()); - msaMap - .put("BuildOptions", doc.getModuleSurfaceArea() - .getBuildOptions()); + msaMap.put("PcdCoded", doc.getModuleSurfaceArea().getPcdCoded()); + msaMap.put("BuildOptions", doc.getModuleSurfaceArea().getBuildOptions()); } /** @@ -132,7 +128,6 @@ public class SurfaceAreaParser { mbdMap.put("Guids", doc.getModuleBuildDescription().getGuids()); mbdMap.put("Externs", doc.getModuleBuildDescription().getExterns()); - mbdMap.put("PCDs", doc.getModuleBuildDescription().getPCDs()); mbdMap.put("BuildOptions", doc.getModuleBuildDescription() .getBuildOptions()); } @@ -168,7 +163,7 @@ public class SurfaceAreaParser { msaMap.put("Guids", doc.getLibraryModuleSurfaceArea().getGuids()); msaMap.put("Externs", doc.getLibraryModuleSurfaceArea().getExterns()); - msaMap.put("PCDs", doc.getLibraryModuleSurfaceArea().getPCDs()); + msaMap.put("PcdCoded", doc.getLibraryModuleSurfaceArea().getPcdCoded()); msaMap.put("BuildOptions", doc.getLibraryModuleSurfaceArea() .getBuildOptions()); } @@ -211,7 +206,6 @@ public class SurfaceAreaParser { mbdMap.put("Externs", doc.getLibraryModuleBuildDescription() .getExterns()); - mbdMap.put("PCDs", doc.getLibraryModuleBuildDescription().getPCDs()); mbdMap.put("BuildOptions", doc.getLibraryModuleBuildDescription() .getBuildOptions()); } diff --git a/Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java b/Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java index 03c8d4328d..ed6d0a2f18 100644 --- a/Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java +++ b/Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java @@ -43,7 +43,7 @@ import org.tianocore.OutputDirectoryDocument; import org.tianocore.PPIsDocument; import org.tianocore.PackageNameDocument; import org.tianocore.ProtocolsDocument; -import org.tianocore.PCDsDocument.PCDs; +import org.tianocore.PcdCodedDocument.PcdCoded; /** SurfaceAreaQuery class is used to query Surface Area information from msa, mbd, @@ -1029,81 +1029,27 @@ public class SurfaceAreaQuery { } /** - Retrieve PCD tokens - - @returns CName/ItemType pairs list if elements are found at the known xpath - @returns null if nothing is there - **/ - public static String[][] getPcdTokenArray() { - String[] xPath = new String[] {"/PcdData"}; - - XmlObject[] returns = get("PCDs", xPath); - if (returns == null || returns.length == 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[] + **/ + public static String[] getModulePcdEntryNameArray() { + PcdCoded.PcdEntry[] pcdEntries = null; + String[] results; + int index; + String[] xPath = new String[] {"/PcdEntry"}; + XmlObject[] returns = get ("PcdCoded", xPath); + if (returns == null) { return null; } + + pcdEntries = (PcdCoded.PcdEntry[])returns; + results = new String[pcdEntries.length]; - PCDs.PcdData[] pcds = (PCDs.PcdData[]) returns; - String[][] result = new String[pcds.length][2]; - for (int i = 0; i < returns.length; ++i) { - if (pcds[i].getItemType() != null) { - result[i][1] = pcds[i].getItemType().toString(); - } else { - result[i][1] = null; - } - result[i][0] = pcds[i].getCName(); + for (index = 0; index < pcdEntries.length; index ++) { + results[index] = pcdEntries[index].getCName(); } - - return result; - } - - /** - Get the PcdToken array from module's surface area document. - The array should contains following data: -
-------------------------------------------------------------------
-CName | ItemType | TokenspaceName | DefaultValue | Usage | HelpText
--------------------------------------------------------------------
-Note: Until new schema applying, now we can only get CName, ItemType,
- - @return 2-array table contains all information of PCD token retrieved from MSA. - **/ - public static Object[][] getModulePCDTokenArray () { - int index; - Object[][] result; - PCDs.PcdData[] pcds; - String[] xPath = new String[] {"/PcdData"}; - XmlObject[] returns = get ("PCDs", xPath); - - if ((returns == null) || (returns.length == 0)) { - return null; - } - - pcds = (PCDs.PcdData[]) returns; - result = new Object[pcds.length][6]; - for (index = 0; index < pcds.length; index ++) { - // - // Get CName - // - result [index][0] = pcds[index].getCName(); - // - // Get ItemType: FEATURE_FLAG, FIXED_AT_BUILD, PATCHABLE_IN_MODLE, DYNAMIC, DYNAMIC_EX - // - if (pcds[index].getItemType() != null) { - result [index][1] = pcds[index].getItemType().toString(); - } else { - result [index][1] = null; - } - - // - // BUGBUG: following field can *not* be got from current MSA until schema changed. - // - //result [index][2] = pcds[index].getTokenSpaceName(); - result [index][2] = null; - result [index][3] = pcds[index].getDefaultValue(); - //result [index][4] = pcds[index].getUsage (); - result [index][4] = null; - //result [index][5] = pcds[index].getHelpText (); - result [index][5] = null; - } - return result; + return results; } } diff --git a/Tools/Source/GenBuild/org/tianocore/build/pcd/action/PCDAutoGenAction.java b/Tools/Source/GenBuild/org/tianocore/build/pcd/action/PCDAutoGenAction.java index 278e58ceae..796aff62c3 100644 --- a/Tools/Source/GenBuild/org/tianocore/build/pcd/action/PCDAutoGenAction.java +++ b/Tools/Source/GenBuild/org/tianocore/build/pcd/action/PCDAutoGenAction.java @@ -18,9 +18,14 @@ package org.tianocore.build.pcd.action; import java.io.File; import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.UUID; +import java.util.ArrayList; +import org.apache.xmlbeans.XmlObject; import org.tianocore.build.global.GlobalData; +import org.tianocore.build.global.SurfaceAreaQuery; import org.tianocore.build.pcd.entity.MemoryDatabaseManager; import org.tianocore.build.pcd.entity.Token; import org.tianocore.build.pcd.entity.UsageInstance; @@ -60,11 +65,6 @@ public class PCDAutoGenAction extends BuildAction { /// private String version; /// - /// Wheter current module is PCD emulated driver. It is only for - /// emulated PCD driver and will be kept until PCD IMAGE tool ready. - /// - private boolean isEmulatedPCDDriver; - /// /// Whether current autogen is for building library used by current module. /// private boolean isBuildUsedLibrary; @@ -75,8 +75,11 @@ public class PCDAutoGenAction extends BuildAction { /// /// The generated string for C code file. /// - private String cAutoGenString; - + private String cAutoGenString; + /// + /// The name array of