]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/ModuleBuildFileGenerator.java
Do Not cleanall librarys with a module build clean or build cleanall.
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / ModuleBuildFileGenerator.java
index b4f34f762a4344f6465c0d8fd4b6612365098bb6..49628af5d2aa092bed1b9a61f46d70b6206f9b8e 100644 (file)
@@ -16,6 +16,8 @@ import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;\r
 import java.util.Map;\r
 import java.util.Set;\r
+import java.io.FileOutputStream;\r
+import java.io.OutputStreamWriter;\r
 \r
 import javax.xml.parsers.DocumentBuilder;\r
 import javax.xml.parsers.DocumentBuilderFactory;\r
@@ -211,7 +213,8 @@ public class ModuleBuildFileGenerator {
             // generate all directory path\r
             //\r
             (new File(file.getParent())).mkdirs();\r
-            Result result = new StreamResult(file);\r
+            FileOutputStream outputStream = new FileOutputStream(file);\r
+            Result result = new StreamResult(new OutputStreamWriter(outputStream));\r
             \r
             //\r
             // Write the DOM document to the file\r
@@ -232,41 +235,6 @@ public class ModuleBuildFileGenerator {
       @param root Root element for current\r
     **/\r
     private void applyCleanElement(Document document, Node root) {\r
-        ModuleIdentification[] libinstances = SurfaceAreaQuery.getLibraryInstance(fpdModuleId.getArch());\r
-        for (int i = 0; i < libinstances.length; i++) {\r
-            //\r
-            // Put package file path to module identification\r
-            //\r
-            PackageIdentification packageId = libinstances[i].getPackage();\r
-            \r
-            //\r
-            // Generate ANT script to clean\r
-            //\r
-            Element ele = document.createElement("GenBuild");\r
-            ele.setAttribute("type", "clean");\r
-            \r
-            //\r
-            // Prepare pass down information\r
-            //\r
-            Map<String, String> passDownMap = new LinkedHashMap<String, String>();\r
-            for (int j = 0; j < inheritProperties.length; j ++){\r
-                passDownMap.put(inheritProperties[j], "${" + inheritProperties[j] + "}");\r
-            }\r
-            passDownMap.put("MODULE_GUID", libinstances[i].getGuid());\r
-            passDownMap.put("MODULE_VERSION", libinstances[i].getVersion());\r
-            \r
-            passDownMap.put("PACKAGE_GUID", packageId.getGuid());\r
-            passDownMap.put("PACKAGE_VERSION", packageId.getVersion());\r
-            \r
-            for (int j = 0; j < inheritProperties.length; j ++){\r
-                Element property = document.createElement("property");\r
-                property.setAttribute("name", inheritProperties[j]);\r
-                property.setAttribute("value", passDownMap.get(inheritProperties[j]));\r
-                ele.appendChild(property);\r
-            }\r
-\r
-            root.appendChild(ele);\r
-        }\r
         //\r
         // <delete includeemptydirs="true">\r
         //   <fileset dir="${DEST_DIR_OUTPUT}" includes="" excludes="" />\r
@@ -289,42 +257,6 @@ public class ModuleBuildFileGenerator {
       @param root Root element for current\r
     **/\r
     private void applyDeepcleanElement(Document document, Node root) {\r
-        ModuleIdentification[] libinstances = SurfaceAreaQuery.getLibraryInstance(fpdModuleId.getArch());\r
-        for (int i = 0; i < libinstances.length; i++) {\r
-            //\r
-            // Put package file path to module identification\r
-            //\r
-            PackageIdentification packageId = libinstances[i].getPackage();\r
-            \r
-            //\r
-            // Generate ANT script to clean\r
-            //\r
-            Element ele = document.createElement("GenBuild");\r
-            ele.setAttribute("type", "cleanall");\r
-            \r
-            //\r
-            // Prepare pass down information\r
-            //\r
-            Map<String, String> passDownMap = new LinkedHashMap<String, String>();\r
-            for (int j = 0; j < inheritProperties.length; j ++){\r
-                passDownMap.put(inheritProperties[j], "${" + inheritProperties[j] + "}");\r
-            }\r
-            \r
-            passDownMap.put("MODULE_GUID", libinstances[i].getGuid());\r
-            passDownMap.put("MODULE_VERSION", libinstances[i].getVersion());\r
-            \r
-            passDownMap.put("PACKAGE_GUID", packageId.getGuid());\r
-            passDownMap.put("PACKAGE_VERSION", packageId.getVersion());\r
-            \r
-            for (int j = 0; j < inheritProperties.length; j ++){\r
-                Element property = document.createElement("property");\r
-                property.setAttribute("name", inheritProperties[j]);\r
-                property.setAttribute("value", passDownMap.get(inheritProperties[j]));\r
-                ele.appendChild(property);\r
-            }\r
-\r
-            root.appendChild(ele);\r
-        }\r
         //\r
         // <delete includeemptydirs="true">\r
         //   <fileset dir="${DEST_DIR_OUTPUT}" includes="" excludes="" />\r
@@ -361,7 +293,6 @@ public class ModuleBuildFileGenerator {
     **/\r
     private void applyLibraryInstance(Document document, Node root) {\r
         ModuleIdentification[] libinstances = SurfaceAreaQuery.getLibraryInstance(fpdModuleId.getArch());\r
-//        String propertyLibs = "";\r
         for (int i = 0; i < libinstances.length; i++) {\r
             //\r
             // Put package file path to module identification\r
@@ -373,7 +304,6 @@ public class ModuleBuildFileGenerator {
             //\r
             Element ele = document.createElement("GenBuild");\r
             ele.setAttribute("type", "build");\r
-//            ele.setAttribute("inheritAll", "false");\r
             \r
             //\r
             // Prepare pass down information\r
@@ -397,11 +327,23 @@ public class ModuleBuildFileGenerator {
             }\r
             \r
             root.appendChild(ele);\r
-//            propertyLibs += " " + project.getProperty("BIN_DIR") + File.separatorChar + libinstances[i].getName() + ".lib";\r
         }\r
-//        project.setProperty("LIBS", propertyLibs.replaceAll("(\\\\)", "/"));\r
     }\r
     \r
+     /**\r
+      Return the name of the directory that corresponds to the architecture.\r
+      This is a translation from the XML Schema tag to a directory that\r
+      corresponds to our directory name coding convention.\r
+     \r
+      **/\r
+    private String archDir(String arch) {\r
+        return arch.replaceFirst("X64", "x64")\r
+                   .replaceFirst("IPF", "Ipf")\r
+                   .replaceFirst("IA32", "Ia32")\r
+                   .replaceFirst("ARM", "Arm")\r
+                   .replaceFirst("EBC", "Ebc");\r
+    }\r
+\r
     /**\r
       Generate the build source files elements for BaseName_build.xml. \r
       \r
@@ -413,17 +355,18 @@ public class ModuleBuildFileGenerator {
         // Prepare the includes: PackageDependencies and Output debug direactory\r
         //\r
         Set<String> includes = new LinkedHashSet<String>();\r
+        String arch = project.getProperty("ARCH");\r
         \r
         //\r
         // WORKSPACE\r
         //\r
-        includes.add("${WORKSPACE_DIR}");\r
+        includes.add("${WORKSPACE_DIR}" + File.separatorChar);\r
         \r
         //\r
         // Module iteself\r
         //\r
         includes.add("${MODULE_DIR}");\r
-        includes.add("${MODULE_DIR}" + File.separatorChar + "${ARCH}");\r
+        includes.add("${MODULE_DIR}" + File.separatorChar + archDir(arch));\r
         \r
         //\r
         // Packages in PackageDenpendencies\r
@@ -433,7 +376,7 @@ public class ModuleBuildFileGenerator {
             GlobalData.refreshPackageIdentification(packageDependencies[i]);\r
             File packageFile = packageDependencies[i].getSpdFile();\r
             includes.add(packageFile.getParent() + File.separatorChar + "Include");\r
-            includes.add(packageFile.getParent() + File.separatorChar + "Include" + File.separatorChar + "${ARCH}");\r
+            includes.add(packageFile.getParent() + File.separatorChar + "Include" + File.separatorChar + archDir(arch));\r
         }\r
 \r
         //\r
@@ -447,7 +390,7 @@ public class ModuleBuildFileGenerator {
                 GlobalData.refreshPackageIdentification(libraryPackageDependencies[j]);\r
                 File packageFile = libraryPackageDependencies[j].getSpdFile();\r
                 includes.add(packageFile.getParent() + File.separatorChar + "Include");\r
-                includes.add(packageFile.getParent() + File.separatorChar + "Include" + File.separatorChar + "${ARCH}");\r
+                includes.add(packageFile.getParent() + File.separatorChar + "Include" + File.separatorChar + archDir(arch));\r
             }\r
             SurfaceAreaQuery.pop();\r
         }\r
@@ -457,7 +400,7 @@ public class ModuleBuildFileGenerator {
         // The package which the module belongs to\r
         // TBD\r
         includes.add(fpdModuleId.getModule().getPackage().getPackageDir() + File.separatorChar + "Include");\r
-        includes.add(fpdModuleId.getModule().getPackage().getPackageDir() + File.separatorChar + "Include" + File.separatorChar + "${ARCH}");\r
+        includes.add(fpdModuleId.getModule().getPackage().getPackageDir() + File.separatorChar + "Include" + File.separatorChar + archDir(arch));\r
 \r
         //\r
         // Debug files output directory\r