[libvirt PATCH 021/351] meson: add compiler warnings
Peter Krempa
pkrempa at redhat.com
Wed Jul 22 08:13:50 UTC 2020
On Thu, Jul 16, 2020 at 11:54:17 +0200, Pavel Hrdina wrote:
> Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> ---
> config.h | 7 +
> configure.ac | 3 -
> m4/virt-compile-warnings.m4 | 255 ------------------------------------
> m4/virt-warnings.m4 | 115 ----------------
> meson.build | 221 ++++++++++++++++++++++++++++---
> 5 files changed, 211 insertions(+), 390 deletions(-)
> delete mode 100644 m4/virt-compile-warnings.m4
> delete mode 100644 m4/virt-warnings.m4
>
> diff --git a/config.h b/config.h
> index 9c433ad4c0f..368688f3d01 100644
> --- a/config.h
> +++ b/config.h
> @@ -1,5 +1,12 @@
> #include <meson-config.h>
>
> +/* Enable compile-time and run-time bounds-checking, and some warnings,
> + * without upsetting newer glibc. */
> +
> +#if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
> +# define _FORTIFY_SOURCE 2
> +#endif
> +
> #ifndef __GNUC__
> # error "Libvirt requires GCC >= 4.8, or CLang"
> #endif
> diff --git a/configure.ac b/configure.ac
> index 8f16b364de6..56a471fc3ab 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -161,7 +161,6 @@ fi
>
> # Check for compiler and library settings.
>
> -LIBVIRT_COMPILE_WARNINGS
> LIBVIRT_LINKER_RELRO
> LIBVIRT_LINKER_NO_INDIRECT
> LIBVIRT_LINKER_NO_UNDEFINED
> @@ -849,8 +848,6 @@ AC_MSG_NOTICE([])
> AC_MSG_NOTICE([Miscellaneous])
> AC_MSG_NOTICE([])
> LIBVIRT_RESULT_DEBUG
> -LIBVIRT_RESULT([Use -Werror], [$enable_werror])
> -LIBVIRT_RESULT([Warning Flags], [$WARN_CFLAGS])
> LIBVIRT_RESULT_DTRACE
> LIBVIRT_RESULT_NUMAD
> LIBVIRT_RESULT_INIT_SCRIPT
> diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4
> deleted file mode 100644
> index d3538d59f82..00000000000
> --- a/m4/virt-compile-warnings.m4
> +++ /dev/null
> @@ -1,255 +0,0 @@
> -dnl
> -dnl Enable all known GCC compiler warnings, except for those
> -dnl we can't yet cope with
> -dnl
> -AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
> - dnl ******************************
> - dnl More compiler warnings
> - dnl ******************************
> -
> - LIBVIRT_ARG_ENABLE([WERROR], [Use -Werror (if supported)], [check])
> - if test "$enable_werror" = "check"; then
> - if test -d $srcdir/.git; then
> - is_git_version=true
> - enable_werror=yes
> - else
> - enable_werror=no
> - fi
> - fi
> -
> - # List of warnings that are not relevant / wanted
> -
> - # Don't care about C++ compiler compat
> - dontwarn="$dontwarn -Wc++-compat"
> - dontwarn="$dontwarn -Wabi"
> - dontwarn="$dontwarn -Wdeprecated"
> - # Don't care about ancient C standard compat
> - dontwarn="$dontwarn -Wtraditional"
> - # Don't care about ancient C standard compat
> - dontwarn="$dontwarn -Wtraditional-conversion"
> - # Ignore warnings in /usr/include
> - dontwarn="$dontwarn -Wsystem-headers"
> - # Happy for compiler to add struct padding
> - dontwarn="$dontwarn -Wpadded"
> - # GCC very confused with -O2
> - dontwarn="$dontwarn -Wunreachable-code"
> - # Too many to deal with
> - dontwarn="$dontwarn -Wconversion"
> - # Too many to deal with
> - dontwarn="$dontwarn -Wsign-conversion"
> - # Need to allow bad cast for execve()
> - dontwarn="$dontwarn -Wcast-qual"
> - # We need to use long long in many places
> - dontwarn="$dontwarn -Wlong-long"
> - # We allow manual list of all enum cases without default:
> - dontwarn="$dontwarn -Wswitch-default"
> - # Not a problem since we don't use -fstrict-overflow
> - dontwarn="$dontwarn -Wstrict-overflow"
> - # Not a problem since we don't use -funsafe-loop-optimizations
> - dontwarn="$dontwarn -Wunsafe-loop-optimizations"
> - # gcc 4.4.6 complains this is C++ only; gcc 4.7.0 implies this from -Wall
> - dontwarn="$dontwarn -Wenum-compare"
> - # gcc 5.1 -Wformat-signedness mishandles enums, not ready for prime time
> - dontwarn="$dontwarn -Wformat-signedness"
> - # Several conditionals expand the same on both branches
> - # depending on the particular platform/architecture
> - dontwarn="$dontwarn -Wduplicated-branches"
> - # > This warning does not generally indicate that there is anything wrong
> - # > with your code; it merely indicates that GCC's optimizers are unable
> - # > to handle the code effectively.
> - # Source: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
> - dontwarn="$dontwarn -Wdisabled-optimization"
> - # Various valid glib APIs/macros trigger this warning
> - dontwarn="$dontwarn -Wbad-function-cast"
> -
> - # Broken in 6.0 and later
> - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69602
> - AC_CACHE_CHECK([whether gcc gives bogus warnings for -Wlogical-op],
> - [lv_cv_gcc_wlogical_op_equal_expr_broken], [
> - save_CFLAGS="$CFLAGS"
> - CFLAGS="-O2 -Wlogical-op -Werror"
> - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
> - #define TEST1 1
> - #define TEST2 TEST1
> - ]], [[
> - int test = 0;
> - return test == TEST1 || test == TEST2;]])],
> - [lv_cv_gcc_wlogical_op_equal_expr_broken=no],
> - [lv_cv_gcc_wlogical_op_equal_expr_broken=yes])
> - CFLAGS="$save_CFLAGS"])
> -
> - AC_CACHE_CHECK([whether clang gives bogus warnings for -Wdouble-promotion],
> - [lv_cv_clang_double_promotion_broken], [
> - save_CFLAGS="$CFLAGS"
> - CFLAGS="-O2 -Wdouble-promotion -Werror"
> - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
> - #include <math.h>
> - ]], [[
> - float f = 0.0;
> - return isnan(f);]])],
> - [lv_cv_clang_double_promotion_broken=no],
> - [lv_cv_clang_double_promotion_broken=yes])
> - CFLAGS="$save_CFLAGS"])
> -
> - if test "$lv_cv_clang_double_promotion_broken" = "yes";
> - then
> - dontwarn="$dontwarn -Wdouble-promotion"
> - fi
> -
> - # Clang complains about unused static inline functions
> - # which are common with G_DEFINE_AUTOPTR_CLEANUP_FUNC
> - AC_CACHE_CHECK([whether clang gives bogus warnings for -Wunused-function],
> - [lv_cv_clang_unused_function_broken], [
> - save_CFLAGS="$CFLAGS"
> - CFLAGS="-Wunused-function -Werror"
> - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
> - static inline void foo(void) {}
> - ]], [[
> - return 0]])],
> - [lv_cv_clang_unused_function_broken=no],
> - [lv_cv_clang_unused_function_broken=yes])
> - CFLAGS="$save_CFLAGS"])
> -
> - # We might fundamentally need some of these disabled forever, but
> - # ideally we'd turn many of them on
> - dontwarn="$dontwarn -Wfloat-equal"
> - dontwarn="$dontwarn -Wdeclaration-after-statement"
> - dontwarn="$dontwarn -Wpacked"
> - dontwarn="$dontwarn -Wunused-macros"
> - dontwarn="$dontwarn -Woverlength-strings"
> - dontwarn="$dontwarn -Wstack-protector"
> - dontwarn="$dontwarn -Wsuggest-attribute=malloc"
> -
> - # Get all possible GCC warnings
> - gl_MANYWARN_ALL_GCC([maybewarn])
> -
> - # Remove the ones we don't want, blacklisted earlier
> - gl_MANYWARN_COMPLEMENT([wantwarn], [$maybewarn], [$dontwarn])
> -
> - # -Wunused-functin is implied by -Wall we must turn it
> - # off explicitly.
> - if test "$lv_cv_clang_unused_function_broken" = "yes";
> - then
> - wantwarn="$wantwarn -Wno-unused-function"
> - fi
> -
> - # manywarnings uses '-W' (aka -Wextra) which includes a bunch of stuff.
> - # Unfortunately, this means you can't simply use '-Wsign-compare'
> - # with gl_MANYWARN_COMPLEMENT
> - # So we have -W enabled, and then have to explicitly turn off...
> - wantwarn="$wantwarn -Wno-sign-compare"
> - # We do "bad" function casts all the time for event callbacks
> - wantwarn="$wantwarn -Wno-cast-function-type"
> -
> - # CLang incorrectly complains about dup typedefs win gnu99 mode
> - # so use this CLang-specific arg to keep it quiet
> - wantwarn="$wantwarn -Wno-typedef-redefinition"
> -
> - # manywarnings expects this to be part of -Wc++-compat, but we turn
> - # that one off, so we need to manually enable this again
> - wantwarn="$wantwarn -Wjump-misses-init"
> -
> - # manywarnings explicitly filters it out, preferring -Wswitch
> - # but that doesn't report missing enums if a default:
> - # is present.
> - wantwarn="$wantwarn -Wswitch-enum"
> -
> - # manywarnings turns on -Wformat=2 which implies -Wformat-nonliteral,
> - # so we need to manually re-exclude it.
> - wantwarn="$wantwarn -Wno-format-nonliteral"
> -
> - # -Wformat enables this by default, and we should keep it,
> - # but need to rewrite various areas of code first
> - wantwarn="$wantwarn -Wno-format-truncation"
> -
> - # This should be < 256 really. Currently we're down to 4096,
> - # but using 1024 bytes sized buffers (mostly for virStrerror)
> - # stops us from going down further
> - wantwarn="$wantwarn -Wframe-larger-than=4096"
> - gl_WARN_ADD([-Wframe-larger-than=262144], [RELAXED_FRAME_LIMIT_CFLAGS])
> -
> - # Extra special flags
> - dnl -fstack-protector stuff passes gl_WARN_ADD with gcc
> - dnl on Mingw32, but fails when actually used
> - case $host in
> - aarch64-*-*)
> - dnl "error: -fstack-protector not supported for this target [-Werror]"
> - ;;
> - *-*-linux*)
> - dnl Prefer -fstack-protector-strong if it's available.
> - dnl There doesn't seem to be great overhead in adding
> - dnl -fstack-protector-all instead of -fstack-protector.
> - dnl
> - dnl We also don't need ssp-buffer-size with -all or -strong,
> - dnl since functions are protected regardless of buffer size.
> - dnl wantwarn="$wantwarn --param=ssp-buffer-size=4"
> - wantwarn="$wantwarn -fstack-protector-strong"
> - ;;
> - *-*-freebsd*)
> - dnl FreeBSD ships old gcc 4.2.1 which doesn't handle
> - dnl -fstack-protector-all well
> - wantwarn="$wantwarn -fstack-protector"
> -
> - wantwarn="$wantwarn -Wno-unused-command-line-argument"
> - ;;
> - esac
> - wantwarn="$wantwarn -fexceptions"
> - wantwarn="$wantwarn -fasynchronous-unwind-tables"
> -
> - # Need -fipa-pure-const in order to make -Wsuggest-attribute=pure
> - # fire even without -O.
> - wantwarn="$wantwarn -fipa-pure-const"
> - # We should eventually enable this, but right now there are at
> - # least 75 functions triggering warnings.
> - wantwarn="$wantwarn -Wno-suggest-attribute=pure"
> - wantwarn="$wantwarn -Wno-suggest-attribute=const"
> -
> - if test "$enable_werror" = "yes"
> - then
> - wantwarn="$wantwarn -Werror"
> - fi
> -
> - # Request the gnu99 standard which is the best choice with
> - # gcc 4.8.0. Not a warning flag, but the probing mechanism
> - # is convenient
> - wantwarn="$wantwarn -std=gnu99"
> -
> - # Check for $CC support of each warning
> - for w in $wantwarn; do
> - gl_WARN_ADD([$w])
> - done
> -
> - case $host in
> - *-*-linux*)
> - dnl Fall back to -fstack-protector-all if -strong is not available
> - case $WARN_CFLAGS in
> - *-fstack-protector-strong*)
> - ;;
> - *)
> - gl_WARN_ADD([-fstack-protector-all])
> - ;;
> - esac
> - ;;
> - esac
> -
> - case $WARN_CFLAGS in
> - *-Wsuggest-attribute=format*)
> - AC_DEFINE([HAVE_SUGGEST_ATTRIBUTE_FORMAT], [1], [Whether -Wsuggest-attribute=format works])
> - ;;
> - esac
> -
> - # Use security checked glibc headers
> - AH_VERBATIM([FORTIFY_SOURCE],
> - [/* Enable compile-time and run-time bounds-checking, and some warnings,
> - without upsetting newer glibc. */
> - #if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
> - # define _FORTIFY_SOURCE 2
> - #endif
> - ])
> -
> - if test "$gl_cv_warn_c__Wlogical_op" = yes &&
> - test "$lv_cv_gcc_wlogical_op_equal_expr_broken" = yes; then
> - AC_DEFINE_UNQUOTED([BROKEN_GCC_WLOGICALOP_EQUAL_EXPR], 1,
> - [Define to 1 if gcc -Wlogical-op reports false positive 'or' equal expr])
> - fi
> -])
> diff --git a/m4/virt-warnings.m4 b/m4/virt-warnings.m4
> deleted file mode 100644
> index d272365f0a1..00000000000
> --- a/m4/virt-warnings.m4
> +++ /dev/null
> @@ -1,115 +0,0 @@
> -# warnings.m4 serial 14
> -dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
> -dnl This file is free software; the Free Software Foundation
> -dnl gives unlimited permission to copy and/or distribute it,
> -dnl with or without modifications, as long as this notice is preserved.
> -
> -dnl From Simon Josefsson
> -
> -# gl_AS_VAR_APPEND(VAR, VALUE)
> -# ----------------------------
> -# Provide the functionality of AS_VAR_APPEND if Autoconf does not have it.
> -m4_ifdef([AS_VAR_APPEND],
> -[m4_copy([AS_VAR_APPEND], [gl_AS_VAR_APPEND])],
> -[m4_define([gl_AS_VAR_APPEND],
> -[AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])])
> -
> -
> -# gl_COMPILER_OPTION_IF(OPTION, [IF-SUPPORTED], [IF-NOT-SUPPORTED],
> -# [PROGRAM = AC_LANG_PROGRAM()])
> -# -----------------------------------------------------------------
> -# Check if the compiler supports OPTION when compiling PROGRAM.
> -#
> -# The effects of this macro depend on the current language (_AC_LANG).
> -AC_DEFUN([gl_COMPILER_OPTION_IF],
> -[
> -dnl FIXME: gl_Warn must be used unquoted until we can assume Autoconf
> -dnl 2.64 or newer.
> -AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_[]_AC_LANG_ABBREV[]_$1])dnl
> -AS_VAR_PUSHDEF([gl_Flags], [_AC_LANG_PREFIX[]FLAGS])dnl
> -AS_LITERAL_IF([$1],
> - [m4_pushdef([gl_Positive], m4_bpatsubst([$1], [^-Wno-], [-W]))],
> - [gl_positive="$1"
> -case $gl_positive in
> - -Wno-*) gl_positive=-W`expr "X$gl_positive" : 'X-Wno-\(.*\)'` ;;
> -esac
> -m4_pushdef([gl_Positive], [$gl_positive])])dnl
> -AC_CACHE_CHECK([whether _AC_LANG compiler handles $1], m4_defn([gl_Warn]), [
> - gl_save_compiler_FLAGS="$gl_Flags"
> - gl_AS_VAR_APPEND(m4_defn([gl_Flags]),
> - [" $gl_unknown_warnings_are_errors ]m4_defn([gl_Positive])["])
> - AC_LINK_IFELSE([m4_default([$4], [AC_LANG_PROGRAM([])])],
> - [AS_VAR_SET(gl_Warn, [yes])],
> - [AS_VAR_SET(gl_Warn, [no])])
> - gl_Flags="$gl_save_compiler_FLAGS"
> -])
> -AS_VAR_IF(gl_Warn, [yes], [$2], [$3])
> -m4_popdef([gl_Positive])dnl
> -AS_VAR_POPDEF([gl_Flags])dnl
> -AS_VAR_POPDEF([gl_Warn])dnl
> -])
> -
> -# gl_UNKNOWN_WARNINGS_ARE_ERRORS
> -# ------------------------------
> -# Clang doesn't complain about unknown warning options unless one also
> -# specifies -Wunknown-warning-option -Werror. Detect this.
> -#
> -# The effects of this macro depend on the current language (_AC_LANG).
> -AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS],
> -[_AC_LANG_DISPATCH([$0], _AC_LANG, $@)])
> -
> -# Specialization for _AC_LANG = C. This macro can be AC_REQUIREd.
> -# Use of m4_defun rather than AC_DEFUN works around a bug in autoconf < 2.63b.
> -m4_defun([gl_UNKNOWN_WARNINGS_ARE_ERRORS(C)],
> -[
> - AC_LANG_PUSH([C])
> - gl_UNKNOWN_WARNINGS_ARE_ERRORS_IMPL
> - AC_LANG_POP([C])
> -])
> -
> -# Specialization for _AC_LANG = C++. This macro can be AC_REQUIREd.
> -# Use of m4_defun rather than AC_DEFUN works around a bug in autoconf < 2.63b.
> -m4_defun([gl_UNKNOWN_WARNINGS_ARE_ERRORS(C++)],
> -[
> - AC_LANG_PUSH([C++])
> - gl_UNKNOWN_WARNINGS_ARE_ERRORS_IMPL
> - AC_LANG_POP([C++])
> -])
> -
> -# Specialization for _AC_LANG = Objective C. This macro can be AC_REQUIREd.
> -# Use of m4_defun rather than AC_DEFUN works around a bug in autoconf < 2.63b.
> -m4_defun([gl_UNKNOWN_WARNINGS_ARE_ERRORS(Objective C)],
> -[
> - AC_LANG_PUSH([Objective C])
> - gl_UNKNOWN_WARNINGS_ARE_ERRORS_IMPL
> - AC_LANG_POP([Objective C])
> -])
> -
> -AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS_IMPL],
> -[gl_COMPILER_OPTION_IF([-Werror -Wunknown-warning-option],
> - [gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'],
> - [gl_unknown_warnings_are_errors=])])
> -
> -# gl_WARN_ADD(OPTION, [VARIABLE = WARN_CFLAGS/WARN_CXXFLAGS],
> -# [PROGRAM = AC_LANG_PROGRAM()])
> -# -----------------------------------------------------------
> -# Adds parameter to WARN_CFLAGS/WARN_CXXFLAGS if the compiler supports it
> -# when compiling PROGRAM. For example, gl_WARN_ADD([-Wparentheses]).
> -#
> -# If VARIABLE is a variable name, AC_SUBST it.
> -#
> -# The effects of this macro depend on the current language (_AC_LANG).
> -AC_DEFUN([gl_WARN_ADD],
> -[AC_REQUIRE([gl_UNKNOWN_WARNINGS_ARE_ERRORS(]_AC_LANG[)])
> -gl_COMPILER_OPTION_IF([$1],
> - [gl_AS_VAR_APPEND(m4_if([$2], [], [[WARN_]_AC_LANG_PREFIX[FLAGS]], [[$2]]), [" $1"])],
> - [],
> - [$3])
> -m4_ifval([$2],
> - [AS_LITERAL_IF([$2], [AC_SUBST([$2])])],
> - [AC_SUBST([WARN_]_AC_LANG_PREFIX[FLAGS])])dnl
> -])
> -
> -# Local Variables:
> -# mode: autoconf
> -# End:
> diff --git a/meson.build b/meson.build
> index d9a95e049c0..2450a8bdd79 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -7,6 +7,7 @@ project(
> 'buildtype=debugoptimized',
> 'b_pie=true',
> 'c_std=gnu99',
> + 'warning_level=2',
> ],
> )
>
> @@ -212,10 +213,8 @@ cc_flags = [
> '-Waddress',
> '-Waddress-of-packed-member',
> '-Waggressive-loop-optimizations',
> - '-Wall',
> '-Wattribute-warning',
> '-Wattributes',
> - '-Wbad-function-cast',
> '-Wbool-compare',
> '-Wbool-operation',
> '-Wbuiltin-declaration-mismatch',
> @@ -232,27 +231,20 @@ cc_flags = [
> '-Wcpp',
> '-Wdangling-else',
> '-Wdate-time',
> - '-Wdeprecated',
> '-Wdeprecated-declarations',
> '-Wdesignated-init',
> - '-Wdisabled-optimization',
> '-Wdiscarded-array-qualifiers',
> '-Wdiscarded-qualifiers',
> '-Wdiv-by-zero',
> - '-Wdouble-promotion',
> - '-Wduplicated-branches',
> '-Wduplicated-cond',
> '-Wduplicate-decl-specifier',
> '-Wempty-body',
> '-Wendif-labels',
> - '-Wenum-compare',
> '-Wexpansion-to-defined',
> - '-Wextra',
> '-Wformat-contains-nul',
> '-Wformat-extra-args',
> '-Wformat-nonliteral',
> '-Wformat-security',
> - '-Wformat-signedness',
> '-Wformat-y2k',
> '-Wformat-zero-length',
> '-Wframe-address',
> @@ -299,9 +291,7 @@ cc_flags = [
> '-Wold-style-definition',
> '-Wopenmp-simd',
> '-Woverflow',
> - '-Woverlength-strings',
> '-Woverride-init',
> - '-Wpacked',
> '-Wpacked-bitfield-compat',
> '-Wpacked-not-aligned',
> '-Wparentheses',
> @@ -323,15 +313,12 @@ cc_flags = [
> '-Wsizeof-array-argument',
> '-Wsizeof-pointer-div',
> '-Wsizeof-pointer-memaccess',
> - '-Wstack-protector',
> '-Wstrict-aliasing',
> - '-Wstrict-overflow',
> '-Wstrict-prototypes',
> '-Wstringop-truncation',
> '-Wsuggest-attribute=cold',
> '-Wsuggest-attribute=const',
> '-Wsuggest-attribute=format',
> - '-Wsuggest-attribute=malloc',
> '-Wsuggest-attribute=noreturn',
> '-Wsuggest-attribute=pure',
> '-Wsuggest-final-methods',
> @@ -340,21 +327,18 @@ cc_flags = [
> '-Wswitch-bool',
> '-Wswitch-unreachable',
> '-Wsync-nand',
> - '-Wsystem-headers',
> '-Wtautological-compare',
> '-Wtrampolines',
> '-Wtrigraphs',
> '-Wtype-limits',
> '-Wuninitialized',
> '-Wunknown-pragmas',
> - '-Wunsafe-loop-optimizations',
> '-Wunused',
> '-Wunused-but-set-parameter',
> '-Wunused-but-set-variable',
> '-Wunused-function',
> '-Wunused-label',
> '-Wunused-local-typedefs',
> - '-Wunused-macros',
> '-Wunused-parameter',
> '-Wunused-result',
> '-Wunused-value',
> @@ -392,6 +376,203 @@ cc_flags += [
> '-Wvla-larger-then=4031',
> ]
>
> +cc_flags += [
> + # So we have -W enabled, and then have to explicitly turn off...
> + '-Wno-sign-compare',
> +
> + # We do "bad" function casts all the time for event callbacks
> + '-Wno-cast-function-type',
> +
> + # CLang incorrectly complains about dup typedefs win gnu99 mode
> + # so use this CLang-specific arg to keep it quiet
> + '-Wno-typedef-redefinition',
> +
> + # We don't use -Wc++-compat so we have to enable it explicitly
> + '-Wjump-misses-init',
> +
> + # TODO comment
> + '-Wswitch-enum',
TODO: fix all TODOs
> +
> + # -Wformat=2 implies -Wformat-nonliteral so we need to manually exclude it
> + '-Wno-format-nonliteral',
> +
> + # -Wformat enables this by default, and we should keep it,
> + # but need to rewrite various areas of code first
> + '-Wno-format-truncation',
> +
> + # This should be < 256 really. Currently we're down to 4096,
> + # but using 1024 bytes sized buffers (mostly for virStrerror)
> + # stops us from going down further
> + '-Wframe-larger-than=4096',
> +
> + # extra special flags
> + '-fexceptions',
> + '-fasynchronous-unwind-tables',
> +
> + # Need -fipa-pure-const in order to make -Wsuggest-attribute=pure
> + # fire even without -O.
> + '-fipa-pure-const',
> +
> + # We should eventually enable this, but right now there are at
> + # least 75 functions triggering warnings.
> + '-Wno-suggest-attribute=pure',
> + '-Wno-suggest-attribute=const',
> +]
> +
> +if git
> + cc_flags += [ '-Werror' ]
> +endif
This doesn't seem right. We definitely don't want this to be based
solely on whether we're building from git.
More information about the libvir-list
mailing list