+ BuildOption = {}\r
+ for Arch in CurrentArchList:\r
+ Platform = GenFdsGlobalVariable.WorkSpace.BuildObject[GenFdsGlobalVariable.ActivePlatform, Arch, GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]\r
+ # key is (ToolChainFamily, ToolChain, CodeBase)\r
+ for item in Platform.BuildOptions:\r
+ if '_PATH' in item[1] or '_FLAGS' in item[1] or '_GUID' in item[1]:\r
+ if not item[0] or (item[0] and GenFdsGlobalVariable.ToolChainFamily== item[0]):\r
+ if item[1] not in BuildOption:\r
+ BuildOption[item[1]] = Platform.BuildOptions[item]\r
+ if BuildOption:\r
+ ToolList = [TAB_TOD_DEFINES_TARGET, TAB_TOD_DEFINES_TOOL_CHAIN_TAG, TAB_TOD_DEFINES_TARGET_ARCH]\r
+ for Index in range(2, -1, -1):\r
+ for Key in dict(BuildOption):\r
+ List = Key.split('_')\r
+ if List[Index] == '*':\r
+ for String in ToolDb[ToolList[Index]]:\r
+ if String in [Arch, GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]:\r
+ List[Index] = String\r
+ NewKey = '%s_%s_%s_%s_%s' % tuple(List)\r
+ if NewKey not in BuildOption:\r
+ BuildOption[NewKey] = BuildOption[Key]\r
+ continue\r
+ del BuildOption[Key]\r
+ elif List[Index] not in ToolDb[ToolList[Index]]:\r
+ del BuildOption[Key]\r
+ if BuildOption:\r
+ if not KeyList:\r
+ for Op in BuildOption:\r
+ if NameGuid == BuildOption[Op]:\r
+ KeyList = Op.split('_')\r
+ Key = KeyList[0] + '_' + KeyList[1] +'_' + KeyList[2]\r
+ if Key in KeyStringList and KeyList[4] == 'GUID':\r
+ ToolPathKey = Key + '_' + KeyList[3] + '_PATH'\r
+ ToolOptionKey = Key + '_' + KeyList[3] + '_FLAGS'\r
+ if ToolPathKey in BuildOption.keys():\r
+ ToolPathTmp = BuildOption.get(ToolPathKey)\r
+ if ToolOptionKey in BuildOption.keys():\r
+ ToolOption = BuildOption.get(ToolOptionKey)\r
+\r