diff options
author | M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> | 2009-09-02 04:10:39 +0100 |
---|---|---|
committer | M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> | 2009-09-02 06:35:14 +0300 |
commit | f081a5ff554267eebecea4652bb483eea11d1484 (patch) | |
tree | 0cccb7fac031c14ba9f64b30a65dad914e79b961 /build/aclocal.cairo.m4 | |
parent | c87b366bfec4eeda2646b33cb8a33822a301456c (diff) |
[build] Refine the -Wno-attribute test to check our use cases.
We don't actually check that -Wno-attribute does what
we think it does. On clang it doesn't since it happily
seems to recognize but ignore the attribute.
This patch factors out a silent version of CAIRO_CC_TRY_FLAG
which accepts an optional program argument and actually tests
that the compiler doesn't produce any warning messages. It
is then used to check that -Wno-attribute doesn't complain
when the __warn_unused_result__ attribute is applied to
void functions or variables.
Diffstat (limited to 'build/aclocal.cairo.m4')
-rw-r--r-- | build/aclocal.cairo.m4 | 42 |
1 files changed, 34 insertions, 8 deletions
diff --git a/build/aclocal.cairo.m4 b/build/aclocal.cairo.m4 index 1c898b96..021c22fc 100644 --- a/build/aclocal.cairo.m4 +++ b/build/aclocal.cairo.m4 @@ -75,21 +75,47 @@ AC_DEFUN([CAIRO_CONFIG_COMMANDS], ], $3) ]) -dnl check compiler flags -AC_DEFUN([CAIRO_CC_TRY_FLAG], -[dnl - AC_MSG_CHECKING([whether $CC supports $1]) +dnl check compiler flags with a program and no muttering. +AC_DEFUN([CAIRO_CC_TRY_FLAG_SILENT], +[dnl (flags..., optional program, true-action, false-action) + + _compile_program='$2' + if test "x$_compile_program" = "x"; then + # AC_LANG_PROGRAM() produces a main() w/o args, + # but -Wold-style-definition doesn't like that. + # We need _some_ program so that we don't get + # warnings about empty compilation units. + _compile_program=' + int main(int c, char **v) { + (void)c; (void)v; return 0; }' + fi _save_cflags="$CFLAGS" - CFLAGS="$CFLAGS -Werror $1" - AC_COMPILE_IFELSE([ ], [cairo_cc_flag=yes], [cairo_cc_flag=no]) + CFLAGS="$CFLAGS $1" + AC_COMPILE_IFELSE( + [$_compile_program], + [cairo_cc_stderr=`test -f conftest.err && cat conftest.err` + cairo_cc_flag=yes], + [cairo_cc_stderr=`test -f conftest.err && cat conftest.err` + cairo_cc_flag=no]) CFLAGS="$_save_cflags" + if test "x$cairo_cc_stderr" != "x"; then + cairo_cc_flag=no + fi + if test "x$cairo_cc_flag" = "xyes"; then - ifelse([$2], , :, [$2]) - else ifelse([$3], , :, [$3]) + else + ifelse([$4], , :, [$4]) fi +]) + +dnl check compiler flags possibly using -Werror if available. +AC_DEFUN([CAIRO_CC_TRY_FLAG], +[dnl (flags..., optional program, true-action, false-action) + AC_MSG_CHECKING([whether $CC supports $1]) + CAIRO_CC_TRY_FLAG_SILENT([-Werror $1], [$2], [$3], [$4]) AC_MSG_RESULT([$cairo_cc_flag]) ]) |