On 8/8/19 8:08 AM, Eric Blake wrote: > Mingw includes a header that declares a struct typedef named DATADIR, > pulled in when including <winsock2.h>; compilation fails if DATADIR > has already been defined as a macro expanding to a string prior to > that inclusion. Although the configmake module documents that it > should generally be included only after system headers, it is just as > easy to make configmake.h robust to this particular issue by including > the system header first if it exists. > > * modules/configmake (Makefile.am): If the project uses > <winsock2.h>, include that header before defining DATADIR. > Reported by libvirt: > https://lists.gnu.org/archive/html/bug-gnulib/2019-07/msg00089.html > --- > > I'm pushing this under the gnulib maintenance rule, while working on > a further gnulib change to make configmake.h nicer on mingw. Except I posted the wrong patch (the gnulib patch I'm still working on, not the actual libvirt patch I pushed). That would be: From 05fb5f5af29c0169243928a93bbdc48cc0e87e4d Mon Sep 17 00:00:00 2001 From: Eric Blake <eblake@xxxxxxxxxx> Date: Thu, 8 Aug 2019 07:16:42 -0500 Subject: [PATCH] maint: Update to latest gnulib Requires adjustments to use verify_expr() which replaces verify_true(), and to disable the new syntax check 'sc_prohibit_gnu_make_extensions' since we require GNU make. Signed-off-by: Eric Blake <eblake@xxxxxxxxxx> --- src/util/viratomic.h | 18 +++++++++--------- .gnulib | 2 +- cfg.mk | 1 + 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/util/viratomic.h b/src/util/viratomic.h index 35800dafcd..9dfb77b992 100644 --- a/src/util/viratomic.h +++ b/src/util/viratomic.h @@ -157,58 +157,58 @@ VIR_STATIC unsigned int virAtomicIntXor(volatile unsigned int *atomic, # define virAtomicIntGet(atomic) \ (__extension__ ({ \ - (void)verify_true(sizeof(*(atomic)) == sizeof(int)); \ + (void)verify_expr(sizeof(*(atomic)) == sizeof(int), 0); \ (void)(0 ? *(atomic) ^ *(atomic) : 0); \ __sync_synchronize(); \ (int)*(atomic); \ })) # define virAtomicIntSet(atomic, newval) \ (__extension__ ({ \ - (void)verify_true(sizeof(*(atomic)) == sizeof(int)); \ + (void)verify_expr(sizeof(*(atomic)) == sizeof(int), 0); \ (void)(0 ? *(atomic) ^ (newval) : 0); \ *(atomic) = (newval); \ __sync_synchronize(); \ })) # define virAtomicIntInc(atomic) \ (__extension__ ({ \ - (void)verify_true(sizeof(*(atomic)) == sizeof(int)); \ + (void)verify_expr(sizeof(*(atomic)) == sizeof(int), 0); \ (void)(0 ? *(atomic) ^ *(atomic) : 0); \ __sync_add_and_fetch((atomic), 1); \ })) # define virAtomicIntDecAndTest(atomic) \ (__extension__ ({ \ - (void)verify_true(sizeof(*(atomic)) == sizeof(int)); \ + (void)verify_expr(sizeof(*(atomic)) == sizeof(int), 0); \ (void)(0 ? *(atomic) ^ *(atomic) : 0); \ __sync_fetch_and_sub((atomic), 1) == 1; \ })) # define virAtomicIntCompareExchange(atomic, oldval, newval) \ (__extension__ ({ \ - (void)verify_true(sizeof(*(atomic)) == sizeof(int)); \ + (void)verify_expr(sizeof(*(atomic)) == sizeof(int), 0); \ (void)(0 ? *(atomic) ^ (newval) ^ (oldval) : 0); \ (bool)__sync_bool_compare_and_swap((atomic), \ (oldval), (newval)); \ })) # define virAtomicIntAdd(atomic, val) \ (__extension__ ({ \ - (void)verify_true(sizeof(*(atomic)) == sizeof(int)); \ + (void)verify_expr(sizeof(*(atomic)) == sizeof(int), 0); \ (void)(0 ? *(atomic) ^ (val) : 0); \ (int) __sync_fetch_and_add((atomic), (val)); \ })) # define virAtomicIntAnd(atomic, val) \ (__extension__ ({ \ - (void)verify_true(sizeof(*(atomic)) == sizeof(int)); \ + (void)verify_expr(sizeof(*(atomic)) == sizeof(int), 0); \ (void) (0 ? *(atomic) ^ (val) : 0); \ (unsigned int) __sync_fetch_and_and((atomic), (val)); \ })) # define virAtomicIntOr(atomic, val) \ (__extension__ ({ \ - (void)verify_true(sizeof(*(atomic)) == sizeof(int)); \ + (void)verify_expr(sizeof(*(atomic)) == sizeof(int), 0); \ (void) (0 ? *(atomic) ^ (val) : 0); \ (unsigned int) __sync_fetch_and_or((atomic), (val)); \ })) # define virAtomicIntXor(atomic, val) \ (__extension__ ({ \ - (void)verify_true(sizeof(*(atomic)) == sizeof(int)); \ + (void)verify_expr(sizeof(*(atomic)) == sizeof(int), 0); \ (void) (0 ? *(atomic) ^ (val) : 0); \ (unsigned int) __sync_fetch_and_xor((atomic), (val)); \ })) diff --git a/.gnulib b/.gnulib index 8089c00979..c8e2eee548 160000 --- a/.gnulib +++ b/.gnulib @@ -1 +1 @@ -Subproject commit 8089c00979a5b089cff592c6b91420e595657167 +Subproject commit c8e2eee548e6e81f3fccd31cf9f9a825db7fc8a8 diff --git a/cfg.mk b/cfg.mk index cc1f79a051..85b5a0a5a2 100644 --- a/cfg.mk +++ b/cfg.mk @@ -59,6 +59,7 @@ local-checks-to-skip = \ sc_obsolete_symbols \ sc_prohibit_S_IS_definition \ sc_prohibit_atoi_atof \ + sc_prohibit_gnu_make_extensions \ sc_prohibit_hash_without_use \ sc_prohibit_jm_in_m4 \ sc_prohibit_quote_without_use \ -- 2.20.1 -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list