On 15 Feb 2017 11:52, Bruno Haible wrote: > Some uses of AC_EGREP_CPP and AC_EGREP_HEADER probably assume that when > no continuation lines (backslash-newline) and no multiline macro invocations > are involved, each source line produces at most one output line. > > This is no longer the case with GCC >= 5. > > Example: > =============== foo.c =============== > #include <features.h> > #define FOO 2 > #define FOO_VERSION 12 > > Version FOO . FOO_VERSION > Version __GLIBC__ . __GLIBC_MINOR__ > > #define show(a,b) Version a . b > show(FOO,FOO_VERSION) > show(__GLIBC__,__GLIBC_MINOR__) > ===================================== > > With gcc-4.9.4: > $ gcc -E foo.c > [...] > > Version 2 . 12 > Version 2 . 23 > > > Version 2 . 12 > Version 2 . 23 > > With gcc-5.1.0 and newer: > $ gcc -E foo.c > [...] > > Version 2 . 12 > Version > # 6 "foo.c" 3 4 > 2 > # 6 "foo.c" > . > # 6 "foo.c" 3 4 > 23 > > > > # 9 "foo.c" > Version 2 . 12 > Version > # 10 "foo.c" 3 4 > 2 > # 10 "foo.c" > . > # 10 "foo.c" 3 4 > 23 > > > As you can see, here 1 source line produces up to 4 output lines (ignoring the > line number comment lines). Attempts to use 'grep Version' to find the values > of > __GLIBC__ and __GLIBC_VERSION__ don't work any more. > > Maybe the documentation of AC_EGREP_CPP and AC_EGREP_HEADER could include > a caveat about this?
seems like we be using -P with CPP when it's supported ? -mike
signature.asc
Description: Digital signature