diff options
author | M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> | 2009-10-15 17:47:33 +0300 |
---|---|---|
committer | M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> | 2009-10-15 17:47:33 +0300 |
commit | d5609ca04ecc5f5e3d5cef8ca0e67fa98cd653de (patch) | |
tree | f0abed8992f3c80300d5a2c0b87fc2bd59837237 /build | |
parent | 79190d89853958ee8252440d35a662fabf122afd (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.m4 | 19 |
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], |