]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/GenBuild/org/tianocore/build/FrameworkBuildTask.java
Added support for macro/property in tools_def.txt. Now you can define a property...
[mirror_edk2.git] / Tools / Java / Source / GenBuild / org / tianocore / build / FrameworkBuildTask.java
index 53d5cea8bb1e11c89dea571673207025290cea1f..e240150c29c471bc42f1ce79686e42842d80f8d2 100644 (file)
@@ -77,9 +77,9 @@ public class FrameworkBuildTask extends Task{
     \r
     private Set<File> msaFiles = new LinkedHashSet<File>();\r
     \r
-    //\r
-    // This is only for none-multi-thread build to reduce overriding message\r
-    //\r
+    ///\r
+    /// This is only for none-multi-thread build to reduce overriding message\r
+    ///\r
     public static Hashtable<String, String> originalProperties = new Hashtable<String, String>();\r
     \r
     String toolsDefFilename = ToolDefinitions.DEFAULT_TOOLS_DEF_FILE_PATH;\r
@@ -110,6 +110,7 @@ public class FrameworkBuildTask extends Task{
         // set Logger\r
         //\r
         GenBuildLogger logger = new GenBuildLogger(getProject());\r
+        EdkLog.setLogLevel(EdkLog.EDK_DEBUG);\r
         EdkLog.setLogLevel(getProject().getProperty("env.LOGLEVEL"));\r
         EdkLog.setLogger(logger);\r
         \r
@@ -196,7 +197,7 @@ public class FrameworkBuildTask extends Task{
         //\r
         File workspacePath = new File(getProject().getProperty("WORKSPACE"));\r
         getProject().setProperty("WORKSPACE_DIR", workspacePath.getPath().replaceAll("(\\\\)", "/"));\r
-        GlobalData.initInfo(dbFilename, workspacePath.getPath(), toolsDefFilename);\r
+        GlobalData.initInfo(getProject(), dbFilename, workspacePath.getPath(), toolsDefFilename);\r
         \r
         //\r
         // If find MSA file and ACTIVE_PLATFORM is set, build the module; \r
@@ -206,11 +207,10 @@ public class FrameworkBuildTask extends Task{
         // If find more than one FPD files, report error.  \r
         //\r
         File buildFile = null;\r
-        if (msaFiles.size() > 1) {\r
-            throw new BuildException("Found " + msaFiles.size() + " MSA files in current dir. ");\r
-        } else if (msaFiles.size() == 1 && activePlatform == null) {\r
-            throw new BuildException("If trying to build a single module, please set ACTIVE_PLATFORM in file [" + targetFilename + "]. ");\r
-        } else if (msaFiles.size() == 1 && activePlatform != null) {\r
+        if (msaFiles.size() > 0) {\r
+            if (activePlatform == null) {\r
+                throw new BuildException("If trying to build a single module, please set ACTIVE_PLATFORM in file [" + targetFilename + "]. ");\r
+            }\r
             //\r
             // Build the single module\r
             //\r
@@ -277,17 +277,21 @@ public class FrameworkBuildTask extends Task{
             }\r
             File tmpFile = new File(GlobalData.getWorkspacePath() + File.separatorChar + activePlatform);\r
             EdkLog.log(this, "Using the FPD file [" + tmpFile.getPath() + "] for the active platform. ");\r
-            EdkLog.log(this, "Processing the MSA file [" + buildFile.getPath() + "] ..>> ");\r
-            GenBuildTask genBuildTask = new GenBuildTask();\r
-            genBuildTask.setSingleModuleBuild(true);\r
-            genBuildTask.setType(type);\r
-            getProject().setProperty("PLATFORM_FILE", activePlatform);\r
-            if( !multithread) {\r
-                originalProperties.put("PLATFORM_FILE", activePlatform);\r
+\r
+            File[] moduleFiles = msaFiles.toArray(new File[msaFiles.size()]);\r
+            for (int i = 0; i < moduleFiles.length; ++i) {\r
+                EdkLog.log(this, "Processing the MSA file [" + moduleFiles[i].getPath() + "] ..>> ");\r
+                GenBuildTask genBuildTask = new GenBuildTask();\r
+                genBuildTask.setSingleModuleBuild(true);\r
+                genBuildTask.setType(type);\r
+                getProject().setProperty("PLATFORM_FILE", activePlatform);\r
+                if( !multithread) {\r
+                    originalProperties.put("PLATFORM_FILE", activePlatform);\r
+                }\r
+                genBuildTask.setProject(getProject());\r
+                genBuildTask.setMsaFile(moduleFiles[i]);\r
+                genBuildTask.perform();\r
             }\r
-            genBuildTask.setProject(getProject());\r
-            genBuildTask.setMsaFile(buildFile);\r
-            genBuildTask.perform();\r
         }\r
     }\r
     \r
@@ -329,7 +333,7 @@ public class FrameworkBuildTask extends Task{
     private void readTargetFile() throws EdkException{\r
         String targetFile = getProject().getProperty("WORKSPACE_DIR") + File.separatorChar + targetFilename;\r
         \r
-        String[][] targetFileInfo = ConfigReader.parse(targetFile);\r
+        String[][] targetFileInfo = ConfigReader.parse(getProject(), targetFile);\r
         \r
         //\r
         // Get ToolChain Info from target.txt\r
@@ -374,7 +378,10 @@ public class FrameworkBuildTask extends Task{
         }\r
 \r
         str = getValue(ToolDefinitions.TARGET_KEY_MAX_CONCURRENT_THREAD_NUMBER, targetFileInfo);\r
-        if (str != null ) {\r
+        //\r
+        // Need to check the # of threads iff multithread is enabled.\r
+        //\r
+        if ((multithread) && (str != null )) {\r
             try {\r
                 int threadNum = Integer.parseInt(str);\r
                 if (threadNum > 0) {\r