import java.util.regex.Matcher;\r
import java.util.regex.Pattern;\r
\r
+import org.tianocore.UsageTypes;\r
+\r
public final class SourceFileReplacer implements Common.ForDoAll {\r
private static final SourceFileReplacer SFReplacer = new SourceFileReplacer();\r
private ModuleInfo mi;\r
}\r
\r
public boolean recognize(String filename) {\r
- return filename.contains(".h") || filename.contains(".H") || filename.contains(".uni");\r
+ return filename.contains(".h") || filename.contains(".H") || filename.contains(".uni") ||\r
+ filename.contains(".s") || filename.contains(".S") || filename.contains(".asm") ||\r
+ (!filename.contains(".inf") && filename.contains(".i"));\r
}\r
\r
public String namechange(String oldname) {\r
}\r
private class DxsLaplace extends Common.Laplace {\r
public String operation(String wholeline) {\r
+ wholeline = replaceMacro(wholeline, mi.hashnonlocalmacro);\r
if (mi.getModuleType().equals("PEIM")) {\r
return addincludefile(wholeline, "\\<PeimDepex.h\\>");\r
} else {\r
private class CLaplace extends Common.Laplace {\r
public String operation(String wholeline) {\r
// remove EFI_DRIVER_ENTRY_POINT\r
- wholeline = wholeline.replaceAll("(EFI_[A-Z]+_ENTRY_POINT\\s*\\(\\s*" + mi.entrypoint + "\\s*\\)\\s*;)", MigrationTool.MIGRATIONCOMMENT + " $1");\r
+ wholeline = wholeline.replaceAll("(EFI_[A-Z]+_ENTRY_POINT\\s*\\(\\s*\\w(\\w|\\d)*\\s*\\))", MigrationTool.MIGRATIONCOMMENT + " $1");\r
// redefine module entry point for some self-relocated modules\r
wholeline = wholeline.replaceAll (mi.entrypoint + "([^{]*?})", "_ModuleEntryPoint" + "$1");\r
// remove R8 library contractor\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 " + \r
- MigrationTool.MIGRATIONCOMMENT + "R9 Hob-building library functions will assert if build failure.\n Status = EFI_SUCCESS;");\r
- }\r
+ do {\r
+ ptnhobstatus = Pattern.compile("((?:\t| )*)(\\w(?:\\w|\\d)*)\\s*=\\s*" + specialhoblibfunc[i] + "(.*?;)", Pattern.DOTALL);\r
+ mtrhobstatus = ptnhobstatus.matcher(templine);\r
+ if (!mtrhobstatus.find()) {\r
+ break;\r
+ }\r
+ String captureIndent = mtrhobstatus.group(1);\r
+ String captureStatus = mtrhobstatus.group(2);\r
+ String replaceString = captureIndent + specialhoblibfunc[i] + mtrhobstatus.group(3) + "\n";\r
+ replaceString += captureIndent + MigrationTool.MIGRATIONCOMMENT + "R9 Hob-building library functions will assert if build failure.\n";\r
+ replaceString += captureIndent + captureStatus + " = EFI_SUCCESS;";\r
+ templine = mtrhobstatus.replaceFirst(replaceString);\r
+ } while (true);\r
}\r
return templine;\r
}\r
//mi.hashrequiredr9libs.add(MigrationTool.db.getR9Lib(r8thing)); \r
if ((r9thing = MigrationTool.db.getR9Macro(r8thing)) != null) {\r
if (wholeline.contains(r8thing)) {\r
- wholeline = wholeline.replaceAll(r8thing, r9thing);\r
+ String findString = "(?<!(?:\\d|\\w))" + r8thing + "(?!(?:\\d|\\w))";\r
+ wholeline = wholeline.replaceAll(findString, r9thing);\r
filemacro.add(new r8tor9(r8thing, r9thing));\r
}\r
}\r
it = symbolSet.iterator();\r
while (it.hasNext()) {\r
r8thing = it.next();\r
- mi.hashrequiredr9libs.add(MigrationTool.db.getR9Lib(r8thing)); // add a library here\r
+ mi.addLibraryClass(MigrationTool.db.getR9Lib(r8thing), UsageTypes.ALWAYS_CONSUMED);\r
+ //mi.hashrequiredr9libs.add(MigrationTool.db.getR9Lib(r8thing)); // add a library here\r
\r
r8tor9 temp;\r
if ((r9thing = MigrationTool.db.getR9Func(r8thing)) != null) {\r