Re: libintl breakage

Daniel Jacobowitz
2006-07-05T12:48:57Z

On Tue, Jul 04, 2006 at 10:16:29PM +0200, Mark Kettenis wrote:
> Currently libbfd fails to build on OpenBSD systems:
>
> gcc -DHAVE_CONFIG_H -I. -I../../../src/gdb/bfd -I. -DNETBSD_CORE -I. -I../../../src/gdb/bfd -I../../../src/gdb/bfd/../include -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror -g -O2 -c ../../../src/gdb/bfd/archive.c -o archive.o
> In file included from ../../../src/gdb/bfd/archive.c:133:
> ../../../src/gdb/bfd/sysdep.h:172: libintl.h: No such file or directory
>
> The problem here seems to be that the system has the gettext packages
> installed in /usr/local, but the system compiler doesn't search
> /usr/local by default.
>
> Now for some reason the configure script uses -I/usr/local/include and
> -L/usr/local/include, so it finds the installed libintl and decides
> not to build the bundled gettext in intl/. However when compiling
> bfd/ (and presumably other subdirectories) these options are omitted.
> Somehow the logic in gettext-sister.m5, gettext.m4 and/or
> lib-prefix.m4 seems to be flawed.

It looks to me like what happened is that we didn't record some piece
of information in the data loaded by gettext-sister.m4 that it thought
we did. What variables in the Makefile end up with
-I/usr/local/include and -L/usr/local/include? It really looks like it
ought to be INCINTL and LIBINTL, which we've already got covered. BFD
does use INCINTL in $(INCLUDES) already for instance.

> A way around this is to configure with --prefix set to something
> that's not /usr/local. Then the bundled intl is built. Unfortunately
> it always gets rebuilt, since stamp-h1 is never created.

This should be easy to fix.

> All in all, it seems that the recent changes to use the new gettext
> were never properly tested :(.

I beg your pardon? When I switched everything to use gettext-sister.m4
I tested on three platforms and it's been tested on at least a dozen
more by now; and no one reported this breakage in over a month.

--
Daniel Jacobowitz
CodeSourcery