summaryrefslogtreecommitdiff
path: root/autoconf
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2014-01-31 23:46:14 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2014-01-31 23:46:14 +0000
commitcb6684b63b3c4c5a90e194c5719bc82690180f30 (patch)
treeb436db0df9f0c8d4f88b046f928a951fbf23cfff /autoconf
parentbef2236283c333f17613b2ea4904878228fedb6e (diff)
downloadllvm-cb6684b63b3c4c5a90e194c5719bc82690180f30.tar.gz
llvm-cb6684b63b3c4c5a90e194c5719bc82690180f30.tar.bz2
llvm-cb6684b63b3c4c5a90e194c5719bc82690180f30.tar.xz
Introduce line editor library.
This library will be used by clang-query. I can imagine LLDB becoming another client of this library, so I think LLVM is a sensible place for it to live. It wraps libedit, and adds tab completion support. The code is loosely based on the line editor bits in LLDB, with a few improvements: - Polymorphism for retrieving the list of tab completions, based on the concept pattern from the new pass manager. - Tab completion doesn't corrupt terminal output if the input covers multiple lines. Unfortunately this can only be done in a truly horrible way, as far as I can tell. But since the alternative is to implement our own line editor (which I don't think LLVM should be in the business of doing, at least for now) I think it may be acceptable. - Includes a fallback for the case where the user doesn't have libedit installed. Note that this uses C stdio, mainly because libedit also uses C stdio. Differential Revision: http://llvm-reviews.chandlerc.com/D2200 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200595 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'autoconf')
-rw-r--r--autoconf/configure.ac18
1 files changed, 18 insertions, 0 deletions
diff --git a/autoconf/configure.ac b/autoconf/configure.ac
index 7e710080ea..0368f80585 100644
--- a/autoconf/configure.ac
+++ b/autoconf/configure.ac
@@ -1190,6 +1190,17 @@ AC_ARG_ENABLE(terminfo,AS_HELP_STRING(
esac],
llvm_cv_enable_terminfo="yes")
+dnl --enable-libedit: check whether the user wants to turn off libedit.
+AC_ARG_ENABLE(libedit,AS_HELP_STRING(
+ [--enable-libedit],
+ [Use libedit if available (default is YES)]),
+ [case "$enableval" in
+ yes) llvm_cv_enable_libedit="yes" ;;
+ no) llvm_cv_enable_libedit="no" ;;
+ *) AC_MSG_ERROR([Invalid setting for --enable-libedit. Use "yes" or "no"]) ;;
+ esac],
+ llvm_cv_enable_libedit="yes")
+
dnl --enable-libffi : check whether the user wants to turn off libffi:
AC_ARG_ENABLE(libffi,AS_HELP_STRING(
--enable-libffi,[Check for the presence of libffi (default is NO)]),
@@ -1506,6 +1517,13 @@ if test "$llvm_cv_enable_terminfo" = "yes" ; then
[Define if the setupterm() function is supported this platform.]))
fi
+dnl The libedit library is optional; used by lib/LineEditor
+if test "$llvm_cv_enable_libedit" = "yes" ; then
+ AC_SEARCH_LIBS(el_init,edit,
+ AC_DEFINE([HAVE_LIBEDIT],[1],
+ [Define if libedit is available on this platform.]))
+fi
+
dnl libffi is optional; used to call external functions from the interpreter
if test "$llvm_cv_enable_libffi" = "yes" ; then
AC_SEARCH_LIBS(ffi_call,ffi,AC_DEFINE([HAVE_FFI_CALL],[1],