Beispiel #1
0
    def ApplyBuildOption(self, module):
        PlatformOptions = self.DataPipe.Get("PLA_BO")
        ModuleBuildOptions = self.DataPipe.Get("MOL_BO")
        ModuleOptionFromDsc = ModuleBuildOptions.get(
            (module.MetaFile.File, module.MetaFile.Root))
        if ModuleOptionFromDsc:
            ModuleTypeOptions, PlatformModuleOptions = ModuleOptionFromDsc[
                "ModuleTypeOptions"], ModuleOptionFromDsc[
                    "PlatformModuleOptions"]
        else:
            ModuleTypeOptions, PlatformModuleOptions = {}, {}
        ToolDefinition = self.DataPipe.Get("TOOLDEF")
        ModuleOptions = self._ExpandBuildOption(module.BuildOptions)
        BuildRuleOrder = None
        for Options in [
                ToolDefinition, ModuleOptions, PlatformOptions,
                ModuleTypeOptions, PlatformModuleOptions
        ]:
            for Tool in Options:
                for Attr in Options[Tool]:
                    if Attr == TAB_TOD_DEFINES_BUILDRULEORDER:
                        BuildRuleOrder = Options[Tool][Attr]

        AllTools = set(
            list(ModuleOptions.keys()) + list(PlatformOptions.keys()) +
            list(PlatformModuleOptions.keys()) +
            list(ModuleTypeOptions.keys()) + list(ToolDefinition.keys()))
        BuildOptions = defaultdict(lambda: defaultdict(str))
        for Tool in AllTools:
            for Options in [
                    ToolDefinition, ModuleOptions, PlatformOptions,
                    ModuleTypeOptions, PlatformModuleOptions
            ]:
                if Tool not in Options:
                    continue
                for Attr in Options[Tool]:
                    #
                    # Do not generate it in Makefile
                    #
                    if Attr == TAB_TOD_DEFINES_BUILDRULEORDER:
                        continue
                    Value = Options[Tool][Attr]
                    ToolList = [Tool]
                    if Tool == TAB_STAR:
                        ToolList = list(AllTools)
                        ToolList.remove(TAB_STAR)
                    for ExpandedTool in ToolList:
                        # check if override is indicated
                        if Value.startswith('='):
                            BuildOptions[ExpandedTool][
                                Attr] = mws.handleWsMacro(Value[1:])
                        else:
                            if Attr != 'PATH':
                                BuildOptions[ExpandedTool][
                                    Attr] += " " + mws.handleWsMacro(Value)
                            else:
                                BuildOptions[ExpandedTool][
                                    Attr] = mws.handleWsMacro(Value)

        return BuildOptions, BuildRuleOrder
Beispiel #2
0
 def ReplaceWorkspaceMacro(String):
     String = mws.handleWsMacro(String)
     Str = String.replace('$(WORKSPACE)', GenFdsGlobalVariable.WorkSpaceDir)
     if os.path.exists(Str):
         if not os.path.isabs(Str):
             Str = os.path.abspath(Str)
     else:
         Str = mws.join(GenFdsGlobalVariable.WorkSpaceDir, String)
     return os.path.normpath(Str)
 def ReplaceWorkspaceMacro(String):
     String = mws.handleWsMacro(String)
     Str = String.replace('$(WORKSPACE)', GenFdsGlobalVariable.WorkSpaceDir)
     if os.path.exists(Str):
         if not os.path.isabs(Str):
             Str = os.path.abspath(Str)
     else:
         Str = mws.join(GenFdsGlobalVariable.WorkSpaceDir, String)
     return os.path.normpath(Str)