mirror of https://github.com/acidanthera/audk.git
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:
parent
2927a6fd99
commit
197ca7febf
|
@ -2486,7 +2486,15 @@ class PlatformAutoGen(AutoGen):
|
|||
else:
|
||||
BuildOptions[Tool][Attr] = Options[Key]
|
||||
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
|
||||
#
|
||||
# @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]:
|
||||
self._BuildOptions[CurKey] += ' ' + Option
|
||||
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):
|
||||
if self._ModuleTypeOptions is None:
|
||||
self._ModuleTypeOptions = OrderedDict()
|
||||
|
|
|
@ -819,7 +819,17 @@ class InfBuildData(ModuleBuildClassObject):
|
|||
for Arch, ModuleType in TemporaryDictionary:
|
||||
RetVal[Arch, ModuleType] = TemporaryDictionary[Arch, ModuleType]
|
||||
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
|
||||
def GetGuidsUsedByPcd(self):
|
||||
self.Pcds
|
||||
|
|
Loading…
Reference in New Issue