]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java
Fix the track EDKT187: If a module do not use PCD, PcdLib library class need not...
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / global / SurfaceAreaQuery.java
index 93727dbfc432c0e1b64d8cfd9ee85c89b93dec2e..1086bb8d498ce6940fc704274ae18431cc173714 100644 (file)
@@ -60,6 +60,7 @@ import org.tianocore.FilenameDocument.Filename;
 import org.tianocore.MsaHeaderDocument.MsaHeader;\r
 import org.tianocore.ProtocolsDocument.Protocols.Protocol;\r
 import org.tianocore.ProtocolsDocument.Protocols.ProtocolNotify;\r
+import org.tianocore.PcdDriverTypes;\r
 \r
 import org.tianocore.common.logger.EdkLog;\r
 import org.tianocore.build.id.FpdModuleIdentification;\r
@@ -67,6 +68,7 @@ import org.tianocore.build.id.ModuleIdentification;
 import org.tianocore.build.id.PackageIdentification;\r
 import org.tianocore.build.id.PlatformIdentification;\r
 import org.tianocore.build.toolchain.ToolChainInfo;\r
+import org.tianocore.build.autogen.CommonDefinition;\r
 \r
 /**\r
  * SurfaceAreaQuery class is used to query Surface Area information from msa,\r
@@ -622,10 +624,9 @@ public class SurfaceAreaQuery {
                 libraryClassName.add(libraryClassList[i].getKeyword());\r
                        }\r
         }\r
-               String[] libraryArray = new String[libraryClassName.size()];\r
-               for (int i = 0; i < libraryClassName.size(); i++) {\r
-                       libraryArray[i] = libraryClassName.get(i);\r
-               }\r
+\r
+        String[] libraryArray = new String[libraryClassName.size()];\r
+        libraryClassName.toArray(libraryArray);\r
         return libraryArray;\r
     }\r
 \r
@@ -1275,6 +1276,30 @@ public class SurfaceAreaQuery {
         return getCNames("Externs", xPath);\r
     }\r
 \r
+    /**\r
+      Judge whether current driver is PEI_PCD_DRIVER or DXE_PCD_DRIVER or\r
+      NOT_PCD_DRIVER.\r
+      \r
+      @return CommonDefinition.PCD_DRIVER_TYPE  the type of current driver\r
+    **/\r
+    public static CommonDefinition.PCD_DRIVER_TYPE getPcdDriverType() {\r
+        String[] xPath   = new String[] {"/PcdIsDriver"};\r
+        Object[] results = get ("Externs", xPath);\r
+\r
+        if (results != null && results.length != 0) {\r
+            PcdDriverTypes type     = (PcdDriverTypes) results[0];\r
+            String         typeStr  = type.enumValue().toString();\r
+            if (typeStr.equals(CommonDefinition.PCD_DRIVER_TYPE.PEI_PCD_DRIVER.toString())) {\r
+                return CommonDefinition.PCD_DRIVER_TYPE.PEI_PCD_DRIVER;\r
+            } else if (typeStr.equals(CommonDefinition.PCD_DRIVER_TYPE.DXE_PCD_DRIVER.toString())) {\r
+                return CommonDefinition.PCD_DRIVER_TYPE.DXE_PCD_DRIVER;\r
+            }\r
+            return CommonDefinition.PCD_DRIVER_TYPE.UNKNOWN_PCD_DRIVER;\r
+        }\r
+\r
+        return CommonDefinition.PCD_DRIVER_TYPE.NOT_PCD_DRIVER;\r
+    }\r
+\r
     /**\r
      * Retrieve module surface area file information\r
      *\r