diff options
Diffstat (limited to 'Build/source/libs/cairo/cairo-1.12.14/build/configure.ac.warnings')
-rw-r--r-- | Build/source/libs/cairo/cairo-1.12.14/build/configure.ac.warnings | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/Build/source/libs/cairo/cairo-1.12.14/build/configure.ac.warnings b/Build/source/libs/cairo/cairo-1.12.14/build/configure.ac.warnings new file mode 100644 index 00000000000..f984eb29c0f --- /dev/null +++ b/Build/source/libs/cairo/cairo-1.12.14/build/configure.ac.warnings @@ -0,0 +1,109 @@ +dnl Use lots of warning flags with with gcc and compatible compilers + +dnl Note: if you change the following variable, the cache is automatically +dnl skipped and all flags rechecked. So there's no need to do anything +dnl else. If for any reason you need to force a recheck, just change +dnl MAYBE_WARN in an ignorable way (like adding whitespace) + +# -Wcast-align generates lots of false positive reports we need to +# cast image data from uint8_t to uin32_t. + +# -Wlogical-op causes too much noise from strcmp("literal", str) + +MAYBE_WARN="-Wall -Wextra \ +-Wold-style-definition -Wdeclaration-after-statement \ +-Wmissing-declarations -Werror-implicit-function-declaration \ +-Wnested-externs -Wpointer-arith -Wwrite-strings \ +-Wsign-compare -Wstrict-prototypes -Wmissing-prototypes \ +-Wpacked -Wswitch-enum -Wmissing-format-attribute \ +-Wbad-function-cast -Wvolatile-register-var \ +-Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations \ +-Wno-missing-field-initializers -Wno-unused-parameter \ +-Wno-attributes -Wno-long-long -Winline" + +# New -Wno options should be added here +# gcc-4.4 and later accept every -Wno- option but may complain later that this +# option is unknow each time another warning happen. +# -Wunused-but-set-variable is too noisy at present +NO_WARN="unused-but-set-variable" + +dnl Sun Studio 12 likes to rag at us for abusing enums like +dnl having cairo_status_t variables hold cairo_int_status_t +dnl values. It's bad, we know. Now please be quiet. +MAYBE_WARN="$MAYBE_WARN -erroff=E_ENUM_TYPE_MISMATCH_ARG \ + -erroff=E_ENUM_TYPE_MISMATCH_OP" + +dnl We also abuse the warning-flag facility to enable other compiler +dnl options. Namely, the following: + +dnl -flto working really needs a test link, not just a compile + +safe_MAYBE_WARN="$MAYBE_WARN" +MAYBE_WARN="$MAYBE_WARN -flto" +AC_TRY_LINK([],[ + int main(int argc, char **argv) { return 0; } +],[],[ + MAYBE_WARN="$safe_MAYBE_WARN" +]) + +MAYBE_WARN="$MAYBE_WARN -fno-strict-aliasing -fno-common" + +dnl Also to turn various gcc/glibc-specific preprocessor checks +MAYBE_WARN="$MAYBE_WARN -Wp,-D_FORTIFY_SOURCE=2" + +# invalidate cached value if MAYBE_WARN has changed +if test "x$cairo_cv_warn_maybe" != "x$MAYBE_WARN"; then + unset cairo_cv_warn_cflags +fi +AC_CACHE_CHECK([for supported warning flags], cairo_cv_warn_cflags, [ + echo + WARN_CFLAGS="" + + # Some warning options are not supported by all versions of + # gcc, so test all desired options against the current + # compiler. + # + # Note that there are some order dependencies + # here. Specifically, an option that disables a warning will + # have no net effect if a later option then enables that + # warnings, (perhaps implicitly). So we put some grouped + # options (-Wall and -Wextra) up front and the -Wno options + # last. + + for W in $MAYBE_WARN; do + CAIRO_CC_TRY_FLAG([$W],, [WARN_CFLAGS="$WARN_CFLAGS $W"]) + done + for W in $NO_WARN; do + CAIRO_CC_TRY_FLAG([-W$W -Wno-$W],, [WARN_CFLAGS="$WARN_CFLAGS -Wno-$W"]) + done + cairo_cv_warn_cflags=$WARN_CFLAGS + cairo_cv_warn_maybe=$MAYBE_WARN + + AC_MSG_CHECKING([which warning flags were supported]) +]) +WARN_CFLAGS="$cairo_cv_warn_cflags" +CAIRO_CFLAGS="$CAIRO_CFLAGS $WARN_CFLAGS" + +# We only wish to enable attribute(warn_unused_result) if we can prevent +# gcc from generating thousands of warnings about the misapplication of the +# attribute to void functions and variables. +AC_CACHE_CHECK([how to enable unused result warnings], cairo_cv_warn_unused_result, [ + AC_REQUIRE([AC_PROG_GREP]) + cairo_cv_warn_unused_result="" + if echo $WARN_CFLAGS | $GREP -e '-Wno-attributes' >/dev/null; then + CAIRO_CC_TRY_FLAG_SILENT( + [-Wno-attributes], + [__attribute__((__warn_unused_result__)) void f (void) {} + __attribute__((__warn_unused_result__)) int g;], + [cairo_cv_warn_unused_result="__attribute__((__warn_unused_result__))"]) + fi +]) +AC_DEFINE_UNQUOTED([WARN_UNUSED_RESULT], [$cairo_cv_warn_unused_result], + [Define to the value your compiler uses to support the warn-unused-result attribute]) + +dnl check linker flags +AC_CACHE_CHECK([how to allow undefined symbols in shared libraries used by test suite], cairo_cv_test_undefined_ldflags, + [CAIRO_CC_TRY_FLAG_SILENT([-Wl,--allow-shlib-undefined], [], + [cairo_cv_test_undefined_ldflags="-Wl,--allow-shlib-undefined]")]) +CAIRO_TEST_UNDEFINED_LDFLAGS="$cairo_cv_test_undefined_ldflags" +AC_SUBST(CAIRO_TEST_UNDEFINED_LDFLAGS) |