Sync basetools' source and binary files with r1707 of the basetools project.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9257 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@ -1061,12 +1061,45 @@ class PlatformAutoGen(AutoGen):
|
||||
#
|
||||
def _ExpandBuildOption(self, Options):
|
||||
BuildOptions = {}
|
||||
FamilyMatch = False
|
||||
FamilyIsNull = True
|
||||
for Key in Options:
|
||||
Family = Key[0]
|
||||
Target, Tag, Arch, Tool, Attr = Key[1].split("_")
|
||||
# if tool chain family doesn't match, skip it
|
||||
if Family and Tool in self.ToolDefinition and Family != self.ToolDefinition[Tool]["FAMILY"]:
|
||||
if Tool in self.ToolDefinition and Family != "":
|
||||
FamilyIsNull = False
|
||||
if self.ToolDefinition[Tool].get(TAB_TOD_DEFINES_BUILDRULEFAMILY, "") != "":
|
||||
if Family != self.ToolDefinition[Tool][TAB_TOD_DEFINES_BUILDRULEFAMILY]:
|
||||
continue
|
||||
elif Family != self.ToolDefinition[Tool][TAB_TOD_DEFINES_FAMILY]:
|
||||
continue
|
||||
FamilyMatch = True
|
||||
# expand any wildcard
|
||||
if Target == "*" or Target == self.BuildTarget:
|
||||
if Tag == "*" or Tag == self.ToolChain:
|
||||
if Arch == "*" or Arch == self.Arch:
|
||||
if Tool not in BuildOptions:
|
||||
BuildOptions[Tool] = {}
|
||||
if Attr != "FLAGS" or Attr not in BuildOptions[Tool]:
|
||||
BuildOptions[Tool][Attr] = Options[Key]
|
||||
else:
|
||||
# append options for the same tool
|
||||
BuildOptions[Tool][Attr] += " " + Options[Key]
|
||||
# Build Option Family has been checked, which need't to be checked again for family.
|
||||
if FamilyMatch or FamilyIsNull:
|
||||
return BuildOptions
|
||||
|
||||
for Key in Options:
|
||||
Family = Key[0]
|
||||
Target, Tag, Arch, Tool, Attr = Key[1].split("_")
|
||||
# if tool chain family doesn't match, skip it
|
||||
if Tool not in self.ToolDefinition or Family =="":
|
||||
continue
|
||||
# option has been added before
|
||||
if Family != self.ToolDefinition[Tool][TAB_TOD_DEFINES_FAMILY]:
|
||||
continue
|
||||
|
||||
# expand any wildcard
|
||||
if Target == "*" or Target == self.BuildTarget:
|
||||
if Tag == "*" or Tag == self.ToolChain:
|
||||
|
Reference in New Issue
Block a user