aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac12
-rw-r--r--m4/mpd_check_cflag.m418
2 files changed, 28 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac
index 1b8bc0400..81a94afdc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10,6 +10,7 @@ AC_SUBST(MPD_CFLAGS)
AC_SUBST(MP4FF_LIB)
AC_SUBST(MP4FF_SUBDIR)
+AC_LANG(C)
AC_PROG_CC
AM_PROG_CC_C_O
AC_PROG_INSTALL
@@ -21,8 +22,15 @@ AC_DEFINE(PROTOCOL_VERSION, "0.14.0", [The mpd protocol version])
MPD_LIBS=""
MPD_CFLAGS=""
-if test x$GCC = xyes; then
- MPD_CFLAGS="-Wall -Wextra -Wno-unused-parameter -Wno-deprecated-declarations -Wmissing-prototypes"
+if test x$GCC = xyes
+then
+ MPD_CHECK_FLAG([-Wall])
+ MPD_CHECK_FLAG([-Wextra])
+ MPD_CHECK_FLAG([-Wno-unused-parameter])
+ MPD_CHECK_FLAG([-Wno-deprecated-declarations])
+ MPD_CHECK_FLAG([-Wmissing-prototypes])
+ MPD_CHECK_FLAG([-Wdeclaration-after-statement])
+ MPD_CHECK_FLAG([-Wshadow])
fi
if test -z "$prefix" || test "x$prefix" = xNONE; then
diff --git a/m4/mpd_check_cflag.m4 b/m4/mpd_check_cflag.m4
new file mode 100644
index 000000000..05682f611
--- /dev/null
+++ b/m4/mpd_check_cflag.m4
@@ -0,0 +1,18 @@
+AC_DEFUN([MPD_CHECK_FLAG],[
+ var=`echo "$1" | tr "-" "_"`
+ AC_CACHE_CHECK([whether the C compiler accepts $1],
+ [mpd_check_cflag_$var],[
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $1"
+ AC_COMPILE_IFELSE([
+ int main(void) { return 0; }
+ ], [ eval "mpd_check_cflag_$var=yes"
+ ], [ eval "mpd_check_cflag_$var=no" ])
+ CFLAGS="$save_CFLAGS"
+ ])
+ if eval "test x`echo '$mpd_check_cflag_'$var` = xyes"
+ then
+ MPD_CFLAGS="$MPD_CFLAGS $1"
+ fi
+ ])
+])