]> git.proxmox.com Git - mirror_edk2.git/commitdiff
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@696 6f19259b...
authorwuyizhong <wuyizhong@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 30 Jun 2006 20:10:58 +0000 (20:10 +0000)
committerwuyizhong <wuyizhong@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 30 Jun 2006 20:10:58 +0000 (20:10 +0000)
Tools/Source/GenBuild/org/tianocore/build/tools/DefaultBuildFileGenerator.java [new file with mode: 0644]
Tools/Source/GenBuild/org/tianocore/build/tools/ModuleItem.java [new file with mode: 0644]
Tools/Source/GenBuild/org/tianocore/build/tools/PackageItem.java [new file with mode: 0644]

diff --git a/Tools/Source/GenBuild/org/tianocore/build/tools/DefaultBuildFileGenerator.java b/Tools/Source/GenBuild/org/tianocore/build/tools/DefaultBuildFileGenerator.java
new file mode 100644 (file)
index 0000000..422d503
--- /dev/null
@@ -0,0 +1,313 @@
+/** @file\r
+  This file is an ANT task.\r
+  \r
+  LibBuildFileGenerator task is used to generate module's build.xml file.\r
+\r
+Copyright (c) 2006, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+package org.tianocore.build.tools;\r
+\r
+import java.io.File;\r
+import java.util.Iterator;\r
+import java.util.LinkedHashSet;\r
+import java.util.Set;\r
+\r
+import javax.xml.parsers.DocumentBuilder;\r
+import javax.xml.parsers.DocumentBuilderFactory;\r
+import javax.xml.transform.OutputKeys;\r
+import javax.xml.transform.Result;\r
+import javax.xml.transform.Source;\r
+import javax.xml.transform.Transformer;\r
+import javax.xml.transform.TransformerFactory;\r
+import javax.xml.transform.dom.DOMSource;\r
+import javax.xml.transform.stream.StreamResult;\r
+\r
+import org.apache.tools.ant.BuildException;\r
+import org.apache.tools.ant.Task;\r
+import org.tianocore.build.global.GlobalData;\r
+import org.tianocore.build.id.ModuleIdentification;\r
+import org.tianocore.build.id.PackageIdentification;\r
+import org.w3c.dom.Document;\r
+import org.w3c.dom.Element;\r
+\r
+public class DefaultBuildFileGenerator extends Task {\r
+\r
+    private Set<ModuleIdentification> modules = new LinkedHashSet<ModuleIdentification>();\r
+    \r
+    private Set<PackageIdentification> packages = new LinkedHashSet<PackageIdentification>();\r
+    \r
+    //\r
+    //  <DefaultBuildFileGenerator mode="WORKSPACE | PACKAGE | MODULE">\r
+    //    <PackageItem packageName="" packageGuid="" packageVersion="" />\r
+    //    <ModuleItem  moduleName="HelloWorld" moduleGuid="" moduleVersion="" packageName="" packageGuid="" packageVersion="" />\r
+    //  </DefaultBuildFileGenerator>\r
+    //\r
+    private String mode = "MODULE";\r
+    \r
+    private String license = " Copyright (c) 2006, Intel Corporation \n"\r
+                    + "All rights reserved. This program and the accompanying materials \n"\r
+                    + "are licensed and made available under the terms and conditions of the BSD License \n"\r
+                    + "which accompanies this distribution.  The full text of the license may be found at  \n"\r
+                    + "http://opensource.org/licenses/bsd-license.php \n"\r
+                    + "\n"\r
+                    + "THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN \"AS IS\" BASIS, \n"\r
+                    + "WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.";\r
+    \r
+    /**\r
+      Public construct method. It is necessary for ANT task.\r
+    **/\r
+    public DefaultBuildFileGenerator () {\r
+    }\r
+\r
+    public void execute() throws BuildException {\r
+        //\r
+        // Global Data initialization\r
+        //\r
+        GlobalData.initInfo("Tools" + File.separatorChar + "Conf" + File.separatorChar + "FrameworkDatabase.db",\r
+                            getProject().getProperty("WORKSPACE_DIR"), "tools_def.txt");\r
+        \r
+        if (mode.equalsIgnoreCase("WORKSPACE")) {\r
+            modules.clear();\r
+            packages = GlobalData.getPackageList();\r
+        } \r
+        else if (mode.equalsIgnoreCase("PACKAGE")) {\r
+            modules.clear();\r
+        }\r
+        if (mode.equalsIgnoreCase("WORKSPACE") || mode.equalsIgnoreCase("PACKAGE")) {\r
+            Iterator iter = packages.iterator();\r
+            while (iter.hasNext()) {\r
+                PackageIdentification packageId = (PackageIdentification)iter.next();\r
+                modules.addAll(GlobalData.getModules(packageId));\r
+            }\r
+        }\r
+        \r
+        Iterator iter = modules.iterator();\r
+        while (iter.hasNext()) {\r
+            ModuleIdentification moduleId = (ModuleIdentification)iter.next();\r
+            genBuildFile (moduleId);\r
+        }\r
+    }\r
+    \r
+    private void genBuildFile(ModuleIdentification moduleId) {\r
+        DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();\r
+        try {\r
+            DocumentBuilder dombuilder = domfac.newDocumentBuilder();\r
+            Document document = dombuilder.newDocument();\r
+            //\r
+            // create root element and its attributes\r
+            //\r
+            document.appendChild(document.createComment(license));\r
+            Element root = document.createElement("project");\r
+            root.setAttribute("default", "all");\r
+            root.setAttribute("basedir", ".");\r
+            root.setAttribute("name", moduleId.getName());\r
+            \r
+            //\r
+            // element for External ANT tasks\r
+            //\r
+            root.appendChild(document.createComment("Apply external ANT tasks"));\r
+            Element ele = document.createElement("taskdef");\r
+            ele.setAttribute("resource", "GenBuild.tasks");\r
+            root.appendChild(ele);\r
+            \r
+            //\r
+            // <taskdef resource="net/sf/antcontrib/antlib.xml" />\r
+            //\r
+            ele = document.createElement("taskdef");\r
+            ele.setAttribute("resource", "net/sf/antcontrib/antlib.xml");\r
+            root.appendChild(ele);\r
+            \r
+            ele = document.createElement("property");\r
+            ele.setAttribute("environment", "env");\r
+            root.appendChild(ele);\r
+\r
+            ele = document.createElement("property");\r
+            ele.setAttribute("name", "WORKSPACE_DIR");\r
+            ele.setAttribute("value", "${env.WORKSPACE}");\r
+            root.appendChild(ele);\r
+            \r
+            ele = document.createElement("property");\r
+            ele.setAttribute("name", "MSA_FILENAME");\r
+            ele.setAttribute("value", GlobalData.getMsaFile(moduleId).getName());\r
+            root.appendChild(ele);\r
+            \r
+            ele = document.createElement("property");\r
+            ele.setAttribute("name", "BASE_NAME");\r
+            ele.setAttribute("value", moduleId.getName());\r
+            root.appendChild(ele);\r
+            \r
+            //\r
+            // Don't change it!!\r
+            //\r
+            ele = document.createElement("import");\r
+            ele.setAttribute("file", "${WORKSPACE_DIR}/Tools/Conf/BuildMacro.xml");\r
+            root.appendChild(ele);\r
+            \r
+            //\r
+            // <target name="all">\r
+            //   <GenBuild msaFile="HelloWorld.msa"/>\r
+            // </target>\r
+            //\r
+            Element targetEle = document.createElement("target");\r
+            targetEle.setAttribute("name", "all");\r
+            \r
+            ele = document.createElement("GenBuild");\r
+            ele.setAttribute("msaFile", "${MSA_FILENAME}");\r
+            targetEle.appendChild(ele);\r
+            \r
+            root.appendChild(targetEle);\r
+            \r
+            //\r
+            //  <target name="clean">\r
+            //    <OutputDirSetup msaFile="HelloWorld.msa"/>\r
+            //    <if>\r
+            //      <available file="${DEST_DIR_OUTPUT}/HelloWorld_build.xml"/>\r
+            //      <then>\r
+            //        <ant antfile="${DEST_DIR_OUTPUT}/HelloWorld_build.xml" target="clean"/>\r
+            //      </then>\r
+            //    </if>\r
+            //    <delete dir="${DEST_DIR_OUTPUT}" excludes="*.xml"/>\r
+            //  </target>\r
+            //\r
+            targetEle = document.createElement("target");\r
+            targetEle.setAttribute("name", "clean");\r
+            \r
+            ele = document.createElement("OutputDirSetup");\r
+            ele.setAttribute("msaFile", "${MSA_FILENAME}");\r
+            targetEle.appendChild(ele);\r
+            \r
+            ele = document.createElement("if");\r
+            \r
+            Element availableEle = document.createElement("available");\r
+            availableEle.setAttribute("file", "${DEST_DIR_OUTPUT}/${BASE_NAME}_build.xml");\r
+            ele.appendChild(availableEle);\r
+            \r
+            Element thenEle = document.createElement("then");\r
+            Element antEle = document.createElement("ant");\r
+            antEle.setAttribute("antfile", "${DEST_DIR_OUTPUT}/${BASE_NAME}_build.xml");\r
+            antEle.setAttribute("target", "clean");\r
+            thenEle.appendChild(antEle);\r
+            ele.appendChild(thenEle);\r
+            targetEle.appendChild(ele);\r
+            \r
+            ele = document.createElement("delete");\r
+            ele.setAttribute("dir", "${DEST_DIR_OUTPUT}");\r
+            ele.setAttribute("excludes", "*.xml");\r
+            targetEle.appendChild(ele);\r
+            \r
+            root.appendChild(targetEle);\r
+            \r
+            //\r
+            //  <target name="cleanall">\r
+            //    <OutputDirSetup msaFile="HelloWorld.msa"/>\r
+            //    <if>\r
+            //      <available file="${DEST_DIR_OUTPUT}/HelloWorld_build.xml"/>\r
+            //      <then>\r
+            //        <ant antfile="${DEST_DIR_OUTPUT}/HelloWorld_build.xml" target="cleanall"/>\r
+            //      </then>\r
+            //    </if>\r
+            //    <delete dir="${DEST_DIR_OUTPUT}"/>\r
+            //    <delete dir="${DEST_DIR_DEBUG}"/>\r
+            //    <delete>\r
+            //      <fileset dir="${BIN_DIR}" includes="**HelloWorld*"/>\r
+            //    </delete>\r
+            //  </target>\r
+            //\r
+            targetEle = document.createElement("target");\r
+            targetEle.setAttribute("name", "cleanall");\r
+            \r
+            ele = document.createElement("OutputDirSetup");\r
+            ele.setAttribute("msaFile", "${MSA_FILENAME}");\r
+            targetEle.appendChild(ele);\r
+            \r
+            ele = document.createElement("if");\r
+            \r
+            availableEle = document.createElement("available");\r
+            availableEle.setAttribute("file", "${DEST_DIR_OUTPUT}/${BASE_NAME}_build.xml");\r
+            ele.appendChild(availableEle);\r
+            \r
+            thenEle = document.createElement("then");\r
+            antEle = document.createElement("ant");\r
+            antEle.setAttribute("antfile", "${DEST_DIR_OUTPUT}/${BASE_NAME}_build.xml");\r
+            antEle.setAttribute("target", "cleanall");\r
+            thenEle.appendChild(antEle);\r
+            ele.appendChild(thenEle);\r
+            targetEle.appendChild(ele);\r
+            \r
+            ele = document.createElement("delete");\r
+            ele.setAttribute("dir", "${DEST_DIR_OUTPUT}");\r
+            targetEle.appendChild(ele);\r
+            \r
+            ele = document.createElement("delete");\r
+            ele.setAttribute("dir", "${DEST_DIR_DEBUG}");\r
+            targetEle.appendChild(ele);\r
+            \r
+            ele = document.createElement("delete");\r
+            \r
+            Element filesetEle = document.createElement("fileset");\r
+            filesetEle.setAttribute("dir", "${BIN_DIR}");\r
+            filesetEle.setAttribute("includes", "**${BASE_NAME}*");\r
+            ele.appendChild(filesetEle);\r
+            \r
+            targetEle.appendChild(ele);\r
+            \r
+            root.appendChild(targetEle);\r
+\r
+            \r
+            document.appendChild(root);\r
+            \r
+            //\r
+            // Prepare the DOM document for writing\r
+            //\r
+            Source source = new DOMSource(document);\r
+            \r
+            //\r
+            // Prepare the output file\r
+            //\r
+            String filename = GlobalData.getMsaFile(moduleId).getParent() + File.separatorChar + "build.xml";\r
+            File file = new File(getProject().replaceProperties(filename));\r
+            \r
+            GlobalData.log.info("File generating - " + filename);\r
+            //\r
+            // generate all directory path\r
+            //\r
+            Result result = new StreamResult(file);\r
+            \r
+            //\r
+            // Write the DOM document to the file\r
+            //\r
+            Transformer xformer = TransformerFactory.newInstance()\r
+                            .newTransformer();\r
+            xformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");\r
+            xformer.setOutputProperty(OutputKeys.INDENT, "yes");\r
+            xformer.transform(source, result);\r
+        } catch (Exception ex) {\r
+            System.out.println("##" + ex);\r
+        }\r
+        \r
+    }\r
+    \r
+    public void addConfiguredModuleItem(ModuleItem moduleItem) {\r
+        PackageIdentification packageId = new PackageIdentification(moduleItem.getPackageName(), moduleItem.getPackageGuid(), moduleItem.getPackageVersion());\r
+        ModuleIdentification moduleId = new ModuleIdentification(moduleItem.getModuleName(), moduleItem.getModuleGuid(), moduleItem.getModuleVersion());\r
+        moduleId.setPackage(packageId);\r
+        modules.add(moduleId);\r
+    }\r
+    \r
+    public void addConfiguredPackageItem(PackageItem packageItem) {\r
+        PackageIdentification packageId = new PackageIdentification(packageItem.getPackageName(), packageItem.getPackageGuid(), packageItem.getPackageVersion());\r
+        packages.add(packageId);\r
+    }\r
+\r
+    public void setMode(String mode) {\r
+        this.mode = mode;\r
+    }\r
+}\r
diff --git a/Tools/Source/GenBuild/org/tianocore/build/tools/ModuleItem.java b/Tools/Source/GenBuild/org/tianocore/build/tools/ModuleItem.java
new file mode 100644 (file)
index 0000000..8fa8d83
--- /dev/null
@@ -0,0 +1,88 @@
+/** @file\r
+\r
+Copyright (c) 2006, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+package org.tianocore.build.tools;\r
+\r
+import org.apache.tools.ant.BuildException;\r
+\r
+public class ModuleItem {\r
+\r
+    private String moduleName;\r
+    \r
+    private String moduleGuid;\r
+    \r
+    private String moduleVersion;\r
+    \r
+    private String packageName;\r
+    \r
+    private String packageGuid;\r
+    \r
+    private String packageVersion;\r
+\r
+    public ModuleItem(){\r
+        \r
+    }\r
+    \r
+    public void execute() throws BuildException {\r
+        \r
+    }\r
+    \r
+    public String getModuleGuid() {\r
+        return moduleGuid;\r
+    }\r
+\r
+    public void setModuleGuid(String moduleGuid) {\r
+        this.moduleGuid = moduleGuid;\r
+    }\r
+\r
+    public String getModuleName() {\r
+        return moduleName;\r
+    }\r
+\r
+    public void setModuleName(String moduleName) {\r
+        this.moduleName = moduleName;\r
+    }\r
+\r
+    public String getModuleVersion() {\r
+        return moduleVersion;\r
+    }\r
+\r
+    public void setModuleVersion(String moduleVersion) {\r
+        this.moduleVersion = moduleVersion;\r
+    }\r
+\r
+    public String getPackageGuid() {\r
+        return packageGuid;\r
+    }\r
+\r
+    public void setPackageGuid(String packageGuid) {\r
+        this.packageGuid = packageGuid;\r
+    }\r
+\r
+    public String getPackageName() {\r
+        return packageName;\r
+    }\r
+\r
+    public void setPackageName(String packageName) {\r
+        this.packageName = packageName;\r
+    }\r
+\r
+    public String getPackageVersion() {\r
+        return packageVersion;\r
+    }\r
+\r
+    public void setPackageVersion(String packageVersion) {\r
+        this.packageVersion = packageVersion;\r
+    }\r
+    \r
+    \r
+}\r
diff --git a/Tools/Source/GenBuild/org/tianocore/build/tools/PackageItem.java b/Tools/Source/GenBuild/org/tianocore/build/tools/PackageItem.java
new file mode 100644 (file)
index 0000000..af824b1
--- /dev/null
@@ -0,0 +1,60 @@
+/** @file\r
+\r
+Copyright (c) 2006, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+package org.tianocore.build.tools;\r
+\r
+import org.apache.tools.ant.BuildException;\r
+import org.tianocore.build.global.SurfaceAreaQuery;\r
+\r
+public class PackageItem {\r
+\r
+    private String packageName;\r
+    \r
+    private String packageGuid;\r
+    \r
+    private String packageVersion;\r
+    \r
+    public PackageItem(){\r
+        \r
+    }\r
+    \r
+    public void execute() throws BuildException {\r
+        \r
+    }\r
+    \r
+    public String toString(){\r
+        return "[" + packageName + packageGuid + "]";\r
+    }\r
+    public String getPackageGuid() {\r
+        return packageGuid;\r
+    }\r
+\r
+    public void setPackageGuid(String packageGuid) {\r
+        this.packageGuid = packageGuid;\r
+    }\r
+\r
+    public String getPackageName() {\r
+        return packageName;\r
+    }\r
+\r
+    public void setPackageName(String packageName) {\r
+        this.packageName = packageName;\r
+    }\r
+\r
+    public String getPackageVersion() {\r
+        return packageVersion;\r
+    }\r
+\r
+    public void setPackageVersion(String packageVersion) {\r
+        this.packageVersion = packageVersion;\r
+    }\r
+}\r