qemu-devel
[Top][All Lists]
Advanced

[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 :|




reply via email to

[Prev in Thread] Current Thread [Next in Thread]