BaseTools: Add functions to get platform scope build options
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1875 These functions are used for get platform scope build options. They will be used in later patches. Cc: Liming Gao <liming.gao@intel.com> Signed-off-by: Bob Feng <bob.c.feng@intel.com> Acked-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Laszlo Ersek <lersek@redhat.com> Acked-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
@ -2486,7 +2486,15 @@ class PlatformAutoGen(AutoGen):
|
|||||||
else:
|
else:
|
||||||
BuildOptions[Tool][Attr] = Options[Key]
|
BuildOptions[Tool][Attr] = Options[Key]
|
||||||
return BuildOptions
|
return BuildOptions
|
||||||
|
def GetGlobalBuildOptions(self,Module):
|
||||||
|
ModuleTypeOptions = self.Platform.GetBuildOptionsByPkg(Module, Module.ModuleType)
|
||||||
|
ModuleTypeOptions = self._ExpandBuildOption(ModuleTypeOptions)
|
||||||
|
if Module in self.Platform.Modules:
|
||||||
|
PlatformModule = self.Platform.Modules[str(Module)]
|
||||||
|
PlatformModuleOptions = self._ExpandBuildOption(PlatformModule.BuildOptions)
|
||||||
|
else:
|
||||||
|
PlatformModuleOptions = {}
|
||||||
|
return ModuleTypeOptions, PlatformModuleOptions
|
||||||
## Append build options in platform to a module
|
## Append build options in platform to a module
|
||||||
#
|
#
|
||||||
# @param Module The module to which the build options will be appended
|
# @param Module The module to which the build options will be appended
|
||||||
|
@ -1224,7 +1224,27 @@ class DscBuildData(PlatformBuildClassObject):
|
|||||||
if ' ' + Option not in self._BuildOptions[CurKey]:
|
if ' ' + Option not in self._BuildOptions[CurKey]:
|
||||||
self._BuildOptions[CurKey] += ' ' + Option
|
self._BuildOptions[CurKey] += ' ' + Option
|
||||||
return self._BuildOptions
|
return self._BuildOptions
|
||||||
|
def GetBuildOptionsByPkg(self, Module, ModuleType):
|
||||||
|
|
||||||
|
local_pkg = os.path.split(Module.LocalPkg())[0]
|
||||||
|
if self._ModuleTypeOptions is None:
|
||||||
|
self._ModuleTypeOptions = OrderedDict()
|
||||||
|
if ModuleType not in self._ModuleTypeOptions:
|
||||||
|
options = OrderedDict()
|
||||||
|
self._ModuleTypeOptions[ ModuleType] = options
|
||||||
|
RecordList = self._RawData[MODEL_META_DATA_BUILD_OPTION, self._Arch]
|
||||||
|
for ToolChainFamily, ToolChain, Option, Dummy1, Dummy2, Dummy3, Dummy4, Dummy5 in RecordList:
|
||||||
|
if Dummy2 not in (TAB_COMMON,local_pkg.upper(),"EDKII"):
|
||||||
|
continue
|
||||||
|
Type = Dummy3
|
||||||
|
if Type.upper() == ModuleType.upper():
|
||||||
|
Key = (ToolChainFamily, ToolChain)
|
||||||
|
if Key not in options or not ToolChain.endswith('_FLAGS') or Option.startswith('='):
|
||||||
|
options[Key] = Option
|
||||||
|
else:
|
||||||
|
if ' ' + Option not in options[Key]:
|
||||||
|
options[Key] += ' ' + Option
|
||||||
|
return self._ModuleTypeOptions[ModuleType]
|
||||||
def GetBuildOptionsByModuleType(self, Edk, ModuleType):
|
def GetBuildOptionsByModuleType(self, Edk, ModuleType):
|
||||||
if self._ModuleTypeOptions is None:
|
if self._ModuleTypeOptions is None:
|
||||||
self._ModuleTypeOptions = OrderedDict()
|
self._ModuleTypeOptions = OrderedDict()
|
||||||
|
@ -819,7 +819,17 @@ class InfBuildData(ModuleBuildClassObject):
|
|||||||
for Arch, ModuleType in TemporaryDictionary:
|
for Arch, ModuleType in TemporaryDictionary:
|
||||||
RetVal[Arch, ModuleType] = TemporaryDictionary[Arch, ModuleType]
|
RetVal[Arch, ModuleType] = TemporaryDictionary[Arch, ModuleType]
|
||||||
return RetVal
|
return RetVal
|
||||||
|
def LocalPkg(self):
|
||||||
|
module_path = self.MetaFile.File
|
||||||
|
subdir = os.path.split(module_path)[0]
|
||||||
|
TopDir = ""
|
||||||
|
while subdir:
|
||||||
|
subdir,TopDir = os.path.split(subdir)
|
||||||
|
|
||||||
|
for file_name in os.listdir(os.path.join(self.MetaFile.Root,TopDir)):
|
||||||
|
if file_name.upper().endswith("DEC"):
|
||||||
|
pkg = os.path.join(TopDir,file_name)
|
||||||
|
return pkg
|
||||||
@cached_class_function
|
@cached_class_function
|
||||||
def GetGuidsUsedByPcd(self):
|
def GetGuidsUsedByPcd(self):
|
||||||
self.Pcds
|
self.Pcds
|
||||||
|
Reference in New Issue
Block a user