-m4_define([debug_default],
- m4_if(m4_eval(clutter_minor_version % 2), [1], [yes], [minimum]))
-
-AC_ARG_ENABLE(debug,
- AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
- [turn on debugging. yes; All glib asserts, checks and runtime clutter verbose messages. minimum; Just glib cast checks and runtime clutter verbose messagaes. no; No glib asserts or checks and no runtime clutter verbose messages. @<:@default=debug_default@:>@]),
-,
- enable_debug=debug_default)
+m4_define([debug_default], [m4_if(m4_eval(clutter_gtk_minor % 2), [1], [yes], [minimum])])
+AC_ARG_ENABLE([debug],
+ [AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
+ [Turns on debugging. @<:@default=debug_default@:>@])],
+ [],
+ [enable_debug=debug_default])
+
+AS_CASE([$enable_debug],
+
+ [yes], [
+ test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
+ CLUTTER_GTK_DEBUG_CFLAGS="-DCLUTTER_GTK_ENABLE_DEBUG"
+ ],
+
+ [minimum], [
+ CLUTTER_GTK_DEBUG_CFLAGS="-DCLUTTER_GTK_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"
+ ],
+
+ [no], [
+ CLUTTER_GTK_DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
+ ],
+
+ [AC_MSG_ERROR([Invalid argument for --enable-debug])]
+)
+
+AC_SUBST(CLUTTER_GTK_DEBUG_CFLAGS)
+
+# use strict compiler flags only on development releases
+m4_define([maintainer_flags_default], [m4_if(m4_eval(clutter_gtk_minor % 2), [1], [yes], [no])])
+AC_ARG_ENABLE([maintainer-flags],
+ [AC_HELP_STRING([--enable-maintainer-flags=@<:@no/yes@:>@],
+ [Use strict compiler flags @<:@default=no@:>@])],
+ [],
+ [enable_maintainer_flags=maintainer_flags_default])
+
+MAINTAINER_CFLAGS=""
+AS_IF([test "x$enable_maintainer_flags" = "xyes" && test "x$GCC" = "xyes"],
+ [
+ AS_COMPILER_FLAGS([MAINTAINER_CFLAGS],
+ ["-Werror -Wall -Wshadow -Wcast-align
+ -Wno-uninitialized -Wempty-body -Wformat-security
+ -Winit-self"])
+ ]
+)
+
+AC_SUBST(MAINTAINER_CFLAGS)