From: Per Bothner Date: Tue, 15 Mar 2005 14:51:57 +0000 (+0000) Subject: Allow special characters in source file names. Will break unless X-Git-Tag: release-1-5-16~29 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=959975198209e5ab131fc73d28156a1670e74b6c;p=thirdparty%2Flibtool.git Allow special characters in source file names. Will break unless `-o target' is also given, which must not contain special characters. En passant, fix source file quoting broken for cygwin/MSVC. --- diff --git a/ChangeLog b/ChangeLog index 99bdbdf03..3aa5d418a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2005-03-15 Per Bothner , + Ralf Wildenhues + + Allow special characters in source file names. Will break unless + `-o target' is also given, which must not contain special characters. + En passant, fix source file quoting broken for cygwin/MSVC. + + * ltmain.in (compile mode): Use new variable qsrcfile + for quoted source file name for compile $command. Fix missing + quotes for _c_o lockfile. + * NEWS: Update. + 2005-03-14 Ralf Wildenhues * libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [linux]: Remove MAIN_ diff --git a/NEWS b/NEWS index a16ec5fd8..e16b32607 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,8 @@ NEWS - list of user-visible changes between releases of GNU Libtool New in 1.5.15a: 2005-??-??; CVS version 1.5.15a, Libtool team: +* Allow shell special characters like `$' in source file names, but not + in object names, to enhance GCJ support. * Bug Fixes. New in 1.5.14: 2005-02-12; CVS version 1.5.13a, Libtool team: diff --git a/ltmain.in b/ltmain.in index 98a89916e..b3f4f7d67 100644 --- a/ltmain.in +++ b/ltmain.in @@ -757,6 +757,15 @@ if test -z "$show_help"; then esac done + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + qlibobj="\"$qlibobj\"" ;; + esac + if test "X$libobj" != "X$qlibobj"; then + $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + exit $EXIT_FAILURE + fi objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then @@ -829,12 +838,17 @@ compiler." $run $rm $removelist exit $EXIT_FAILURE fi - $echo $srcfile > "$lockfile" + $echo "$srcfile" > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + qsrcfile="\"$qsrcfile\"" ;; + esac $run $rm "$libobj" "${libobj}T" @@ -856,10 +870,10 @@ EOF fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then - command="$base_compile $srcfile $pic_flag" + command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code - command="$base_compile $srcfile" + command="$base_compile $qsrcfile" fi if test ! -d "${xdir}$objdir"; then @@ -939,9 +953,9 @@ EOF if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code - command="$base_compile $srcfile" + command="$base_compile $qsrcfile" else - command="$base_compile $srcfile $pic_flag" + command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then command="$command -o $obj"