]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/MigrationTools/org/tianocore/migration/ModuleReader.java
remodel 1
[mirror_edk2.git] / Tools / Source / MigrationTools / org / tianocore / migration / ModuleReader.java
index 3f379b7256f5a822358d2e30bac50bd30ca811b1..dd8df97b5ebdb251caaaa3fca53a06bd66bf1c03 100644 (file)
@@ -17,27 +17,20 @@ import java.util.*;
 import java.util.regex.*;\r
 import org.tianocore.*;\r
 \r
-public class ModuleReader {\r
-       ModuleReader(String path, ModuleInfo moduleinfo, Database database) {\r
-               modulepath = path;\r
-               mi = moduleinfo;\r
-               db = database;\r
-       }\r
-       private String modulepath;\r
-       private ModuleInfo mi;\r
-       private Database db;\r
-       \r
-       private static Pattern ptninfequation = Pattern.compile("([^ ]*) *= *([^ ]*)");\r
+public final class ModuleReader {\r
+       private static final Pattern ptninfequation = Pattern.compile("([^\\s]*)\\s*=\\s*([^\\s]*)");\r
+       private static final Pattern ptnsection = Pattern.compile("\\[([^\\[\\]]*)\\]([^\\[\\]]*)\\n", Pattern.MULTILINE);\r
+       private static final Pattern ptnfilename = Pattern.compile("[^\\s]+");\r
        \r
-       public void readMsa(String name) throws Exception {\r
-               ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.parse(new File(modulepath + File.separator + name));\r
+       public static final void readMsa(String name, ModuleInfo mi) throws Exception {\r
+               ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.parse(new File(mi.modulepath + File.separator + name));\r
                ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = msadoc.getModuleSurfaceArea();\r
                MsaHeaderDocument.MsaHeader msaheader = msa.getMsaHeader();\r
-               \r
+\r
                mi.modulename = msaheader.getModuleName();\r
                mi.guidvalue = msaheader.getGuidValue();\r
                mi.moduletype = msaheader.getModuleType().toString();           // ???\r
-               \r
+\r
                SourceFilesDocument.SourceFiles sourcefiles = msa.getSourceFiles();\r
                \r
                String temp;\r
@@ -49,44 +42,48 @@ public class ModuleReader {
                }\r
        }\r
        \r
-       public void readInf(String name) throws Exception {\r
-               System.out.println("Parsing INF file: " + name);\r
-               BufferedReader rd = new BufferedReader(new FileReader(modulepath + File.separator + name));\r
-               String line;\r
-               String[] linecontext;\r
-               boolean inSrc = false;\r
+       public static final void readInf(String name, ModuleInfo mi) throws Exception {\r
+               System.out.println("\nParsing INF file: " + name);\r
+               String wholeline;\r
                Matcher mtrinfequation;\r
+               Matcher mtrsection;\r
+               Matcher mtrfilename;\r
 \r
-               while ((line = rd.readLine()) != null) {\r
-                       if (line.length() != 0) {\r
-                               if (inSrc) {\r
-                                       if (line.contains("[")) {\r
-                                               inSrc = false;\r
-                                       } else {\r
-                                               linecontext = line.split(" ");\r
-                                               if (linecontext[2].length() != 0) {\r
-                                                       if (!mi.localmodulesources.contains(linecontext[2])) {\r
-                                                               System.out.println("Source File Missing! : " + linecontext[2]);\r
-                                                       }\r
-                                               }\r
+               wholeline = Common.file2string(mi.modulepath + File.separator + name);\r
+               mtrsection = ptnsection.matcher(wholeline);\r
+               while (mtrsection.find()) {\r
+                       if (mtrsection.group(1).matches("defines")) {\r
+                               mtrinfequation = ptninfequation.matcher(mtrsection.group(2));\r
+                               while (mtrinfequation.find()) {\r
+                                       if (mtrinfequation.group(1).matches("BASE_NAME")) {\r
+                                               mi.modulename = mtrinfequation.group(2);\r
                                        }\r
-                               } else {\r
-                                       if ((mtrinfequation = ptninfequation.matcher(line)).find()) {\r
-                                               if (mtrinfequation.group(1).matches("BASE_NAME")) {\r
-                                                       mi.modulename = mtrinfequation.group(2);\r
-                                               }\r
-                                               if (mtrinfequation.group(1).matches("FILE_GUID")) {\r
-                                                       mi.guidvalue = mtrinfequation.group(2);\r
-                                               }\r
-                                               if (mtrinfequation.group(1).matches("COMPONENT_TYPE")) {\r
-                                                       mi.moduletype = mtrinfequation.group(2);\r
-                                               }\r
-                                               if (mtrinfequation.group(1).matches("IMAGE_ENTRY_POINT")) {\r
-                                                       mi.entrypoint = mtrinfequation.group(2);\r
+                                       if (mtrinfequation.group(1).matches("FILE_GUID")) {\r
+                                               mi.guidvalue = mtrinfequation.group(2);\r
+                                       }\r
+                                       if (mtrinfequation.group(1).matches("COMPONENT_TYPE")) {\r
+                                               mi.moduletype = mtrinfequation.group(2);\r
+                                       }\r
+                               }\r
+                       }\r
+                       if (mtrsection.group(1).matches("nmake.common")) {\r
+                               mtrinfequation = ptninfequation.matcher(mtrsection.group(2));\r
+                               while (mtrinfequation.find()) {\r
+                                       if (mtrinfequation.group(1).matches("IMAGE_ENTRY_POINT")) {\r
+                                               mi.entrypoint = mtrinfequation.group(2);\r
+                                       }\r
+                                       if (mtrinfequation.group(1).matches("DPX_SOURCE")) {\r
+                                               if (!mi.localmodulesources.contains(mtrinfequation.group(2))) {\r
+                                                       MigrationTool.ui.println("DPX File Missing! : " + mtrinfequation.group(2));\r
                                                }\r
                                        }\r
-                                       if (line.contains("sources")) {\r
-                                               inSrc = true;\r
+                               }\r
+                       }\r
+                       if (mtrsection.group(1).contains("sources.")) {\r
+                               mtrfilename = ptnfilename.matcher(mtrsection.group(2));\r
+                               while (mtrfilename.find()) {\r
+                                       if (!mi.localmodulesources.contains(mtrfilename.group())) {\r
+                                               MigrationTool.ui.println("Source File Missing! : " + mtrfilename.group());\r
                                        }\r
                                }\r
                        }\r