]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/BuildEngine.py
BaseTools: Fix a bug for Size incorrect of Void* Fixatbuild Pcd
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / BuildEngine.py
index 63ed47d94bcb402a618dd1b9fc48e93aeb30ad97..1663ddd21bb03ec03563053b836ec0873de98d3b 100644 (file)
@@ -161,7 +161,7 @@ class FileBuildRule:
 \r
         # Check input files\r
         self.IsMultipleInput = False\r
-        self.SourceFileExtList = []\r
+        self.SourceFileExtList = set()\r
         for File in Input:\r
             Base, Ext = os.path.splitext(File)\r
             if Base.find("*") >= 0:\r
@@ -172,8 +172,7 @@ class FileBuildRule:
                 # There's no "*" and "?" in file name\r
                 self.ExtraSourceFileList.append(File)\r
                 continue\r
-            if Ext not in self.SourceFileExtList:\r
-                self.SourceFileExtList.append(Ext)\r
+            self.SourceFileExtList.add(Ext)\r
 \r
         # Check output files\r
         self.DestFileList = []\r
@@ -194,16 +193,6 @@ class FileBuildRule:
         CommandString = "\n\t".join(self.CommandList)\r
         return "%s : %s\n\t%s" % (DestString, SourceString, CommandString)\r
 \r
-    ## Check if given file extension is supported by this rule\r
-    #\r
-    #   @param  FileExt     The extension of a file\r
-    #\r
-    #   @retval True        If the extension is supported\r
-    #   @retval False       If the extension is not supported\r
-    #\r
-    def IsSupported(self, FileExt):\r
-        return FileExt in self.SourceFileExtList\r
-\r
     def Instantiate(self, Macros={}):\r
         NewRuleObject = copy.copy(self)\r
         NewRuleObject.BuildTargets = {}\r
@@ -346,12 +335,12 @@ class BuildRule:
     def __init__(self, File=None, Content=None, LineIndex=0, SupportedFamily=["MSFT", "INTEL", "GCC", "RVCT"]):\r
         self.RuleFile = File\r
         # Read build rules from file if it's not none\r
-        if File != None:\r
+        if File is not None:\r
             try:\r
                 self.RuleContent = open(File, 'r').readlines()\r
             except:\r
                 EdkLogger.error("build", FILE_OPEN_FAILURE, ExtraData=File)\r
-        elif Content != None:\r
+        elif Content is not None:\r
             self.RuleContent = Content\r
         else:\r
             EdkLogger.error("build", PARAMETER_MISSING, ExtraData="No rule file or string given")\r
@@ -365,8 +354,8 @@ class BuildRule:
         self._State = ""\r
         self._RuleInfo = tdict(True, 2)     # {toolchain family : {"InputFile": {}, "OutputFile" : [], "Command" : []}}\r
         self._FileType = ''\r
-        self._BuildTypeList = []\r
-        self._ArchList = []\r
+        self._BuildTypeList = set()\r
+        self._ArchList = set()\r
         self._FamilyList = []\r
         self._TotalToolChainFamilySet = set()\r
         self._RuleObjectList = [] # FileBuildRule object list\r
@@ -456,8 +445,8 @@ class BuildRule:
     #\r
     def ParseSectionHeader(self, LineIndex):\r
         self._RuleInfo = tdict(True, 2)\r
-        self._BuildTypeList = []\r
-        self._ArchList = []\r
+        self._BuildTypeList = set()\r
+        self._ArchList = set()\r
         self._FamilyList = []\r
         self._TotalToolChainFamilySet = set()\r
         FileType = ''\r
@@ -478,7 +467,7 @@ class BuildRule:
                     EdkLogger.error("build", FORMAT_INVALID, "No file type given",\r
                                     File=self.RuleFile, Line=LineIndex + 1,\r
                                     ExtraData=self.RuleContent[LineIndex])\r
-                if self._FileTypePattern.match(FileType) == None:\r
+                if self._FileTypePattern.match(FileType) is None:\r
                     EdkLogger.error("build", FORMAT_INVALID, File=self.RuleFile, Line=LineIndex + 1,\r
                                     ExtraData="Only character, number (non-first character), '_' and '-' are allowed in file type")\r
             # new format: File-Type.Build-Type.Arch\r
@@ -494,10 +483,8 @@ class BuildRule:
                     BuildType = TokenList[1]\r
                 if len(TokenList) > 2:\r
                     Arch = TokenList[2]\r
-            if BuildType not in self._BuildTypeList:\r
-                self._BuildTypeList.append(BuildType)\r
-            if Arch not in self._ArchList:\r
-                self._ArchList.append(Arch)\r
+            self._BuildTypeList.add(BuildType)\r
+            self._ArchList.add(Arch)\r
 \r
         if 'COMMON' in self._BuildTypeList and len(self._BuildTypeList) > 1:\r
             EdkLogger.error("build", FORMAT_INVALID,\r
@@ -561,7 +548,7 @@ class BuildRule:
         FileList = [File.strip() for File in self.RuleContent[LineIndex].split(",")]\r
         for ToolChainFamily in self._FamilyList:\r
             InputFiles = self._RuleInfo[ToolChainFamily, self._State]\r
-            if InputFiles == None:\r
+            if InputFiles is None:\r
                 InputFiles = []\r
                 self._RuleInfo[ToolChainFamily, self._State] = InputFiles\r
             InputFiles.extend(FileList)\r
@@ -573,7 +560,7 @@ class BuildRule:
     def ParseCommon(self, LineIndex):\r
         for ToolChainFamily in self._FamilyList:\r
             Items = self._RuleInfo[ToolChainFamily, self._State]\r
-            if Items == None:\r
+            if Items is None:\r
                 Items = []\r
                 self._RuleInfo[ToolChainFamily, self._State] = Items\r
             Items.append(self.RuleContent[LineIndex])\r