import java.util.regex.Matcher;\r
import java.util.regex.Pattern;\r
\r
-import org.apache.xmlbeans.XmlCursor;\r
import org.apache.xmlbeans.XmlObject;\r
import org.apache.xmlbeans.XmlString;\r
import org.tianocore.BuildOptionsDocument;\r
Filename[] sourceFileNames = (Filename[]) returns;\r
List<String[]> outputList = new ArrayList<String[]>();\r
for (int i = 0; i < sourceFileNames.length; i++) {\r
- @SuppressWarnings("unchecked")\r
- List<String> archList = sourceFileNames[i].getSupArchList();\r
- if (arch == null || arch.equalsIgnoreCase("") || archList == null || archList.contains(arch)) {\r
+ List archList = sourceFileNames[i].getSupArchList();\r
+ if (arch == null || arch.equalsIgnoreCase("") || archList == null || contains(archList, arch)) {\r
outputList.add(new String[] {sourceFileNames[i].getToolCode(),sourceFileNames[i].getStringValue()});\r
}\r
}\r
String toolchainFamily = null;\r
List<String> archList = null;\r
String cmd = null;\r
- String targetName = null;\r
String optionName = null;\r
\r
Object[] returns = get(from, xPath);\r
}\r
\r
archList = new ArrayList<String>();\r
- @SuppressWarnings("unchecked")\r
- List<String> archEnumList = option.getSupArchList(); \r
+ List archEnumList = option.getSupArchList(); \r
if (archEnumList == null) {\r
archList.add(null);\r
} else {\r
- archList.addAll(archEnumList);\r
- /*\r
+ //archList.addAll(archEnumList);\r
Iterator it = archEnumList.iterator();\r
while (it.hasNext()) {\r
- System.out.println(it.next().getClass().getName());\r
- SupportedArchitectures.Enum archType = it.next();\r
- archList.add(archType.toString());\r
+ String archType = (String)it.next();\r
+ archList.add(archType);\r
}\r
- */\r
}\r
\r
cmd = option.getToolCode();\r
if (returns == null) {\r
return new PackageIdentification[0];\r
}\r
- PackageIdentification[] packageIdList = new PackageIdentification[returns.length];\r
+\r
+ //\r
+ // Get packageIdentification \r
+ // \r
+ List<PackageIdentification> packageIdList = new ArrayList<PackageIdentification>();\r
for (int i = 0; i < returns.length; i++) {\r
PackageDependenciesDocument.PackageDependencies.Package item = (PackageDependenciesDocument.PackageDependencies.Package) returns[i];\r
- @SuppressWarnings("unchecked")\r
- List<String> archList = item.getSupArchList();\r
- if (arch == null || archList == null || archList.contains(arch)) {\r
+ List archList = item.getSupArchList();\r
+ if (arch == null || archList == null || contains(archList, arch)) {\r
packageGuid = item.getPackageGuid();\r
packageVersion = item.getPackageVersion();\r
- packageIdList[i] = (new PackageIdentification(null, packageGuid,\r
+ packageIdList.add(new PackageIdentification(null, packageGuid,\r
packageVersion));\r
}\r
}\r
- return packageIdList;\r
+\r
+ //\r
+ // transfer packageIdentification list to array.\r
+ // \r
+ PackageIdentification[] packageIdArray = new PackageIdentification[packageIdList.size()];\r
+ for (int i = 0; i < packageIdList.size(); i++) {\r
+ packageIdArray[i] = new PackageIdentification(null, packageIdList.get(i).getGuid(),packageIdList.get(i).getVersion());\r
+ }\r
+ return packageIdArray;\r
}\r
\r
/**\r
* xpath\r
* @returns null if nothing is there\r
*/\r
- public static String[] getLibraryClasses(String usage) {\r
+ public static String[] getLibraryClasses(String usage, String arch) {\r
String[] xPath;\r
-\r
if (usage == null || usage.equals("")) {\r
xPath = new String[] { "/LibraryClass" };\r
} else {\r
}\r
\r
LibraryClassDocument.LibraryClass[] libraryClassList = (LibraryClassDocument.LibraryClass[]) returns;\r
- String[] libraryClassName = new String[libraryClassList.length];\r
+ List<String> libraryClassName = new ArrayList<String>();\r
for (int i = 0; i < libraryClassList.length; i++) {\r
- libraryClassName[i] = libraryClassList[i].getKeyword();\r
+ List archList = libraryClassList[i].getSupArchList();\r
+ \r
+ if (arch == null || contains(archList, arch)) {\r
+ libraryClassName.add(libraryClassList[i].getKeyword());\r
+ }\r
}\r
- return libraryClassName;\r
+ String[] libraryArray = new String[libraryClassName.size()];\r
+ for (int i = 0; i < libraryClassName.size(); i++) {\r
+ libraryArray[i] = libraryClassName.get(i);\r
+ }\r
+ return libraryArray;\r
}\r
\r
/**\r
List<String> protocolList = new ArrayList<String>();\r
\r
for (int i = 0; i < returns.length; i++) {\r
- @SuppressWarnings("unchecked")\r
- List<String> archList = returnlList[i].getSupArchList();\r
- if (archList == null || archList.contains(arch)){\r
+ List archList = returnlList[i].getSupArchList();\r
+ if (archList == null || contains(archList, arch)){\r
protocolList.add(returnlList[i].getProtocolCName());\r
}\r
}\r
List<String> protocolNotifyList = new ArrayList<String>();\r
\r
for (int i = 0; i < returns.length; i++) {\r
- @SuppressWarnings("unchecked")\r
- List<String> archList = ((ProtocolNotify) returns[i]).getSupArchList();\r
- if (archList == null || archList.contains(arch)){\r
+ List archList = ((ProtocolNotify) returns[i]).getSupArchList();\r
+ if (archList == null || contains(archList, arch)){\r
protocolNotifyList.add(((ProtocolNotify) returns[i]).getProtocolNotifyCName());\r
}\r
\r
\r
List<String> ppiNotifyList = new ArrayList<String>();\r
for (int i = 0; i < returns.length; i++) {\r
- @SuppressWarnings("unchecked")\r
- List<String> archList = ((PPIsDocument.PPIs.PpiNotify) returns[i]).getSupArchList();\r
- if (archList == null || archList.contains(arch)){\r
+ List archList = ((PPIsDocument.PPIs.PpiNotify) returns[i]).getSupArchList();\r
+ if (archList == null || contains(archList, arch)){\r
ppiNotifyList.add(((PPIsDocument.PPIs.PpiNotify) returns[i]).getPpiNotifyCName()); \r
}\r
\r
\r
List<String> ppiList = new ArrayList<String>();\r
for (int i = 0; i < returns.length; i++) {\r
- @SuppressWarnings("unchecked")\r
- List<String> archList = ((PPIsDocument.PPIs.Ppi) returns[i]).getSupArchList();\r
- if (archList == null || archList.contains(arch)){\r
+ List archList = ((PPIsDocument.PPIs.Ppi) returns[i]).getSupArchList();\r
+ if (archList == null || contains(archList, arch)){\r
ppiList.add(((PPIsDocument.PPIs.Ppi) returns[i]).getPpiCName()); \r
}\r
\r
\r
List<String> guidList = new ArrayList<String>();\r
for (int i = 0; i < returns.length; i++) {\r
- @SuppressWarnings("unchecked")\r
- List<String> archList = ((GuidsDocument.Guids.GuidCNames) returns[i]).getSupArchList();\r
- if (archList == null || archList.contains(arch)){\r
+ List archList = ((GuidsDocument.Guids.GuidCNames) returns[i]).getSupArchList();\r
+ if (archList == null || contains(archList, arch)){\r
guidList.add(((GuidsDocument.Guids.GuidCNames) returns[i]).getGuidCName()); \r
}\r
\r
ObjectMap.put("Libraries", moduleSA.getLibraries());\r
}\r
if (((ModuleSADocument.ModuleSA) result[i]).getPcdBuildDefinition() != null) {\r
- ObjectMap.put("PcdBuildDefinition", moduleSA\r
- .getPcdBuildDefinition());\r
+ ObjectMap.put("PcdBuildDefinition", moduleSA.getPcdBuildDefinition());\r
}\r
- if (((ModuleSADocument.ModuleSA) result[i])\r
- .getModuleSaBuildOptions() != null) {\r
- ObjectMap.put("ModuleSaBuildOptions", moduleSA\r
- .getModuleSaBuildOptions());\r
+ if (((ModuleSADocument.ModuleSA) result[i]).getModuleSaBuildOptions() != null) {\r
+ ObjectMap.put("ModuleSaBuildOptions", moduleSA.getModuleSaBuildOptions());\r
}\r
\r
//\r
// Get Fpd SA Module attribute and create FpdMoudleIdentification.\r
//\r
- arch = moduleSA.getSupArchList().toString();\r
+ if (moduleSA.isSetSupArchList()) {\r
+ arch = moduleSA.getSupArchList().toString();\r
+ } else {\r
+ arch = null;\r
+ }\r
\r
// TBD\r
fvBinding = null;\r
- saVersion = ((ModuleSADocument.ModuleSA) result[i])\r
- .getModuleVersion();\r
+ saVersion = ((ModuleSADocument.ModuleSA) result[i]).getModuleVersion();\r
\r
saGuid = moduleSA.getModuleGuid();\r
pkgGuid = moduleSA.getPackageGuid();\r
// Create Module Identification which have class member of package\r
// identification.\r
//\r
- PackageIdentification pkgId = new PackageIdentification(null,\r
- pkgGuid, pkgVersion);\r
- ModuleIdentification saId = new ModuleIdentification(null, saGuid,\r
- saVersion);\r
+ PackageIdentification pkgId = new PackageIdentification(null, pkgGuid, pkgVersion);\r
+ ModuleIdentification saId = new ModuleIdentification(null, saGuid, saVersion);\r
\r
saId.setPackage(pkgId);\r
\r
// Create FpdModule Identification which have class member of module\r
// identification\r
//\r
- if (arch != null) {\r
- String[] archList = arch.split(" ");\r
- for (int j = 0; j < archList.length; j++) {\r
- FpdModuleIdentification fpdSaId = new FpdModuleIdentification(saId, archList[j]);\r
- \r
- if (fvBinding != null) {\r
- fpdSaId.setFvBinding(fvBinding);\r
- }\r
- \r
- //\r
- // Put element to Map<FpdModuleIdentification, Map<String,\r
- // Object>>.\r
- //\r
- fpdModuleMap.put(fpdSaId, ObjectMap);\r
+ String[] archList = new String[0];\r
+ if (arch == null || arch.trim().length() == 0) {\r
+ archList = GlobalData.getToolChainInfo().getArchs();\r
+ } else {\r
+ archList = arch.split(" ");\r
+ }\r
+ for (int j = 0; j < archList.length; j++) {\r
+ FpdModuleIdentification fpdSaId = new FpdModuleIdentification(saId, archList[j]);\r
+ \r
+ if (fvBinding != null) {\r
+ fpdSaId.setFvBinding(fvBinding);\r
}\r
+ \r
+ //\r
+ // Put element to Map<FpdModuleIdentification, Map<String,\r
+ // Object>>.\r
+ //\r
+ fpdModuleMap.put(fpdSaId, ObjectMap);\r
}\r
}\r
return fpdModuleMap;\r
return result;\r
}\r
\r
- public static Node getFpdUserExtension() {\r
- String[] xPath = new String[] { "/UserExtensions" };\r
+ public static Node getFpdUserExtensionPreBuild() {\r
+ String[] xPath = new String[] { "/UserExtensions[@UserID='TianoCore' and @Identifier='0']" }; \r
+\r
+ Object[] queryResult = get("PlatformSurfaceArea", xPath);\r
+ if (queryResult == null || queryResult.length == 0) {\r
+ return null;\r
+ }\r
+ UserExtensionsDocument.UserExtensions a = (UserExtensionsDocument.UserExtensions)queryResult[0];\r
+ \r
+ return a.getDomNode();\r
+ }\r
+ \r
+ public static Node getFpdUserExtensionPostBuild() {\r
+ String[] xPath = new String[] { "/UserExtensions[@UserID='TianoCore' and @Identifier='1']" }; \r
\r
Object[] queryResult = get("PlatformSurfaceArea", xPath);\r
if (queryResult == null || queryResult.length == 0) {\r
*/\r
public static String[][] getFpdOptions(String fvName) {\r
String[] xPath = new String[] { "/Flash/FvImages/FvImage[@Type='Options' and ./FvImageNames='"\r
- + fvName.toUpperCase() + "']/FvImageOptions" };\r
+ + fvName + "']/FvImageOptions" };\r
Object[] queryResult = get("PlatformSurfaceArea", xPath);\r
if (queryResult == null) {\r
return new String[0][];\r
*/\r
public static String[][] getFpdAttributes(String fvName) {\r
String[] xPath = new String[] { "/Flash/FvImages/FvImage[@Type='Attributes' and ./FvImageNames='"\r
- + fvName.toUpperCase() + "']/FvImageOptions" };\r
+ + fvName + "']/FvImageOptions" };\r
Object[] queryResult = get("PlatformSurfaceArea", xPath);\r
if (queryResult == null) {\r
return new String[0][];\r
* @returns empty list if nothing is there\r
*/\r
public static String[][] getFpdComponents(String fvName) {\r
- String[] xPath = new String[] { "/Flash/FvImages/FvImage[@Type='Components' and ./FvImageNames='"+ fvName.toUpperCase() + "']/FvImageOptions" };\r
+ String[] xPath = new String[] { "/Flash/FvImages/FvImage[@Type='Components' and ./FvImageNames='"+ fvName + "']/FvImageOptions" };\r
Object[] queryResult = get("PlatformSurfaceArea", xPath);\r
if (queryResult == null) {\r
return new String[0][];\r
return null;\r
}\r
\r
- // PcdCoded.PcdData[] pcds = (PcdCoded.PcdData[]) returns;\r
- // String[][] result = new String[pcds.length][2];\r
- // for (int i = 0; i < returns.length; ++i) {\r
- // if (pcds[i].getItemType() != null) {\r
- // result[i][1] = pcds[i].getItemType().toString();\r
- // } else {\r
- // result[i][1] = null;\r
- // }\r
- // result[i][0] = pcds[i].getCName();\r
- // }\r
-\r
return null;\r
}\r
\r
- /**\r
- * Get the PcdToken array from module's surface area document. The array\r
- * should contains following data:\r
- * <p>\r
- * -------------------------------------------------------------------\r
- * </p>\r
- * <p>\r
- * CName | ItemType | TokenspaceName | DefaultValue | Usage | HelpText\r
- * </p>\r
- * <p>\r
- * -------------------------------------------------------------------\r
- * </p>\r
- * <p>\r
- * Note: Until new schema applying, now we can only get CName, ItemType,\r
- * </p>\r
- * \r
- * @return 2-array table contains all information of PCD token retrieved\r
- * from MSA.\r
- */\r
- public static Object[][] etModulePCDTokenArray() {\r
- return null;\r
- // int index;\r
- // Object[][] result;\r
- // PCDs.PcdData[] pcds;\r
- // String[] xPath = new String[] { "/PcdData" };\r
- // Object[] returns = get("PCDs", xPath);\r
- //\r
- // if ((returns == null) || (returns.length == 0)) {\r
- // return null;\r
- // }\r
- //\r
- // pcds = (PCDs.PcdData[]) returns;\r
- // result = new Object[pcds.length][6];\r
- // for (index = 0; index < pcds.length; index++) {\r
- // //\r
- // // Get CName\r
- // //\r
- // result[index][0] = pcds[index].getCName();\r
- // //\r
- // // Get ItemType: FEATURE_FLAG, FIXED_AT_BUILD, PATCHABLE_IN_MODLE,\r
- // // DYNAMIC, DYNAMIC_EX\r
- // //\r
- // if (pcds[index].getItemType() != null) {\r
- // result[index][1] = pcds[index].getItemType().toString();\r
- // } else {\r
- // result[index][1] = null;\r
- // }\r
- //\r
- // //\r
- // // BUGBUG: following field can *not* be got from current MSA until\r
- // // schema changed.\r
- // //\r
- // // result [index][2] = pcds[index].getTokenSpaceName();\r
- // result[index][2] = null;\r
- // result[index][3] = pcds[index].getDefaultValue();\r
- // // result [index][4] = pcds[index].getUsage ();\r
- // result[index][4] = null;\r
- // // result [index][5] = pcds[index].getHelpText ();\r
- // result[index][5] = null;\r
- // }\r
- // return result;\r
- }\r
-\r
/**\r
* Retrieve MAS header\r
* \r
if (returns == null) {\r
return packageIncludeMap;\r
}\r
-// GlobalData.log.info("" + returns[0].getClass().getName());\r
+\r
for (int i = 0; i < returns.length; i++) {\r
PackageHeadersDocument.PackageHeaders.IncludePkgHeader includeHeader = (PackageHeadersDocument.PackageHeaders.IncludePkgHeader) returns[i];\r
packageIncludeMap.put(includeHeader.getModuleType().toString(),\r
String[] guidPair = new String[2];\r
guidPair[0] = entry.getCName();\r
guidPair[1] = entry.getGuidValue();\r
- guidDeclMap.put(entry.getName(), guidPair);\r
+ guidDeclMap.put(entry.getCName(), guidPair);\r
EdkLog.log(EdkLog.EDK_VERBOSE, entry.getName());\r
EdkLog.log(EdkLog.EDK_VERBOSE, guidPair[0]);\r
EdkLog.log(EdkLog.EDK_VERBOSE, guidPair[1]);\r
\r
protocolPair[0] = entry.getCName();\r
protocolPair[1] = entry.getGuidValue();\r
- protoclMap.put(entry.getName(), protocolPair);\r
+ protoclMap.put(entry.getCName(), protocolPair);\r
EdkLog.log(EdkLog.EDK_VERBOSE, entry.getName());\r
EdkLog.log(EdkLog.EDK_VERBOSE, protocolPair[0]);\r
EdkLog.log(EdkLog.EDK_VERBOSE, protocolPair[1]);\r
String[] ppiPair = new String[2];\r
ppiPair[0] = entry.getCName();\r
ppiPair[1] = entry.getGuidValue();\r
- ppiMap.put(entry.getName(), ppiPair);\r
+ ppiMap.put(entry.getCName(), ppiPair);\r
}\r
return ppiMap;\r
}\r
\r
- /**\r
- * getToolChainFamily\r
- * \r
- * This function is to retrieve ToolChainFamily attribute of FPD\r
- * <BuildOptions>\r
- * \r
- * @param\r
- * @return toolChainFamily If find toolChainFamily attribute in\r
- * <BuildOptions> Null If don't have toolChainFamily in\r
- * <BuildOptions>.\r
- */\r
- public String getToolChainFamily() {\r
- String toolChainFamily;\r
- String[] xPath = new String[] { "/BuildOptions" };\r
-\r
- Object[] result = get("PlatformSurfaceArea", xPath);\r
- if (result == null) {\r
- return null;\r
- }\r
- // toolChainFamily =\r
- // ((BuildOptionsDocument.BuildOptions)result[0]).getToolChainFamilies();\r
- // return toolChainFamily;\r
- return null;\r
- }\r
-\r
/**\r
* Retrieve module Guid string\r
* \r
is same, and token name should not be conflicted.\r
\r
@return String[]\r
- **/\r
- public static String[] getModulePcdEntryNameArray() {\r
- PcdCodedDocument.PcdCoded.PcdEntry[] pcdEntries = null;\r
- String[] results;\r
- int index;\r
- String[] xPath = new String[] {"/PcdEntry"};\r
- Object[] returns = get ("PcdCoded", xPath);\r
- \r
- if (returns == null) {\r
- return new String[0];\r
- }\r
- \r
- pcdEntries = (PcdCodedDocument.PcdCoded.PcdEntry[])returns;\r
- results = new String[pcdEntries.length];\r
- \r
- for (index = 0; index < pcdEntries.length; index ++) {\r
- results[index] = pcdEntries[index].getCName();\r
- }\r
- return results;\r
- }\r
+ **/\r
+ public static String[] getModulePcdEntryNameArray() {\r
+ PcdCodedDocument.PcdCoded.PcdEntry[] pcdEntries = null;\r
+ String[] results;\r
+ int index;\r
+ String[] xPath = new String[] {"/PcdEntry"};\r
+ Object[] returns = get ("PcdCoded", xPath);\r
+\r
+ if (returns == null) {\r
+ return new String[0];\r
+ }\r
+\r
+ pcdEntries = (PcdCodedDocument.PcdCoded.PcdEntry[])returns;\r
+ results = new String[pcdEntries.length];\r
+\r
+ for (index = 0; index < pcdEntries.length; index ++) {\r
+ results[index] = pcdEntries[index].getCName();\r
+ }\r
+ return results;\r
+ }\r
+\r
+ /**\r
+ Search in a List for a given string\r
+\r
+ @return boolean\r
+ **/\r
+ public static boolean contains(List list, String str) {\r
+ if (list == null || list.size()== 0) {\r
+ return true;\r
+ }\r
+ Iterator it = list.iterator();\r
+ while (it.hasNext()) {\r
+ String s = (String)it.next();\r
+ if (s.equalsIgnoreCase(str)) {\r
+ return true;\r
+ }\r
+ }\r
+\r
+ return false;\r
+ }\r
+\r
+ public static boolean isHaveTianoR8FlashMap(){\r
+ String[] xPath = new String[] {"/"};\r
+ Object[] returns = get ("Externs", xPath);\r
+\r
+ if (returns == null) {\r
+ return false;\r
+ }\r
+\r
+ ExternsDocument.Externs ext = (ExternsDocument.Externs)returns[0];\r
+ \r
+ if (ext.getTianoR8FlashMapH()){\r
+ return true;\r
+ }else {\r
+ return false;\r
+ }\r
+ }\r
}\r