From 408458ad84180244b6a2ac327d13685bfb2b0867 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Thu, 25 Aug 2011 21:53:42 +0200 Subject: [PATCH] configure: Introduce checks for libreadline. This adds interactive.o to the object list of para_client if readline was found and links para_client against libreadline in this case. The new source files interactive.c and interactive.h are empty for now. --- configure.ac | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++ error.h | 1 + interactive.c | 0 interactive.h | 0 4 files changed, 62 insertions(+) create mode 100644 interactive.c create mode 100644 interactive.h diff --git a/configure.ac b/configure.ac index 6415668b..11c64067 100644 --- a/configure.ac +++ b/configure.ac @@ -864,7 +864,67 @@ fi CPPFLAGS="$OLD_CPPFLAGS" LDFLAGS="$OLD_LDFLAGS" LIBS="$OLD_LIBS" +############################################################# readline +OLD_CPPFLAGS="$CPPFLAGS" +OLD_LD_FLAGS="$LDFLAGS" +OLD_LIBS="$LIBS" + +have_readline="yes" +AC_ARG_WITH(readline_headers, [AC_HELP_STRING(--with-readline-headers=dir, + [look for libreadline header files also in dir])]) +if test -n "$with_readline_headers"; then + readline_cppflags="-I$with_readline_headers" + CPPFLAGS="$CPPFLAGS $readline_cppflags" +fi +AC_ARG_WITH(readline_libs, [AC_HELP_STRING(--with-readline-libs=dir, + [look for readline library also in dir])]) +if test -n "$with_readline_libs"; then + readline_libs="-L$with_readline_libs" + LDFLAGS="$LDFLAGS $readline_libs" +fi +msg="no interactive cli support" +AC_CHECK_HEADERS([readline/readline.h], [ + ], [ + have_readline="no" + AC_MSG_WARN([readline/readline.h not found, $msg]) +]) +if test "$have_readline" = "yes"; then + readline_libs="$readline_libs -lreadline" + AC_SEARCH_LIBS([rl_replace_line], [readline], [], [have_readline="no"]) + if test "$have_readline" = "no"; then # try with -lcurses + # clear cache + AC_MSG_NOTICE([trying again with -lcurses]) + unset ac_cv_search_rl_replace_line 2> /dev/null + AC_SEARCH_LIBS([rl_replace_line], [readline], [ + have_readline=yes + readline_libs="$readline_libs -lcurses" + ], [], [-lcurses]) + fi + if test "$have_readline" = "no"; then # try with -ltermcap + # clear cache + AC_MSG_NOTICE([trying again with -ltermcap]) + unset ac_cv_search_rl_replace_line 2> /dev/null + AC_SEARCH_LIBS([rl_replace_line], [readline], [ + have_readline=yes + readline_libs="$readline_libs -ltermcap" + ], [], [-ltermcap]) + fi +fi + +if test "$have_readline" = "yes"; then + all_errlist_objs="$all_errlist_objs interactive" + client_errlist_objs="$client_errlist_objs interactive" + client_ldflags="$client_ldflags $readline_libs" + AC_SUBST(readline_cppflags) + AC_DEFINE(HAVE_READLINE, 1, define to 1 to turn on readline support) +else + AC_MSG_WARN([libreadline not found or unusable]) +fi +CPPFLAGS="$OLD_CPPFLAGS" +LDFLAGS="$OLD_LDFLAGS" +LIBS="$OLD_LIBS" +############################################################# AC_SUBST(install_sh, [$INSTALL]) @@ -1007,6 +1067,7 @@ AC_MSG_NOTICE([ paraslash configuration: ~~~~~~~~~~~~~~~~~~~~~~~~ unix socket credentials: $have_ucred +readline (interactive CLIs): $have_readline audio formats supported by para_server/para_afh: $server_audio_formats id3 version2 support: $have_libid3tag filters supported by para_audiod/para_filter: $filters diff --git a/error.h b/error.h index b3eb7e6e..ab7aed25 100644 --- a/error.h +++ b/error.h @@ -440,6 +440,7 @@ extern const char **para_errlist[]; #define CHUNK_QUEUE_ERRORS \ PARA_ERROR(QUEUE, "packet queue overrun"), \ +#define INTERACTIVE_ERRORS /** \endcond errors */ diff --git a/interactive.c b/interactive.c new file mode 100644 index 00000000..e69de29b diff --git a/interactive.h b/interactive.h new file mode 100644 index 00000000..e69de29b -- 2.39.5