**/\r
private void applyCompileElement(Document document, Node root) {\r
//\r
- // sourceFiles[][0] is FileType, [][1] is File name relative to Module_Dir\r
+ // sourceFiles[][0] is FileType, \r
+ // [][1] is File name relative to Module_Dir, \r
+ // [][2] is ToolChainFamily\r
//\r
String[][] sourceFiles = saq.getSourceFiles(fpdModuleId.getArch());\r
\r
FileProcess fileProcess = new FileProcess();\r
fileProcess.init(project, includes, document);\r
- \r
- //\r
- // Initialize some properties by user\r
- //\r
- Element initEle = document.createElement("Build_Init");\r
- root.appendChild(initEle);\r
+\r
+ boolean isBinaryModule = fpdModuleId.getModule().isBinary();\r
+ boolean isLibraryModule = fpdModuleId.getModule().isLibrary();\r
+\r
+ if (!isBinaryModule) {\r
+ //\r
+ // Initialize some properties by user\r
+ //\r
+ Element initEle = document.createElement("Build_Init");\r
+ Element initIncEle = document.createElement("EXTRA.INC");\r
+ for (int i = 0; i < includes.length; i++) {\r
+ Element includeEle = document.createElement("includepath");\r
+ includeEle.setAttribute("path", includes[i]);\r
+ initIncEle.appendChild(includeEle);\r
+ }\r
+ initEle.appendChild(initIncEle);\r
+ root.appendChild(initEle);\r
+ }\r
\r
String moduleDir = project.getProperty("MODULE_DIR");\r
//\r
sourceFiles[i][1] = sourceFile.getPath();\r
String filetype = sourceFiles[i][0];\r
if (filetype != null) {\r
- fileProcess.parseFile(sourceFiles[i][1], filetype, root, true);\r
+ fileProcess.parseFile(sourceFiles[i][1], filetype, sourceFiles[i][2], root, true);\r
} else {\r
- fileProcess.parseFile(sourceFiles[i][1], root, true);\r
+ fileProcess.parseFile(sourceFiles[i][1], sourceFiles[i][2], root, true);\r
}\r
}\r
\r
}\r
\r
//\r
- // Parse AutoGen.c & AutoGen.h\r
+ // Don't build AutoGen.c for library and binary module\r
//\r
- if ( ! fpdModuleId.getModule().getName().equalsIgnoreCase("Shell")) {\r
- fileProcess.parseFile(project.getProperty("DEST_DIR_DEBUG") + File.separatorChar + "AutoGen.c", root, false);\r
+ if (!isLibraryModule && !isBinaryModule) {\r
+ fileProcess.parseFile(project.getProperty("DEST_DIR_DEBUG") + File.separatorChar + "AutoGen.c", null, root, false);\r
}\r
\r
//\r
for (int i = 0; i < sourceFiles.length; i++) {\r
String filetype = sourceFiles[i][0];\r
if (filetype != null) {\r
- fileProcess.parseFile(sourceFiles[i][1], filetype, root, false);\r
+ fileProcess.parseFile(sourceFiles[i][1], filetype, sourceFiles[i][2], root, false);\r
} else {\r
- fileProcess.parseFile(sourceFiles[i][1], root, false);\r
+ fileProcess.parseFile(sourceFiles[i][1], sourceFiles[i][2], root, false);\r
}\r
}\r
\r
String[] list = fp.getGenSectionElements(document, "${BASE_NAME}", fpdModuleId.getModule().getGuid(), targetFilename);\r
\r
for (int i = 0; i < list.length; i++) {\r
- Element ele = document.createElement(list[i]);\r
+ String sectiontype = list[i];\r
+ if (sectiontype.equalsIgnoreCase("EFI_SECTION_RAW") && project.getProperty("MODULE_TYPE").equalsIgnoreCase("SEC")) {\r
+ sectiontype += "_SEC";\r
+ }\r
+ if ((sectiontype.equalsIgnoreCase("EFI_SECTION_PE32") || \r
+ sectiontype.equalsIgnoreCase("EFI_SECTION_TE"))\r
+ && !fpdModuleId.getModule().isLibrary()\r
+ && !fpdModuleId.getModule().isBinary()) {\r
+ //\r
+ // Generate code to generate efi file\r
+ // \r
+ Element ele = document.createElement("GenEfi");\r
+ ele.setAttribute("FILEPATH", ".");\r
+ ele.setAttribute("FILENAME", "${BASE_NAME}");\r
+ root.appendChild(ele);\r
+ }\r
+ Element ele = document.createElement(sectiontype);\r
ele.setAttribute("FILEPATH", ".");\r
ele.setAttribute("FILENAME", "${BASE_NAME}");\r
root.appendChild(ele);\r