X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=build-aux%2Fcompile;h=bac481cdc7d1b9846caffc71230b8f4ae728a89f;hb=7efb4d7a2addc2b151b5b0bf45b0c2716cee9901;hp=bdb4ccbb518a5da6777c3715e49d87a31ddfbd04;hpb=fba7fdb1432af9bf0abece1ec8078ed8ae3af886;p=gnulib.git diff --git a/build-aux/compile b/build-aux/compile index bdb4ccbb5..bac481cdc 100755 --- a/build-aux/compile +++ b/build-aux/compile @@ -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