]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/MigrationTools/org/tianocore/migration/SourceFileReplacer.java
enhance hoblib function convert
[mirror_edk2.git] / Tools / Source / MigrationTools / org / tianocore / migration / SourceFileReplacer.java
index a2bc6c37fa11d761434a9bc3982b098037a0afde..25edc44e354e34ce3646a01dde1b762fee5daec9 100644 (file)
@@ -30,6 +30,16 @@ public final class SourceFileReplacer implements Common.ForDoAll {
        private static final Set<r8tor9> fileprotocol = new HashSet<r8tor9>();\r
        private static final Set<String> filer8only = new HashSet<String>();\r
        \r
+       private static final String[] specialhoblibfunc = {\r
+               "BuildModuleHob",\r
+               "BuildResourceDescriptorHob",\r
+               "BuildFvHob",\r
+               "BuildCpuHob",\r
+               "BuildStackHob",\r
+               "BuildBspStoreHob",\r
+               "BuildMemoryAllocationHob"\r
+               };\r
+       \r
        //---------------------------------------inner classes---------------------------------------//\r
        private static class r8tor9 {\r
                r8tor9(String r8, String r9) {\r
@@ -163,7 +173,8 @@ public final class SourceFileReplacer implements Common.ForDoAll {
                        // Converting Pei\r
                        // First , find all (**PeiServices)-> or (*PeiServices). with arg "PeiServices" , change name and add #%\r
                        Pattern ptnpei = Pattern.compile("\\(\\*\\*?PeiServices\\)[.-][>]?\\s*(\\w*)(\\s*\\(\\s*PeiServices\\s*,\\s*)", Pattern.MULTILINE);\r
-                       if (mi.moduletype.contains("PEIM")) {\r
+                       if (mi.getModuleType().matches("PEIM")) {\r
+                       //if (mi.moduletype.contains("PEIM")) {\r
                                Matcher mtrpei = ptnpei.matcher(wholeline);\r
                                while (mtrpei.find()) {                                                                         // ! add a library here !\r
                                        wholeline = mtrpei.replaceAll("PeiServices$1#%$2");\r
@@ -187,6 +198,8 @@ public final class SourceFileReplacer implements Common.ForDoAll {
                                }\r
                        }\r
                        \r
+                       wholeline = hobLibFuncDropStatus(wholeline);\r
+                       \r
                        Matcher mtrmac;\r
                        mtrmac = Pattern.compile("EFI_IDIV_ROUND\\((.*), (.*)\\)").matcher(wholeline);\r
                        if (mtrmac.find()) {\r
@@ -277,6 +290,20 @@ public final class SourceFileReplacer implements Common.ForDoAll {
                }\r
        }\r
 \r
+       private final String hobLibFuncDropStatus(String wholeline) {           // or use regex to find pattern "Status = ..."\r
+               Pattern ptnhobstatus;\r
+               Matcher mtrhobstatus;\r
+               String templine = wholeline;\r
+               for (int i = 0; i < specialhoblibfunc.length; i++) {\r
+                       ptnhobstatus = Pattern.compile("(Status\\s*=\\s*)?" + specialhoblibfunc[i] + "(.*?\\)\\s*;)", Pattern.DOTALL);\r
+                       mtrhobstatus = ptnhobstatus.matcher(templine);\r
+                       if (mtrhobstatus.find()) {\r
+                               templine = mtrhobstatus.replaceAll(specialhoblibfunc[i] + mtrhobstatus.group(2) + "\n  //Migration comments: R9 Hob-building library functions will assert if build failure.\n  Status = EFI_SUCCESS;");\r
+                       }\r
+               }\r
+               return templine;\r
+       }\r
+       \r
        private final void addr8only() throws Exception {\r
                String paragraph = null;\r
                String line = Common.file2string(MigrationTool.db.DatabasePath + File.separator + "R8Lib.c");\r