if Options.get((self.BuildRuleFamily, NowKey)) != None: \r
Options.pop((self.BuildRuleFamily, NowKey))\r
\r
- OverrideOpt = set()\r
for Key in Options:\r
if ModuleStyle != None and len (Key) > 2:\r
# Check Module style is EDK or EDKII.\r
if Arch == "*" or Arch == self.Arch:\r
if Tool not in BuildOptions:\r
BuildOptions[Tool] = {}\r
- if Options[Key].startswith('='):\r
- OverrideOpt.add((Tool, Attr))\r
- if Attr != "FLAGS" or Attr not in BuildOptions[Tool] or (Tool, Attr) in OverrideOpt:\r
+ if Attr != "FLAGS" or Attr not in BuildOptions[Tool] or Options[Key].startswith('='):\r
BuildOptions[Tool][Attr] = Options[Key]\r
else:\r
# append options for the same tool\r
if FamilyMatch or FamilyIsNull:\r
return BuildOptions\r
\r
- OverrideOpt = set()\r
for Key in Options:\r
if ModuleStyle != None and len (Key) > 2:\r
# Check Module style is EDK or EDKII.\r
if Arch == "*" or Arch == self.Arch:\r
if Tool not in BuildOptions:\r
BuildOptions[Tool] = {}\r
- if Options[Key].startswith('='):\r
- OverrideOpt.add((Tool, Attr))\r
- if Attr != "FLAGS" or Attr not in BuildOptions[Tool] or (Tool, Attr) in OverrideOpt:\r
+ if Attr != "FLAGS" or Attr not in BuildOptions[Tool] or Options[Key].startswith('='):\r
BuildOptions[Tool][Attr] = Options[Key]\r
else:\r
# append options for the same tool\r
PlatformModuleOptions.keys() + ModuleTypeOptions.keys() +\r
self.ToolDefinition.keys())\r
BuildOptions = {}\r
- OverrideTool = set()\r
for Tool in AllTools:\r
if Tool not in BuildOptions:\r
BuildOptions[Tool] = {}\r
BuildOptions[Tool][Attr] = ""\r
# check if override is indicated\r
if Value.startswith('='):\r
- OverrideTool.add((Tool, Attr))\r
BuildOptions[Tool][Attr] = Value[1:]\r
- elif (Tool, Attr) not in OverrideTool:\r
+ else:\r
BuildOptions[Tool][Attr] += " " + Value\r
if Module.AutoGenVersion < 0x00010005 and self.Workspace.UniFlag != None:\r
#\r
## Retrieve [BuildOptions]\r
def _GetBuildOptions(self):\r
if self._BuildOptions == None:\r
- OverrideTool = set()\r
self._BuildOptions = sdict()\r
#\r
# Retrieve build option for EDKII and EDK style module\r
RecordList = self._RawData[MODEL_META_DATA_BUILD_OPTION, self._Arch, CodeBase]\r
for ToolChainFamily, ToolChain, Option, Dummy1, Dummy2, Dummy3, Dummy4 in RecordList:\r
CurKey = (ToolChainFamily, ToolChain, CodeBase)\r
- if Option.startswith('='):\r
- OverrideTool.add(CurKey)\r
#\r
# Only flags can be appended\r
#\r
- if CurKey not in self._BuildOptions or not ToolChain.endswith('_FLAGS') or CurKey in OverrideTool:\r
+ if CurKey not in self._BuildOptions or not ToolChain.endswith('_FLAGS') or Option.startswith('='):\r
self._BuildOptions[CurKey] = Option\r
else:\r
self._BuildOptions[CurKey] += ' ' + Option\r
self._ModuleTypeOptions = sdict()\r
if (Edk, ModuleType) not in self._ModuleTypeOptions:\r
options = sdict()\r
- OverrideTool = set()\r
self._ModuleTypeOptions[Edk, ModuleType] = options\r
DriverType = '%s.%s' % (Edk, ModuleType)\r
RecordList = self._RawData[MODEL_META_DATA_BUILD_OPTION, self._Arch, DriverType]\r
for ToolChainFamily, ToolChain, Option, Arch, Type, Dummy3, Dummy4 in RecordList:\r
- if Arch == self._Arch and Type == DriverType:\r
+ if Type == DriverType:\r
Key = (ToolChainFamily, ToolChain, Edk)\r
- if Option.startswith('='):\r
- OverrideTool.add(Key)\r
- if Key not in options or not ToolChain.endswith('_FLAGS') or Key in OverrideTool:\r
+ if Key not in options or not ToolChain.endswith('_FLAGS') or Option.startswith('='):\r
options[Key] = Option\r
else:\r
options[Key] += ' ' + Option\r
ToolChainFamily = Record[0]\r
ToolChain = Record[1]\r
Option = Record[2]\r
- if (ToolChainFamily, ToolChain) not in self._BuildOptions:\r
+ if (ToolChainFamily, ToolChain) not in self._BuildOptions or Option.startswith('='):\r
self._BuildOptions[ToolChainFamily, ToolChain] = Option\r
else:\r
# concatenate the option string if they're for the same tool\r