]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java
Fixed EDKT469
[mirror_edk2.git] / Tools / Java / Source / GenBuild / org / tianocore / build / global / SurfaceAreaQuery.java
index 6afeb30f5a5b5b8251e037f6c7cc41eede187556..b6cb329672bf0949d7e311cf42f880f13c5fdb49 100644 (file)
@@ -76,8 +76,7 @@ public class SurfaceAreaQuery {
     //\r
     // keep the namep declaration for xmlbeans Xpath query\r
     //\r
-    private String queryDeclaration = null;\r
-\r
+    private String queryDeclaration = null;    \r
     private StringBuffer normQueryString = new StringBuffer(4096);\r
     private Pattern xPathPattern = Pattern.compile("([^/]*)(/|//)([^/]+)");\r
 \r
@@ -492,6 +491,22 @@ public class SurfaceAreaQuery {
 \r
         return getOptions("PlatformSurfaceArea", xPath, toolChainFamilyFlag);\r
     }\r
+    \r
+    public String[][] getMsaBuildOptions(boolean toolChainFamilyFlag) {\r
+        String[] xPath;\r
+        \r
+        if (toolChainFamilyFlag == true) {\r
+            xPath = new String[] {\r
+                    "/Options/Option[not(@ToolChainFamily) and not(@TagName)]",\r
+                    "/Options/Option[@ToolChainFamily]", };\r
+        } else {\r
+            xPath = new String[] {\r
+                    "/Options/Option[not(@ToolChainFamily) and not(@TagName)]",\r
+                    "/Options/Option[@TagName]", };\r
+        }\r
+\r
+        return getOptions("ModuleBuildOptions", xPath, toolChainFamilyFlag);\r
+    }\r
 \r
     public ToolChainInfo getFpdToolChainInfo() {\r
         String[] xPath = new String[] { "/PlatformDefinitions" };\r
@@ -1995,6 +2010,32 @@ public class SurfaceAreaQuery {
                }\r
        }\r
     \r
+    public Node getPeiApriori(String fvName) {\r
+        String[] xPath = new String[] { "/BuildOptions/UserExtensions[@UserID='APRIORI' and @Identifier='0' and ./FvName='" + fvName + "']" };\r
+        Object[] result = get("PlatformSurfaceArea", xPath);\r
+        \r
+        if (result == null || result.length == 0) {\r
+            return null;\r
+        }\r
+        \r
+        UserExtensionsDocument.UserExtensions a =  (UserExtensionsDocument.UserExtensions)result[0];\r
+        \r
+        return a.getDomNode();\r
+    }\r
+    \r
+    public Node getDxeApriori(String fvName) {\r
+        String[] xPath = new String[] { "/BuildOptions/UserExtensions[@UserID='APRIORI' and @Identifier='1' and ./FvName='" + fvName + "']" };\r
+        Object[] result = get("PlatformSurfaceArea", xPath);\r
+        \r
+        if (result == null || result.length == 0) {\r
+            return null;\r
+        }\r
+        \r
+        UserExtensionsDocument.UserExtensions a =  (UserExtensionsDocument.UserExtensions)result[0];\r
+        \r
+        return a.getDomNode();\r
+    }\r
+    \r
     public Node getFpdModuleSequence(String fvName) {\r
         String[] xPath = new String[] { "/BuildOptions/UserExtensions[@UserID='IMAGES' and @Identifier='1' and ./FvName='" + fvName + "']" };\r
         Object[] result = get("PlatformSurfaceArea", xPath);\r
@@ -2007,4 +2048,25 @@ public class SurfaceAreaQuery {
         \r
         return a.getDomNode();\r
     }\r
+\r
+    /**\r
+     Get the value of PCD by PCD cName\r
+\r
+     @return PcdValue         String of PcdComponentName\r
+                null         If don't find ComponentName Pcd\r
+    **/\r
+    public String getPcdValueBycName(String cName){\r
+        String[] xPath = new String[] { "/PcdData" };\r
+        Object[] returns = get("PcdBuildDefinition", xPath);\r
+       if (returns == null || returns.length == 0) {\r
+           return  null;\r
+       } \r
+       for (int i = 0; i < returns.length; i++) {\r
+            PcdBuildDefinitionDocument.PcdBuildDefinition.PcdData pcdData = (PcdBuildDefinitionDocument.PcdBuildDefinition.PcdData)returns[i];\r
+           if (pcdData.getCName().equalsIgnoreCase(cName)){\r
+               return pcdData.getValue();\r
+            }\r
+        }\r
+        return null;\r
+    }\r
 }\r