On Sat, 2003-12-06 at 15:14, Peter O'Gorman wrote: > Albert Chin wrote: > | On Sat, Dec 06, 2003 at 10:57:52PM +0900, Peter O'Gorman wrote: > | > |>Okay, I must be stupid, the tag inference goes like this: > |>case $base_compile in > |> > | Before the case, what is the output of: > | echo .$CC. > > And things begin to make a little more sense, with echo .$CC. and echo > .$base_compile. before the case statement in both compile and link > modes, I get the following output # comments added: > > .gcc -arch ppc -arch i386. # This is .$CC. > .gcc. # And .$base_compile. > libtool: link: unable to infer tagged configuration > libtool: link: specify a tag with `--tag' > make[1]: *** [libltdl.la] Error 1 > make: *** [all] Error 2 > > Looks like it is simply infering too early in link mode. > Yeah, my last patch moved the code to before the rest of the argument parsing to make -shared, -static and -all-static work with a tagged configuration.
Here's a patch you might want to try; it moves the tagged config inference to beneath the argument parsing again. I also had to move the handling of those three arguments to beneath it as well, even though for some reason they were separate (I couldn't find a reason for this anymore...) Anyway, this probably breaks everything, but try it anyway :-) Scott -- Have you ever, ever felt like this? Had strange things happen? Are you going round the twist?
diff -ruNp libtool-CVS~/ChangeLog libtool-CVS/ChangeLog
--- libtool-CVS~/ChangeLog 2003-11-30 17:13:29.000000000 +0000
+++ libtool-CVS/ChangeLog 2003-12-07 18:59:19.000000000 +0000
@@ -0,0 +1,7 @@
+2003-12-07 Scott James Remnant <[EMAIL PROTECTED]>
+
+ * ltmain.in: Move the code to infer the tagged configuration in
+ link mode until after the argument parsing again, so $base_compile
+ contains the complete command line. Move the code to handle -shared,
+ -static and -all-static until after this.
+
diff -ruNp libtool-CVS~/ltmain.in libtool-CVS/ltmain.in
--- libtool-CVS~/ltmain.in 2003-11-26 15:20:42.000000000 +0000
+++ libtool-CVS/ltmain.in 2003-12-07 18:54:43.000000000 +0000
@@ -900,87 +900,7 @@ EOF
thread_safe=no
vinfo=
vinfo_number=no
-
- # Infer tagged configuration to use if any are available and
- # if one wasn't chosen via the "--tag" command line option.
- # Only attempt this if the compiler in the base link
- # command doesn't match the default compiler.
- if test -n "$available_tags" && test -z "$tagname"; then
- case "$base_compile " in
- # Blanks in the command may have been stripped by the calling shell,
- # but not from the CC environment variable when configure was run.
- "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) ;;
- # Blanks at the start of $base_compile will cause this to fail
- # if we don't check for them as well.
- *)
- for z in $available_tags; do
- if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
- # Evaluate the configuration.
- eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
- case "$base_compile " in
- "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*)
- # The compiler in $compile_command matches
- # the one in the tagged configuration.
- # Assume this is the tagged configuration we want.
- tagname=$z
- break
- ;;
- esac
- fi
- done
- # If $tagname still isn't set, then no tagged configuration
- # was found and let the user know that the "--tag" command
- # line option must be used.
- if test -z "$tagname"; then
- $echo "$modename: unable to infer tagged configuration"
- $echo "$modename: specify a tag with \`--tag'" 1>&2
- exit 1
-# else
-# $echo "$modename: using $tagname tagged configuration"
- fi
- ;;
- esac
- fi
-
- # We need to know -static, to get the right output filenames.
- for arg
- do
- case $arg in
- -shared)
- if test "$build_libtool_libs" != yes; then
- $echo "$modename: can not build a shared library" 1>&2
- $echo "Fatal configuration error." 1>&2
- exit 1
- fi
- build_old_libs=no
- break
- ;;
- -all-static | -static)
- if test "X$arg" = "X-all-static"; then
- if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
- $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
- fi
- if test -n "$link_static_flag"; then
- dlopen_self=$dlopen_self_static
- # See comment for -static flag below, for more details.
- compile_command="$compile_command $link_static_flag"
- finalize_command="$finalize_command $link_static_flag"
- fi
- else
- if test -z "$pic_flag" && test -n "$link_static_flag"; then
- dlopen_self=$dlopen_self_static
- fi
- fi
- build_libtool_libs=no
- build_old_libs=yes
- prefer_static_libs=yes
- break
- ;;
- esac
- done
-
- # See if our shared archives depend on static archives.
- test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+ later=
# Go through the arguments, transforming them on the way.
while test "$#" -gt 0; do
@@ -1247,7 +1167,7 @@ EOF
case $arg in
-all-static)
- # The effects of -all-static are defined in a previous loop.
+ later="$later $arg"
continue
;;
@@ -1473,16 +1393,12 @@ EOF
;;
-shared)
- # The effects of -shared are defined in a previous loop.
+ later="$later $arg"
continue
;;
-static)
- # The effects of -static are defined in a previous loop.
- # We used to do the same as -all-static on platforms that
- # didn't have a PIC flag, but the assumption that the effects
- # would be equivalent was wrong. It would break on at least
- # Digital Unix and AIX.
+ later="$later $arg"
continue
;;
@@ -1718,6 +1634,85 @@ EOF
exit 1
fi
+ # Infer tagged configuration to use if any are available and
+ # if one wasn't chosen via the "--tag" command line option.
+ # Only attempt this if the compiler in the base link
+ # command doesn't match the default compiler.
+ if test -n "$available_tags" && test -z "$tagname"; then
+ case $base_compile in
+ # Blanks in the command may have been stripped by the calling shell,
+ # but not from the CC environment variable when configure was run.
+ "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) ;;
+ # Blanks at the start of $base_compile will cause this to fail
+ # if we don't check for them as well.
+ *)
+ for z in $available_tags; do
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
+ case $base_compile in
+ "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*)
+ # The compiler in $compile_command matches
+ # the one in the tagged configuration.
+ # Assume this is the tagged configuration we want.
+ tagname=$z
+ break
+ ;;
+ esac
+ fi
+ done
+ # If $tagname still isn't set, then no tagged configuration
+ # was found and let the user know that the "--tag" command
+ # line option must be used.
+ if test -z "$tagname"; then
+ $echo "$modename: unable to infer tagged configuration"
+ $echo "$modename: specify a tag with \`--tag'" 1>&2
+ exit 1
+# else
+# $echo "$modename: using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+
+ for arg in $later; do
+ case $arg in
+ -shared)
+ if test "$build_libtool_libs" != yes; then
+ $echo "$modename: can not build a shared library" 1>&2
+ $echo "Fatal configuration error." 1>&2
+ exit 1
+ fi
+ build_old_libs=no
+ continue
+ ;;
+ -all-static | -static)
+ if test "X$arg" = "X-all-static"; then
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ # See comment for -static flag below, for more details.
+ compile_command="$compile_command $link_static_flag"
+ finalize_command="$finalize_command $link_static_flag"
+ fi
+ else
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ fi
+ build_libtool_libs=no
+ build_old_libs=yes
+ prefer_static_libs=yes
+ continue
+ ;;
+ esac
+ done
+
+ # See if our shared archives depend on static archives.
+ test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
eval arg=\"$export_dynamic_flag_spec\"
compile_command="$compile_command $arg"
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Libtool mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/libtool
