import org.tianocore.build.id.PlatformIdentification;\r
import org.tianocore.build.toolchain.ToolChainInfo;\r
import org.tianocore.common.exception.EdkException;\r
-import org.tianocore.common.logger.EdkLog;\r
import org.w3c.dom.Node;\r
\r
/**\r
//\r
// keep the namep declaration for xmlbeans Xpath query\r
//\r
- private String queryDeclaration = null;\r
-\r
+ private String queryDeclaration = null; \r
private StringBuffer normQueryString = new StringBuffer(4096);\r
private Pattern xPathPattern = Pattern.compile("([^/]*)(/|//)([^/]+)");\r
\r
returns = get("SourceFiles", xPath);\r
\r
if (returns == null || returns.length == 0) {\r
- return new String[0][0];\r
+ return new String[0][3];\r
}\r
\r
Filename[] sourceFileNames = (Filename[]) returns;\r
List<String[]> outputList = new ArrayList<String[]>();\r
for (int i = 0; i < sourceFileNames.length; i++) {\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
+ if (arch == null || arch.trim().equalsIgnoreCase("") || archList == null || contains(archList, arch)) {\r
+ outputList.add(new String[] {sourceFileNames[i].getToolCode(), sourceFileNames[i].getStringValue(), sourceFileNames[i].getToolChainFamily()});\r
}\r
}\r
\r
- String[][] outputString = new String[outputList.size()][2];\r
+ String[][] outputString = new String[outputList.size()][3];\r
for (int index = 0; index < outputList.size(); index++) {\r
+ //\r
+ // ToolCode (FileType)\r
+ //\r
outputString[index][0] = outputList.get(index)[0];\r
+ //\r
+ // File name (relative to MODULE_DIR)\r
+ //\r
outputString[index][1] = outputList.get(index)[1];\r
+ //\r
+ // Tool chain family\r
+ //\r
+ outputString[index][2] = outputList.get(index)[2];\r
}\r
return outputString;\r
}\r
\r
return getOptions("PlatformSurfaceArea", xPath, toolChainFamilyFlag);\r
}\r
+ \r
+ public String[][] getMsaBuildOptions(boolean toolChainFamilyFlag) {\r
+ String[] xPath;\r
+ \r
+ if (toolChainFamilyFlag == true) {\r
+ xPath = new String[] {\r
+ "/Options/Option[not(@ToolChainFamily) and not(@TagName)]",\r
+ "/Options/Option[@ToolChainFamily]", };\r
+ } else {\r
+ xPath = new String[] {\r
+ "/Options/Option[not(@ToolChainFamily) and not(@TagName)]",\r
+ "/Options/Option[@TagName]", };\r
+ }\r
+\r
+ return getOptions("ModuleBuildOptions", xPath, toolChainFamilyFlag);\r
+ }\r
\r
public ToolChainInfo getFpdToolChainInfo() {\r
String[] xPath = new String[] { "/PlatformDefinitions" };\r
}\r
}\r
\r
+ public Node getPeiApriori(String fvName) {\r
+ String[] xPath = new String[] { "/BuildOptions/UserExtensions[@UserID='APRIORI' and @Identifier='0' and ./FvName='" + fvName + "']" };\r
+ Object[] result = get("PlatformSurfaceArea", xPath);\r
+ \r
+ if (result == null || result.length == 0) {\r
+ return null;\r
+ }\r
+ \r
+ UserExtensionsDocument.UserExtensions a = (UserExtensionsDocument.UserExtensions)result[0];\r
+ \r
+ return a.getDomNode();\r
+ }\r
+ \r
+ public Node getDxeApriori(String fvName) {\r
+ String[] xPath = new String[] { "/BuildOptions/UserExtensions[@UserID='APRIORI' and @Identifier='1' and ./FvName='" + fvName + "']" };\r
+ Object[] result = get("PlatformSurfaceArea", xPath);\r
+ \r
+ if (result == null || result.length == 0) {\r
+ return null;\r
+ }\r
+ \r
+ UserExtensionsDocument.UserExtensions a = (UserExtensionsDocument.UserExtensions)result[0];\r
+ \r
+ return a.getDomNode();\r
+ }\r
+ \r
public Node getFpdModuleSequence(String fvName) {\r
String[] xPath = new String[] { "/BuildOptions/UserExtensions[@UserID='IMAGES' and @Identifier='1' and ./FvName='" + fvName + "']" };\r
Object[] result = get("PlatformSurfaceArea", xPath);\r
\r
return a.getDomNode();\r
}\r
+\r
+ /**\r
+ Get the value of PCD by PCD cName\r
+\r
+ @return PcdValue String of PcdComponentName\r
+ null If don't find ComponentName Pcd\r
+ **/\r
+ public String getPcdValueBycName(String cName){\r
+ String[] xPath = new String[] { "/PcdData" };\r
+ Object[] returns = get("PcdBuildDefinition", xPath);\r
+ if (returns == null || returns.length == 0) {\r
+ return null;\r
+ } \r
+ for (int i = 0; i < returns.length; i++) {\r
+ PcdBuildDefinitionDocument.PcdBuildDefinition.PcdData pcdData = (PcdBuildDefinitionDocument.PcdBuildDefinition.PcdData)returns[i];\r
+ if (pcdData.getCName().equalsIgnoreCase(cName)){\r
+ return pcdData.getValue();\r
+ }\r
+ }\r
+ return null;\r
+ }\r
}\r