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:
> On 4/27/23 11:41, Andrea Bolognani wrote:
> > +# headers for which we need to check actual usability. in most
> > +# cases, checking for presence is enough (and it's way faster)
> > +check_headers = [
> > + 'linux/kvm.h',
> > +]
> > +
> > +foreach name : check_headers
> > + if cc.check_header(name)
> > + conf.set('WITH_@0(a)'.format(name.underscorify().to_upper()), 1)
> > + endif
> > +endforeach
>
> One could argue, that the semantics of has_header() is broken then. What
> good is there to check if the host has a header file when compiler
> rejects it subsequently?
>
> 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(a)'.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
With regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|