[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] meson: fix botched compile check conversions
From: |
Daniel P . Berrangé |
Subject: |
Re: [PATCH] meson: fix botched compile check conversions |
Date: |
Tue, 16 Nov 2021 11:13:50 +0000 |
User-agent: |
Mutt/2.0.7 (2021-05-04) |
On Tue, Nov 16, 2021 at 10:38:34AM +0100, Paolo Bonzini wrote:
> Fix a bunch of incorrect conversions from configure to Meson, which result
> in different outcomes with --extra-cflags=-Werror.
>
> pthread_setname_np needs "#define _GNU_SOURCE" on Linux (which I am using
> also for the non-Linux check, so that it correctly fails with an error
> about having too few parameters).
>
> Fix struct checks to use has_type instead of has_symbol, and "#define
> _GNU_SOURCE" too in the case of struct mmsghdr.
Ok, so relies on fact that passing an incorrect number of arguments
is a fatal error, when function prototypes are available, even
without -Werror being set.
Side note, GCC looks to be trying to make explicit function prototypes
mandatory at last
https://linuxplumbersconf.org/event/11/contributions/1014/
> Remove an apostrophe that ended up at the end of a #include line.
>
> Reported-by: Peter Maydell <peter.maydell@linaro.org>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
And the setname_np stuff, I've tested on Fedora 34 and FreebSD 12.2
Tested-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
> meson.build | 24 +++++++++++++++---------
> 1 file changed, 15 insertions(+), 9 deletions(-)
>
> diff --git a/meson.build b/meson.build
> index 2ece4fe088..93a5e50a16 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1547,8 +1547,6 @@ config_host_data.set('CONFIG_INOTIFY',
> cc.has_header_symbol('sys/inotify.h', 'inotify_init'))
> config_host_data.set('CONFIG_INOTIFY1',
> cc.has_header_symbol('sys/inotify.h', 'inotify_init1'))
> -config_host_data.set('CONFIG_IOVEC',
> - cc.has_header_symbol('sys/uio.h', 'struct iovec'))
> config_host_data.set('CONFIG_MACHINE_BSWAP_H',
> cc.has_header_symbol('machine/bswap.h', 'bswap32',
> prefix: '''#include <sys/endian.h>
> @@ -1561,8 +1559,6 @@ config_host_data.set('CONFIG_SYSMACROS',
> cc.has_header_symbol('sys/sysmacros.h', 'makedev'))
> config_host_data.set('HAVE_OPTRESET',
> cc.has_header_symbol('getopt.h', 'optreset'))
> -config_host_data.set('HAVE_UTMPX',
> - cc.has_header_symbol('utmpx.h', 'struct utmpx'))
> config_host_data.set('HAVE_IPPROTO_MPTCP',
> cc.has_header_symbol('netinet/in.h', 'IPPROTO_MPTCP'))
>
> @@ -1574,6 +1570,14 @@ config_host_data.set('HAVE_STRUCT_STAT_ST_ATIM',
> cc.has_member('struct stat', 'st_atim',
> prefix: '#include <sys/stat.h>'))
>
> +# has_type
> +config_host_data.set('CONFIG_IOVEC',
> + cc.has_type('struct iovec',
> + prefix: '#include <sys/uio.h>'))
> +config_host_data.set('HAVE_UTMPX',
> + cc.has_type('struct utmpx',
> + prefix: '#include <utmpx.h>'))
> +
> config_host_data.set('CONFIG_EVENTFD', cc.links('''
> #include <sys/eventfd.h>
> int main(void) { return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); }'''))
> @@ -1615,7 +1619,7 @@ config_host_data.set('CONFIG_POSIX_MADVISE',
> cc.links(gnu_source_prefix + '''
> #include <stddef.h>
> int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }'''))
>
> -config_host_data.set('CONFIG_PTHREAD_SETNAME_NP_W_TID', cc.links('''
> +config_host_data.set('CONFIG_PTHREAD_SETNAME_NP_W_TID',
> cc.links(gnu_source_prefix + '''
> #include <pthread.h>
>
> static void *f(void *p) { return NULL; }
> @@ -1626,7 +1630,7 @@ config_host_data.set('CONFIG_PTHREAD_SETNAME_NP_W_TID',
> cc.links('''
> pthread_setname_np(thread, "QEMU");
> return 0;
> }''', dependencies: threads))
> -config_host_data.set('CONFIG_PTHREAD_SETNAME_NP_WO_TID', cc.links('''
> +config_host_data.set('CONFIG_PTHREAD_SETNAME_NP_WO_TID',
> cc.links(gnu_source_prefix + '''
> #include <pthread.h>
>
> static void *f(void *p) { pthread_setname_np("QEMU"); return NULL; }
> @@ -1662,8 +1666,10 @@ config_host_data.set('HAVE_MLOCKALL',
> cc.links(gnu_source_prefix + '''
>
> have_l2tpv3 = false
> if not get_option('l2tpv3').disabled() and have_system
> - have_l2tpv3 = (cc.has_header_symbol('sys/socket.h', 'struct mmsghdr')
> - and cc.has_header('linux/ip.h'))
> + have_l2tpv3 = cc.has_type('struct mmsghdr',
> + prefix: gnu_source_prefix + '''
> + #include <sys/socket.h>
> + #include <linux/ip.h>''')
> endif
> config_host_data.set('CONFIG_L2TPV3', have_l2tpv3)
>
> @@ -1689,7 +1695,7 @@ config_host_data.set('CONFIG_NETMAP', have_netmap)
> # xfs headers will not try to redefine structs from linux headers
> # if this macro is set.
> config_host_data.set('HAVE_FSXATTR', cc.links('''
> - #include <linux/fs.h>'
> + #include <linux/fs.h>
> struct fsxattr foo;
> int main(void) {
> return 0;
> --
> 2.33.1
>
>
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 :|