[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: tag inference broken?
From: |
Scott James Remnant |
Subject: |
Re: tag inference broken? |
Date: |
Sun, 07 Dec 2003 19:04:46 +0000 |
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 <address@hidden>
+
+ * 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