mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-01-06 10:50:17 +01:00
[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.
This commit is contained in:
parent
79190d8985
commit
d5609ca04e
1 changed files with 8 additions and 11 deletions
|
|
@ -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],
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue