From 8cf5da75ce5bf66f1ef5a495a41fdcc0a51f7138 Mon Sep 17 00:00:00 2001 From: wuyizhong Date: Mon, 10 Jul 2006 08:43:23 +0000 Subject: [PATCH] Support prebuild and postbuild for UserExtension for Platform build. If UserExtension's Identifier equals "0", which means prebuild, while Identifier equals "1", which means post build. UserExtension's UserId is still "TianoCore". git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@860 6f19259b-4bc3-4df7-8a09-765794883524 --- .../tianocore/build/FrameworkBuildTask.java | 1 - .../build/fpd/PlatformBuildFileGenerator.java | 65 ++++++++++++++++--- .../build/global/SurfaceAreaQuery.java | 17 ++++- .../build/toolchain/ToolChainKey.java | 6 -- .../build/toolchain/ToolChainMap.java | 2 - .../build/toolchain/ToolChainTask.java | 2 - .../tianocore/build/tools/PackageItem.java | 1 - 7 files changed, 71 insertions(+), 23 deletions(-) diff --git a/Tools/Source/GenBuild/org/tianocore/build/FrameworkBuildTask.java b/Tools/Source/GenBuild/org/tianocore/build/FrameworkBuildTask.java index 88e1a20e5e..624b07d046 100644 --- a/Tools/Source/GenBuild/org/tianocore/build/FrameworkBuildTask.java +++ b/Tools/Source/GenBuild/org/tianocore/build/FrameworkBuildTask.java @@ -26,7 +26,6 @@ import org.apache.tools.ant.Task; import org.tianocore.build.fpd.FpdParserTask; import org.tianocore.build.global.GlobalData; import org.tianocore.build.toolchain.ConfigReader; -import org.tianocore.build.toolchain.ToolChainConfig; import org.tianocore.build.toolchain.ToolChainInfo; public class FrameworkBuildTask extends Task{ diff --git a/Tools/Source/GenBuild/org/tianocore/build/fpd/PlatformBuildFileGenerator.java b/Tools/Source/GenBuild/org/tianocore/build/fpd/PlatformBuildFileGenerator.java index 87593a6683..929ddeaadc 100644 --- a/Tools/Source/GenBuild/org/tianocore/build/fpd/PlatformBuildFileGenerator.java +++ b/Tools/Source/GenBuild/org/tianocore/build/fpd/PlatformBuildFileGenerator.java @@ -119,7 +119,7 @@ public class PlatformBuildFileGenerator { Set sequenceKeys = sequences.keySet(); Iterator sequenceIter = sequenceKeys.iterator(); - String dependsStr = ""; + String dependsStr = "prebuild"; while (sequenceIter.hasNext()) { String num = (String)sequenceIter.next(); if (dependsStr.length() > 0) { @@ -134,7 +134,7 @@ public class PlatformBuildFileGenerator { root.appendChild(document.createComment("Default target")); ele = document.createElement("target"); ele.setAttribute("name", "all"); - ele.setAttribute("depends", dependsStr + ", userextensions"); + ele.setAttribute("depends", dependsStr + ", postbuild"); root.appendChild(ele); // @@ -158,9 +158,14 @@ public class PlatformBuildFileGenerator { applyCleanall(document, root); // - // User Extension + // User Extension pre build // - applyUserExtensions(document, root); + applyUserExtensionsPreBuild(document, root); + + // + // User Extension Post build + // + applyUserExtensionsPostBuild(document, root); document.appendChild(rootComment); document.appendChild(root); @@ -463,15 +468,59 @@ public class PlatformBuildFileGenerator { root.appendChild(ele); } - private void applyUserExtensions(Document document, Node root) { + private void applyUserExtensionsPreBuild(Document document, Node root) { + // + // User Extensions + // + root.appendChild(document.createComment("Pre Build Processing")); + Element ele = document.createElement("target"); + ele.setAttribute("name", "prebuild"); + + Node node = SurfaceAreaQuery.getFpdUserExtensionPreBuild(); + 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 void applyUserExtensionsPostBuild(Document document, Node root) { // // User Extensions // - root.appendChild(document.createComment("User Extensions")); + root.appendChild(document.createComment("Post Build Processing")); Element ele = document.createElement("target"); - ele.setAttribute("name", "userextensions"); + ele.setAttribute("name", "postbuild"); - Node node = SurfaceAreaQuery.getFpdUserExtension(); + Node node = SurfaceAreaQuery.getFpdUserExtensionPostBuild(); if (node != null) { // // For every Target and ToolChain diff --git a/Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java b/Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java index 321a87a827..149b30dd17 100644 --- a/Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java +++ b/Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java @@ -397,7 +397,6 @@ public class SurfaceAreaQuery { String toolchainFamily = null; List archList = null; String cmd = null; - String targetName = null; String optionName = null; Object[] returns = get(from, xPath); @@ -1385,8 +1384,20 @@ public class SurfaceAreaQuery { return result; } - public static Node getFpdUserExtension() { - String[] xPath = new String[] { "/UserExtensions[@UserID='TianoCore']" }; + public static Node getFpdUserExtensionPreBuild() { + String[] xPath = new String[] { "/UserExtensions[@UserID='TianoCore' and @Identifier='0']" }; + + Object[] queryResult = get("PlatformSurfaceArea", xPath); + if (queryResult == null || queryResult.length == 0) { + return null; + } + UserExtensionsDocument.UserExtensions a = (UserExtensionsDocument.UserExtensions)queryResult[0]; + + return a.getDomNode(); + } + + public static Node getFpdUserExtensionPostBuild() { + String[] xPath = new String[] { "/UserExtensions[@UserID='TianoCore' and @Identifier='1']" }; Object[] queryResult = get("PlatformSurfaceArea", xPath); if (queryResult == null || queryResult.length == 0) { diff --git a/Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainKey.java b/Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainKey.java index 60e698fab9..5504e54951 100644 --- a/Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainKey.java +++ b/Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainKey.java @@ -18,12 +18,6 @@ Abstract: package org.tianocore.build.toolchain; -import java.io.Serializable; -import java.util.AbstractMap; -import java.util.HashMap; -import java.util.Map; -import java.util.TreeMap; - import org.tianocore.exception.EdkException; public class ToolChainKey implements java.io.Serializable, Comparable { diff --git a/Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainMap.java b/Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainMap.java index 51cbf852ad..baddd95a98 100644 --- a/Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainMap.java +++ b/Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainMap.java @@ -22,8 +22,6 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; -import org.tianocore.exception.EdkException; - public class ToolChainMap { private int matchLevel = ToolChainKey.keyLength - 2; diff --git a/Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainTask.java b/Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainTask.java index 4b0577bea3..974be515f4 100644 --- a/Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainTask.java +++ b/Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainTask.java @@ -15,8 +15,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ package org.tianocore.build.toolchain; -import java.io.File; - import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; diff --git a/Tools/Source/GenBuild/org/tianocore/build/tools/PackageItem.java b/Tools/Source/GenBuild/org/tianocore/build/tools/PackageItem.java index af824b111c..abe40b7fc7 100644 --- a/Tools/Source/GenBuild/org/tianocore/build/tools/PackageItem.java +++ b/Tools/Source/GenBuild/org/tianocore/build/tools/PackageItem.java @@ -13,7 +13,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. package org.tianocore.build.tools; import org.apache.tools.ant.BuildException; -import org.tianocore.build.global.SurfaceAreaQuery; public class PackageItem { -- 2.39.2