]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/GenBuildThread.java
Update LOG process.
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / GenBuildThread.java
index 9c8e47c4ef881c9a299631f762cf0410d4fcf0a9..3490c10ad8a784ac26acd3cfb0bf166cd7fcf5a4 100644 (file)
@@ -24,6 +24,7 @@ import org.apache.tools.ant.Project;
 import org.apache.tools.ant.taskdefs.Property;\r
 import org.tianocore.build.GenBuildTask;\r
 import org.tianocore.build.fpd.FpdParserForThread;\r
+import org.tianocore.build.global.GenBuildLogger;\r
 import org.tianocore.build.id.FpdModuleIdentification;\r
 import org.tianocore.build.id.ModuleIdentification;\r
 import org.tianocore.common.logger.EdkLog;\r
@@ -65,7 +66,9 @@ public class GenBuildThread implements Runnable {
         }\r
 \r
         status = FpdParserForThread.STATUS_START_RUN;\r
+\r
         thread.start();\r
+\r
         return true;\r
     }\r
 \r
@@ -129,27 +132,40 @@ public class GenBuildThread implements Runnable {
             newProject.setInputHandler(project.getInputHandler());\r
     \r
             Iterator listenerIter = project.getBuildListeners().iterator();\r
+            GenBuildLogger newLogger = null;\r
             while (listenerIter.hasNext()) {\r
-                newProject.addBuildListener((BuildListener)listenerIter.next());\r
+                BuildListener item = (BuildListener)listenerIter.next();\r
+                if (item instanceof GenBuildLogger) {\r
+                    newLogger = (GenBuildLogger)((GenBuildLogger)item).clone();\r
+                    newLogger.setId(fpdModuleId);\r
+                    newProject.addBuildListener(newLogger);\r
+                } else {\r
+                    newProject.addBuildListener(item);\r
+                }\r
             }\r
     \r
             project.initSubProject(newProject);\r
-    \r
+            \r
             genBuildTask.setProject(newProject);\r
     \r
             genBuildTask.setExternalProperties(properties);\r
     \r
             genBuildTask.parentId = parentModuleId;\r
-    \r
+\r
             genBuildTask.execute();\r
         } catch (BuildException be) {\r
-            FpdParserForThread.tg.interrupt();\r
+\r
             EdkLog.log("GenBuild", EdkLog.EDK_ALWAYS, moduleId + " with Arch " + arch +" build error. \n" + be.getMessage());\r
-            FpdParserForThread.isError = true; \r
+            \r
+            if (FpdParserForThread.errorModule == null) {\r
+                FpdParserForThread.errorModule = fpdModuleId;\r
+            }\r
             \r
             synchronized (FpdParserForThread.deamonSemaphore) {\r
+                FpdParserForThread.subCount();\r
                 FpdParserForThread.deamonSemaphore.notifyAll();\r
             }\r
+            \r
             return ;\r
         }\r
         \r