X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=Tools%2FSource%2FGenBuild%2Forg%2Ftianocore%2Fbuild%2Ffpd%2FPlatformBuildFileGenerator.java;h=65872eb629b00f8d6178a478d423986d2da79e87;hp=fa94403b6b665facb753c802c6296ec748bbcc17;hb=8031d48db372d6af87de8dbd96586709674b04d6;hpb=47f2f01190e8aae3943331840d18a91a1dc579d9 diff --git a/Tools/Source/GenBuild/org/tianocore/build/fpd/PlatformBuildFileGenerator.java b/Tools/Source/GenBuild/org/tianocore/build/fpd/PlatformBuildFileGenerator.java index fa94403b6b..65872eb629 100644 --- a/Tools/Source/GenBuild/org/tianocore/build/fpd/PlatformBuildFileGenerator.java +++ b/Tools/Source/GenBuild/org/tianocore/build/fpd/PlatformBuildFileGenerator.java @@ -35,7 +35,9 @@ import org.tianocore.build.id.ModuleIdentification; import org.w3c.dom.Comment; import org.w3c.dom.Document; import org.w3c.dom.Element; +import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; +import org.w3c.dom.NodeList; public class PlatformBuildFileGenerator { @@ -183,6 +185,7 @@ public class PlatformBuildFileGenerator { throw new BuildException("Generate " + platformName + "_build.xml failed. \n" + ex.getMessage()); } } + private void applyModules(Document document, Node root, String num) { root.appendChild(document.createComment("Modules target")); Element ele = document.createElement("target"); @@ -464,9 +467,63 @@ public class PlatformBuildFileGenerator { Element ele = document.createElement("target"); ele.setAttribute("name", "userextensions"); + Node node = SurfaceAreaQuery.getFpdUserExtension(); + if (node != null) { + // + // For every Target and ToolChain + // + String[] targetList = GlobalData.getToolChainInfo().getTargets(); + for (int i = 0; i < targetList.length; i++){ + String[] toolchainList = GlobalData.getToolChainInfo().getTagnames(); + for(int j = 0; j < toolchainList.length; j++){ + // + // Prepare FV_DIR + // + String ffsCommonDir = project.getProperty("BUILD_DIR") + File.separatorChar + + targetList[i] + File.separatorChar + + toolchainList[j]; + File fvDir = new File(ffsCommonDir + File.separatorChar + "FV"); + Element fvEle = document.createElement("var"); + fvEle.setAttribute("name", "FV_DIR"); + fvEle.setAttribute("value", fvDir.getPath().replaceAll("(\\\\)", "/")); + ele.appendChild(fvEle); + + NodeList childNodes = node.getChildNodes(); + for (int k = 0; k < childNodes.getLength(); k++) { + Node childItem = childNodes.item(k); + if (childItem.getNodeType() == Node.ELEMENT_NODE) { + ele.appendChild(recursiveNode(childItem, document)); + } + } + + } + } + } + root.appendChild(ele); } + private Element recursiveNode(Node node, Document document) { + Element root = document.createElement(node.getNodeName()); + NamedNodeMap attr = node.getAttributes(); + for (int i = 0; i < attr.getLength(); i++) { + Node attrItem = attr.item(i); + root.setAttribute(attrItem.getNodeName(), attrItem.getNodeValue()); + } + NodeList childNodes = node.getChildNodes(); + for (int i = 0; i < childNodes.getLength(); i++) { + Node childItem = childNodes.item(i); + if (childItem.getNodeType() == Node.ELEMENT_NODE) { + root.appendChild(recursiveNode(childItem, document)); + } + else if (childItem.getNodeType() == Node.TEXT_NODE){ + if ( ! childItem.getNodeValue().trim().equalsIgnoreCase("")) { + root.setTextContent(childItem.getNodeValue()); + } + } + } + return root; + } private boolean isListInSequence(String fvName) { Set numbers = sequences.keySet();