]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/UPT/Xml/ModuleSurfaceAreaXml.py
BaseTools: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / BaseTools / Source / Python / UPT / Xml / ModuleSurfaceAreaXml.py
index a913a859f62e9a3faed1df3e55f7d90d8e0accf7..741da908047c6b68119881c882d0b6fb5e5e63ed 100644 (file)
@@ -1,15 +1,9 @@
 ## @file\r
 # This file is used to parse a Module file of .PKG file\r
 #\r
-# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>\r
 #\r
-# This program and the accompanying materials are licensed and made available \r
-# under the terms and conditions of the BSD License which accompanies this \r
-# 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
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
 #\r
 \r
 '''\r
@@ -17,9 +11,10 @@ ModuleSurfaceAreaXml
 '''\r
 from xml.dom import minidom\r
 \r
-from Library.String import ConvertNEToNOTEQ\r
-from Library.String import ConvertNOTEQToNE\r
-from Library.String import GetStringOfList\r
+from Library.StringUtils import ConvertNEToNOTEQ\r
+from Library.StringUtils import ConvertNOTEQToNE\r
+from Library.StringUtils import GetStringOfList\r
+from Library.StringUtils import IsMatchArch\r
 from Library.Xml.XmlRoutines import XmlElement\r
 from Library.Xml.XmlRoutines import XmlAttribute\r
 from Library.Xml.XmlRoutines import XmlNode\r
@@ -66,7 +61,7 @@ from Library.Misc import GetSplitValueList
 #    </Filename> {1,}\r
 #    <AsBuilt> ... </AsBuilt> {0,}\r
 #    </BinaryFile> {1,}\r
-#    \r
+#\r
 class BinaryFileXml(object):\r
     def __init__(self):\r
         self.FileNames = []\r
@@ -81,11 +76,16 @@ class BinaryFileXml(object):
             pass\r
         BinaryFile = BinaryFileObject()\r
         FilenameList = []\r
+        SupArchList = ['COMMON']\r
         for SubItem in XmlList(Item, '%s/Filename' % Key):\r
             Axml = FilenameXml()\r
             Bxml = Axml.FromXml(SubItem, 'Filename')\r
             FilenameList.append(Bxml)\r
         BinaryFile.SetFileNameList(FilenameList)\r
+        for FileName in FilenameList:\r
+            if FileName.GetSupArchList():\r
+                SupArchList = FileName.GetSupArchList()\r
+        BinaryFile.SetSupArchList(SupArchList)\r
         if GlobalData.gIS_BINARY_INF:\r
             AsBuiltList = []\r
             for AsBuiltItem in XmlList(Item, '%s/AsBuilt' % Key):\r
@@ -128,44 +128,50 @@ class BinaryFileXml(object):
             pass\r
         NodeList = []\r
         FilenameList = BinaryFile.GetFileNameList()\r
+        SupportArch = None\r
         for Filename in FilenameList:\r
             Tmp = FilenameXml()\r
             NodeList.append(Tmp.ToXml(Filename, 'Filename'))\r
+            SupportArch = Filename.SupArchList\r
 \r
-        if GlobalData.gIS_BINARY_INF:\r
-            AsBuildList = BinaryFile.GetAsBuiltList()\r
-            PatchPcdValueList = AsBuildList.GetPatchPcdList()\r
-            PcdExList = AsBuildList.GetPcdExList()\r
-            LibGuidVerList = AsBuildList.GetLibraryInstancesList()\r
-            BuildFlagList = AsBuildList.GetBuildFlagsList()\r
+        AsBuildList = BinaryFile.GetAsBuiltList()\r
+        PatchPcdValueList = AsBuildList.GetPatchPcdList()\r
+        PcdExList = AsBuildList.GetPcdExList()\r
+        LibGuidVerList = AsBuildList.GetLibraryInstancesList()\r
+        BuildFlagList = AsBuildList.GetBuildFlagsList()\r
 \r
-            AsBuiltNodeList = []\r
+        AsBuiltNodeList = []\r
 \r
-            for Pcd in PatchPcdValueList:\r
+        for Pcd in PatchPcdValueList:\r
+            if IsMatchArch(Pcd.SupArchList, SupportArch):\r
                 Tmp = PcdEntryXml()\r
                 AsBuiltNodeList.append(Tmp.ToXml4(Pcd, 'PatchPcdValue'))\r
 \r
-            for Pcd in PcdExList:\r
+        for Pcd in PcdExList:\r
+            if IsMatchArch(Pcd.SupArchList, SupportArch):\r
                 Tmp = PcdEntryXml()\r
                 AsBuiltNodeList.append(Tmp.ToXml4(Pcd, 'PcdExValue'))\r
 \r
-            GuiVerElemList = []\r
-            for LibGuidVer in LibGuidVerList:\r
+        GuiVerElemList = []\r
+        for LibGuidVer in LibGuidVerList:\r
+            if LibGuidVer.GetLibGuid() and IsMatchArch(LibGuidVer.GetSupArchList(), SupportArch):\r
                 GuiVerElem = \\r
                 CreateXmlElement('GUID', LibGuidVer.GetLibGuid(), [], [['Version', LibGuidVer.GetLibVersion()]])\r
                 GuiVerElemList.append(GuiVerElem)\r
-            if len(GuiVerElemList) > 0:\r
-                LibGuidVerElem = CreateXmlElement('LibraryInstances', '', GuiVerElemList, [])\r
-                AsBuiltNodeList.append(LibGuidVerElem)\r
+        if len(GuiVerElemList) > 0:\r
+            LibGuidVerElem = CreateXmlElement('LibraryInstances', '', GuiVerElemList, [])\r
+            AsBuiltNodeList.append(LibGuidVerElem)\r
 \r
-            for BuildFlag in BuildFlagList:\r
-                Tmp = BuildFlagXml()\r
-                Elem = CreateXmlElement('BuildFlags', ''.join(BuildFlag), [], [])\r
-                AsBuiltNodeList.append(Elem)\r
+        for BuildFlag in BuildFlagList:\r
+            if IsMatchArch(BuildFlag.GetSupArchList(), SupportArch):\r
+                for Item in BuildFlag.GetAsBuildList():\r
+                    Tmp = BuildFlagXml()\r
+                    Elem = CreateXmlElement('BuildFlags', ''.join(Item), [], [])\r
+                    AsBuiltNodeList.append(Elem)\r
 \r
-            if len(AsBuiltNodeList) > 0:\r
-                Element = CreateXmlElement('AsBuilt', '', AsBuiltNodeList, [])\r
-                NodeList.append(Element)\r
+        if len(AsBuiltNodeList) > 0:\r
+            Element = CreateXmlElement('AsBuilt', '', AsBuiltNodeList, [])\r
+            NodeList.append(Element)\r
 \r
         Root = CreateXmlElement('%s' % Key, '', NodeList, [])\r
 \r
@@ -281,7 +287,7 @@ class ExternXml(object):
         for Item in self.HelpText:\r
             Str = Str + '\n\t' + str(Item)\r
         return Str\r
-##    \r
+##\r
 # DepexXml\r
 #\r
 class DepexXml(object):\r
@@ -538,7 +544,7 @@ class ModulePropertyXml(object):
             Hob = Axml.FromXml(SubItem, 'HOB')\r
             self.HOBs.append(Hob)\r
 \r
-        if Header == None:\r
+        if Header is None:\r
             Header = ModuleObject()\r
 \r
         Header.SetModuleType(self.ModuleType)\r
@@ -649,7 +655,7 @@ class ModuleSurfaceAreaXml(object):
         else:\r
             Module.SetMiscFileList([])\r
 \r
-        #           \r
+        #\r
         # UserExtensions\r
         #\r
         for Item in XmlList(Item, '/ModuleSurfaceArea/UserExtensions'):\r
@@ -735,7 +741,7 @@ class ModuleSurfaceAreaXml(object):
            not XmlList(Item, '/ModuleSurfaceArea/PackageDependencies/Package'):\r
             Module.SetPackageDependencyList([None])\r
 \r
-        # \r
+        #\r
         # Guid\r
         #\r
         for SubItem in XmlList(Item, '/ModuleSurfaceArea/Guids/GuidCName'):\r