ccc: Implement file & path searching.
- Toolchain is responsible for providing list of prefixes to search.
- Implement -print-file-name=xxx and -print-prog-name=xxx driver options.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62659 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/ccc/ccclib/ToolChain.py b/tools/ccc/ccclib/ToolChain.py
index ee244d7..20582a2 100644
--- a/tools/ccc/ccclib/ToolChain.py
+++ b/tools/ccc/ccclib/ToolChain.py
@@ -1,3 +1,5 @@
+import os
+
import Arguments
import Phases
import Tools
@@ -8,8 +10,18 @@
class ToolChain(object):
"""ToolChain - Provide mappings of Actions to Tools."""
- def __init__(self, driver):
+ def __init__(self, driver,
+ filePathPrefixes=[],
+ programPathPrefixes=[]):
self.driver = driver
+ self.filePathPrefixes = list(filePathPrefixes)
+ self.programPathPrefixes = list(programPathPrefixes)
+
+ def getFilePath(self, name):
+ return self.driver.getFilePath(name, self)
+
+ def getProgramPath(self, name):
+ return self.driver.getProgramPath(name, self)
def selectTool(self, action):
"""selectTool - Return a Tool instance to use for handling
@@ -63,14 +75,25 @@
Phases.LipoPhase : Tools.LipoTool(),
}
+ self.filePathPrefixes.append(os.path.join(self.driver.driverDir,
+ '../lib/gcc',
+ self.getToolChainDir()))
+ self.filePathPrefixes.append(os.path.join(self.driver.driverDir,
+ '/usr/lib/gcc',
+ self.getToolChainDir()))
+
+ self.programPathPrefixes.append(os.path.join(self.driver.driverDir,
+ '../libexec/gcc',
+ self.getToolChainDir()))
+ self.programPathPrefixes.append(os.path.join(self.driver.driverDir,
+ '/usr/libexec/gcc',
+ self.getToolChainDir()))
+ self.programPathPrefixes.append(self.driver.driverDir)
+
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 getMacosxVersionMin(self):
major,minor,minorminor = self.darwinVersion
return '%d.%d.%d' % (10, major-4, minor)