diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-01-21 02:03:52 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-01-21 02:03:52 +0000 |
commit | 768be1c162b8b22b625dac81b36a0a00ba4faf04 (patch) | |
tree | 1cd862701a58975ee2824c8a0d97384bd7bff141 /tools/ccc/ccclib/Driver.py | |
parent | bbd1fa24fc939819079ca2c104b05dcfefe166b0 (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.py | 66 |
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) |