From: Bruno Haible Date: Mon, 3 Feb 2025 22:16:42 +0000 (-0800) Subject: compile: Distinguish various MinGW, MSYS, MSYS2 environments correctly. X-Git-Tag: v1.17.90~30 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5b9821deadcf3aaf846c9d043efced56f2e3b59c;p=thirdparty%2Fautomake.git compile: Distinguish various MinGW, MSYS, MSYS2 environments correctly. * lib/compile (func_file_conv): Use not only "uname -s", but also $MSYSTEM and the presence of cygpath, in order to distinguish the original MinGW and MSYS2. * lib/ar-lib (func_file_conv): Likewise. --- diff --git a/lib/ar-lib b/lib/ar-lib index 85761fbf1..f85f879d8 100755 --- a/lib/ar-lib +++ b/lib/ar-lib @@ -51,9 +51,20 @@ func_file_conv () # lazily determine how to convert abs files case `uname -s` in MINGW*) - file_conv=mingw + if test -n "$MSYSTEM" && (cygpath --version) >/dev/null 2>&1; then + # MSYS2 environment. + file_conv=cygwin + else + # Original MinGW environment. + file_conv=mingw + fi ;; - CYGWIN* | MSYS*) + MSYS*) + # Old MSYS environment, or MSYS2 with 32-bit MSYS2 shell. + file_conv=cygwin + ;; + CYGWIN*) + # Cygwin environment. file_conv=cygwin ;; *) diff --git a/lib/compile b/lib/compile index e80b054a0..fc738d3d9 100755 --- a/lib/compile +++ b/lib/compile @@ -37,11 +37,11 @@ IFS=" "" $nl" file_conv= -# func_file_conv build_file lazy +# func_file_conv build_file unneeded_conversions # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) LAZY, no conversion will -# take place. +# type is listed in (the comma separated) UNNEEDED_CONVERSIONS, no +# conversion will take place. func_file_conv () { file=$1 @@ -51,9 +51,20 @@ func_file_conv () # lazily determine how to convert abs files case `uname -s` in MINGW*) - file_conv=mingw + if test -n "$MSYSTEM" && (cygpath --version) >/dev/null 2>&1; then + # MSYS2 environment. + file_conv=cygwin + else + # Original MinGW environment. + file_conv=mingw + fi ;; - CYGWIN* | MSYS*) + MSYS*) + # Old MSYS environment, or MSYS2 with 32-bit MSYS2 shell. + file_conv=cygwin + ;; + CYGWIN*) + # Cygwin environment. file_conv=cygwin ;; *) @@ -63,6 +74,8 @@ func_file_conv () fi case $file_conv/,$2, in *,$file_conv,*) + # This is the optimization mentioned above: + # If UNNEEDED_CONVERSIONS contains $file_conv, don't convert. ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`