Revision: 17796
http://sourceforge.net/p/edk2/code/17796
Author: yingke
Date: 2015-07-02 03:42:34 +0000 (Thu, 02 Jul 2015)
Log Message:
-----------
BaseTools: Fixed BuildOptions bug.
The BuildOptions in an INF should also follow override rule: If '==' is used,
all previous options are overridden.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Yingke Liu <[email protected]>
Reviewed-by: Liming Gao <[email protected]>
Modified Paths:
--------------
trunk/edk2/BaseTools/Source/Python/AutoGen/AutoGen.py
trunk/edk2/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
Modified: trunk/edk2/BaseTools/Source/Python/AutoGen/AutoGen.py
===================================================================
--- trunk/edk2/BaseTools/Source/Python/AutoGen/AutoGen.py 2015-07-02
01:12:03 UTC (rev 17795)
+++ trunk/edk2/BaseTools/Source/Python/AutoGen/AutoGen.py 2015-07-02
03:42:34 UTC (rev 17796)
@@ -2000,7 +2000,6 @@
if
Options.get((self.BuildRuleFamily, NowKey)) != None:
Options.pop((self.BuildRuleFamily, NowKey))
- OverrideOpt = set()
for Key in Options:
if ModuleStyle != None and len (Key) > 2:
# Check Module style is EDK or EDKII.
@@ -2026,9 +2025,7 @@
if Arch == "*" or Arch == self.Arch:
if Tool not in BuildOptions:
BuildOptions[Tool] = {}
- if Options[Key].startswith('='):
- OverrideOpt.add((Tool, Attr))
- if Attr != "FLAGS" or Attr not in BuildOptions[Tool]
or (Tool, Attr) in OverrideOpt:
+ if Attr != "FLAGS" or Attr not in BuildOptions[Tool]
or Options[Key].startswith('='):
BuildOptions[Tool][Attr] = Options[Key]
else:
# append options for the same tool
@@ -2037,7 +2034,6 @@
if FamilyMatch or FamilyIsNull:
return BuildOptions
- OverrideOpt = set()
for Key in Options:
if ModuleStyle != None and len (Key) > 2:
# Check Module style is EDK or EDKII.
@@ -2061,9 +2057,7 @@
if Arch == "*" or Arch == self.Arch:
if Tool not in BuildOptions:
BuildOptions[Tool] = {}
- if Options[Key].startswith('='):
- OverrideOpt.add((Tool, Attr))
- if Attr != "FLAGS" or Attr not in BuildOptions[Tool]
or (Tool, Attr) in OverrideOpt:
+ if Attr != "FLAGS" or Attr not in BuildOptions[Tool]
or Options[Key].startswith('='):
BuildOptions[Tool][Attr] = Options[Key]
else:
# append options for the same tool
@@ -2103,7 +2097,6 @@
PlatformModuleOptions.keys() + ModuleTypeOptions.keys()
+
self.ToolDefinition.keys())
BuildOptions = {}
- OverrideTool = set()
for Tool in AllTools:
if Tool not in BuildOptions:
BuildOptions[Tool] = {}
@@ -2122,9 +2115,8 @@
BuildOptions[Tool][Attr] = ""
# check if override is indicated
if Value.startswith('='):
- OverrideTool.add((Tool, Attr))
BuildOptions[Tool][Attr] = Value[1:]
- elif (Tool, Attr) not in OverrideTool:
+ else:
BuildOptions[Tool][Attr] += " " + Value
if Module.AutoGenVersion < 0x00010005 and self.Workspace.UniFlag !=
None:
#
Modified: trunk/edk2/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
===================================================================
--- trunk/edk2/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
2015-07-02 01:12:03 UTC (rev 17795)
+++ trunk/edk2/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
2015-07-02 03:42:34 UTC (rev 17796)
@@ -753,7 +753,6 @@
## Retrieve [BuildOptions]
def _GetBuildOptions(self):
if self._BuildOptions == None:
- OverrideTool = set()
self._BuildOptions = sdict()
#
# Retrieve build option for EDKII and EDK style module
@@ -762,12 +761,10 @@
RecordList = self._RawData[MODEL_META_DATA_BUILD_OPTION,
self._Arch, CodeBase]
for ToolChainFamily, ToolChain, Option, Dummy1, Dummy2,
Dummy3, Dummy4 in RecordList:
CurKey = (ToolChainFamily, ToolChain, CodeBase)
- if Option.startswith('='):
- OverrideTool.add(CurKey)
#
# Only flags can be appended
#
- if CurKey not in self._BuildOptions or not
ToolChain.endswith('_FLAGS') or CurKey in OverrideTool:
+ if CurKey not in self._BuildOptions or not
ToolChain.endswith('_FLAGS') or Option.startswith('='):
self._BuildOptions[CurKey] = Option
else:
self._BuildOptions[CurKey] += ' ' + Option
@@ -778,16 +775,13 @@
self._ModuleTypeOptions = sdict()
if (Edk, ModuleType) not in self._ModuleTypeOptions:
options = sdict()
- OverrideTool = set()
self._ModuleTypeOptions[Edk, ModuleType] = options
DriverType = '%s.%s' % (Edk, ModuleType)
RecordList = self._RawData[MODEL_META_DATA_BUILD_OPTION,
self._Arch, DriverType]
for ToolChainFamily, ToolChain, Option, Arch, Type, Dummy3, Dummy4
in RecordList:
- if Arch == self._Arch and Type == DriverType:
+ if Type == DriverType:
Key = (ToolChainFamily, ToolChain, Edk)
- if Option.startswith('='):
- OverrideTool.add(Key)
- if Key not in options or not ToolChain.endswith('_FLAGS')
or Key in OverrideTool:
+ if Key not in options or not ToolChain.endswith('_FLAGS')
or Option.startswith('='):
options[Key] = Option
else:
options[Key] += ' ' + Option
@@ -2399,7 +2393,7 @@
ToolChainFamily = Record[0]
ToolChain = Record[1]
Option = Record[2]
- if (ToolChainFamily, ToolChain) not in self._BuildOptions:
+ if (ToolChainFamily, ToolChain) not in self._BuildOptions or
Option.startswith('='):
self._BuildOptions[ToolChainFamily, ToolChain] = Option
else:
# concatenate the option string if they're for the same
tool
------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits