diff --git a/ChangeLog b/ChangeLog index 7f8fa8a3..eb7a2631 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2004-09-14 Albert Chin-A-Young + + Unfortunately, libtool has no way of telling if unrecognized + compiler flags need an argument or not, and can disect options and + pass parts through incorrectly. This changeset reverts both + 2004-09-06 Albert Chin-A-Young (topmost) and 2004-09-05 Albert + Chin-A-Young below, and recognises more options explicitly: + + * config/ltmain.in (func_mode_link): Pass through options needed + to compile in 64-bit mode with gcc, and the SGI, Sun, HP and IBM + compilers. + 2004-09-13 Gary V. Vaughan * m4/libtool.m4 (_LT_CMD_GLOBALS_SYMBOLS): Fix a typo I made when diff --git a/config/ltmain.in b/config/ltmain.in index c1c59f76..18ea0885 100644 --- a/config/ltmain.in +++ b/config/ltmain.in @@ -2963,6 +2963,26 @@ func_mode_link () continue ;; + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + -64|-mips[0-9]||-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need @@ -2973,10 +2993,6 @@ func_mode_link () arg="\"$arg\"" ;; esac - - if test -z "$prev"; then - compiler_flags="$compiler_flags $arg" - fi ;; *.$objext)