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 | |
| parent | 17bbcfd5a0c9c615062288ee5d6cfc427fe0cec7 (diff) | |
| download | bcm5719-llvm-e42e520a57a25fa0b213c84ad5c04c32dde97a7b.tar.gz bcm5719-llvm-e42e520a57a25fa0b213c84ad5c04c32dde97a7b.zip | |
ccc: (Darwin) Move path resolution into ToolChain.
llvm-svn: 62082
| -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 |

