Revision: 17621
http://sourceforge.net/p/edk2/code/17621
Author: yingke
Date: 2015-06-11 05:16:40 +0000 (Thu, 11 Jun 2015)
Log Message:
-----------
Subject: [Patch] BaseTools: Support build options for specific module type in
DSC.
This patch extended BuildOptions section in DSC to support
[BuildOptions.ARCH.CodeBase.MODULE_TYPE]
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-06-11
02:50:20 UTC (rev 17620)
+++ trunk/edk2/BaseTools/Source/Python/AutoGen/AutoGen.py 2015-06-11
05:16:40 UTC (rev 17621)
@@ -2074,8 +2074,11 @@
# Get the different options for the different style module
if Module.AutoGenVersion < 0x00010005:
PlatformOptions = self.EdkBuildOption
+ ModuleTypeOptions =
self.Platform.GetBuildOptionsByModuleType(EDK_NAME, Module.ModuleType)
else:
PlatformOptions = self.EdkIIBuildOption
+ ModuleTypeOptions =
self.Platform.GetBuildOptionsByModuleType(EDKII_NAME, Module.ModuleType)
+ ModuleTypeOptions = self._ExpandBuildOption(ModuleTypeOptions)
ModuleOptions = self._ExpandBuildOption(Module.BuildOptions)
if Module in self.Platform.Modules:
PlatformModule = self.Platform.Modules[str(Module)]
@@ -2084,19 +2087,21 @@
PlatformModuleOptions = {}
BuildRuleOrder = None
- for Options in [self.ToolDefinition, ModuleOptions, PlatformOptions,
PlatformModuleOptions]:
+ for Options in [self.ToolDefinition, ModuleOptions, PlatformOptions,
ModuleTypeOptions, PlatformModuleOptions]:
for Tool in Options:
for Attr in Options[Tool]:
if Attr == TAB_TOD_DEFINES_BUILDRULEORDER:
BuildRuleOrder = Options[Tool][Attr]
- AllTools = set(ModuleOptions.keys() + PlatformOptions.keys() +
PlatformModuleOptions.keys() + self.ToolDefinition.keys())
+ AllTools = set(ModuleOptions.keys() + PlatformOptions.keys() +
+ PlatformModuleOptions.keys() + ModuleTypeOptions.keys()
+
+ self.ToolDefinition.keys())
BuildOptions = {}
for Tool in AllTools:
if Tool not in BuildOptions:
BuildOptions[Tool] = {}
- for Options in [self.ToolDefinition, ModuleOptions,
PlatformOptions, PlatformModuleOptions]:
+ for Options in [self.ToolDefinition, ModuleOptions,
PlatformOptions, ModuleTypeOptions, PlatformModuleOptions]:
if Tool not in Options:
continue
for Attr in Options[Tool]:
Modified: trunk/edk2/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
===================================================================
--- trunk/edk2/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
2015-06-11 02:50:20 UTC (rev 17620)
+++ trunk/edk2/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
2015-06-11 05:16:40 UTC (rev 17621)
@@ -147,6 +147,7 @@
self._Pcds = None
self._DecPcds = None
self._BuildOptions = None
+ self._ModuleTypeOptions = None
self._LoadFixAddress = None
self._RFCLanguages = None
self._ISOLanguages = None
@@ -767,6 +768,19 @@
self._BuildOptions[ToolChainFamily, ToolChain, EDK_NAME] =
Option
return self._BuildOptions
+ def GetBuildOptionsByModuleType(self, Edk, ModuleType):
+ if self._ModuleTypeOptions == None:
+ self._ModuleTypeOptions = sdict()
+ if (Edk, ModuleType) not in self._ModuleTypeOptions:
+ options = sdict()
+ 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:
+ options[ToolChainFamily, ToolChain, Edk] = Option
+ return self._ModuleTypeOptions[Edk, ModuleType]
+
## Retrieve non-dynamic PCD settings
#
# @param Type PCD type
------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits