On Thu, Apr 27, 2023 at 11:28:36AM +0100, Daniel P. Berrangé wrote: > On Thu, Apr 27, 2023 at 12:00:59PM +0200, Andrea Bolognani wrote: > > On Thu, Apr 27, 2023 at 11:50:05AM +0200, Michal Prívozník wrote: > > > But leaving meson aside, shouldn't we just use check_header() for every > > > header file then? I mean, this fixes this particular instance of the > > > problem, but can't we hit it again with say ifaddrs.h or any other > > > header file on the list? > > > > We could. The Meson documentation recommends not doing this, as > > check_header() is (understandably) slower than has_header(). > > > > I haven't tried to see how much slower we're actually talking... > > Maybe for the 20-ish headers that we care about, it wouldn't make a > > measurable difference? Especially since the results of the check are > > cached between Meson runs. > > I tried testing: > > diff --git a/meson.build b/meson.build > index c15003ce02..3ae02ce4df 100644 > --- a/meson.build > +++ b/meson.build > @@ -633,14 +633,14 @@ if host_machine.system() == 'freebsd' > endif > > foreach name : headers > - if cc.has_header(name) > + if cc.check_header(name) > conf.set('WITH_@0@'.format(name.underscorify().to_upper()), 1) > endif > endforeach > > # check for kernel header required by src/util/virnetdevbridge.c > if host_machine.system() == 'linux' > - if not cc.has_header('linux/sockios.h') > + if not cc.check_header('linux/sockios.h') > error('You must install kernel-headers in order to compile libvirt with > QEMU or LXC support') > endif > endif > > > and could not measure any deterministic change in execution > time before/after
I've just tried the same on a 4th generation low-voltage laptop CPU, with a patch that goes further and completely replaces all uses of has_header() with check_header(), and haven't been able to detect any meaningful change either. Let's go with the simpler and more reliable approach then :) -- Andrea Bolognani / Red Hat / Virtualization