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
// 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
}\r
}\r
\r
+ wholeline = hobLibFuncDropStatus(wholeline);\r
+ \r
Matcher mtrmac;\r
mtrmac = Pattern.compile("EFI_IDIV_ROUND\\((.*), (.*)\\)").matcher(wholeline);\r
if (mtrmac.find()) {\r
}\r
}\r
//---------------------------------------inner classes---------------------------------------//\r
- \r
+\r
+ //-------------------------------------process functions-------------------------------------//\r
private static final String addincludefile(String wholeline, String hfile) {\r
return wholeline.replaceFirst("(\\*/\\s)", "$1\n#include " + hfile + "\n");\r
}\r
}\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
}\r
//generate R8lib.h\r
while ((mtrr8onlyhead = Func.ptnbrace.matcher(paragraph)).find()) {\r
- paragraph = mtrr8onlyhead.replaceAll(";\n//");\r
+ paragraph = mtrr8onlyhead.replaceAll(";");\r
}\r
outfile2.append(paragraph + "\n\n");\r
}\r
mi.localmodulesources.add("R8Lib.h");\r
mi.localmodulesources.add("R8Lib.c");\r
}\r
+ //-------------------------------------process functions-------------------------------------//\r
\r
//-----------------------------------ForDoAll-----------------------------------//\r
public void run(String filepath) throws Exception {\r