summaryrefslogtreecommitdiff
path: root/build/aclocal.cairo.m4
diff options
context:
space:
mode:
authorM Joonas Pihlaja <jpihlaja@cc.helsinki.fi>2009-09-02 04:10:39 +0100
committerM Joonas Pihlaja <jpihlaja@cc.helsinki.fi>2009-09-02 06:35:14 +0300
commitf081a5ff554267eebecea4652bb483eea11d1484 (patch)
tree0cccb7fac031c14ba9f64b30a65dad914e79b961 /build/aclocal.cairo.m4
parentc87b366bfec4eeda2646b33cb8a33822a301456c (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.m442
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])
])