}\r
Map<String, XmlObject> msaMap = GlobalData.getNativeMsa(baseName);\r
Map<String, XmlObject> mbdMap = GlobalData.getNativeMbd(baseName);\r
+ Map<String, XmlObject> fpdMap = new HashMap<String, XmlObject>();\r
Map<String, XmlObject> map = new HashMap<String, XmlObject>();\r
//\r
// Whether the Module SA has parsed before or not\r
// Here we can also put platform Build override\r
//\r
map = op.override(mbdMap, msaMap);\r
- Map<String, XmlObject> overrideMap = op.override(\r
- getPlatformOverrideInfo(moduleSAs[i]),\r
- OverrideProcess.deal(map));\r
+ fpdMap = getPlatformOverrideInfo(moduleSAs[i]);\r
+ XmlObject buildOption = (XmlObject)fpdMap.get("BuildOptions");\r
+ buildOption = (XmlObject)fpdMap.get("PackageDependencies");\r
+ buildOption = (XmlObject)fpdMap.get("BuildOptions");\r
+ buildOption = op.override(buildOption, platformBuildOptions);\r
+ fpdMap.put("BuildOptions", ((BuildOptionsDocument)buildOption).getBuildOptions());\r
+ Map<String, XmlObject> overrideMap = op.override(fpdMap, OverrideProcess.deal(map));\r
GlobalData.registerModule(baseName, overrideMap);\r
} else {\r
map = GlobalData.getDoc(baseName);\r
Map<String, XmlObject> map = new HashMap<String, XmlObject>();\r
map.put("SourceFiles", sa.getSourceFiles());\r
map.put("Includes", sa.getIncludes());\r
+ map.put("PackageDependencies", null);\r
map.put("Libraries", sa.getLibraries());\r
map.put("Protocols", sa.getProtocols());\r
map.put("Events", sa.getEvents());\r
map.put("Formsets", sa.getFormsets());\r
map.put("Guids", sa.getGuids());\r
map.put("Externs", sa.getExterns());\r
- map.put("BuildOptions", platformBuildOptions);\r
+ map.put("BuildOptions", sa.getBuildOptions());//platformBuildOptions);\r
return map;\r
}\r
\r
}\r
\r
public void collectPCDInformation() {\r
- CollectPCDAction collectAction = new CollectPCDAction ();\r
- //\r
- // Set memory database log file path. It should be put into same directory with FPD file. \r
- //\r
- GlobalData.getPCDMemoryDBManager().setLogFileName(\r
- fpdFilename.getPath() + ".PCDMemroyDatabaseLog.txt"\r
- );\r
- //\r
- // Collect all PCD information from FPD to MSA, and get help information from SPD.\r
- // These all information will be stored into memory database for future usage such \r
- // as autogen.\r
- //\r
- try {\r
- collectAction.perform (\r
- getProject().getProperty("WORKSPACE_DIR"),\r
- fpdFilename.getPath(),\r
- ActionMessage.MAX_MESSAGE_LEVEL\r
- );\r
- } catch (Exception exp) {\r
- throw new BuildException (exp.getMessage());\r
- }\r
+ String exceptionString = null;\r
+ CollectPCDAction collectAction = new CollectPCDAction ();\r
+ //\r
+ // Collect all PCD information from FPD to MSA, and get help information from SPD.\r
+ // These all information will be stored into memory database for future usage such \r
+ // as autogen.\r
+ //\r
+ try {\r
+ collectAction.perform (getProject().getProperty("WORKSPACE_DIR"),\r
+ fpdFilename.getPath(),\r
+ ActionMessage.MAX_MESSAGE_LEVEL\r
+ );\r
+ } catch (Exception exp) {\r
+ exceptionString = exp.getMessage();\r
+ if (exceptionString == null) {\r
+ exceptionString = "[Internal Error]Pcd tools catch a internel errors, Please report this bug into TianoCore or send email to Wang, scott or Lu, ken!";\r
+ }\r
+ throw new BuildException (String.format("Fail to do PCD preprocess from FPD file: %s", exceptionString));\r
+ }\r
}\r
}\r