The following simple Makefile:
all: echo a\=b "c" echo a\=b c
should give the following output when started with make:
echo a\=b "c" a=b c echo a\=b c a=b c
but on MSYS and MSYS2 it gives:
echo a\=b "c" a=b c echo a\=b c a\=b c
make passes an additional "\" as arg to the started program (not only to echo). The "\=" sequence in the last line should get un-escaped to a literal "=", but this is curiously only done when some argument is passed to the command using double quotation marks.
If the echo commands above is typed directly in the msys(2)-bash, then the "\=" sequence is correctly interpreted as a "=". But not within a Makefile.
The issue does not occur in Cygwin and not on Linux.
Test system was Windows-7 with MSYS binaries supplied here: http://downloads.sourceforge.net/mingw/
The issue is equally present in the following MSYS2 version: http://sourceforge.net/projects/msys2/files/Alpha-versions/64-bit/x64-msys2-20131022.tar.xz with the following program versions:
$ uname -a MSYS_NT-6.1 C1255vm 2.0.0(0.270/5/3) 2013-10-18 22:41 x86_64 Msys $ make -v GNU Make 4.0.90 Built for x86_64-pc-msys $ sh --version GNU bash, version 4.2.45(2)-release (x86_64-pc-msys)