Skip to content

Commit

Permalink
bpo-13501: allow choosing between readline and libedit (GH-24189)
Browse files Browse the repository at this point in the history
In contrast to macOS, libedit is available as its own include file and
library on Linux systems to prevent file name clashes. So if both
libraries are available on the system, readline is currently chosen by
default; and if only libedit is available, it is not found at all. This
patch adds a way to link against libedit by adding the following
arguments to configure:

  --with-readline           link against libreadline (the default)
  --with-readline=editline  link against libeditline
  --with-readline=no        disable building the readline module
  --without-readline        (same)

The runtime detection of libedit vs. readline was already done in commit
7105319 (2019-12-04, serge-sans-paille: "bpo-38634: Allow
non-apple build to cope with libedit (GH-16986)").

Fixes: GH-12076 ("bpo-13501 Build or disable readline with Editline")
Fixes: bpo-13501 ("Make libedit support more generic; port readline / libedit to FreeBSD")
Co-authored-by: Enji Cooper (ngie-eign)
Co-authored-by: Martin Panter (vadmium)
Co-authored-by: Robert Marshall (kellinm)
  • Loading branch information
rohieb authored Feb 9, 2021
1 parent bf2e7e5 commit e1f7769
Show file tree
Hide file tree
Showing 6 changed files with 275 additions and 207 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
The configure script can now use *libedit* instead of *readline* with the
command line option ``--with-readline=editline``.
10 changes: 7 additions & 3 deletions Modules/readline.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,14 @@
# define RESTORE_LOCALE(sl)
#endif

#ifdef WITH_EDITLINE
# include <editline/readline.h>
#else
/* GNU readline definitions */
#undef HAVE_CONFIG_H /* Else readline/chardefs.h includes strings.h */
#include <readline/readline.h>
#include <readline/history.h>
# undef HAVE_CONFIG_H /* Else readline/chardefs.h includes strings.h */
# include <readline/readline.h>
# include <readline/history.h>
#endif

#ifdef HAVE_RL_COMPLETION_MATCHES
#define completion_matches(x, y) \
Expand Down
Loading

0 comments on commit e1f7769

Please sign in to comment.