summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/using/configure.rst7
-rw-r--r--Modules/readline.c4
-rwxr-xr-xconfigure17
-rw-r--r--configure.ac10
-rw-r--r--pyconfig.h.in3
5 files changed, 38 insertions, 3 deletions
diff --git a/Doc/using/configure.rst b/Doc/using/configure.rst
index 9403c19..83b4c7a 100644
--- a/Doc/using/configure.rst
+++ b/Doc/using/configure.rst
@@ -758,11 +758,12 @@ Libraries options
.. versionadded:: 3.3
-.. cmdoption:: --with-readline=editline
+.. cmdoption:: --with-readline=readline|editline
- Use ``editline`` library for backend of the :mod:`readline` module.
+ Designate a backend library for the :mod:`readline` module.
- Define the ``WITH_EDITLINE`` macro.
+ * readline: Use readline as the backend.
+ * editline: Use editline as the backend.
.. versionadded:: 3.10
diff --git a/Modules/readline.c b/Modules/readline.c
index aeae654..4b47302 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -1018,6 +1018,8 @@ on_hook(PyObject *func)
static int
#if defined(_RL_FUNCTION_TYPEDEF)
on_startup_hook(void)
+#elif defined(WITH_APPLE_EDITLINE)
+on_startup_hook(const char *Py_UNUSED(text), int Py_UNUSED(state))
#else
on_startup_hook(void)
#endif
@@ -1033,6 +1035,8 @@ on_startup_hook(void)
static int
#if defined(_RL_FUNCTION_TYPEDEF)
on_pre_input_hook(void)
+#elif defined(WITH_APPLE_EDITLINE)
+on_pre_input_hook(const char *Py_UNUSED(text), int Py_UNUSED(state))
#else
on_pre_input_hook(void)
#endif
diff --git a/configure b/configure
index 098def9..0e5f3f6 100755
--- a/configure
+++ b/configure
@@ -23781,6 +23781,7 @@ fi
+
# Check whether --with-readline was given.
if test ${with_readline+y}
then :
@@ -23803,6 +23804,22 @@ else $as_nop
fi
+# gh-105323: Need to handle the macOS editline as an alias of readline.
+case $ac_sys_system/$ac_sys_release in #(
+ Darwin/*) :
+ ac_fn_c_check_type "$LINENO" "Function" "ac_cv_type_Function" "#include <readline/readline.h>
+"
+if test "x$ac_cv_type_Function" = xyes
+then :
+ printf "%s\n" "#define WITH_APPLE_EDITLINE 1" >>confdefs.h
+
+fi
+ ;; #(
+ *) :
+
+ ;;
+esac
+
if test "x$with_readline" = xreadline
then :
diff --git a/configure.ac b/configure.ac
index 3e6cbc6..4938681 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5832,6 +5832,7 @@ dnl library (tinfo ncursesw ncurses termcap). We now assume that libreadline
dnl or readline.pc provide correct linker information.
AH_TEMPLATE([WITH_EDITLINE], [Define to build the readline module against libedit.])
+AH_TEMPLATE([WITH_APPLE_EDITLINE], [Define to build the readline module against Apple BSD editline.])
AC_ARG_WITH(
[readline],
@@ -5848,6 +5849,15 @@ AC_ARG_WITH(
[with_readline=readline]
)
+# gh-105323: Need to handle the macOS editline as an alias of readline.
+AS_CASE([$ac_sys_system/$ac_sys_release],
+ [Darwin/*], [AC_CHECK_TYPE([Function],
+ [AC_DEFINE([WITH_APPLE_EDITLINE])],
+ [],
+ [@%:@include <readline/readline.h>])],
+ []
+)
+
AS_VAR_IF([with_readline], [readline], [
PKG_CHECK_MODULES([LIBREADLINE], [readline], [
LIBREADLINE=readline
diff --git a/pyconfig.h.in b/pyconfig.h.in
index 86c72cc..c2c75c9 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -1788,6 +1788,9 @@
/* Define if WINDOW in curses.h offers a field _flags. */
#undef WINDOW_HAS_FLAGS
+/* Define to build the readline module against Apple BSD editline. */
+#undef WITH_APPLE_EDITLINE
+
/* Define if you want build the _decimal module using a coroutine-local rather
than a thread-local context */
#undef WITH_DECIMAL_CONTEXTVAR