| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #!/usr/bin/env python
- #
- # Wrapper to run make and preprocess any paths in the output from MSYS Unix-style paths
- # to Windows paths, for Eclipse
- from __future__ import division, print_function
- import os.path
- import re
- import subprocess
- import sys
- UNIX_PATH_RE = re.compile(r'(/[^ \'"]+)+')
- paths = {}
- def check_path(path):
- try:
- return paths[path]
- except KeyError:
- pass
- paths[path] = path # cache as failed, replace with success if it works
- try:
- winpath = subprocess.check_output(['cygpath', '-w', path]).decode('utf-8').strip()
- except subprocess.CalledProcessError:
- return path # something went wrong running cygpath, assume this is not a path!
- if not os.path.exists(winpath):
- return path # not actually a valid path
- winpath = winpath.replace('\\', '/') # make consistent with forward-slashes used elsewhere
- paths[path] = winpath
- return winpath
- def main():
- print("Running make in '%s'" % check_path(os.getcwd()))
- make = subprocess.Popen(['make'] + sys.argv[1:] + ['BATCH_BUILD=1'], stdout=subprocess.PIPE)
- for line in iter(make.stdout.readline, ''):
- line = re.sub(UNIX_PATH_RE, lambda m: check_path(m.group(0)), line)
- print(line.rstrip())
- sys.exit(make.wait())
- if __name__ == '__main__':
- main()
|