[PATCH] meson: Check for stdarg.h

Roman Bogorodskiy bogorodskiy at gmail.com
Thu Sep 3 02:36:51 UTC 2020


  Ján Tomko wrote:

> On a Wednesday in 2020, Daniel P. Berrangé wrote:
> >On Wed, Sep 02, 2020 at 02:07:54PM +0200, Michal Privoznik wrote:
> >> As it turns out, one of my previous commits in which I removed
> >> checking for stdarg.h was too aggressive. Long story short, the
> >> readline public headers rely on stdarg.h and what is worse, they
> >> expect us to declare the autotools style of macro (HAVE_STDARG_H)
> >> if the header file exists. If we don't do it then compiling virsh
> >> on macos fails.
> >>
> >> See 9ea3424a178 for more info.
> >
> >Ewww....
> >
> >Deprecated in 2000,  removed in 2013, then immediately readded to
> >"fix" apps which still relied on K&R C with no function prototypes.
> >
> >The readline maintainer is more forgiving of ancient application code
> >than I would be :-) 30 years since arrival of ANSI C is enough time
> >to update code to use function prototypes, especially if you want to
> >build against a readline library released in 2020, as opposed to the
> >old version released years ago.
> >
> >>
> >> Fixes: 85808b73846f93d656b4c81b6ebddd2dc3881bf6
> >> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> >> ---
> >>  meson.build | 8 ++++++--
> >>  1 file changed, 6 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/meson.build b/meson.build
> >> index 1aad385ad1..98f7545495 100644
> >> --- a/meson.build
> >> +++ b/meson.build
> >> @@ -1333,8 +1333,12 @@ if readline_dep.found()
> >>      endif
> >>    endif
> >>
> >> -  # We need this to avoid compilation issues with modern compilers.
> >> -  # See 9ea3424a178 for a more detailed explanation
> >> +  # We need both of these hacks to avoid compilation issues with modern
> >> +  # compilers. See 9ea3424a178 for a more detailed explanation.
> >> +  if cc.has_header('stdarg.h')
> >> +    conf.set('HAVE_STDARG_H', 1)
> >> +  endif
> >
> >Do we have any platforms which lack stdarg.h ? eg can be just add
> >"#define HAVE_STDARG_H 1" unconditionally in the virsh code before
> >it includes the readline headers ?
> >
> 
> It's part of the C99 standard:
> https://pubs.opengroup.org/onlinepubs/009695399/basedefs/stdarg.h.html
> 
> (but I'm still confused why this builds on other platforms even though
>   HAVE_STDARG_H is not defined anywhere)
> 
> Jano
> 

It fails to build on FreeBSD as well:

In file included from ../tools/vsh.c:33:
/usr/local/include/readline/readline.h:398:23: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
extern int rl_message ();
                      ^
                       void
1 error generated.


Roman Bogorodskiy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20200903/c2f9ba39/attachment-0001.sig>


More information about the libvir-list mailing list