Commit ad4e7af7 authored by Simon McVittie's avatar Simon McVittie

Import tp-compiler-flag.m4 and tp-compiler-warnings.m4 from telepathy-glib

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=19681Reviewed-by: Colin Walters's avatarColin Walters <walters@verbum.org>
parent 4a6c68c0
dnl A version of AS_COMPILER_FLAG that supports both C and C++.
dnl Based on:
dnl as-compiler-flag.m4 0.1.0
dnl autostars m4 macro for detection of compiler flags
dnl David Schleef <ds@schleef.org>
dnl $Id: as-compiler-flag.m4,v 1.1 2005/06/18 18:02:46 burgerman Exp $
dnl TP_COMPILER_FLAG(CFLAGS, ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED])
dnl Tries to compile with the given CFLAGS and CXXFLAGS.
dnl
dnl Runs ACTION-IF-ACCEPTED if the compiler for the currently selected
dnl AC_LANG can compile with the flags, and ACTION-IF-NOT-ACCEPTED otherwise.
AC_DEFUN([TP_COMPILER_FLAG],
[
AC_MSG_CHECKING([to see if compiler understands $1])
save_CFLAGS="$CFLAGS"
save_CXXFLAGS="$CXXFLAGS"
CFLAGS="$CFLAGS $1"
CXXFLAGS="$CXXFLAGS $1"
AC_TRY_COMPILE([ ], [], [flag_ok=yes], [flag_ok=no])
CFLAGS="$save_CFLAGS"
CXXFLAGS="$save_CXXFLAGS"
if test "X$flag_ok" = Xyes ; then
$2
true
else
$3
true
fi
AC_MSG_RESULT([$flag_ok])
])
dnl TP_ADD_COMPILER_FLAG(VARIABLE, CFLAGS)
dnl Append CFLAGS to VARIABLE if the compiler supports them.
AC_DEFUN([TP_ADD_COMPILER_FLAG],
[
TP_COMPILER_FLAG([$2], [$1="[$]$1 $2"])
])
dnl TP_COMPILER_WARNINGS(VARIABLE, WERROR_BY_DEFAULT, DESIRABLE, UNDESIRABLE)
dnl $1 (VARIABLE): the variable to put flags into
dnl $2 (WERROR_BY_DEFAULT): a command returning true if -Werror should be the
dnl default
dnl $3 (DESIRABLE): warning flags we want (e.g. all extra shadow)
dnl $4 (UNDESIRABLE): warning flags we don't want (e.g.
dnl missing-field-initializers unused-parameter)
AC_DEFUN([TP_COMPILER_WARNINGS],
[
AC_REQUIRE([AC_ARG_ENABLE])dnl
AC_REQUIRE([AC_HELP_STRING])dnl
AC_REQUIRE([TP_COMPILER_FLAG])dnl
tp_warnings=""
for tp_flag in $3; do
TP_COMPILER_FLAG([-W$tp_flag], [tp_warnings="$tp_warnings -W$tp_flag"])
done
tp_error_flags="-Werror"
TP_COMPILER_FLAG([-Werror], [tp_werror=yes], [tp_werror=no])
for tp_flag in $4; do
TP_COMPILER_FLAG([-Wno-$tp_flag],
[tp_warnings="$tp_warnings -Wno-$tp_flag"])
dnl Yes, we do need to use both -Wno-foo and -Wno-error=foo. Simon says:
dnl some warnings we explicitly don't want, like unused-parameter, but
dnl they're in -Wall. when a distro using cdbs compiles us, we have:
dnl -Werror -Wno-unused-parameter -Wall
dnl ^ from us ^ from cdbs
dnl which turns -Wunused-parameter back on, in effect
TP_COMPILER_FLAG([-Wno-error=$tp_flag],
[tp_error_flags="$tp_error_flags -Wno-error=$tp_flag"], [tp_werror=no])
done
AC_ARG_ENABLE([Werror],
AC_HELP_STRING([--disable-Werror],
[compile without -Werror (normally enabled in development builds)]),
tp_werror=$enableval, :)
if test "x$tp_werror" = xyes && $2; then
dnl We put -Wno-error=foo before -Wno-foo because clang interprets -Wall
dnl -Werror -Wno-foo -Wno-error=foo as “make foo a non-fatal warning”, but does
dnl what we want if you reverse them.
$1="$tp_error_flags $tp_warnings"
else
$1="$tp_warnings"
fi
])
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment