aboutsummaryrefslogtreecommitdiff
path: root/tools/ccc/ccclib/Driver.py
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-01-21 02:03:52 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-01-21 02:03:52 +0000
commit768be1c162b8b22b625dac81b36a0a00ba4faf04 (patch)
tree1cd862701a58975ee2824c8a0d97384bd7bff141 /tools/ccc/ccclib/Driver.py
parentbbd1fa24fc939819079ca2c104b05dcfefe166b0 (diff)
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
Diffstat (limited to 'tools/ccc/ccclib/Driver.py')
-rw-r--r--tools/ccc/ccclib/Driver.py66
1 files changed, 33 insertions, 33 deletions
diff --git a/tools/ccc/ccclib/Driver.py b/tools/ccc/ccclib/Driver.py
index de4596bf2c..7f6082d953 100644
--- a/tools/ccc/ccclib/Driver.py
+++ b/tools/ccc/ccclib/Driver.py
@@ -78,6 +78,24 @@ class Driver(object):
###
+ def getFilePath(self, name, toolChain=None):
+ tc = toolChain or self.toolChain
+ for p in tc.filePathPrefixes:
+ path = os.path.join(p, name)
+ if os.path.exists(path):
+ return path
+ return name
+
+ def getProgramPath(self, name, toolChain=None):
+ tc = toolChain or self.toolChain
+ for p in tc.programPathPrefixes:
+ path = os.path.join(p, name)
+ if os.path.exists(path):
+ return path
+ return name
+
+ ###
+
def run(self, argv):
# FIXME: Things to support from environment: GCC_EXEC_PREFIX,
# COMPILER_PATH, LIBRARY_PATH, LPATH, CC_PRINT_OPTIONS,
@@ -287,50 +305,32 @@ class Driver(object):
# FIXME: Do we want to report "argument unused" type errors in the
# presence of things like -dumpmachine and -print-search-dirs?
# Probably not.
- arg = args.getLastArg(self.parser.dumpmachineOption)
+ arg = (args.getLastArg(self.parser.dumpmachineOption) or
+ args.getLastArg(self.parser.dumpversionOption) or
+ args.getLastArg(self.parser.printSearchDirsOption))
if arg:
- print 'FIXME: %s' % arg.opt.name
- sys.exit(1)
+ raise NotImplementedError('%s unsupported' % arg.opt.name)
- arg = args.getLastArg(self.parser.dumpspecsOption)
+ arg = (args.getLastArg(self.parser.dumpspecsOption) or
+ args.getLastArg(self.parser.printMultiDirectoryOption) or
+ args.getLastArg(self.parser.printMultiLibOption))
if arg:
- print 'FIXME: %s' % arg.opt.name
- sys.exit(1)
-
- arg = args.getLastArg(self.parser.dumpversionOption)
- if arg:
- print 'FIXME: %s' % arg.opt.name
- sys.exit(1)
+ raise Arguments.InvalidArgumentsError('%s unsupported by this driver' % arg.opt.name)
arg = args.getLastArg(self.parser.printFileNameOption)
if arg:
- print 'FIXME: %s' % arg.opt.name
- sys.exit(1)
-
- arg = args.getLastArg(self.parser.printMultiDirectoryOption)
- if arg:
- print 'FIXME: %s' % arg.opt.name
- sys.exit(1)
-
- arg = args.getLastArg(self.parser.printMultiLibOption)
- if arg:
- print 'FIXME: %s' % arg.opt.name
- sys.exit(1)
+ print self.getFilePath(args.getValue(arg))
+ sys.exit(0)
arg = args.getLastArg(self.parser.printProgNameOption)
if arg:
- print 'FIXME: %s' % arg.opt.name
- sys.exit(1)
-
- arg = args.getLastArg(self.parser.printLibgccFilenameOption)
- if arg:
- print 'FIXME: %s' % arg.opt.name
- sys.exit(1)
+ print self.getProgramPath(args.getValue(arg))
+ sys.exit(0)
- arg = args.getLastArg(self.parser.printSearchDirsOption)
+ arg = args.getLastArg(self.parser.printLibgccFileNameOption)
if arg:
- print 'FIXME: %s' % arg.opt.name
- sys.exit(1)
+ print self.getFilePath('libgcc.a')
+ sys.exit(0)
def buildNormalPipeline(self, args):
hasAnalyze = args.getLastArg(self.parser.analyzeOption)