]> git.ipfire.org Git - thirdparty/automake.git/commitdiff
compile: Distinguish various MinGW, MSYS, MSYS2 environments correctly.
authorBruno Haible <bruno@clisp.org>
Mon, 3 Feb 2025 22:16:42 +0000 (14:16 -0800)
committerKarl Berry <karl@freefriends.org>
Mon, 3 Feb 2025 22:16:42 +0000 (14:16 -0800)
* 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.

lib/ar-lib
lib/compile

index 85761fbf19afa4dd8625dbe57c279ff97df7f232..f85f879d852720d9f24a44e6d46935a13b97b114 100755 (executable)
@@ -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
            ;;
          *)
index e80b054a078eb545312de0bb20b9eb264bd1ec1a..fc738d3d9660fb09009b29421209a2ca3959145e 100755 (executable)
@@ -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/'`