\r
private File platformBuildFile = null;\r
\r
+ private Map<String, String> aprioriType = null;\r
+ \r
private Project project;\r
\r
private String info = "DO NOT EDIT \n" \r
+ "Abstract:\n"\r
+ "Auto-generated ANT build file for building EFI Modules and Platforms\n";\r
\r
- public PlatformBuildFileGenerator(Project project, Map<FpdModuleIdentification, String> outfiles, Map<String, Set<FpdModuleIdentification>> fvs, boolean isUnified, SurfaceAreaQuery saq, String platformBuildFile){\r
+ public PlatformBuildFileGenerator(Project project, Map<FpdModuleIdentification, String> outfiles, Map<String, Set<FpdModuleIdentification>> fvs, boolean isUnified, SurfaceAreaQuery saq, String platformBuildFile, Map<String, String> aprioriType){\r
this.project = project;\r
this.outfiles = outfiles;\r
this.isUnified = isUnified;\r
this.fvs = fvs;\r
this.saq = saq;\r
this.platformBuildFile = new File(platformBuildFile);\r
+ this.aprioriType = aprioriType;\r
}\r
\r
/**\r
// User Extension Post build\r
//\r
applyUserExtensionsPostBuild(document, root);\r
- \r
+ applyUserExtensions(document, root);\r
+\r
document.appendChild(rootComment);\r
document.appendChild(root);\r
//\r
Element ele = document.createElement("target");\r
ele.setAttribute("name", "modules");\r
\r
+ //\r
+ // Try to build apriori if necessary\r
+ //\r
+ //\r
+ // For every Target and ToolChain\r
+ //\r
+ String[] targetList = GlobalData.getToolChainInfo().getTargets();\r
+ for (int i = 0; i < targetList.length; i++){\r
+ String[] toolchainList = GlobalData.getToolChainInfo().getTagnames();\r
+ for(int j = 0; j < toolchainList.length; j++){\r
+ //\r
+ // Prepare FV_DIR\r
+ //\r
+ String ffsCommonDir = project.getProperty("BUILD_DIR") + File.separatorChar \r
+ + targetList[i] + "_" \r
+ + toolchainList[j];\r
+ File fvDir = new File(ffsCommonDir + File.separatorChar + "FV");\r
+ Element fvEle = document.createElement("var");\r
+ fvEle.setAttribute("name", "FV_DIR");\r
+ fvEle.setAttribute("value", fvDir.getPath().replaceAll("(\\\\)", "/"));\r
+ ele.appendChild(fvEle);\r
+ \r
+ Iterator<String> aprIter = aprioriType.keySet().iterator();\r
+ while (aprIter.hasNext()) {\r
+ String fvName = aprIter.next();\r
+ Element moduleEle = document.createElement("Build_Apriori");\r
+ moduleEle.setAttribute("FILENAME", fvName);\r
+ moduleEle.setAttribute("GUID", aprioriType.get(fvName));\r
+ ele.appendChild(moduleEle);\r
+ }\r
+ }\r
+ }\r
+ \r
//\r
// Get all valid FV name\r
//\r
\r
root.appendChild(ele);\r
}\r
- \r
+\r
+ private void applyUserExtensions(Document document, Node root) {\r
+ Node[] nodeList = saq.getFpdUserExtensions();\r
+ for (int nodeIndex = 0; nodeIndex < nodeList.length; ++nodeIndex) {\r
+ Node node = nodeList[nodeIndex];\r
+ //\r
+ // User Extensions\r
+ //\r
+ root.appendChild(document.createComment("User Defined Target"));\r
+ Element ele = document.createElement("target");\r
+ ele.setAttribute("name", node.getAttributes().getNamedItem("Identifier").getNodeValue());\r
+\r
+ if (node != null) {\r
+ //\r
+ // For every Target and ToolChain\r
+ //\r
+ String[] targetList = GlobalData.getToolChainInfo().getTargets();\r
+ for (int i = 0; i < targetList.length; i++){\r
+ String[] toolchainList = GlobalData.getToolChainInfo().getTagnames();\r
+ for(int j = 0; j < toolchainList.length; j++){\r
+ //\r
+ // Prepare FV_DIR\r
+ //\r
+ String ffsCommonDir = project.getProperty("BUILD_DIR") + File.separatorChar \r
+ + targetList[i] + "_" \r
+ + toolchainList[j];\r
+ File fvDir = new File(ffsCommonDir + File.separatorChar + "FV");\r
+ Element fvEle = document.createElement("var");\r
+ fvEle.setAttribute("name", "FV_DIR");\r
+ fvEle.setAttribute("value", fvDir.getPath().replaceAll("(\\\\)", "/"));\r
+ ele.appendChild(fvEle);\r
+\r
+ Element targetDirEle = document.createElement("var");\r
+ targetDirEle.setAttribute("name", "TARGET_DIR");\r
+ targetDirEle.setAttribute("value", ffsCommonDir.replaceAll("(\\\\)", "/"));\r
+ ele.appendChild(targetDirEle);\r
+\r
+ NodeList childNodes = node.getChildNodes();\r
+ for (int k = 0; k < childNodes.getLength(); k++) {\r
+ Node childItem = childNodes.item(k);\r
+ if (childItem.getNodeType() == Node.ELEMENT_NODE) {\r
+ ele.appendChild(recursiveNode(childItem, document));\r
+ }\r
+ }\r
+\r
+ }\r
+ }\r
+ }\r
+\r
+ root.appendChild(ele);\r
+ }\r
+ }\r
+\r
private Element recursiveNode(Node node, Document document) {\r
Element root = document.createElement(node.getNodeName());\r
NamedNodeMap attr = node.getAttributes();\r