]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/GenBuildTask.java
Remove static from SurfaceAreaQuery.java for preparing parallel build.(1)
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / GenBuildTask.java
index 7ec12b042721d9f6c1403c7c65d443e882e8d4e3..c5fb00b3e095f475bd424d60f77d36ef1475b157 100644 (file)
@@ -108,6 +108,8 @@ public class GenBuildTask extends Ant {
     private Vector<Property> properties = new Vector<Property>();\r
 \r
     private boolean isSingleModuleBuild = false;\r
+    \r
+    private SurfaceAreaQuery saq = null;\r
 \r
     /**\r
       Public construct method. It is necessary for ANT task.\r
@@ -154,14 +156,14 @@ public class GenBuildTask extends Ant {
             moduleId = new ModuleIdentification(moduleGuid, moduleVersion);\r
             moduleId.setPackage(packageId);\r
             Map<String, XmlObject> doc = GlobalData.getNativeMsa(moduleId);\r
-            SurfaceAreaQuery.setDoc(doc);\r
-            moduleId = SurfaceAreaQuery.getMsaHeader();\r
+            saq = new SurfaceAreaQuery(doc);\r
+            moduleId = saq.getMsaHeader();\r
         } else {\r
             Map<String, XmlObject> doc = GlobalData.getNativeMsa(msaFile);\r
-            SurfaceAreaQuery.setDoc(doc);\r
-            moduleId = SurfaceAreaQuery.getMsaHeader();\r
+            saq = new SurfaceAreaQuery(doc);\r
+            moduleId = saq.getMsaHeader();\r
         }\r
-        String[] producedLibraryClasses = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED",null);\r
+        String[] producedLibraryClasses = saq.getLibraryClasses("ALWAYS_PRODUCED",null);\r
         if (producedLibraryClasses.length == 0) {\r
             moduleId.setLibrary(false);\r
         } else {\r
@@ -221,7 +223,7 @@ public class GenBuildTask extends Ant {
         //\r
         // Judge if arch is all supported by current module. If not, throw Exception.\r
         //\r
-        List moduleSupportedArchs = SurfaceAreaQuery.getModuleSupportedArchs();\r
+        List moduleSupportedArchs = saq.getModuleSupportedArchs();\r
         if (moduleSupportedArchs != null) {\r
             for (int k = 0; k < archList.length; k++) {\r
                 if ( ! moduleSupportedArchs.contains(archList[k])) {\r
@@ -277,7 +279,7 @@ public class GenBuildTask extends Ant {
 \r
                     System.out.println("Build " + moduleId + " start >>>");\r
                     System.out.println("Target: " + targetList[i] + " Tagname: " + toolchainList[j] + " Arch: " + archList[k]);\r
-                    SurfaceAreaQuery.setDoc(GlobalData.getDoc(fpdModuleId));\r
+                    saq.push(GlobalData.getDoc(fpdModuleId));\r
 \r
                     //\r
                     // Prepare for all other common properties\r
@@ -377,7 +379,7 @@ public class GenBuildTask extends Ant {
         // MODULE_DIR, MODULE_RELATIVE_DIR\r
         //\r
         PropertyManager.setProperty("MODULE", moduleId.getName());\r
-        String baseName = SurfaceAreaQuery.getModuleOutputFileBasename();\r
+        String baseName = saq.getModuleOutputFileBasename();\r
         if (baseName == null) {\r
             PropertyManager.setProperty("BASE_NAME", moduleId.getName());\r
         } else {\r
@@ -539,13 +541,11 @@ public class GenBuildTask extends Ant {
 \r
     private void applyBuild(String buildTarget, String buildTagname, FpdModuleIdentification fpdModuleId) throws BuildException{\r
         //\r
-        // AutoGen\r
+        // Call AutoGen to generate AutoGen.c and AutoGen.h\r
         //\r
-\r
-        AutoGen autogen = new AutoGen(getProject().getProperty("FV_DIR"), getProject().getProperty("DEST_DIR_DEBUG"), fpdModuleId.getModule(),fpdModuleId.getArch());\r
+        AutoGen autogen = new AutoGen(getProject().getProperty("FV_DIR"), getProject().getProperty("DEST_DIR_DEBUG"), fpdModuleId.getModule(),fpdModuleId.getArch(), saq);\r
         autogen.genAutogen();\r
 \r
-\r
         //\r
         // Get compiler flags\r
         //\r
@@ -559,7 +559,7 @@ public class GenBuildTask extends Ant {
         //\r
         // Prepare LIBS\r
         //\r
-        ModuleIdentification[] libinstances = SurfaceAreaQuery.getLibraryInstance(fpdModuleId.getArch());\r
+        ModuleIdentification[] libinstances = saq.getLibraryInstance(fpdModuleId.getArch());\r
         String propertyLibs = "";\r
         for (int i = 0; i < libinstances.length; i++) {\r
             propertyLibs += " " + getProject().getProperty("BIN_DIR") + File.separatorChar + libinstances[i].getName() + ".lib";\r
@@ -588,8 +588,8 @@ public class GenBuildTask extends Ant {
         // Generate ${BASE_NAME}_build.xml\r
         // TBD\r
         //\r
-        String ffsKeyword = SurfaceAreaQuery.getModuleFfsKeyword();\r
-        ModuleBuildFileGenerator fileGenerator = new ModuleBuildFileGenerator(getProject(), ffsKeyword, fpdModuleId, includes);\r
+        String ffsKeyword = saq.getModuleFfsKeyword();\r
+        ModuleBuildFileGenerator fileGenerator = new ModuleBuildFileGenerator(getProject(), ffsKeyword, fpdModuleId, includes, saq);\r
         String buildFilename = getProject().getProperty("DEST_DIR_OUTPUT") + File.separatorChar + moduleId.getName() + "_build.xml";\r
         fileGenerator.genBuildFile(buildFilename);\r
 \r
@@ -721,7 +721,7 @@ public class GenBuildTask extends Ant {
         //\r
         // Packages in PackageDenpendencies\r
         //\r
-        PackageIdentification[] packageDependencies = SurfaceAreaQuery.getDependencePkg(fpdModuleId.getArch());\r
+        PackageIdentification[] packageDependencies = saq.getDependencePkg(fpdModuleId.getArch());\r
         for (int i = 0; i < packageDependencies.length; i++) {\r
             GlobalData.refreshPackageIdentification(packageDependencies[i]);\r
             File packageFile = packageDependencies[i].getSpdFile();\r
@@ -732,17 +732,17 @@ public class GenBuildTask extends Ant {
         //\r
         // All Dependency Library Instance's PackageDependencies\r
         //\r
-        ModuleIdentification[] libinstances = SurfaceAreaQuery.getLibraryInstance(fpdModuleId.getArch());\r
+        ModuleIdentification[] libinstances = saq.getLibraryInstance(fpdModuleId.getArch());\r
         for (int i = 0; i < libinstances.length; i++) {\r
-            SurfaceAreaQuery.push(GlobalData.getDoc(libinstances[i], fpdModuleId.getArch()));\r
-            PackageIdentification[] libraryPackageDependencies = SurfaceAreaQuery.getDependencePkg(fpdModuleId.getArch());\r
+            saq.push(GlobalData.getDoc(libinstances[i], fpdModuleId.getArch()));\r
+            PackageIdentification[] libraryPackageDependencies = saq.getDependencePkg(fpdModuleId.getArch());\r
             for (int j = 0; j < libraryPackageDependencies.length; j++) {\r
                 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 + archDir(arch));\r
             }\r
-            SurfaceAreaQuery.pop();\r
+            saq.pop();\r
         }\r
         \r
         \r