]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/GenBuild/org/tianocore/build/fpd/PlatformBuildFileGenerator.java
Retiring the ANT/JAVA build and removing the older EDK II packages that required...
[mirror_edk2.git] / Tools / Java / Source / GenBuild / org / tianocore / build / fpd / PlatformBuildFileGenerator.java
diff --git a/Tools/Java/Source/GenBuild/org/tianocore/build/fpd/PlatformBuildFileGenerator.java b/Tools/Java/Source/GenBuild/org/tianocore/build/fpd/PlatformBuildFileGenerator.java
deleted file mode 100644 (file)
index ad2ee2c..0000000
+++ /dev/null
@@ -1,708 +0,0 @@
-/** @file\r
\r
- Copyright (c) 2006, Intel Corporation\r
- All rights reserved. This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution.  The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
- **/\r
-package org.tianocore.build.fpd;\r
-\r
-import java.io.File;\r
-import java.util.HashMap;\r
-import java.util.Iterator;\r
-import java.util.Map;\r
-import java.util.Set;\r
-\r
-import javax.xml.parsers.DocumentBuilder;\r
-import javax.xml.parsers.DocumentBuilderFactory;\r
-import javax.xml.transform.OutputKeys;\r
-import javax.xml.transform.Result;\r
-import javax.xml.transform.Source;\r
-import javax.xml.transform.Transformer;\r
-import javax.xml.transform.TransformerFactory;\r
-import javax.xml.transform.dom.DOMSource;\r
-import javax.xml.transform.stream.StreamResult;\r
-\r
-import org.apache.tools.ant.BuildException;\r
-import org.apache.tools.ant.Project;\r
-import org.tianocore.build.global.GlobalData;\r
-import org.tianocore.build.global.SurfaceAreaQuery;\r
-import org.tianocore.build.id.FpdModuleIdentification;\r
-import org.tianocore.build.id.ModuleIdentification;\r
-import org.w3c.dom.Comment;\r
-import org.w3c.dom.Document;\r
-import org.w3c.dom.Element;\r
-import org.w3c.dom.NamedNodeMap;\r
-import org.w3c.dom.Node;\r
-import org.w3c.dom.NodeList;\r
-\r
-/**\r
-  class PlatformBuildFileGenerator is used to generate ${PLATFORM}_build.xml file. \r
-\r
-  @since GenBuild 1.0\r
-**/\r
-public class PlatformBuildFileGenerator {\r
-\r
-    ///\r
-    /// Mapping from modules identification to out put file name\r
-    ///\r
-    private Map<FpdModuleIdentification, String> outfiles;\r
-    \r
-    ///\r
-    /// Mapping from FV name to its modules\r
-    ///\r
-    private Map<String, Set<FpdModuleIdentification>> fvs = new HashMap<String, Set<FpdModuleIdentification>>();\r
-\r
-\r
-    private boolean isUnified = true;\r
-    \r
-    private SurfaceAreaQuery saq = null;\r
-    \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
-        + "This file is auto-generated by the build utility\n" \r
-        + "\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, 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
-      Generate build.out.xml file.\r
-     \r
-      @throws BuildException\r
-                  build.out.xml XML document create error\r
-    **/\r
-    public void genBuildFile() throws BuildException {\r
-        DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();\r
-        try {\r
-            DocumentBuilder dombuilder = domfac.newDocumentBuilder();\r
-            Document document = dombuilder.newDocument();\r
-            Comment rootComment = document.createComment(info);\r
-            //\r
-            // create root element and its attributes\r
-            //\r
-            Element root = document.createElement("project");\r
-            root.setAttribute("name", project.getProperty("PLATFORM"));\r
-            root.setAttribute("default", "all");\r
-            root.setAttribute("basedir", ".");\r
-            \r
-            //\r
-            // element for External ANT tasks\r
-            //\r
-            root.appendChild(document.createComment("Apply external ANT tasks"));\r
-            Element ele = document.createElement("taskdef");\r
-            ele.setAttribute("resource", "GenBuild.tasks");\r
-            root.appendChild(ele);\r
-\r
-            ele = document.createElement("taskdef");\r
-            ele.setAttribute("resource", "frameworktasks.tasks");\r
-            root.appendChild(ele);\r
-\r
-            ele = document.createElement("taskdef");\r
-            ele.setAttribute("resource", "net/sf/antcontrib/antlib.xml");\r
-            root.appendChild(ele);\r
-            \r
-            ele = document.createElement("property");\r
-            ele.setAttribute("environment", "env");\r
-            root.appendChild(ele);\r
-            \r
-            //\r
-            // Default Target\r
-            //\r
-            root.appendChild(document.createComment("Default target"));\r
-            ele = document.createElement("target");\r
-            ele.setAttribute("name", "all");\r
-            ele.setAttribute("depends", "prebuild, modules, fvs, postbuild");\r
-            root.appendChild(ele);\r
-            \r
-            //\r
-            // Modules and Fvs Target\r
-            //\r
-            applyModules(document, root);\r
-            \r
-            applyFvs(document, root);\r
-\r
-            //\r
-            // Clean Target\r
-            //\r
-            applyClean(document, root);\r
-            \r
-            //\r
-            // Deep Clean Target\r
-            //\r
-            applyCleanall(document, root);\r
-            \r
-            //\r
-            // User Extension pre build\r
-            //\r
-            applyUserExtensionsPreBuild(document, root);\r
-            \r
-            //\r
-            // User Extension Post build\r
-            //\r
-            applyUserExtensionsPostBuild(document, root);\r
-            applyUserExtensions(document, root);\r
-\r
-            document.appendChild(rootComment);\r
-            document.appendChild(root);\r
-            //\r
-            // Prepare the DOM document for writing\r
-            //\r
-            Source source = new DOMSource(document);\r
-            //\r
-            // generate all directory path\r
-            //\r
-            (new File(platformBuildFile.getParent())).mkdirs();\r
-            Result result = new StreamResult(platformBuildFile);\r
-            //\r
-            // Write the DOM document to the file\r
-            //\r
-            Transformer xformer = TransformerFactory.newInstance().newTransformer();\r
-            xformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");\r
-            xformer.setOutputProperty(OutputKeys.INDENT, "yes");\r
-            xformer.transform(source, result);\r
-        } catch (Exception ex) {\r
-            throw new BuildException("Generating platform build file [" + platformBuildFile.getPath() + "_build.xml] failed. \n" + ex.getMessage());\r
-        }\r
-    }\r
-    \r
-    /**\r
-      1. Get All valid Fv Image Names in sequence\r
-      2. For each FV, get modules by sequences\r
-      3. Get other modules\r
-      \r
-      @param document XML document\r
-      @param root Node\r
-    **/\r
-    private void applyModules(Document document, Node root) {\r
-        root.appendChild(document.createComment("Modules target"));\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
-        String[] validFv = saq.getFpdValidImageNames();\r
-        \r
-        //\r
-        // For each valid FV, get all modules in sequence\r
-        //\r
-        for (int i = 0; i < validFv.length; i++) {\r
-            if (fvs.containsKey(validFv[i])) {\r
-                Set<FpdModuleIdentification> set = fvs.get(validFv[i]);\r
-                Iterator<FpdModuleIdentification> iter = set.iterator();\r
-                while (iter.hasNext()) {\r
-                    FpdModuleIdentification fpdModuleId = iter.next();\r
-                    applySingleModule(document, ele, fpdModuleId);\r
-                }\r
-            }\r
-        }\r
-        \r
-        //\r
-        // Get all other modules\r
-        //\r
-        Iterator<String> fvsNameIter = fvs.keySet().iterator();\r
-        \r
-        while (fvsNameIter.hasNext()) {\r
-            String fvName = fvsNameIter.next();\r
-            if (!isContain(validFv, fvName)) {\r
-                Set<FpdModuleIdentification> set = fvs.get(fvName);\r
-                Iterator iter = set.iterator();\r
-                while (iter.hasNext()) {\r
-                    FpdModuleIdentification fpdModuleId = (FpdModuleIdentification) iter.next();\r
-                    applySingleModule(document, ele, fpdModuleId);\r
-                }\r
-            }\r
-        }\r
-\r
-        root.appendChild(ele);\r
-    }\r
-    \r
-    private void applySingleModule(Document document, Node root, FpdModuleIdentification fpdModuleId) {\r
-        ModuleIdentification moduleId = fpdModuleId.getModule();\r
-        Element moduleEle = document.createElement("GenBuild");\r
-        moduleEle.setAttribute("type", "build");\r
-        //\r
-        // Inherit Properties.\r
-        //{"ARCH", "PACKAGE", "PACKAGE_GUID", "PACKAGE_VERSION", "MODULE_DIR"}\r
-        //\r
-        \r
-        //\r
-        // ARCH\r
-        //\r
-        Element property = document.createElement("property");\r
-        property.setAttribute("name", "ARCH");\r
-        property.setAttribute("value", fpdModuleId.getArch());\r
-        moduleEle.appendChild(property);\r
-\r
-        //\r
-        // MODULE_GUID\r
-        //\r
-        property = document.createElement("property");\r
-        property.setAttribute("name", "MODULE_GUID");\r
-        property.setAttribute("value", moduleId.getGuid());\r
-        moduleEle.appendChild(property);\r
-        \r
-        //\r
-        // MODULE_VERSION\r
-        //\r
-        property = document.createElement("property");\r
-        property.setAttribute("name", "MODULE_VERSION");\r
-        property.setAttribute("value", moduleId.getVersion());\r
-        moduleEle.appendChild(property);\r
-        \r
-        //\r
-        // PACKAGE_GUID\r
-        //\r
-        property = document.createElement("property");\r
-        property.setAttribute("name", "PACKAGE_GUID");\r
-        property.setAttribute("value", moduleId.getPackage().getGuid());\r
-        moduleEle.appendChild(property);\r
-        \r
-        //\r
-        // PACKAGE_VERSION\r
-        //\r
-        property = document.createElement("property");\r
-        property.setAttribute("name", "PACKAGE_VERSION");\r
-        property.setAttribute("value", moduleId.getPackage().getVersion());\r
-        moduleEle.appendChild(property);\r
-        \r
-        root.appendChild(moduleEle);\r
-    }\r
-    \r
-    private boolean isContain(String[] list, String item) {\r
-        for (int i = 0; i < list.length; i++) {\r
-            if (list[i].equalsIgnoreCase(item)) {\r
-                return true;\r
-            }\r
-        }\r
-        return false;\r
-    }\r
-    \r
-    private void applyFvs(Document document, Node root) {\r
-        //\r
-        // FVS Target\r
-        //\r
-        root.appendChild(document.createComment("FVs target"));\r
-        Element ele = document.createElement("target");\r
-        ele.setAttribute("name", "fvs");\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
-                String fvOutputDir = project.getProperty("BUILD_DIR") + File.separatorChar \r
-                                        + targetList[i] + "_" \r
-                                        + toolchainList[j] + File.separatorChar + "FV";\r
-                String[] validFv = saq.getFpdValidImageNames();\r
-                for (int k = 0; k < validFv.length; k++) {\r
-                    String inputFile = fvOutputDir + "" + File.separatorChar + validFv[k].toUpperCase() + ".inf";\r
-                    Element fvEle = document.createElement("genfvimage");\r
-                    fvEle.setAttribute("infFile", inputFile);\r
-                    fvEle.setAttribute("outputDir", fvOutputDir);\r
-                    ele.appendChild(fvEle);\r
-                }\r
-            }\r
-        }\r
-        root.appendChild(ele);\r
-    }\r
-    \r
-    private void applyClean(Document document, Node root) {\r
-        //\r
-        // Clean Target\r
-        //\r
-        root.appendChild(document.createComment("Clean target"));\r
-        Element ele = document.createElement("target");\r
-        ele.setAttribute("name", "clean");\r
-\r
-        if (isUnified) {\r
-            Element cleanEle = document.createElement("delete");\r
-            cleanEle.setAttribute("includeemptydirs", "true");\r
-            Element filesetEle = document.createElement("fileset");\r
-            filesetEle.setAttribute("dir", project.getProperty("BUILD_DIR"));\r
-            filesetEle.setAttribute("includes", "**\\OUTPUT\\**");\r
-            cleanEle.appendChild(filesetEle);\r
-            ele.appendChild(cleanEle);\r
-        } else {\r
-            Set set = outfiles.keySet();\r
-            Iterator iter = set.iterator();\r
-            while (iter.hasNext()) {\r
-                FpdModuleIdentification fpdModuleId = (FpdModuleIdentification) iter.next();\r
-                ModuleIdentification moduleId = fpdModuleId.getModule();\r
-\r
-                Element ifEle = document.createElement("if");\r
-                Element availableEle = document.createElement("available");\r
-                availableEle.setAttribute("file", moduleId.getMsaFile().getParent() + File.separatorChar\r
-                                                  + "build.xml");\r
-                ifEle.appendChild(availableEle);\r
-                Element elseEle = document.createElement("then");\r
-\r
-                Element moduleEle = document.createElement("ant");\r
-                moduleEle.setAttribute("antfile", moduleId.getMsaFile().getParent() + File.separatorChar\r
-                                                  + "build.xml");\r
-                moduleEle.setAttribute("target", "clean");\r
-                //\r
-                // Inherit Properties.\r
-                //{"ARCH", "PACKAGE", "PACKAGE_GUID", "PACKAGE_VERSION", "MODULE_DIR"}\r
-                //\r
-                \r
-                //\r
-                // ARCH\r
-                //\r
-                Element property = document.createElement("property");\r
-                property.setAttribute("name", "ARCH");\r
-                property.setAttribute("value", fpdModuleId.getArch());\r
-                moduleEle.appendChild(property);\r
-\r
-                //\r
-                // PACKAGE\r
-                //\r
-                property = document.createElement("property");\r
-                property.setAttribute("name", "PACKAGE");\r
-                property.setAttribute("value", moduleId.getPackage().getName());\r
-                moduleEle.appendChild(property);\r
-                \r
-                //\r
-                // PACKAGE_GUID\r
-                //\r
-                property = document.createElement("property");\r
-                property.setAttribute("name", "PACKAGE_GUID");\r
-                property.setAttribute("value", moduleId.getPackage().getGuid());\r
-                moduleEle.appendChild(property);\r
-                \r
-                //\r
-                // PACKAGE_VERSION\r
-                //\r
-                property = document.createElement("property");\r
-                property.setAttribute("name", "PACKAGE_VERSION");\r
-                property.setAttribute("value", moduleId.getPackage().getVersion());\r
-                moduleEle.appendChild(property);\r
-                \r
-                //\r
-                // MODULE_DIR\r
-                //\r
-                property = document.createElement("property");\r
-                property.setAttribute("name", "MODULE_DIR");\r
-                property.setAttribute("value", moduleId.getMsaFile().getParent());\r
-                moduleEle.appendChild(property);\r
-                elseEle.appendChild(moduleEle);\r
-                ifEle.appendChild(elseEle);\r
-                ele.appendChild(ifEle);\r
-            }\r
-        }\r
-        root.appendChild(ele);\r
-    }\r
-    \r
-    private void applyCleanall(Document document, Node root) {\r
-        //\r
-        // Deep Clean Target\r
-        //\r
-        root.appendChild(document.createComment("Target: cleanall"));\r
-        Element ele = document.createElement("target");\r
-        ele.setAttribute("name", "cleanall");\r
-\r
-        if (isUnified) {\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
-                    Element cleanAllEle = document.createElement("delete");\r
-                    cleanAllEle.setAttribute("dir", project.getProperty("BUILD_DIR") + File.separatorChar + targetList[i] + "_" + toolchainList[j]);\r
-                    ele.appendChild(cleanAllEle);\r
-                }\r
-            }\r
-        } else {\r
-            Set set = outfiles.keySet();\r
-            Iterator iter = set.iterator();\r
-            while (iter.hasNext()) {\r
-                FpdModuleIdentification fpdModuleId = (FpdModuleIdentification) iter.next();\r
-                ModuleIdentification moduleId = fpdModuleId.getModule();\r
-\r
-                Element ifEle = document.createElement("if");\r
-                Element availableEle = document.createElement("available");\r
-                availableEle.setAttribute("file", moduleId.getMsaFile().getParent() + File.separatorChar\r
-                                                  + "build.xml");\r
-                ifEle.appendChild(availableEle);\r
-                Element elseEle = document.createElement("then");\r
-\r
-                Element moduleEle = document.createElement("ant");\r
-                moduleEle.setAttribute("antfile", moduleId.getMsaFile().getParent() + File.separatorChar\r
-                                                  + "build.xml");\r
-                moduleEle.setAttribute("target", "cleanall");\r
-                //\r
-                // Inherit Properties.\r
-                //{"ARCH", "PACKAGE", "PACKAGE_GUID", "PACKAGE_VERSION", "MODULE_DIR"}\r
-                //\r
-                \r
-                //\r
-                // ARCH\r
-                //\r
-                Element property = document.createElement("property");\r
-                property.setAttribute("name", "ARCH");\r
-                property.setAttribute("value", fpdModuleId.getArch());\r
-                moduleEle.appendChild(property);\r
-\r
-                //\r
-                // PACKAGE\r
-                //\r
-                property = document.createElement("property");\r
-                property.setAttribute("name", "PACKAGE");\r
-                property.setAttribute("value", moduleId.getPackage().getName());\r
-                moduleEle.appendChild(property);\r
-                \r
-                //\r
-                // PACKAGE_GUID\r
-                //\r
-                property = document.createElement("property");\r
-                property.setAttribute("name", "PACKAGE_GUID");\r
-                property.setAttribute("value", moduleId.getPackage().getGuid());\r
-                moduleEle.appendChild(property);\r
-                \r
-                //\r
-                // PACKAGE_VERSION\r
-                //\r
-                property = document.createElement("property");\r
-                property.setAttribute("name", "PACKAGE_VERSION");\r
-                property.setAttribute("value", moduleId.getPackage().getVersion());\r
-                moduleEle.appendChild(property);\r
-                \r
-                //\r
-                // MODULE_DIR\r
-                //\r
-                property = document.createElement("property");\r
-                property.setAttribute("name", "MODULE_DIR");\r
-                property.setAttribute("value", moduleId.getMsaFile().getParent());\r
-                moduleEle.appendChild(property);\r
-                elseEle.appendChild(moduleEle);\r
-                ifEle.appendChild(elseEle);\r
-                ele.appendChild(ifEle);\r
-            }\r
-        }\r
-        root.appendChild(ele);\r
-    }\r
-    \r
-    private void applyUserExtensionsPreBuild(Document document, Node root) {\r
-        //\r
-        // User Extensions\r
-        //\r
-        root.appendChild(document.createComment("Pre-Build Processing"));\r
-        Element ele = document.createElement("target");\r
-        ele.setAttribute("name", "prebuild");\r
-        \r
-        Node node = saq.getFpdUserExtensionPreBuild();\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
-        root.appendChild(ele);\r
-    }\r
-    \r
-    private void applyUserExtensionsPostBuild(Document document, Node root) {\r
-        //\r
-        // User Extensions\r
-        //\r
-        root.appendChild(document.createComment("Post-Build Processing"));\r
-        Element ele = document.createElement("target");\r
-        ele.setAttribute("name", "postbuild");\r
-        \r
-        Node node = saq.getFpdUserExtensionPostBuild();\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
-    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
-        for (int i = 0; i < attr.getLength(); i++) {\r
-            Node attrItem = attr.item(i);\r
-            root.setAttribute(attrItem.getNodeName(), attrItem.getNodeValue());\r
-        }\r
-        NodeList childNodes = node.getChildNodes();\r
-        for (int i = 0; i < childNodes.getLength(); i++) {\r
-            Node childItem = childNodes.item(i);\r
-            if (childItem.getNodeType() == Node.ELEMENT_NODE) {\r
-                root.appendChild(recursiveNode(childItem, document));\r
-            }\r
-            else if (childItem.getNodeType() == Node.TEXT_NODE){\r
-                if (!childItem.getNodeValue().trim().equalsIgnoreCase("")) {\r
-                    root.setTextContent(childItem.getNodeValue());\r
-                }\r
-            }\r
-        }\r
-        return root;\r
-    }\r
-}\r