]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Support prebuild and postbuild for UserExtension for Platform build. If UserExtension...
authorwuyizhong <wuyizhong@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 10 Jul 2006 08:43:23 +0000 (08:43 +0000)
committerwuyizhong <wuyizhong@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 10 Jul 2006 08:43:23 +0000 (08:43 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@860 6f19259b-4bc3-4df7-8a09-765794883524

Tools/Source/GenBuild/org/tianocore/build/FrameworkBuildTask.java
Tools/Source/GenBuild/org/tianocore/build/fpd/PlatformBuildFileGenerator.java
Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java
Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainKey.java
Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainMap.java
Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainTask.java
Tools/Source/GenBuild/org/tianocore/build/tools/PackageItem.java

index 88e1a20e5e93a2089219ee5fa371e702ce4e64d6..624b07d046dfe30e6d900ddb8183476cba4e5cef 100644 (file)
@@ -26,7 +26,6 @@ import org.apache.tools.ant.Task;
 import org.tianocore.build.fpd.FpdParserTask;\r
 import org.tianocore.build.global.GlobalData;\r
 import org.tianocore.build.toolchain.ConfigReader;\r
-import org.tianocore.build.toolchain.ToolChainConfig;\r
 import org.tianocore.build.toolchain.ToolChainInfo;\r
 \r
 public class FrameworkBuildTask extends Task{\r
index 87593a6683a23c9f8adc20a203e088e4b15e0903..929ddeaadcf92cfd20e403eb9d2b563e0f9cb48a 100644 (file)
@@ -119,7 +119,7 @@ public class PlatformBuildFileGenerator {
             \r
             Set<String> sequenceKeys = sequences.keySet();\r
             Iterator sequenceIter = sequenceKeys.iterator();\r
-            String dependsStr = "";\r
+            String dependsStr = "prebuild";\r
             while (sequenceIter.hasNext()) {\r
                 String num = (String)sequenceIter.next();\r
                 if (dependsStr.length() > 0) {\r
@@ -134,7 +134,7 @@ public class PlatformBuildFileGenerator {
             root.appendChild(document.createComment("Default target"));\r
             ele = document.createElement("target");\r
             ele.setAttribute("name", "all");\r
-            ele.setAttribute("depends", dependsStr + ", userextensions");\r
+            ele.setAttribute("depends", dependsStr + ", postbuild");\r
             root.appendChild(ele);\r
             \r
             //\r
@@ -158,9 +158,14 @@ public class PlatformBuildFileGenerator {
             applyCleanall(document, root);\r
             \r
             //\r
-            // User Extension\r
+            // User Extension pre build\r
             //\r
-            applyUserExtensions(document, root);\r
+            applyUserExtensionsPreBuild(document, root);\r
+            \r
+            //\r
+            // User Extension Post build\r
+            //\r
+            applyUserExtensionsPostBuild(document, root);\r
             \r
             document.appendChild(rootComment);\r
             document.appendChild(root);\r
@@ -463,15 +468,59 @@ public class PlatformBuildFileGenerator {
         root.appendChild(ele);\r
     }\r
     \r
-    private void applyUserExtensions(Document document, Node root) {\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 = SurfaceAreaQuery.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] + File.separatorChar \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
+                    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 applyUserExtensionsPostBuild(Document document, Node root) {\r
         //\r
         // User Extensions\r
         //\r
-        root.appendChild(document.createComment("User Extensions"));\r
+        root.appendChild(document.createComment("Post Build Processing"));\r
         Element ele = document.createElement("target");\r
-        ele.setAttribute("name", "userextensions");\r
+        ele.setAttribute("name", "postbuild");\r
         \r
-        Node node = SurfaceAreaQuery.getFpdUserExtension();\r
+        Node node = SurfaceAreaQuery.getFpdUserExtensionPostBuild();\r
         if (node != null) {\r
             //\r
             // For every Target and ToolChain\r
index 321a87a827a7dfd3219c220edf4e0c9cbc231e96..149b30dd173e88fb7946e4b21eeb629bc55a7e25 100644 (file)
@@ -397,7 +397,6 @@ public class SurfaceAreaQuery {
         String toolchainFamily = null;\r
         List<String> archList = null;\r
         String cmd = null;\r
-        String targetName = null;\r
         String optionName = null;\r
 \r
         Object[] returns = get(from, xPath);\r
@@ -1385,8 +1384,20 @@ public class SurfaceAreaQuery {
         return result;\r
     }\r
     \r
-    public static Node getFpdUserExtension() {\r
-        String[] xPath = new String[] { "/UserExtensions[@UserID='TianoCore']" }; \r
+    public static Node getFpdUserExtensionPreBuild() {\r
+        String[] xPath = new String[] { "/UserExtensions[@UserID='TianoCore' and @Identifier='0']" }; \r
+\r
+        Object[] queryResult = get("PlatformSurfaceArea", xPath);\r
+        if (queryResult == null || queryResult.length == 0) {\r
+            return null;\r
+        }\r
+        UserExtensionsDocument.UserExtensions a =  (UserExtensionsDocument.UserExtensions)queryResult[0];\r
+        \r
+        return a.getDomNode();\r
+    }\r
+    \r
+    public static Node getFpdUserExtensionPostBuild() {\r
+        String[] xPath = new String[] { "/UserExtensions[@UserID='TianoCore' and @Identifier='1']" }; \r
 \r
         Object[] queryResult = get("PlatformSurfaceArea", xPath);\r
         if (queryResult == null || queryResult.length == 0) {\r
index 60e698fab9252d677b16fe0049560821033bad5b..5504e54951fd8d55246a3adabb9416913f1a5c79 100644 (file)
@@ -18,12 +18,6 @@ Abstract:
 \r
 package org.tianocore.build.toolchain;\r
 \r
-import java.io.Serializable;\r
-import java.util.AbstractMap;\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-import java.util.TreeMap;\r
-\r
 import org.tianocore.exception.EdkException;\r
 \r
 public class ToolChainKey implements java.io.Serializable, Comparable<ToolChainKey> {\r
index 51cbf852adee6a6e79265ff887d69fded69529f9..baddd95a98d388ef23988725c79b7dfa5cd81dfd 100644 (file)
@@ -22,8 +22,6 @@ import java.util.HashMap;
 import java.util.Map;\r
 import java.util.Set;\r
 \r
-import org.tianocore.exception.EdkException;\r
-\r
 public class ToolChainMap {\r
 \r
     private int matchLevel = ToolChainKey.keyLength - 2;\r
index 4b0577bea3aa0302b1b59fcecd34c0372bfdd722..974be515f486447b378efc41f0a8e805183f3240 100644 (file)
@@ -15,8 +15,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 **/\r
 package org.tianocore.build.toolchain;\r
 \r
-import java.io.File;\r
-\r
 import org.apache.tools.ant.BuildException;\r
 import org.apache.tools.ant.Task;\r
 \r
index af824b111c8ad6f2dc13e992b164c44cfe2d6c4f..abe40b7fc70db4737e05db8cc775321eaa671359 100644 (file)
@@ -13,7 +13,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 package org.tianocore.build.tools;\r
 \r
 import org.apache.tools.ant.BuildException;\r
-import org.tianocore.build.global.SurfaceAreaQuery;\r
 \r
 public class PackageItem {\r
 \r