[cfe-commits] r62082 - in /cfe/trunk/tools/ccc/ccclib: ToolChain.py Tools.py
Daniel Dunbar
daniel at zuster.org
Sun Jan 11 23:45:49 PST 2009
Author: ddunbar
Date: Mon Jan 12 01:45:49 2009
New Revision: 62082
URL: http://llvm.org/viewvc/llvm-project?rev=62082&view=rev
Log:
ccc: (Darwin) Move path resolution into ToolChain.
Modified:
cfe/trunk/tools/ccc/ccclib/ToolChain.py
cfe/trunk/tools/ccc/ccclib/Tools.py
Modified: cfe/trunk/tools/ccc/ccclib/ToolChain.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/ToolChain.py?rev=62082&r1=62081&r2=62082&view=diff
==============================================================================
--- cfe/trunk/tools/ccc/ccclib/ToolChain.py (original)
+++ cfe/trunk/tools/ccc/ccclib/ToolChain.py Mon Jan 12 01:45:49 2009
@@ -17,16 +17,28 @@
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__]
Modified: cfe/trunk/tools/ccc/ccclib/Tools.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/Tools.py?rev=62082&r1=62081&r2=62082&view=diff
==============================================================================
--- cfe/trunk/tools/ccc/ccclib/Tools.py (original)
+++ cfe/trunk/tools/ccc/ccclib/Tools.py Mon Jan 12 01:45:49 2009
@@ -99,10 +99,11 @@
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 @@
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 @@
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 @@
# 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 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 @@
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 @@
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 @@
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
More information about the cfe-commits
mailing list