mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-01-08 22:10:19 +01:00
Import tp-compiler-flag.m4 and tp-compiler-warnings.m4 from telepathy-glib
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=19681 Reviewed-by: Colin Walters <walters@verbum.org>
This commit is contained in:
parent
4a6c68c0ff
commit
ad4e7af759
2 changed files with 92 additions and 0 deletions
43
m4/tp-compiler-flag.m4
Normal file
43
m4/tp-compiler-flag.m4
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
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"])
|
||||
])
|
||||
49
m4/tp-compiler-warnings.m4
Normal file
49
m4/tp-compiler-warnings.m4
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
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
|
||||
|
||||
])
|
||||
Loading…
Add table
Reference in a new issue