| 123456789101112131415161718192021222324252627282930313233343536 |
- #!/usr/bin/env python
- #
- # Wrapper to run make and preprocess any paths in the output from MSYS/Cygwin paths
- # to Windows paths, for Eclipse
- from __future__ import print_function, division
- import sys, subprocess, os.path, re
- 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]).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()
|