From 2b2c0bf467cfb02f23333fd71dd4989d908b685d Mon Sep 17 00:00:00 2001 From: Krisztian Litkey Date: Wed, 27 Jun 2012 16:19:05 +0300 Subject: [PATCH] build-sys: support for disabling individual plugins, and the console. --- configure.ac | 80 +++++++++++++++++++++++++++++++++++++++++++++++++-------- src/Makefile.am | 17 ++++++++---- 2 files changed, 81 insertions(+), 16 deletions(-) diff --git a/configure.ac b/configure.ac index 0c04757..15ba160 100644 --- a/configure.ac +++ b/configure.ac @@ -151,6 +151,32 @@ AC_SUBST(PULSE_ENABLED) AC_SUBST(PULSE_CFLAGS) AC_SUBST(PULSE_LIBS) +# Check if building murphy-console was enabled. +AC_ARG_ENABLE(console, + [ --enable-console build Murphy console], + [enable_console=$enableval], [enable_console=auto]) + +if test "$enable_console" != "no"; then + AC_HAVE_LIBRARY([readline], [have_readline=yes], [have_readline=no]) + if test "$have_readline" = "no" -a "$enable_console" = "yes"; then + AC_MSG_ERROR([Readline development libraries not found.]) + else + enable_console="$have_readline" + fi +else + AC_MSG_NOTICE([Murphy console binary is disabled.]) +fi + +if test "$enable_console" = "yes"; then + AC_DEFINE([CONSOLE_ENABLED], 1, [Build Murphy console ?]) + READLINE_CFLAGS="" + READLINE_LIBS="-lreadline" +fi +AM_CONDITIONAL(CONSOLE_ENABLED, [test "$enable_console" = "yes"]) +AC_SUBST(CONSOLE_ENABLED) +AC_SUBST(READLINE_CFLAGS) +AC_SUBST(READLINE_LIBS) + # Set up murphy CFLAGS and LIBS. MURPHY_CFLAGS="$GLIB_CFLAGS $DBUS_CFLAGS" MURPHY_LIBS="$GLIB_LIBS $DBUS_LIBS" @@ -162,6 +188,11 @@ AC_MSG_CHECKING([libdir]) AC_MSG_RESULT([$libdir]) AC_SUBST(LIBDIR, [$libdir]) +# Check which plugins should be disabled. +AC_ARG_WITH(disabled-plugins, + [ --with-disabled-plugins= specify which plugins to disable], + [disabled_plugins=$withval],[disabled_plugins=none]) + # Check which plugins should be built in. AC_ARG_WITH(builtin-plugins, @@ -178,26 +209,44 @@ esac internal=""; it="" external=""; et="" +disabled=""; dt="" for plugin in $all_plugins; do type=external for p in ${builtin_plugins//,/ }; do if test "$plugin" = "$p"; then - internal="$internal$it$plugin" type=internal - it=" " fi done - if test "$type" = "external"; then - external="$external$et$plugin" - et=" " - fi + for p in ${disabled_plugins//,/ }; do + if test "$plugin" = "$p"; then + type=disabled + fi + done + + case $type in + internal) internal="$internal$it$plugin"; it=" ";; + external) external="$external$et$plugin"; et=" ";; + disabled) disabled="$disabled$dt$plugin"; dt=" ";; + esac done +DISABLED_PLUGINS="$disabled" INTERNAL_PLUGINS="$internal" EXTERNAL_PLUGINS="$external" + +function check_if_disabled() { + for p in $DISABLED_PLUGINS; do + if test "$1" = "$p"; then + return 0 + fi + done + + return 1 +} + function check_if_internal() { for p in $INTERNAL_PLUGINS; do if test "$1" = "$p"; then @@ -208,10 +257,15 @@ function check_if_internal() { return 1 } -AM_CONDITIONAL(BUILTIN_PLUGIN_TEST, [check_if_internal test]) -AM_CONDITIONAL(BUILTIN_PLUGIN_DBUS, [check_if_internal dbus]) -AM_CONDITIONAL(BUILTIN_PLUGIN_GLIB, [check_if_internal glib]) -AM_CONDITIONAL(BUILTIN_PLUGIN_CONSOLE, [check_if_internal console]) +AM_CONDITIONAL(DISABLED_PLUGIN_TEST, [check_if_disabled test]) +AM_CONDITIONAL(DISABLED_PLUGIN_DBUS, [check_if_disabled dbus]) +AM_CONDITIONAL(DISABLED_PLUGIN_GLIB, [check_if_disabled glib]) +AM_CONDITIONAL(DISABLED_PLUGIN_CONSOLE, [check_if_disabled console]) + +AM_CONDITIONAL(BUILTIN_PLUGIN_TEST, [check_if_internal test]) +AM_CONDITIONAL(BUILTIN_PLUGIN_DBUS, [check_if_internal dbus]) +AM_CONDITIONAL(BUILTIN_PLUGIN_GLIB, [check_if_internal glib]) +AM_CONDITIONAL(BUILTIN_PLUGIN_CONSOLE, [check_if_internal console]) # Check for Check (unit test framework). PKG_CHECK_MODULES(CHECK, @@ -321,13 +375,17 @@ echo "----- configuration -----" echo "Extra C warnings flags: $WARNING_CFLAGS" echo "D-Bus support: $enable_dbus" echo "PulseAudio mainloop support: $enable_pulse" +echo "Murphy console plugin and client: $enable_console" echo "Plugins:" echo " - linked-in:" for plugin in ${INTERNAL_PLUGINS:-none}; do echo " $plugin" done - echo " - dynamic:" for plugin in ${EXTERNAL_PLUGINS:-none}; do echo " $plugin" done +echo " - disabled:" +for plugin in ${DISABLED_PLUGINS:-none}; do + echo " $plugin" +done diff --git a/src/Makefile.am b/src/Makefile.am index b3ea73d..27bd049 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -260,6 +260,7 @@ TEST_PLUGIN_SOURCES = plugins/plugin-test.c TEST_PLUGIN_CFLAGS = TEST_PLUGIN_LIBS = +if !DISABLED_PLUGIN_TEST if BUILTIN_PLUGIN_TEST BUILTIN_PLUGINS += $(TEST_PLUGIN_SOURCES) BUILTIN_CFLAGS += $(TEST_PLUGIN_CFLAGS) @@ -272,6 +273,7 @@ plugin_test_la_LIBADD = $(TEST_PLUGIN_LIBS) plugin_LTLIBRARIES += plugin-test.la endif +endif # dbus plugin if DBUS_ENABLED @@ -279,6 +281,7 @@ DBUS_PLUGIN_SOURCES = plugins/plugin-dbus.c DBUS_PLUGIN_CFLAGS = $(DBUS_CFLAGS) DBUS_PLUGIN_LIBS = libmurphy-dbus.la +if !DISABLED_PLUGIN_DBUS if BUILTIN_PLUGIN_DBUS BUILTIN_PLUGINS += $(DBUS_PLUGIN_SOURCES) BUILTIN_CFLAGS += $(DBUS_PLUGIN_CFLAGS) @@ -292,12 +295,14 @@ plugin_dbus_la_LIBADD = $(DBUS_PLUGIN_LIBS) plugin_LTLIBRARIES += plugin-dbus.la endif endif +endif # glib plugin GLIB_PLUGIN_SOURCES = plugins/plugin-glib.c GLIB_PLUGIN_CFLAGS = $(GLIB_CFLAGS) GLIB_PLUGIN_LIBS = $(GLIB_LIBS) +if !DISABLED_PLUGIN_GLIB if BUILTIN_PLUGIN_GLIB BUILTIN_PLUGINS += $(GLIB_PLUGIN_SOURCES) BUILTIN_CFLAGS += $(GLIB_PLUGIN_CFLAGS) @@ -310,6 +315,7 @@ plugin_glib_la_LIBADD = $(GLIB_PLUGIN_LIBS) plugin_LTLIBRARIES += plugin-glib.la endif +endif # console plugin CONSOLE_PLUGIN_REGULAR_SOURCES = plugins/plugin-console.c @@ -318,6 +324,8 @@ CONSOLE_PLUGIN_SOURCES = $(CONSOLE_PLUGIN_REGULAR_SOURCES) \ CONSOLE_PLUGIN_CFLAGS = CONSOLE_PLUGIN_LIBS = +if CONSOLE_ENABLED +if !DISABLED_PLUGIN_CONSOLE if BUILTIN_PLUGIN_CONSOLE BUILTIN_PLUGINS += $(CONSOLE_PLUGIN_SOURCES) BUILTIN_CFLAGS += $(CONSOLE_PLUGIN_CFLAGS) @@ -331,13 +339,14 @@ plugin_console_la_LIBADD = $(CONSOLE_PLUGIN_LIBS) plugin_LTLIBRARIES += plugin-console.la endif - +endif # debug file:line-function mapping generation plugin-console-func-info.c: $(CONSOLE_PLUGIN_REGULAR_SOURCES) $(QUIET_GEN)$(top_builddir)/build-aux/gen-debug-table -o $@ $^ clean-func-infos:: -rm plugin-console-func-info.c +endif ################################### # murphy daemon @@ -365,8 +374,7 @@ murphyd_LDFLAGS = -rdynamic # murphy console client # -#if BUILD_CONSOLE_CLIENT # XXX TODO need to check for libreadline - +if CONSOLE_ENABLED bin_PROGRAMS += murphy-console murphy_console_SOURCES = \ @@ -384,8 +392,7 @@ murphy_console_LDADD += libmurphy-dbus.la endif murphy_console_LDFLAGS = -rdynamic -lreadline - -#end +endif # cleanup clean-local:: clean-linker-script clean-func-infos -- 2.7.4