]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/GenBuild/org/tianocore/build/ModuleBuildFileGenerator.java
- Fixed PVCS tracker 484 by merging the GenDll and GenEfi macro in BuildMacro.xml...
[mirror_edk2.git] / Tools / Java / Source / GenBuild / org / tianocore / build / ModuleBuildFileGenerator.java
index c02bc1fce8873a467934e77e4e8b567bbfc320d4..bbb51cd93f00658c52b2e959ee92acc9896cf36f 100644 (file)
@@ -363,18 +363,32 @@ public class ModuleBuildFileGenerator {
     **/\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
@@ -388,9 +402,9 @@ public class ModuleBuildFileGenerator {
             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
@@ -412,10 +426,10 @@ public class ModuleBuildFileGenerator {
         }\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
@@ -424,9 +438,9 @@ public class ModuleBuildFileGenerator {
         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
@@ -456,7 +470,23 @@ public class ModuleBuildFileGenerator {
             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