X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=Tools%2FSource%2FGenBuild%2Forg%2Ftianocore%2Fbuild%2Fglobal%2FGlobalData.java;h=7e1e2c68523d31f9e0b2f94c340473a6aa42329e;hp=99cccc364cc3211317f79f2894155cffa89a2d40;hb=83fba802560b3446de68ac1c280773cf1a4271be;hpb=a29c47e01d9689fad735bbeccfaef67676a425d1
diff --git a/Tools/Source/GenBuild/org/tianocore/build/global/GlobalData.java b/Tools/Source/GenBuild/org/tianocore/build/global/GlobalData.java
index 99cccc364c..7e1e2c6852 100644
--- a/Tools/Source/GenBuild/org/tianocore/build/global/GlobalData.java
+++ b/Tools/Source/GenBuild/org/tianocore/build/global/GlobalData.java
@@ -1,10 +1,10 @@
/** @file
- GlobalData class.
-
+ GlobalData class.
+
GlobalData provide initializing, instoring, querying and update global data.
It is a bridge to intercommunicate between multiple component, such as AutoGen,
- PCD and so on.
-
+ PCD and so on.
+
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -16,13 +16,24 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.build.global;
+import java.io.File;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
import org.apache.tools.ant.BuildException;
import org.apache.xmlbeans.XmlObject;
+
+import org.tianocore.common.exception.EdkException;
+import org.tianocore.common.logger.EdkLog;
+import org.tianocore.pcd.entity.MemoryDatabaseManager;
import org.tianocore.DbPathAndFilename;
import org.tianocore.FrameworkDatabaseDocument;
import org.tianocore.ModuleSurfaceAreaDocument;
import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;
-import org.tianocore.build.exception.EdkException;
import org.tianocore.build.id.FpdModuleIdentification;
import org.tianocore.build.id.ModuleIdentification;
import org.tianocore.build.id.PackageIdentification;
@@ -33,46 +44,32 @@ import org.tianocore.build.toolchain.ToolChainElement;
import org.tianocore.build.toolchain.ToolChainInfo;
import org.tianocore.build.toolchain.ToolChainKey;
import org.tianocore.build.toolchain.ToolChainMap;
-//import org.tianocore.build.pcd.entity.MemoryDatabaseManager;
-//import org.tianocore.logger.EdkLog;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.logging.Logger;
/**
GlobalData provide initializing, instoring, querying and update global data.
It is a bridge to intercommunicate between multiple component, such as AutoGen,
- PCD and so on.
-
-
Note that all global information are initialized incrementally. All data will
+ PCD and so on.
+
+
Note that all global information are initialized incrementally. All data will
parse and record only of necessary during build time.
-
+
@since GenBuild 1.0
**/
public class GlobalData {
-
- public static Logger log = Logger.getAnonymousLogger();
-
///
/// Record current WORKSPACE Directory
///
private static String workspaceDir = "";
-
+
///
/// Be used to ensure Global data will be initialized only once.
///
private static boolean globalFlag = false;
-
+
///
/// Framework Database information: package list and platform list
///
- private static Set packageList = new HashSet();
+ private static Set packageList = new HashSet();
private static Set platformList = new HashSet();
@@ -93,21 +90,21 @@ public class GlobalData {
private static XmlObject fpdBuildOptions;
private static XmlObject fpdDynamicPcds;
-
+
///
/// Parsed modules list
///
private static Map> parsedModules = new HashMap>();
-
+
///
/// built modules list with ARCH, TARGET, TOOLCHAIN
///
private static Set builtModules = new HashSet();
-
+
///
/// PCD memory database stored all PCD information which collected from FPD,MSA and SPD.
///
-// private static final MemoryDatabaseManager pcdDbManager = new MemoryDatabaseManager();
+ private static final MemoryDatabaseManager pcdDbManager = new MemoryDatabaseManager();
///
/// build target + tool chain family/tag name + arch + command types + command options
@@ -117,7 +114,7 @@ public class GlobalData {
/// toolsDef - build tool program information
/// fpdBuildOption - all modules's build options for tool tag or tool chain families
/// moduleSaBuildOption - build options for a specific module
- ///
+ ///
private static ToolChainConfig toolsDef;
private static ToolChainInfo toolChainInfo;
@@ -130,21 +127,17 @@ public class GlobalData {
private static Map moduleToolChainOption = new HashMap();
private static Map moduleToolChainFamilyOption = new HashMap();
-// private static final MemoryDatabasseManager pcdDbManager = new MemoryDatabaseManager();
-
-
-
/**
Parse framework database (DB) and all SPD files listed in DB to initialize
the environment for next build. This method will only be executed only once
- in the whole build process.
-
+ in the whole build process.
+
@param workspaceDatabaseFile the file name of framework database
@param workspaceDir current workspace directory path
@throws BuildException
Framework Dababase or SPD or MSA file is not valid
**/
- public synchronized static void initInfo(String workspaceDatabaseFile, String workspaceDir, String toolsDefFilename) throws BuildException {
+ public synchronized static void initInfo(String workspaceDatabaseFile, String workspaceDir, String toolsDefFilename ) throws BuildException {
//
// ensure this method will be revoked only once
//
@@ -152,12 +145,12 @@ public class GlobalData {
return;
}
globalFlag = true;
-
- //
+
+ //
// Backup workspace directory. It will be used by other method
//
GlobalData.workspaceDir = workspaceDir.replaceAll("(\\\\)", "/");
-
+
//
// Parse tools definition file
//
@@ -165,11 +158,14 @@ public class GlobalData {
// If ToolChain has been set up before, do nothing.
// CONF dir + tools definition file name
//
- String confDir = GlobalData.workspaceDir + File.separatorChar + "Tools" + File.separatorChar + "Conf";
- File toolsDefFile = new File(confDir + File.separatorChar + toolsDefFilename);
- System.out.println("Using file [" + toolsDefFile.getPath() + "] as tools definition file. ");
- toolsDef = new ToolChainConfig(toolsDefFile);
-
+ File toolsDefFile = new File(workspaceDir + File.separatorChar + toolsDefFilename);
+ System.out.println("Using tool definiton file [" + toolsDefFile.getPath() + "].");
+ try {
+ toolsDef = new ToolChainConfig(toolsDefFile);
+ } catch (Exception e) {
+ throw new BuildException(e.getMessage());
+ }
+
//
// Parse Framework Database
//
@@ -179,8 +175,8 @@ public class GlobalData {
//
// validate FrameworkDatabaseFile
//
- if (! db.validate()) {
- throw new BuildException("Framework Database file [" + dbFile.getPath() + "] is invalid.");
+ if (!db.validate()) {
+ throw new BuildException("Framework Database file [" + dbFile.getPath() + "] format is invalid!");
}
//
// Get package list
@@ -189,7 +185,7 @@ public class GlobalData {
List packages = db.getFrameworkDatabase().getPackageList().getFilenameList();
Iterator iter = packages.iterator();
while (iter.hasNext()) {
- String fileName = iter.next().getStringValue();
+ String fileName = iter.next().getStringValue().trim();
Spd spd = new Spd(new File(workspaceDir + File.separatorChar + fileName));
packageList.add(spd.getPackageId());
spdTable.put(spd.getPackageId(), spd);
@@ -203,17 +199,17 @@ public class GlobalData {
List platforms = db.getFrameworkDatabase().getPlatformList().getFilenameList();
Iterator iter = platforms.iterator();
while (iter.hasNext()) {
- String fileName = iter.next().getStringValue();
+ String fileName = iter.next().getStringValue().trim();
File fpdFile = new File(workspaceDir + File.separatorChar + fileName);
- if ( ! fpdFile.exists() ) {
+ if ( !fpdFile.exists() ) {
throw new BuildException("Platform file [" + fpdFile.getPath() + "] not exists. ");
}
XmlObject fpdDoc = XmlObject.Factory.parse(fpdFile);
//
// Verify FPD file, if is invalid, throw Exception
//
- if (! fpdDoc.validate()) {
- throw new BuildException("Framework Platform Surface Area file [" + fpdFile.getPath() + "] is invalid. ");
+ if (!fpdDoc.validate()) {
+ throw new BuildException("Framework Platform Surface Area file [" + fpdFile.getPath() + "] format is invalid!");
}
//
// We can change Map to XmlObject
@@ -223,21 +219,20 @@ public class GlobalData {
//
Map fpdDocMap = new HashMap();
fpdDocMap.put("PlatformSurfaceArea", fpdDoc);
- SurfaceAreaQuery.setDoc(fpdDocMap);
- PlatformIdentification platformId = SurfaceAreaQuery.getFpdHeader();
+ SurfaceAreaQuery saq = new SurfaceAreaQuery(fpdDocMap);
+ PlatformIdentification platformId = saq.getFpdHeader();
platformId.setFpdFile(fpdFile);
platformList.add(platformId);
}
}
} catch (Exception e) {
- e.printStackTrace();
- throw new BuildException("Parse workspace Database [" + dbFile.getPath() + "] Error.\n" + e.getMessage());
+ throw new BuildException("Parse WORKSPACE Database file [" + dbFile.getPath() + "] Error.\n" + e.getMessage());
}
}
-
+
/**
- Get the current WORKSPACE Directory.
-
+ Get the current WORKSPACE Directory.
+
@return current workspace directory
**/
public synchronized static String getWorkspacePath() {
@@ -251,7 +246,7 @@ public class GlobalData {
public synchronized static File getMsaFile(ModuleIdentification moduleId) throws BuildException {
File msaFile = null;
//
- // TBD. Do only when package is null.
+ // TBD. Do only when package is null.
//
Iterator iter = packageList.iterator();
while (iter.hasNext()) {
@@ -263,9 +258,8 @@ public class GlobalData {
}
}
if (msaFile == null){
- throw new BuildException("Can't find Module [" + moduleId.getName() + "] in all packages. ");
- }
- else {
+ throw new BuildException("Can't find Module [" + moduleId.getName() + "] in any SPD package!");
+ } else {
return msaFile;
}
}
@@ -277,7 +271,7 @@ public class GlobalData {
if (moduleId.getPackage() != null) {
return moduleId.getPackage();
}
-
+
PackageIdentification packageId = null;
Iterator iter = packageList.iterator();
while (iter.hasNext()) {
@@ -289,25 +283,24 @@ public class GlobalData {
}
}
if (packageId == null){
- throw new BuildException("Can't find Module [" + moduleId.getName() + "] in all packages. ");
- }
- else {
+ throw new BuildException("Can't find Module [" + moduleId.getName() + "] in any SPD package!");
+ } else {
return packageId;
}
}
-
+
/**
Difference between build and parse: ToolChain and Target
**/
public synchronized static boolean isModuleBuilt(FpdModuleIdentification moduleId) {
return builtModules.contains(moduleId);
}
-
+
public synchronized static void registerBuiltModule(FpdModuleIdentification fpdModuleId) {
builtModules.add(fpdModuleId);
}
-
+
public synchronized static void registerFpdModuleSA(FpdModuleIdentification fpdModuleId, Map doc) {
Map result = new HashMap();
Set keySet = doc.keySet();
@@ -319,18 +312,20 @@ public class GlobalData {
}
fpdModuleSA.put(fpdModuleId, result);
}
-
+
+ public synchronized static boolean hasFpdModuleSA(FpdModuleIdentification fpdModuleId) {
+ return fpdModuleSA.containsKey(fpdModuleId);
+ }
+
/**
- Query overrided module surface area information. If current is Package
- or Platform build, also include the information from FPD file.
-
- Note that surface area parsing is incremental. That means the method will
- only parse the MSA and MBD files if necessary.
+ Query module surface area information.
+
+ Note that surface area parsing is incremental. That means the method will
+ only parse the MSA files if necessary.
- @param moduleName the base name of the module
- @return the overrided module surface area information
- @throws BuildException
- MSA or MBD is not valid
+ @param fpdModuleId Module ID with arch
+ @return ModuleSA info and MSA info for fpdModuleId
+ @throws BuildException Can't find MSA
**/
public synchronized static Map getDoc(FpdModuleIdentification fpdModuleId) throws BuildException {
if (parsedModules.containsKey(fpdModuleId)) {
@@ -341,13 +336,13 @@ public class GlobalData {
//
// First part: get the MSA files info
//
- doc = getNativeMsa(moduleId);
-
+ doc.putAll(getNativeMsa(moduleId));
+
//
// Second part: put build options
//
doc.put("BuildOptions", fpdBuildOptions);
-
+
//
// Third part: get Module info from FPD, such as Library instances, PCDs
//
@@ -367,11 +362,11 @@ public class GlobalData {
return getDoc(fpdModuleId);
}
/**
- Query the native MSA information with module base name.
-
- Note that MSA parsing is incremental. That means the method will
+ Query the native MSA information with module base name.
+
+
Note that MSA parsing is incremental. That means the method will
only to parse the MSA files when never parsed before.
-
+
@param moduleName the base name of the module
@return the native MSA information
@throws BuildException
@@ -386,18 +381,18 @@ public class GlobalData {
nativeMsa.put(moduleId, msaMap);
return msaMap;
}
-
+
public synchronized static Map getNativeMsa(File msaFile) throws BuildException {
- if (! msaFile.exists()) {
- throw new BuildException("Surface Area file [" + msaFile.getPath() + "] can't found.");
+ if (!msaFile.exists()) {
+ throw new BuildException("Module Surface Area file [" + msaFile.getPath() + "] can't be found!");
}
try {
ModuleSurfaceAreaDocument doc = (ModuleSurfaceAreaDocument)XmlObject.Factory.parse(msaFile);
//
// Validate File if they accord with XML Schema
//
- if ( ! doc.validate()){
- throw new BuildException("Module Surface Area file [" + msaFile.getPath() + "] is invalid.");
+ if ( !doc.validate()){
+ throw new BuildException("Module Surface Area file [" + msaFile.getPath() + "] format is invalid!");
}
//
// parse MSA file
@@ -413,19 +408,20 @@ public class GlobalData {
msaMap.put("PPIs", cloneXmlObject(msa.getPPIs(), true));
msaMap.put("Guids", cloneXmlObject(msa.getGuids(), true));
msaMap.put("Externs", cloneXmlObject(msa.getExterns(), true));
+ msaMap.put("PcdCoded", cloneXmlObject(msa.getPcdCoded(), true));
return msaMap;
}
catch (Exception ex){
- throw new BuildException(ex.getMessage());
+ throw new BuildException("Parsing MSA file [" + msaFile.getPath() + "] error. \n" + ex.getMessage() );
}
}
-
+
public static Map getFpdBuildOptions() {
Map map = new HashMap();
map.put("BuildOptions", fpdBuildOptions);
return map;
}
-
+
public static void setFpdBuildOptions(XmlObject fpdBuildOptions) {
GlobalData.fpdBuildOptions = cloneXmlObject(fpdBuildOptions, true);
}
@@ -438,16 +434,12 @@ public class GlobalData {
GlobalData.fpdDynamicPcds = fpdDynamicPcds;
}
- //////////////////////////////////////////////
- //////////////////////////////////////////////
-
public static Set getModules(PackageIdentification packageId){
Spd spd = spdTable.get(packageId);
if (spd == null ) {
Set dummy = new HashSet();
return dummy;
- }
- else {
+ } else {
return spd.getModules();
}
}
@@ -476,7 +468,7 @@ public class GlobalData {
// If can't find library class declaration in every package
//
throw new BuildException("Can not find library class [" + name
- + "] declaration in every packages. ");
+ + "] declaration in any SPD package!");
}
/**
@@ -507,15 +499,16 @@ public class GlobalData {
/**
* return two values: {cName, GuidValue}
*/
- public static String[] getGuid(PackageIdentification[] packages, String name)
+ public static String[] getGuid(List packages, String name)
throws BuildException {
if (packages == null) {
// throw Exception or not????
return new String[0];
}
String[] result = null;
- for (int i = 0; i < packages.length; i++) {
- Spd spd = spdTable.get(packages[i]);
+ Iterator item = packages.iterator();
+ while (item.hasNext()){
+ Spd spd = spdTable.get(item.next());
//
// If find one package defined the GUID
//
@@ -523,20 +516,22 @@ public class GlobalData {
return result;
}
}
+
return null;
}
/**
* return two values: {cName, GuidValue}
*/
- public static String[] getPpiGuid(PackageIdentification[] packages,
+ public static String[] getPpiGuid(List packages,
String name) throws BuildException {
if (packages == null) {
return new String[0];
}
String[] result = null;
- for (int i = 0; i < packages.length; i++) {
- Spd spd = spdTable.get(packages[i]);
+ Iterator item = packages.iterator();
+ while (item.hasNext()){
+ Spd spd = spdTable.get(item.next());
//
// If find one package defined the Ppi GUID
//
@@ -545,48 +540,54 @@ public class GlobalData {
}
}
return null;
-
}
/**
* return two values: {cName, GuidValue}
*/
- public static String[] getProtocolGuid(PackageIdentification[] packages,
+ public static String[] getProtocolGuid(List packages,
String name) throws BuildException {
if (packages == null) {
return new String[0];
}
String[] result = null;
- for (int i = 0; i < packages.length; i++) {
- Spd spd = spdTable.get(packages[i]);
+ Iterator item = packages.iterator();
+ while (item.hasNext()){
+ Spd spd = spdTable.get(item.next());
//
// If find one package defined the protocol GUID
//
- if ((result = spd.getProtocol(name)) != null) {
+ if ((result = spd.getProtocol(name))!= null){
return result;
}
}
return null;
}
-
- /////////////////////////// Update!! Update!! Update!!
-// public synchronized static MemoryDatabaseManager getPCDMemoryDBManager() {
-// return pcdDbManager;
-// }
- ///////////////////////////
- public synchronized static PlatformIdentification getPlatform(String name) throws BuildException {
+
+ public synchronized static PlatformIdentification getPlatformByName(String name) throws BuildException {
Iterator iter = platformList.iterator();
while(iter.hasNext()){
PlatformIdentification platformId = (PlatformIdentification)iter.next();
if (platformId.getName().equalsIgnoreCase(name)) {
-// GlobalData.log.info("Platform: " + platformId + platformId.getFpdFile());
return platformId;
}
}
- throw new BuildException("Can't find platform [" + name + "] in current workspace. ");
+ throw new BuildException("Can't find platform [" + name + "] in the current WORKSPACE database!");
}
-
+
+ public synchronized static PlatformIdentification getPlatform(String filename) throws BuildException {
+ File file = new File(workspaceDir + File.separatorChar + filename);
+ Iterator iter = platformList.iterator();
+ while(iter.hasNext()){
+ PlatformIdentification platformId = (PlatformIdentification)iter.next();
+ if (platformId.getFpdFile().getPath().equalsIgnoreCase(file.getPath())) {
+ return platformId;
+ }
+ }
+ throw new BuildException("Can't find platform file [" + filename + "] in the current WORKSPACE database!");
+ }
+
public synchronized static PackageIdentification refreshPackageIdentification(PackageIdentification packageId) throws BuildException {
Iterator iter = packageList.iterator();
while(iter.hasNext()){
@@ -597,18 +598,15 @@ public class GlobalData {
return packageId;
}
}
- throw new BuildException("Can't find package GUID value " + packageId.getGuid() + " under current workspace. ");
+ throw new BuildException("Can't find package GUID value " + packageId.toGuidString() + " in the current workspace!");
}
-
+
public synchronized static ModuleIdentification refreshModuleIdentification(ModuleIdentification moduleId) throws BuildException {
-// System.out.println("1");
-// System.out.println("##" + moduleId.getGuid());
PackageIdentification packageId = getPackageForModule(moduleId);
-// System.out.println("" + packageId.getGuid());
moduleId.setPackage(packageId);
Spd spd = spdTable.get(packageId);
if (spd == null) {
- throw new BuildException("Can't find package GUID value " + packageId.getGuid() + " under current workspace. ");
+ throw new BuildException("Can't find package GUID value " + packageId.toGuidString() + " in the current workspace!");
}
Set modules = spd.getModules();
Iterator iter = modules.iterator();
@@ -621,13 +619,22 @@ public class GlobalData {
return moduleId;
}
}
- throw new BuildException("Can't find module GUID value " + moduleId.getGuid() + " in " + packageId + " under current workspace. ");
+ throw new BuildException("Can't find module GUID value " + moduleId.toGuidString() + " in " + packageId + " under the current workspace!");
}
-
+
public synchronized static Set getPackageList(){
return packageList;
}
- ///// remove!!
+
+ /**
+ BUGBUG: It is a walk around method. If do not clone, can't query info with
+ XPath correctly.
+
+ @param object XmlObject
+ @param deep flag for deep clone
+ @return XmlObject after clone
+ @throws BuildException parse original XmlObject error.
+ **/
private static XmlObject cloneXmlObject(XmlObject object, boolean deep) throws BuildException {
if ( object == null) {
return null;
@@ -642,10 +649,10 @@ public class GlobalData {
return result;
}
- ////// Tool Chain Related, try to refine and put some logic process to ToolChainFactory
-
+ ///
+ /// Tool Chain Related, try to refine and put some logic process to ToolChainFactory
+ ///
public static ToolChainInfo getToolChainInfo() {
-// GlobalData.log.info(toolsDef.getConfigInfo() + "" + toolChainEnvInfo + toolChainPlatformInfo);
if (toolChainInfo == null) {
toolChainInfo = toolsDef.getConfigInfo().intersection(toolChainEnvInfo);
if (toolChainPlatformInfo != null) {
@@ -653,13 +660,12 @@ public class GlobalData {
}
toolChainInfo.addCommands(toolsDef.getConfigInfo().getCommands());
toolChainInfo.normalize();
- GlobalData.log.info(toolChainInfo + "");
+ System.out.println("Current build tool chain information summary: ");
+ System.out.println(toolChainInfo + "");
}
return toolChainInfo;
}
-
-
public static void setPlatformToolChainFamilyOption(ToolChainMap map) {
platformToolChainFamilyOption = map;
}
@@ -678,9 +684,22 @@ public class GlobalData {
moduleToolChainFamilyOption.put(fpdModuleId, toolChainOption);
}
+ public static boolean isCommandSet(String target, String toolchain, String arch) {
+ String[] commands = getToolChainInfo().getCommands();
+
+ for (int i = 0; i < commands.length; ++i) {
+ String cmdName = toolsDef.getConfig().get(new String[] {target, toolchain, arch, commands[i], ToolChainAttribute.NAME.toString()});
+ if (cmdName != null && cmdName.length() != 0) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
public static String getCommandSetting(String[] commandDescription, FpdModuleIdentification fpdModuleId) throws EdkException {
ToolChainKey toolChainKey = new ToolChainKey(commandDescription);
- ToolChainMap toolChainConfig = toolsDef.getConfig();
+ ToolChainMap toolChainConfig = toolsDef.getConfig();
String setting = null;
if (!commandDescription[ToolChainElement.ATTRIBUTE.value].equals(ToolChainAttribute.FLAGS.toString())) {
@@ -709,7 +728,7 @@ public class GlobalData {
toolChainFamilyKey.setKey(ToolChainAttribute.FLAGS.toString(), ToolChainElement.ATTRIBUTE.value);
option = moduleToolChainFamilyOption.get(fpdModuleId);
- if (option != null) {
+ if (option != null) {
setting = option.get(toolChainFamilyKey);
}
}
@@ -739,7 +758,7 @@ public class GlobalData {
return setting;
}
-
+
public static void setToolChainEnvInfo(ToolChainInfo envInfo) {
toolChainEnvInfo = envInfo;
}
@@ -750,52 +769,67 @@ public class GlobalData {
//
// for PCD
//
-// public synchronized static MemoryDatabaseManager getPCDMemoryDBManager() {
-// return pcdDbManager;
-// }
+ public synchronized static MemoryDatabaseManager getPCDMemoryDBManager() {
+ return pcdDbManager;
+ }
//
- // For PCD
+ // For PCD get tokenSpaceGUid
//
- /**
- *
- * @param guidName
- * @return
- */
-// public synchronized static String[] getGuidInfoGuid(String guidName) {
-// String[] cNameGuid = null;
-// Set set = spdTable.keySet();
-// Iterator iter = set.iterator();
-//
-// while (iter.hasNext()) {
-// Spd spd = (Spd) spdTable.get(iter.next());
-// cNameGuid = spd.getGuidNameArray(guidName);
-// if (cNameGuid != null) {
-// break;
-// }
-// }
-// return cNameGuid;
-// }
+ public synchronized static String getGuidInfoFromCname(String cName){
+ String cNameGuid = null;
+ String guid = null;
+ Set set = spdTable.keySet();
+ Iterator iter = set.iterator();
+
+ if (iter == null) {
+ return null;
+ }
+
+ while (iter.hasNext()){
+ Spd spd = (Spd) spdTable.get(iter.next());
+ guid = spd.getGuidFromCname(cName);
+ if (guid != null){
+ cNameGuid = guid;
+ break;
+ }
+ }
+ return cNameGuid;
+ }
//
// For PCD
//
-// public synchronized static Map getFpdModuleSaXmlObject(
-// String xmlObjectName) {
-// Set fpdModuleSASet = fpdModuleSA.keySet();
-// Iterator item = fpdModuleSASet.iterator();
-//
-// Map SAPcdBuildDef = new HashMap();
-// Map SANode = new HashMap();
-// FpdModuleIdentification moduleId;
-// while (item.hasNext()) {
-// moduleId = (FpdModuleIdentification) item.next();
-// SANode = fpdModuleSA.get(item.next());
-// SAPcdBuildDef.put(moduleId,
-// (PcdBuildDefinitionDocument.PcdBuildDefinition) SANode
-// .get(xmlObjectName));
-// }
-// return SAPcdBuildDef;
-// }
+ public synchronized static Map
+ getFpdModuleSaXmlObject(String xmlObjectName) {
+ Set fpdModuleSASet = fpdModuleSA.keySet();
+ Iterator item = fpdModuleSASet.iterator();
+
+
+ Map SAPcdBuildDef = new HashMap();
+ Map SANode = new HashMap();
+ FpdModuleIdentification moduleId;
+ while (item.hasNext()) {
+
+ moduleId = (FpdModuleIdentification) item.next();
+ SANode = fpdModuleSA.get(moduleId);
+ try{
+ if (SANode.get(xmlObjectName)!= null){
+ SAPcdBuildDef.put(moduleId,
+ (XmlObject) SANode.get(xmlObjectName));
+
+ }
+ } catch (Exception e){
+ EdkLog.log(EdkLog.EDK_INFO, e.getMessage());
+ }
+ }
+ return SAPcdBuildDef;
+ }
+
+ public synchronized static Map getFpdPcdBuildDefinitions() {
+ Map pcdBuildDef = getFpdModuleSaXmlObject ("PcdBuildDefinition");
+
+ return pcdBuildDef;
+ }
}