\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
# 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
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
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
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
#\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
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
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
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
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