Hi Paul,

> Wouldn't it be simpler just to have
> 
> @PRAGMA_SYSTEM_HEADER@
> 
> in the .in.h file, and then have that expand into
> all the relevant pragmas, including #pragma COLUMNS?

This would imply either removing the #if __GNUC__ >= 3 guard,
or using a multi-line expansion of @pragma_system_hea...@.

1) Why removing #if __GNUC__ >= 3 guard does not work:
Recall that this #if exists so that the headers are as standalone as
possible, with the goal that
  - Packages can install these headers in public locations.
    libunistring does this, I think some of Simon's packages as well.
  - Large packages can have parts compiled by GCC and other parts by a non-GCC
    compiler.

In the second use-case, when the library gets built and installed with cc,
and then gets used with gcc. @PRAGMA_SYSTEM_HEADER@ would expand to empty in
the file, and then gcc would produce warnings (in -pedantic mode, IIRC)
because the #pragma is absent.

In the first use-case there is actually no problem (see the generation of
unistring/stdint.h in libunistring/lib/Makefile.am for the reason), but
we would be on very thin ice here.

2) Why a multi-line expansion of @PRAGMA_SYSTEM_HEADER@ does not work:
I explained this in
<http://lists.gnu.org/archive/html/bug-gnulib/2008-10/msg00296.html>.

In summary, it's more robust to use a 4-line idiom here than a one-liner.

Bruno

Reply via email to