summaryrefslogtreecommitdiff
path: root/build
diff options
context:
space:
mode:
authorM Joonas Pihlaja <jpihlaja@cc.helsinki.fi>2009-10-15 17:47:33 +0300
committerM Joonas Pihlaja <jpihlaja@cc.helsinki.fi>2009-10-15 17:47:33 +0300
commitd5609ca04ecc5f5e3d5cef8ca0e67fa98cd653de (patch)
treef0abed8992f3c80300d5a2c0b87fc2bd59837237 /build
parent79190d89853958ee8252440d35a662fabf122afd (diff)
[build] Check compiler flags using AC_TRY_LINK instead of AC_TRY_COMPILE.
Turns out we were passing suncc warning suppression flags to gcc by mistake since -e<entry point> is actually a valid option for gcc. This caused the -erroff=E_ENUM_TYPE_MISMATCH_ARG and other -erroff options to be passed to the linker. In the normal case of a GNU ld linker this doesn't matter since it ignores bogus entry points, but the GNU gold linker replaces a bogus entry point with NULL. This patch makes the CAIRO_CC_TRY_FLAG() check stricter by testing that the flag doesn't interfere with linking executables.
Diffstat (limited to 'build')
-rw-r--r--build/aclocal.cairo.m419
1 files changed, 8 insertions, 11 deletions
diff --git a/build/aclocal.cairo.m4 b/build/aclocal.cairo.m4
index e03fa1c5..482763eb 100644
--- a/build/aclocal.cairo.m4
+++ b/build/aclocal.cairo.m4
@@ -79,20 +79,17 @@ 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
+ # 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, so always
+ # append a reasonable main().
+ _compile_program="$2"'
+ int main(int c, char **v) { (void)c; (void)v; return 0; }'
_save_cflags="$CFLAGS"
CFLAGS="$CFLAGS $1"
- AC_COMPILE_IFELSE(
+ AC_LINK_IFELSE(
[$_compile_program],
[cairo_cc_stderr=`test -f conftest.err && cat conftest.err`
cairo_cc_flag=yes],