]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/GenBuildThread.java
Merged the <libset> in <GenDll> to avoid warning message.
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / GenBuildThread.java
index 416ccd11837fc9f22bbceccaf1b90c34b109e89a..9c8e47c4ef881c9a299631f762cf0410d4fcf0a9 100644 (file)
@@ -18,6 +18,7 @@ import java.util.LinkedHashSet;
 import java.util.Set;\r
 import java.util.Vector;\r
 \r
+import org.apache.tools.ant.BuildException;\r
 import org.apache.tools.ant.BuildListener;\r
 import org.apache.tools.ant.Project;\r
 import org.apache.tools.ant.taskdefs.Property;\r
@@ -25,6 +26,7 @@ import org.tianocore.build.GenBuildTask;
 import org.tianocore.build.fpd.FpdParserForThread;\r
 import org.tianocore.build.id.FpdModuleIdentification;\r
 import org.tianocore.build.id.ModuleIdentification;\r
+import org.tianocore.common.logger.EdkLog;\r
 \r
 /**\r
   Add more comment here. \r
@@ -51,101 +53,109 @@ public class GenBuildThread implements Runnable {
 \r
     private Thread thread;\r
 \r
-    public GenBuildThread() {\r
-        thread = new Thread(this);\r
+    public GenBuildThread(ModuleIdentification moduleId, String arch) {\r
+        this.moduleId = moduleId;\r
+        this.arch = arch;\r
+        thread = new Thread(FpdParserForThread.tg, this, moduleId + ":" + arch);\r
     }\r
 \r
     public boolean start() {\r
         if (highPriority) {\r
             thread.setPriority(Thread.MAX_PRIORITY);\r
         }\r
-        \r
+\r
         status = FpdParserForThread.STATUS_START_RUN;\r
         thread.start();\r
         return true;\r
     }\r
 \r
     public void run() {\r
-        \r
-        FpdModuleIdentification fpdModuleId = new FpdModuleIdentification(moduleId, arch);\r
-\r
-        //\r
-        // Prepare pass down properties\r
-        // ARCH, MODULE_GUID, MODULE_VERSION, PACKAGE_GUID, PACKAGE_VERSION, PLATFORM_FILE\r
-        //\r
-        Vector<Property> properties = new Vector<Property>();\r
-        Property property = new Property();\r
-        property.setName("ARCH");\r
-        property.setValue(arch);\r
-        properties.add(property);\r
-\r
-        property = new Property();\r
-        property.setName("MODULE_GUID");\r
-        property.setValue(moduleId.getGuid());\r
-        properties.add(property);\r
-\r
-        property = new Property();\r
-        property.setName("MODULE_VERSION");\r
-        if (moduleId.getVersion() == null) {\r
-            property.setValue("");\r
-        } else {\r
-            property.setValue(moduleId.getVersion());\r
-        }\r
-        properties.add(property);\r
-\r
-        property = new Property();\r
-        property.setName("PACKAGE_GUID");\r
-        property.setValue(moduleId.getPackage().getGuid());\r
-        properties.add(property);\r
-\r
-        property = new Property();\r
-        property.setName("PACKAGE_VERSION");\r
-        if (moduleId.getPackage().getVersion() == null) {\r
-            property.setValue("");\r
-        } else {\r
-            property.setValue(moduleId.getPackage().getVersion());\r
-        }\r
-        properties.add(property);\r
-\r
-        //      property = new Property();\r
-        //      property.setName("PLATFORM_FILE");\r
-        //      property.setValue(arch);\r
-        //      properties.add(property);\r
-\r
-        //\r
-        // Build the Module\r
-        //\r
-        GenBuildTask genBuildTask = new GenBuildTask();\r
 \r
-        Project newProject = new Project();\r
-\r
-        Hashtable passdownProperties = project.getProperties();\r
-        Iterator iter = passdownProperties.keySet().iterator();\r
-        while (iter.hasNext()) {\r
-            String item = (String) iter.next();\r
-            newProject.setProperty(item, (String) passdownProperties.get(item));\r
-        }\r
-\r
-        newProject.setInputHandler(project.getInputHandler());\r
-\r
-        Iterator listenerIter = project.getBuildListeners().iterator();\r
-        while (listenerIter.hasNext()) {\r
-            newProject.addBuildListener((BuildListener) listenerIter.next());\r
+        FpdModuleIdentification fpdModuleId = new FpdModuleIdentification(moduleId, arch);\r
+        \r
+        try {\r
+            //\r
+            // Prepare pass down properties\r
+            // ARCH, MODULE_GUID, MODULE_VERSION, PACKAGE_GUID, PACKAGE_VERSION, PLATFORM_FILE\r
+            //\r
+            Vector<Property> properties = new Vector<Property>();\r
+            Property property = new Property();\r
+            property.setName("ARCH");\r
+            property.setValue(arch);\r
+            properties.add(property);\r
+    \r
+            property = new Property();\r
+            property.setName("MODULE_GUID");\r
+            property.setValue(moduleId.getGuid());\r
+            properties.add(property);\r
+    \r
+            property = new Property();\r
+            property.setName("MODULE_VERSION");\r
+            if (moduleId.getVersion() == null) {\r
+                property.setValue("");\r
+            } else {\r
+                property.setValue(moduleId.getVersion());\r
+            }\r
+            properties.add(property);\r
+    \r
+            property = new Property();\r
+            property.setName("PACKAGE_GUID");\r
+            property.setValue(moduleId.getPackage().getGuid());\r
+            properties.add(property);\r
+    \r
+            property = new Property();\r
+            property.setName("PACKAGE_VERSION");\r
+            if (moduleId.getPackage().getVersion() == null) {\r
+                property.setValue("");\r
+            } else {\r
+                property.setValue(moduleId.getPackage().getVersion());\r
+            }\r
+            properties.add(property);\r
+    \r
+            //\r
+            // Build the Module\r
+            //\r
+            GenBuildTask genBuildTask = new GenBuildTask();\r
+    \r
+            Project newProject = new Project();\r
+    \r
+            Hashtable passdownProperties = project.getProperties();\r
+            Iterator iter = passdownProperties.keySet().iterator();\r
+            while (iter.hasNext()) {\r
+                String item = (String) iter.next();\r
+                newProject.setProperty(item, (String) passdownProperties.get(item));\r
+            }\r
+    \r
+            newProject.setInputHandler(project.getInputHandler());\r
+    \r
+            Iterator listenerIter = project.getBuildListeners().iterator();\r
+            while (listenerIter.hasNext()) {\r
+                newProject.addBuildListener((BuildListener)listenerIter.next());\r
+            }\r
+    \r
+            project.initSubProject(newProject);\r
+    \r
+            genBuildTask.setProject(newProject);\r
+    \r
+            genBuildTask.setExternalProperties(properties);\r
+    \r
+            genBuildTask.parentId = parentModuleId;\r
+    \r
+            genBuildTask.execute();\r
+        } catch (BuildException be) {\r
+            FpdParserForThread.tg.interrupt();\r
+            EdkLog.log("GenBuild", EdkLog.EDK_ALWAYS, moduleId + " with Arch " + arch +" build error. \n" + be.getMessage());\r
+            FpdParserForThread.isError = true; \r
+            \r
+            synchronized (FpdParserForThread.deamonSemaphore) {\r
+                FpdParserForThread.deamonSemaphore.notifyAll();\r
+            }\r
+            return ;\r
         }\r
-\r
-        project.initSubProject(newProject);\r
-\r
-        genBuildTask.setProject(newProject);\r
-\r
-        genBuildTask.setExternalProperties(properties);\r
-\r
-        genBuildTask.parentId = parentModuleId;\r
-\r
-        genBuildTask.perform();\r
-\r
-        status = FpdParserForThread.STATUS_END_RUN;\r
         \r
-        System.out.println(fpdModuleId + " build finished. ");\r
+        status = FpdParserForThread.STATUS_END_RUN;\r
+\r
+        EdkLog.log("GenBuild", EdkLog.EDK_ALWAYS, fpdModuleId + " build finished. ");\r
         \r
         //\r
         // \r
@@ -213,5 +223,4 @@ public class GenBuildThread implements Runnable {
     public void setStatus(int status) {\r
         this.status = status;\r
     }\r
-    \r
 }\r