-AC_ARG_ENABLE([man-pages],
- [AS_HELP_STRING([--disable-man-pages], [Do not build and install man pages (already built in a distributed tarball])],
- [], dnl AC_ARG_ENABLE will fill enable_built_in_plugins with the user choice
- [enable_man_pages=yes]
-)
+AE_FEATURE_DEFAULT_ENABLE
+AE_FEATURE([man-pages],[Do not build and install man pages (already built in a distributed tarball])
+
+# When given, add -Werror to WARN_CFLAGS and WARN_CXXFLAGS.
+# Disabled by default
+AE_FEATURE_DEFAULT_DISABLE
+AE_FEATURE([Werror],[Treat compiler warnings as errors.])
+
+# When given, build with AddressSanitizer.
+AE_FEATURE_DEFAULT_DISABLE
+AE_FEATURE([asan],[Build with AddressSanitizer.])
+
+## ##
+## Check for conflicting features selection ##
+## ##
+
+# Check for conflicting Python related features user choices.
+AE_IF_FEATURE_ENABLED([python-plugins], [
+ AE_IF_FEATURE_UNDEF([python-bindings], [
+ # --enable-python-plugins was provided but --enable-python-bindings was
+ # omitted. Turn the Python bindings ON anyway because it's needed to
+ # use the Python plugins.
+ AE_FEATURE_ENABLE([python-bindings])
+ ], [
+ AE_IF_FEATURE_DISABLED([python-bindings], [
+ # --enable-python-plugins _and_ --disable-python-bindings were
+ # used. This is invalid because Python plugins need the Python
+ # bindings to be useful.
+ AC_MSG_ERROR(--enable-python-bindings must be used to support Python plugins)
+ ])
+ ])
+])
+
+# Check for conflicting optional features user choices
+AE_IF_FEATURE_ENABLED([built-in-plugins], [
+ # Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
+ AE_IF_FEATURE_NOT_ENABLED([static], [AC_MSG_ERROR(--enable-static must be used to bundle plug-ins in the babeltrace2 executable)])
+ AE_IF_FEATURE_ENABLED([shared], [AC_MSG_ERROR(--disable-shared must be used to bundle plug-ins in the babeltrace2 executable)])
+])