else:\r
PlatformModuleOptions = {}\r
\r
+ BuildRuleOrder = None\r
+ for Options in [self.ToolDefinition, ModuleOptions, PlatformOptions, PlatformModuleOptions]:\r
+ for Tool in Options:\r
+ for Attr in Options[Tool]:\r
+ if Attr == TAB_TOD_DEFINES_BUILDRULEORDER:\r
+ BuildRuleOrder = Options[Tool][Attr]\r
+\r
AllTools = set(ModuleOptions.keys() + PlatformOptions.keys() + PlatformModuleOptions.keys() + self.ToolDefinition.keys())\r
BuildOptions = {}\r
for Tool in AllTools:\r
continue\r
for Attr in Options[Tool]:\r
Value = Options[Tool][Attr]\r
+ #\r
+ # Do not generate it in Makefile\r
+ #\r
+ if Attr == TAB_TOD_DEFINES_BUILDRULEORDER:\r
+ continue\r
if Attr not in BuildOptions[Tool]:\r
BuildOptions[Tool][Attr] = ""\r
# check if override is indicated\r
if 'BUILD' not in BuildOptions:\r
BuildOptions['BUILD'] = {}\r
BuildOptions['BUILD']['FLAGS'] = self.Workspace.UniFlag\r
- return BuildOptions\r
+ return BuildOptions, BuildRuleOrder\r
\r
Platform = property(_GetPlatform)\r
Name = property(_GetName)\r
self.DepexGenerated = False\r
\r
self.BuildDatabase = self.Workspace.BuildDatabase\r
+ self.BuildRuleOrder = None\r
\r
self._Module = None\r
self._Name = None\r
#\r
def _GetModuleBuildOption(self):\r
if self._BuildOption == None:\r
- self._BuildOption = self.PlatformInfo.ApplyBuildOption(self.Module)\r
+ self._BuildOption, self.BuildRuleOrder = self.PlatformInfo.ApplyBuildOption(self.Module)\r
+ if self.BuildRuleOrder:\r
+ self.BuildRuleOrder = ['.%s' % Ext for Ext in self.BuildRuleOrder.split()]\r
return self._BuildOption\r
\r
## Get include path list from tool option for the module build\r
RuleChain = []\r
SourceList = [File]\r
Index = 0\r
+ #\r
+ # Make sure to get build rule order value\r
+ #\r
+ self._GetModuleBuildOption()\r
+\r
while Index < len(SourceList):\r
Source = SourceList[Index]\r
Index = Index + 1\r
self._FinalBuildTargetList.add(LastTarget)\r
break\r
\r
- Target = RuleObject.Apply(Source)\r
+ Target = RuleObject.Apply(Source, self.BuildRuleOrder)\r
if not Target:\r
if LastTarget:\r
self._FinalBuildTargetList.add(LastTarget)\r