]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/autogen/CommonDefinition.java
Fix the bug that using hardcode driver name to judge whether current driver is PCD...
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / autogen / CommonDefinition.java
index 2da1c6b6f58b554b855adabd6a1e3264aa5f20ed..335ff8f9d4c3335583dc4f26b3913cf35bfc5f26 100644 (file)
  **/\r
 package org.tianocore.build.autogen;\r
 \r
+import java.util.HashSet;\r
+import java.util.Iterator;\r
+import java.util.LinkedHashSet;\r
+import java.util.Set;\r
+\r
 /**\r
   CommonDefinition\r
   \r
@@ -29,50 +34,63 @@ public class CommonDefinition {
     public final static String autoGenHbegin = "extern int __make_me_compile_correctly;\r\n";\r
     public final static String include = "#include";\r
     public final static String autoGenCLine1 = "\r\n";\r
-    \r
+\r
     public final static String autoGenCLine2 = "const UINT8  _gDebugPropertyMask "\r
-                    + "= DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED"\r
-                    + "  | DEBUG_PROPERTY_DEBUG_PRINT_ENABLED"\r
-                    + "  | DEBUG_PROPERTY_DEBUG_CODE_ENABLED;\r\n";\r
+                                               + "= DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED"\r
+                                               + "  | DEBUG_PROPERTY_DEBUG_PRINT_ENABLED"\r
+                                               + "  | DEBUG_PROPERTY_DEBUG_CODE_ENABLED;\r\n";\r
 \r
     public final static String autoGenCLine3 = "const UINTN  _gModuleDefaultErrorLevel"\r
-                    + " = EFI_D_ERROR | EFI_D_LOAD;\r\n";\r
-    \r
+                                               + " = EFI_D_ERROR | EFI_D_LOAD;\r\n";\r
+\r
     public final static String autoGenHLine1          = "#define EFI_SPECIFICATION_VERSION    0x00020000\r\n";\r
     public final static String autoGenHVersionDefault = "#define EFI_SPECIFICATION_VERSION    0x00000000\r\n";\r
     public final static String autoGenHLine2          = "#define EDK_RELEASE_VERSION        0x00090000\r\n";\r
     public final static String autoGenHReleaseDefault = "#define EDK_RELEASE_VERSION        0x00000000\r\n";\r
 \r
     public final static String includeAutogenH        = "#include    <AutoGen.h>\r\n" ;\r
+    public final static String marcDefineStr          = "#define ";\r
 \r
     public final static String gEfi = "gEfi";\r
     public final static String protocolGuid = "ProtocolGuid";\r
     public final static String ppiGuid = "PpiGuid";\r
     public final static String guidGuid = "Guid";\r
-    \r
+\r
+    public final static String tianoR8FlashMapH = "TianoR8FlashMap.h";\r
+    public final static String flashMapH = "FlashMap.h";\r
+\r
+    //\r
+    // The defintions for identifying current module\r
+    // is PEI Pcd driver or Dxe Pcd driver.\r
+    // \r
+    public static enum   PCD_DRIVER_TYPE { NOT_PCD_DRIVER,\r
+        PEI_PCD_DRIVER, \r
+        DXE_PCD_DRIVER,\r
+        UNKNOWN_PCD_DRIVER};\r
+\r
     //\r
     // AutoGen.h and AutoGen.c file's header\r
     //\r
     public final static String autogenHNotation = \r
-      "/**\r\n" +\r
-      "  DO NOT EDIT\r\n" +\r
-      "  FILE auto-generated by GenBuild tasks\r\n" +\r
-      "  Module name:\r\n" +\r
-      "       AutoGen.h\r\n" +\r
-      "  Abstract:" +\r
-      "       Auto-generated AutoGen.h for building module or library.\r\n" +\r
-      "**/\r\n\r\n";\r
-        \r
+    "/**\r\n" +\r
+    "  DO NOT EDIT\r\n" +\r
+    "  FILE auto-generated by GenBuild tasks\r\n" +\r
+    "  Module name:\r\n" +\r
+    "       AutoGen.h\r\n" +\r
+    "  Abstract:" +\r
+    "       Auto-generated AutoGen.h for building module or library.\r\n" +\r
+    "**/\r\n\r\n";\r
+\r
     public final static String autogenCNotation = \r
-        "/**\r\n" +\r
-        "  DO NOT EDIT\r\n" +\r
-        "  FILE auto-generated by GenBuild tasks\r\n" +\r
-        "  Module name:\r\n" +\r
-        "       AutoGen.c\r\n" +\r
-        "  Abstract:" +\r
-        "       Auto-generated AutoGen.c for building module or library.\r\n" +\r
-        "**/\r\n\r\n";\r
-    \r
+    "/**\r\n" +\r
+    "  DO NOT EDIT\r\n" +\r
+    "  FILE auto-generated by GenBuild tasks\r\n" +\r
+    "  Module name:\r\n" +\r
+    "       AutoGen.c\r\n" +\r
+    "  Abstract:" +\r
+    "       Auto-generated AutoGen.c for building module or library.\r\n" +\r
+    "**/\r\n\r\n";\r
+\r
     //\r
     // module type\r
     //\r
@@ -88,8 +106,8 @@ public class CommonDefinition {
     public final static int ModuleTypeUefiDriver = 9;\r
     public final static int ModuleTypeUefiApplication = 10;\r
     public final static int ModuleTypeUnknown = 11;\r
-    \r
-   \r
+\r
+\r
     //\r
     // component type\r
     //                           \r
@@ -114,13 +132,13 @@ public class CommonDefinition {
     public final static int  ComponentTypeCustomBuild = 18;\r
     public final static int  ComponentTypeUnknown = 19;\r
 \r
-    \r
+\r
     //\r
     // Usaged style\r
     //\r
     public final static String AlwaysConsumed = "ALWAYS_CONSUMED";\r
     public final static String AlwaysProduced = "ALWAYS_PRODUCED";\r
-  \r
+\r
 \r
     public static class MyEnum {\r
         String moduleTypeStr;\r
@@ -138,47 +156,47 @@ public class CommonDefinition {
                 return -1;\r
         }\r
     }\r
-    \r
+\r
     //\r
     // Module type\r
     //\r
     public static final MyEnum[] moduleEnum = new MyEnum[] {\r
-                    new MyEnum("BASE", ModuleTypeBase),\r
-                    new MyEnum("SEC", ModuleTypeSec),\r
-                    new MyEnum("PEI_CORE", ModuleTypePeiCore),\r
-                    new MyEnum("PEIM", ModuleTypePeim),\r
-                    new MyEnum("DXE_CORE", ModuleTypeDxeCore),\r
-                    new MyEnum("DXE_DRIVER", ModuleTypeDxeDriver),\r
-                    new MyEnum("DXE_RUNTIME_DRIVER", ModuleTypeDxeRuntimeDriver),\r
-                    new MyEnum("DXE_SMM_DRIVER", ModuleTypeDxeSmmDriver),\r
-                    new MyEnum("DXE_SAL_DRIVER", ModuleTypeDxeSalDriver),\r
-                    new MyEnum("UEFI_DRIVER", ModuleTypeUefiDriver),\r
-                    new MyEnum("UEFI_APPLICATION", ModuleTypeUefiApplication) };\r
-    \r
+        new MyEnum("BASE", ModuleTypeBase),\r
+        new MyEnum("SEC", ModuleTypeSec),\r
+        new MyEnum("PEI_CORE", ModuleTypePeiCore),\r
+        new MyEnum("PEIM", ModuleTypePeim),\r
+        new MyEnum("DXE_CORE", ModuleTypeDxeCore),\r
+        new MyEnum("DXE_DRIVER", ModuleTypeDxeDriver),\r
+        new MyEnum("DXE_RUNTIME_DRIVER", ModuleTypeDxeRuntimeDriver),\r
+        new MyEnum("DXE_SAL_DRIVER", ModuleTypeDxeSalDriver),\r
+        new MyEnum("DXE_SMM_DRIVER", ModuleTypeDxeSmmDriver),\r
+        new MyEnum("UEFI_DRIVER", ModuleTypeUefiDriver),\r
+        new MyEnum("UEFI_APPLICATION", ModuleTypeUefiApplication)};\r
+\r
     //\r
     // Component type\r
     //\r
     public static final MyEnum[] componentEnum = new MyEnum[]{\r
-                    new MyEnum("APRIORI", ComponentTypeApriori),\r
-                    new MyEnum("SEC", ComponentTypeSec),\r
-                    new MyEnum("LIBRARY", ComponentTypeLibrary),\r
-                    new MyEnum("FV_IMAGE_FILE", ComponentTypeFvImageFile),\r
-                    new MyEnum("BS_DRIVER", ComponentTypeBsDriver),\r
-                    new MyEnum("RT_DRIVER", ComponentTypeRtDriver),\r
-                    new MyEnum("SAL_RT_DRIVER", ComponentTypeSalRtDriver),\r
-                    new MyEnum("PE32_PEIM", ComponentTypePe32Peim),\r
-                    new MyEnum("PIC_PEIM", ComponentTypePicPeim),\r
-                    new MyEnum("COMBINED_PEIM_DRIVER", ComponentTypeCombinedPeimDriver),\r
-                    new MyEnum("PEI_CORE", ComponentTypePeiCore),\r
-                    new MyEnum("DXE_CORE", ComponentTypeDxeCore),\r
-                    new MyEnum("APPLICATION", ComponentTypeApplication),\r
-                    new MyEnum("BS_DRIVER_EFI", ComponentTypeBsDriverEfi),\r
-                    new MyEnum("SHELLAPP", ComponentTypeShellApp),\r
-                    new MyEnum("BINARY", ComponentTypeBinary),\r
-                    new MyEnum("LOGO", ComponentTypeLogo),\r
-                    new MyEnum("CUSTOM_BUILD", ComponentTypeCustomBuild)\r
-                    };\r
-   \r
+        new MyEnum("APRIORI", ComponentTypeApriori),\r
+        new MyEnum("SEC", ComponentTypeSec),\r
+        new MyEnum("LIBRARY", ComponentTypeLibrary),\r
+        new MyEnum("FV_IMAGE_FILE", ComponentTypeFvImageFile),\r
+        new MyEnum("BS_DRIVER", ComponentTypeBsDriver),\r
+        new MyEnum("RT_DRIVER", ComponentTypeRtDriver),\r
+        new MyEnum("SAL_RT_DRIVER", ComponentTypeSalRtDriver),\r
+        new MyEnum("PE32_PEIM", ComponentTypePe32Peim),\r
+        new MyEnum("PIC_PEIM", ComponentTypePicPeim),\r
+        new MyEnum("COMBINED_PEIM_DRIVER", ComponentTypeCombinedPeimDriver),\r
+        new MyEnum("PEI_CORE", ComponentTypePeiCore),\r
+        new MyEnum("DXE_CORE", ComponentTypeDxeCore),\r
+        new MyEnum("APPLICATION", ComponentTypeApplication),\r
+        new MyEnum("BS_DRIVER_EFI", ComponentTypeBsDriverEfi),\r
+        new MyEnum("SHELLAPP", ComponentTypeShellApp),\r
+        new MyEnum("BINARY", ComponentTypeBinary),\r
+        new MyEnum("LOGO", ComponentTypeLogo),\r
+        new MyEnum("CUSTOM_BUILD", ComponentTypeCustomBuild)\r
+    };\r
+\r
     /**\r
       getModuleType\r
       \r
@@ -225,18 +243,18 @@ public class CommonDefinition {
     \r
     @param    componentType  Integer value of component type.\r
     @return\r
-  **/\r
+    **/\r
     static public String getComponentTypeString (int componentType) {\r
-      if ((componentType > CommonDefinition.ComponentTypeUnknown) || \r
-          (componentType < CommonDefinition.ComponentTypeNull)) {\r
-        return null;\r
-      }\r
-      for (int index = 0; index < CommonDefinition.componentEnum.length; index ++) {\r
-        if (componentType == CommonDefinition.componentEnum[index].type) {\r
-          return CommonDefinition.componentEnum[index].moduleTypeStr;\r
+        if ((componentType > CommonDefinition.ComponentTypeUnknown) || \r
+            (componentType < CommonDefinition.ComponentTypeNull)) {\r
+            return null;\r
         }\r
-      }\r
-      return null;\r
+        for (int index = 0; index < CommonDefinition.componentEnum.length; index ++) {\r
+            if (componentType == CommonDefinition.componentEnum[index].type) {\r
+                return CommonDefinition.componentEnum[index].moduleTypeStr;\r
+            }\r
+        }\r
+        return null;\r
     }\r
 \r
     /**\r
@@ -249,34 +267,97 @@ public class CommonDefinition {
       @return\r
     **/\r
     static public boolean isLibraryComponent (int componentType) {\r
-      if (ComponentTypeLibrary == componentType) {\r
-        return true;\r
-      }\r
-      return false;\r
+        if (ComponentTypeLibrary == componentType) {\r
+            return true;\r
+        }\r
+        return false;\r
+    }\r
+\r
+    /**\r
+     * formateGuidName\r
+     * \r
+     * This function is to formate GUID to ANSI c form.\r
+     * \r
+     * @param guidNameCon\r
+     *            String of GUID.\r
+     * @return Formated GUID.\r
+     */\r
+    public static String formatGuidName(String guidNameConv) {\r
+        String[] strList;\r
+        String guid = "";\r
+        int index = 0;\r
+        if (guidNameConv\r
+            .matches("[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}")) {\r
+            strList = guidNameConv.split("-");\r
+            guid = "0x" + strList[0] + ", ";\r
+            guid = guid + "0x" + strList[1] + ", ";\r
+            guid = guid + "0x" + strList[2] + ", ";\r
+            guid = guid + "{";\r
+            guid = guid + "0x" + strList[3].substring(0, 2) + ", ";\r
+            guid = guid + "0x" + strList[3].substring(2, 4);\r
+\r
+            while (index < strList[4].length()) {\r
+                guid = guid + ", ";\r
+                guid = guid + "0x" + strList[4].substring(index, index + 2);\r
+                index = index + 2;\r
+            }\r
+            guid = guid + "}";\r
+            return guid;\r
+        } else if (guidNameConv\r
+                   .matches("0x[a-fA-F0-9]{1,8},( )*0x[a-fA-F0-9]{1,4},( )*0x[a-fA-F0-9]{1,4}(,( )*\\{)?(,?( )*0x[a-fA-F0-9]{1,2}){8}( )*(\\})?")) {\r
+            strList = guidNameConv.split(",");\r
+\r
+            //\r
+            // chang Microsoft specific form to ANSI c form\r
+            //\r
+            for (int i = 0; i < 3; i++) {\r
+                guid = guid + strList[i] + ",";\r
+            }\r
+            guid = guid + "{";\r
+\r
+            for (int i = 3; i < strList.length; i++) {\r
+                if (i == strList.length - 1) {\r
+                    guid = guid + strList[i];\r
+                } else {\r
+                    guid = guid + strList[i] + ",";\r
+                }\r
+            }\r
+            guid = guid + "}";\r
+            return guid;\r
+        } else {\r
+            System.out\r
+            .println("Check GUID Value, It doesn't conform to the registry format specified in the schema!!!");\r
+            return "0";\r
+\r
+        }\r
+    }\r
+\r
+    /**\r
+     * Remove deuplicat string in list\r
+     * \r
+     * This function is to duplicat string in list\r
+     * \r
+     * @param String[]\r
+     *            String list.\r
+     * @return String[] String list which remove the duplicate string.\r
+     */\r
+    public static String[] remDupString (String[] orgList){\r
+        Set<String> strList = new LinkedHashSet<String>();\r
+        String[] desList ;\r
+        if (orgList == null) {\r
+            return new String[0];\r
+        }\r
+        for (int i = 0; i < orgList.length; i++) {\r
+            strList.add(orgList[i]);\r
+        }\r
+        desList = new String[strList.size()];\r
+        Iterator item = strList.iterator();\r
+        int index = 0;\r
+        while (item.hasNext()) {\r
+            desList[index] = (String)item.next();\r
+            index++;\r
+        }\r
+        return desList;\r
     }\r
 \r
-               static public boolean isPeiPhaseComponent (int componentType) {\r
-                       if (ComponentTypePe32Peim == componentType\r
-                                       || ComponentTypePicPeim == componentType\r
-                                       || ComponentTypeCombinedPeimDriver == componentType\r
-                                       || ComponentTypePeiCore == componentType) {\r
-                               return true;\r
-                       }\r
-                       return false;\r
-               }\r
-\r
-               static public boolean isPe32PeimComponent (int componentType) {\r
-                       if (ComponentTypePe32Peim == componentType) {\r
-                               return true;\r
-                       }\r
-                       return false;\r
-               }\r
-\r
-               static public boolean isBsDriverComponent (int componentType) {\r
-                       if (ComponentTypeBsDriver == componentType) {\r
-                               return true;\r
-                       }\r
-                       return false;\r
-               }\r
-               \r
 }\r