qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 3/4] configure: silence glib unknown attribut


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH v2 3/4] configure: silence glib unknown attribute __alloc_size__
Date: Wed, 18 Mar 2015 22:55:39 +0000

On 18 March 2015 at 22:43, John Snow <address@hidden> wrote:
> v2: We must test compilation with the right glib flags,
>     otherwise the test compile will always fail.
>     In addition, test-compile the warning flag to make
>     sure we can use it.
>
> The glib headers use GCC attributes.  Unfortunately the __GNUC__ and
> __GNUC_MINOR__ version macros are also defined by clang, but clang
> doesn't support the same attributes as GCC.
>
> clang 3.5.0 does not support the __alloc_size__ attribute:
>
>   
> https://github.com/llvm-mirror/clang/commit/c047507a9a79e89fc8339e074fa72822a7e7ea73
>
> The following warning is produced:
>
>   gstrfuncs.h:257:44: warning: unknown attribute '__alloc_size__' ignored 
> [-Wunknown-attributes]
>         G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(2);
>           gmacros.h:67:45: note: expanded from macro 'G_GNUC_ALLOC_SIZE'
>                 #define G_GNUC_ALLOC_SIZE(x) 
> __attribute__((__alloc_size__(x)))
>
> This patch checks whether glib headers cause warnings and disables
> -Wunknown-attributes if that is the case.

Is it worth factoring out the body of the "see if we support
this long list of gcc warning flags?" check into a function?

cc_has_warning_flag () {
    # Use the positive sense of the flag when testing for -Wno-wombat
    # support (gcc will happily accept the -Wno- form of unknown
    # warning options).
    optflag="$(echo $flag | sed -e 's/^-Wno-/-W/')"
    compile_prog "-Werror $optflag" ""
}

and then

for flag in $gcc_flags; do
    if cc_has_warning_flag $flag
        QEMU_CFLAGS="$QEMU_CFLAGS $flag"
    fi
done

where we currently inline that sed/compile_prog. (Untested :-))

-- PMM



reply via email to

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