| Index: build/linux/rewrite_dirs.py
|
| diff --git a/build/linux/rewrite_dirs.py b/build/linux/rewrite_dirs.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..30f22f0cd6178d551026bfa3be9e91db4156d2ab
|
| --- /dev/null
|
| +++ b/build/linux/rewrite_dirs.py
|
| @@ -0,0 +1,71 @@
|
| +#!/usr/bin/env python
|
| +# Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +"""Rewrites paths in -I, -L and other option to be relative to a sysroot."""
|
| +
|
| +import sys
|
| +import os
|
| +import optparse
|
| +
|
| +REWRITE_PREFIX = ['-I',
|
| + '-idirafter',
|
| + '-imacros',
|
| + '-imultilib',
|
| + '-include',
|
| + '-iprefix',
|
| + '-iquote',
|
| + '-isystem',
|
| + '-L']
|
| +
|
| +def RewritePath(path, opts):
|
| + """Rewrites a path by stripping the prefix and prepending the sysroot."""
|
| + sysroot = opts.sysroot
|
| + prefix = opts.strip_prefix
|
| + if os.path.isabs(path) and not path.startswith(sysroot):
|
| + if path.startswith(prefix):
|
| + path = path[len(prefix):]
|
| + path = path.lstrip('/')
|
| + return os.path.join(sysroot, path)
|
| + else:
|
| + return path
|
| +
|
| +
|
| +def RewriteLine(line, opts):
|
| + """Rewrites all the paths in recognized options."""
|
| + args = line.split()
|
| + count = len(args)
|
| + i = 0
|
| + while i < count:
|
| + for prefix in REWRITE_PREFIX:
|
| + # The option can be either in the form "-I /path/to/dir" or
|
| + # "-I/path/to/dir" so handle both.
|
| + if args[i] == prefix:
|
| + i += 1
|
| + try:
|
| + args[i] = RewritePath(args[i], opts)
|
| + except IndexError:
|
| + sys.stderr.write('Missing argument following %s\n' % prefix)
|
| + break
|
| + elif args[i].startswith(prefix):
|
| + args[i] = prefix + RewritePath(args[i][len(prefix):], opts)
|
| + i += 1
|
| +
|
| + return ' '.join(args)
|
| +
|
| +
|
| +def main(argv):
|
| + parser = optparse.OptionParser()
|
| + parser.add_option('-s', '--sysroot', default='/', help='sysroot to prepend')
|
| + parser.add_option('-p', '--strip-prefix', default='', help='prefix to strip')
|
| + opts, args = parser.parse_args(argv[1:])
|
| +
|
| + for line in sys.stdin.readlines():
|
| + line = RewriteLine(line.strip(), opts)
|
| + print line
|
| + return 0
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + sys.exit(main(sys.argv))
|
|
|