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
}\r
\r
status = FpdParserForThread.STATUS_START_RUN;\r
+\r
thread.start();\r
+\r
return true;\r
}\r
\r
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