else:\r
BuildOptions[Tool][Attr] = Options[Key]\r
return BuildOptions\r
-\r
+ def GetGlobalBuildOptions(self,Module):\r
+ ModuleTypeOptions = self.Platform.GetBuildOptionsByPkg(Module, Module.ModuleType)\r
+ ModuleTypeOptions = self._ExpandBuildOption(ModuleTypeOptions)\r
+ if Module in self.Platform.Modules:\r
+ PlatformModule = self.Platform.Modules[str(Module)]\r
+ PlatformModuleOptions = self._ExpandBuildOption(PlatformModule.BuildOptions)\r
+ else:\r
+ PlatformModuleOptions = {}\r
+ return ModuleTypeOptions, PlatformModuleOptions\r
## Append build options in platform to a module\r
#\r
# @param Module The module to which the build options will be appended\r
if ' ' + Option not in self._BuildOptions[CurKey]:\r
self._BuildOptions[CurKey] += ' ' + Option\r
return self._BuildOptions\r
+ def GetBuildOptionsByPkg(self, Module, ModuleType):\r
\r
+ local_pkg = os.path.split(Module.LocalPkg())[0]\r
+ if self._ModuleTypeOptions is None:\r
+ self._ModuleTypeOptions = OrderedDict()\r
+ if ModuleType not in self._ModuleTypeOptions:\r
+ options = OrderedDict()\r
+ self._ModuleTypeOptions[ ModuleType] = options\r
+ RecordList = self._RawData[MODEL_META_DATA_BUILD_OPTION, self._Arch]\r
+ for ToolChainFamily, ToolChain, Option, Dummy1, Dummy2, Dummy3, Dummy4, Dummy5 in RecordList:\r
+ if Dummy2 not in (TAB_COMMON,local_pkg.upper(),"EDKII"):\r
+ continue\r
+ Type = Dummy3\r
+ if Type.upper() == ModuleType.upper():\r
+ Key = (ToolChainFamily, ToolChain)\r
+ if Key not in options or not ToolChain.endswith('_FLAGS') or Option.startswith('='):\r
+ options[Key] = Option\r
+ else:\r
+ if ' ' + Option not in options[Key]:\r
+ options[Key] += ' ' + Option\r
+ return self._ModuleTypeOptions[ModuleType]\r
def GetBuildOptionsByModuleType(self, Edk, ModuleType):\r
if self._ModuleTypeOptions is None:\r
self._ModuleTypeOptions = OrderedDict()\r
for Arch, ModuleType in TemporaryDictionary:\r
RetVal[Arch, ModuleType] = TemporaryDictionary[Arch, ModuleType]\r
return RetVal\r
-\r
+ def LocalPkg(self):\r
+ module_path = self.MetaFile.File\r
+ subdir = os.path.split(module_path)[0]\r
+ TopDir = ""\r
+ while subdir:\r
+ subdir,TopDir = os.path.split(subdir)\r
+\r
+ for file_name in os.listdir(os.path.join(self.MetaFile.Root,TopDir)):\r
+ if file_name.upper().endswith("DEC"):\r
+ pkg = os.path.join(TopDir,file_name)\r
+ return pkg\r
@cached_class_function\r
def GetGuidsUsedByPcd(self):\r
self.Pcds\r