tests: avoid spurious assertion failure in test-float.c on ppc64
[gnulib.git] / build-aux / compile
index bdb4ccb..bac481c 100755 (executable)
@@ -1,7 +1,7 @@
 #! /bin/sh
 # Wrapper for compilers which do not understand `-c -o'.
 
-scriptversion=2010-08-07.06; # UTC
+scriptversion=2010-11-15.09; # UTC
 
 # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010 Free Software
 # Foundation, Inc.
@@ -38,9 +38,11 @@ IFS=" ""     $nl"
 
 file_conv=
 
-# func_file_conv build_file
+# func_file_conv build_file lazy
 # Convert a $build file to $host form and store it in $file
-# Currently only supports Win32 hosts.
+# Currently only supports Win32 hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
 func_file_conv ()
 {
   file=$1
@@ -60,14 +62,16 @@ func_file_conv ()
            ;;
        esac
       fi
-      case $file_conv in
-       mingw)
+      case $file_conv/,$2, in
+       *,$file_conv,*)
+         ;;
+       mingw/*)
          file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
          ;;
-       cygwin)
+       cygwin/*)
          file=`cygpath -m "$file" || echo "$file"`
          ;;
-       wine)
+       wine/*)
          file=`winepath -w "$file" || echo "$file"`
          ;;
       esac
@@ -76,10 +80,12 @@ func_file_conv ()
 }
 
 # func_cl_wrapper cl arg...
-# Adjust compile command to suite cl
+# Adjust compile command to suit cl
 func_cl_wrapper ()
 {
   # Assume a capable shell
+  lib_path=
+  shared=:
   linker_opts=
   for arg
   do
@@ -104,18 +110,46 @@ func_cl_wrapper ()
          esac
          ;;
        -I*)
-         func_file_conv "${1#-I}"
+         func_file_conv "${1#-I}" mingw
          set x "$@" -I"$file"
          shift
          ;;
        -l*)
-         set x "$@" "${1#-l}.lib"
+         lib=${1#-l}
+         found=no
+         save_IFS=$IFS
+         IFS=';'
+         for dir in $lib_path $LIB
+         do
+           IFS=$save_IFS
+           if $shared && test -f "$dir/$lib.dll.lib"; then
+             found=yes
+             set x "$@" "$dir/$lib.dll.lib"
+             break
+           fi
+           if test -f "$dir/$lib.lib"; then
+             found=yes
+             set x "$@" "$dir/$lib.lib"
+             break
+           fi
+         done
+         IFS=$save_IFS
+
+         test "$found" != yes && set x "$@" "$lib.lib"
          shift
          ;;
        -L*)
          func_file_conv "${1#-L}"
+         if test -z "$lib_path"; then
+           lib_path=$file
+         else
+           lib_path="$lib_path;$file"
+         fi
          linker_opts="$linker_opts -LIBPATH:$file"
          ;;
+       -static)
+         shared=false
+         ;;
        -Wl,*)
          arg=${1#-Wl,}
          save_ifs="$IFS"; IFS=','
@@ -129,6 +163,20 @@ func_cl_wrapper ()
          eat=1
          linker_opts="$linker_opts $2"
          ;;
+       -*)
+         set x "$@" "$1"
+         shift
+         ;;
+       *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+         func_file_conv "$1"
+         set x "$@" -Tp"$file"
+         shift
+         ;;
+       *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+         func_file_conv "$1" mingw
+         set x "$@" "$file"
+         shift
+         ;;
        *)
          set x "$@" "$1"
          shift
@@ -144,6 +192,8 @@ func_cl_wrapper ()
   exit 1
 }
 
+eat=
+
 case $1 in
   '')
      echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
@@ -175,7 +225,6 @@ esac
 
 ofile=
 cfile=
-eat=
 
 for arg
 do