#!/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().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()

#!/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()

Fix eclipse build: “UnicodeDecodeError: 'ascii' codec can't decode byte”