diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2009-01-12 07:45:49 +0000 | 
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2009-01-12 07:45:49 +0000 | 
| commit | e42e520a57a25fa0b213c84ad5c04c32dde97a7b (patch) | |
| tree | 48e78ff5e1980622f970bd2d23ace20c0aae44c0 /clang/tools | |
| parent | 17bbcfd5a0c9c615062288ee5d6cfc427fe0cec7 (diff) | |
| download | bcm5719-llvm-e42e520a57a25fa0b213c84ad5c04c32dde97a7b.tar.gz bcm5719-llvm-e42e520a57a25fa0b213c84ad5c04c32dde97a7b.zip | |
ccc: (Darwin) Move path resolution into ToolChain.
llvm-svn: 62082
Diffstat (limited to 'clang/tools')
| -rw-r--r-- | clang/tools/ccc/ccclib/ToolChain.py | 18 | ||||
| -rw-r--r-- | clang/tools/ccc/ccclib/Tools.py | 37 | 
2 files changed, 30 insertions, 25 deletions
| diff --git a/clang/tools/ccc/ccclib/ToolChain.py b/clang/tools/ccc/ccclib/ToolChain.py index db8dd0e414a..2447b670525 100644 --- a/clang/tools/ccc/ccclib/ToolChain.py +++ b/clang/tools/ccc/ccclib/ToolChain.py @@ -17,16 +17,28 @@ class ToolChain(object):  class Darwin_X86_ToolChain(ToolChain):      def __init__(self, driver, darwinVersion, gccVersion):          super(Darwin_X86_ToolChain, self).__init__(driver) +        assert isinstance(darwinVersion, tuple) and len(darwinVersion) == 3 +        assert isinstance(gccVersion, tuple) and len(gccVersion) == 3 +        self.darwinVersion = darwinVersion +        self.gccVersion = gccVersion +          self.toolMap = {              Phases.PreprocessPhase : Tools.GCC_PreprocessTool(),              Phases.CompilePhase : Tools.GCC_CompileTool(),              Phases.PrecompilePhase : Tools.GCC_PrecompileTool(), -            Phases.AssemblePhase : Tools.DarwinAssembleTool(), -            Phases.LinkPhase : Tools.Darwin_X86_LinkTool(darwinVersion, -                                                         gccVersion), +            Phases.AssemblePhase : Tools.Darwin_AssembleTool(self), +            Phases.LinkPhase : Tools.Darwin_X86_LinkTool(self),              Phases.LipoPhase : Tools.LipoTool(),              } +    def getToolChainDir(self): +        return 'i686-apple-darwin%d/%s' % (self.darwinVersion[0], +                                           '.'.join(map(str,self.gccVersion))) + +    def getProgramPath(self, name): +        # FIXME: Implement proper search. +        return '/usr/libexec/gcc/%s/%s' % (self.getToolChainDir(), name) +      def selectTool(self, action):          assert isinstance(action, Phases.JobAction)          return self.toolMap[action.phase.__class__] diff --git a/clang/tools/ccc/ccclib/Tools.py b/clang/tools/ccc/ccclib/Tools.py index a9209821488..c850ef1a036 100644 --- a/clang/tools/ccc/ccclib/Tools.py +++ b/clang/tools/ccc/ccclib/Tools.py @@ -99,10 +99,11 @@ class GCC_PrecompileTool(GCC_Common_Tool):                                                              output, outputType, args, arglist,                                                              []) -class DarwinAssembleTool(Tool): -    def __init__(self): -        super(DarwinAssembleTool, self).__init__('as', -                                                 Tool.eFlagsPipedInput) +class Darwin_AssembleTool(Tool): +    def __init__(self, toolChain): +        super(Darwin_AssembleTool, self).__init__('as', +                                                  Tool.eFlagsPipedInput) +        self.toolChain = toolChain      def constructJob(self, phase, arch, jobs, inputs,                        output, outputType, args, arglist): @@ -120,7 +121,6 @@ class DarwinAssembleTool(Tool):          if arch:              cmd_args.extend(arglist.render(arch))          cmd_args.append('-force_cpusubtype_ALL') -        cmd_args.extend(arglist.render(output))          if (arglist.getLastArg(arglist.parser.m_kernelOption) or              arglist.getLastArg(arglist.parser.staticOption) or              arglist.getLastArg(arglist.parser.f_appleKextOption)): @@ -131,6 +131,7 @@ class DarwinAssembleTool(Tool):                                      arglist.parser.XassemblerOption):              cmd_args.extend(arglist.getValues(arg)) +        cmd_args.extend(arglist.render(output))          if isinstance(input.source, Jobs.PipedJob):              cmd_args.append('-')          else: @@ -138,7 +139,8 @@ class DarwinAssembleTool(Tool):          # asm_final spec is empty. -        jobs.addJob(Jobs.Command('as', cmd_args)) +        jobs.addJob(Jobs.Command(self.toolChain.getProgramPath('as'),  +                                 cmd_args))  class GCC_AssembleTool(GCC_Common_Tool):      def __init__(self): @@ -163,22 +165,12 @@ class GCC_LinkTool(GCC_Common_Tool):                                                        [])  class Darwin_X86_LinkTool(Tool): -    def __init__(self, darwinVersion, gccVersion): +    def __init__(self, toolChain):          super(Darwin_X86_LinkTool, self).__init__('collect2') -        assert isinstance(darwinVersion, tuple) and len(darwinVersion) == 3 -        assert isinstance(gccVersion, tuple) and len(gccVersion) == 3 -        self.darwinVersion = darwinVersion -        self.gccVersion = gccVersion - -    def getCollect2Path(self): -        return '/usr/libexec/gcc/%s/collect2' % self.getToolChainDir() -         -    def getToolChainDir(self): -        return 'i686-apple-darwin%d/%s' % (self.darwinVersion[0], -                                           '.'.join(map(str,self.gccVersion))) +        self.toolChain = toolChain      def getMacosxVersionMin(self): -        major,minor,minorminor = self.darwinVersion +        major,minor,minorminor = self.toolChain.darwinVersion          return '%d.%d.%d' % (10, major-4, minor)      def getMacosxVersionTuple(self, arglist): @@ -191,7 +183,7 @@ class Darwin_X86_LinkTool(Tool):              except:                  raise ArgumentError,"invalid version number %r" % version          else: -            major,minor,minorminor = self.darwinVersion +            major,minor,minorminor = self.toolChain.darwinVersion              return (10, major-4, minor)      def addDarwinArch(self, cmd_args, arch, arglist): @@ -511,7 +503,7 @@ class Darwin_X86_LinkTool(Tool):              cmd_args.append('-lgomp')          # FIXME: Derive these correctly. -        tcDir = self.getToolChainDir() +        tcDir = self.toolChain.getToolChainDir()          if arglist.getValue(arch) == 'x86_64':                          cmd_args.extend(["-L/usr/lib/gcc/%s/x86_64" % tcDir,                               "-L/usr/lib/gcc/%s/x86_64" % tcDir]) @@ -575,7 +567,8 @@ class Darwin_X86_LinkTool(Tool):          arglist.addAllArgs(cmd_args, arglist.parser.TOption)          arglist.addAllArgs(cmd_args, arglist.parser.FOption) -        jobs.addJob(Jobs.Command(self.getCollect2Path(), cmd_args)) +        jobs.addJob(Jobs.Command(self.toolChain.getProgramPath('collect2'),  +                                 cmd_args))          # FIXME: We need to add a dsymutil job here in some particular          # cases (basically whenever we have a c-family input we are | 

