Hi Sam, Bruno, On 12 Oct 2010, at 06:17, Bruno Haible wrote: >>> You probably renamed the inclusion guard (_GL_STDLIB_H) >>> appropriate (as recommended). >> >> does this "as recommended" mean that you are now more amenable to >> accepting my patch? >> http://clisp.cvs.sourceforge.net/viewvc/clisp/clisp/gnulib-tool.patch?view=log > > The fact that you have been testing this approach for a year and have reported > just this one problem with it gives it some trust. Also Bruce Korb's libposix > needs a similar treatment.
I was just homing in on a similar patch myself, after struggling to write a
post-install hook sed script that will rewrite the include guards without
accidentally catching and rewriting other random _GL_ prefixed symbols.
This patch (or similar) would certainly make libposix much cleaner too.
> But I'm wondering whether we might see different behaviours when using
> compilers
> which support #include_next and other compilers which don't. When you have two
> gnulib-generated files
>
> main/gllib/stdlib.h
> extra/gllib/stdlib.h
>
> and the compiler options include "-Iextra/gllib -Imain/gllib", then
> with compilers of the first kind the program will include
>
> extra/gllib/stdlib.h -> main/gllib/stdlib.h -> /usr/include/stdlib.h
>
> whereas with compilers of the second kind the program will include
>
> extra/gllib/stdlib.h -> /usr/include/stdlib.h
>
> Such differences would be very hard to diagnose when they lead to problems.
> Any ideas?
There are only two options to make both cases behave the same -
1. always hardcode the full path to the system header, even on machines
with include_next support;
2. teach gnulib to generate full include paths to another gnulib directory
under some circumstances (i.e. when importing to extra/glib, set an
option to write include paths that point to main/gllib.
(2) seems fragile and is more difficult to implement, so the general solution
must be to not use include_next.
Cheers,
--
Gary V. Vaughan ([email protected])
PGP.sig
Description: This is a digitally signed message part
