--- /dev/null
+Fix building against recent libedit versions by detecting readline hook signatures in :program:`configure`.
}
static int
-#if defined(_RL_FUNCTION_TYPEDEF)
+#if defined(_RL_FUNCTION_TYPEDEF) || !defined(Py_RL_STARTUP_HOOK_TAKES_ARGS)
on_startup_hook(void)
#else
on_startup_hook(const char *Py_UNUSED(text), int Py_UNUSED(state))
#ifdef HAVE_RL_PRE_INPUT_HOOK
static int
-#if defined(_RL_FUNCTION_TYPEDEF)
+#if defined(_RL_FUNCTION_TYPEDEF) || !defined(Py_RL_STARTUP_HOOK_TAKES_ARGS)
on_pre_input_hook(void)
#else
on_pre_input_hook(const char *Py_UNUSED(text), int Py_UNUSED(state))
fi
+ # Some editline versions declare rl_startup_hook as taking no args, others
+ # declare it as taking 2.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if rl_startup_hook takes arguments" >&5
+printf %s "checking if rl_startup_hook takes arguments... " >&6; }
+if test ${ac_cv_readline_rl_startup_hook_takes_args+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <stdio.h> /* Must be first for Gnu Readline */
+ #ifdef WITH_EDITLINE
+ # include <editline/readline.h>
+ #else
+ # include <readline/readline.h>
+ # include <readline/history.h>
+ #endif
+
+ extern int test_hook_func(const char *text, int state);
+int
+main (void)
+{
+rl_startup_hook=test_hook_func;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_readline_rl_startup_hook_takes_args=yes
+else $as_nop
+ ac_cv_readline_rl_startup_hook_takes_args=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_readline_rl_startup_hook_takes_args" >&5
+printf "%s\n" "$ac_cv_readline_rl_startup_hook_takes_args" >&6; }
+ if test "x$ac_cv_readline_rl_startup_hook_takes_args" = xyes
+then :
+
+
+printf "%s\n" "#define Py_RL_STARTUP_HOOK_TAKES_ARGS 1" >>confdefs.h
+
+
+fi
+
CFLAGS=$save_CFLAGS
# in readline as well as newer editline (April 2023)
AC_CHECK_TYPES([rl_compdisp_func_t], [], [], [readline_includes])
+ # Some editline versions declare rl_startup_hook as taking no args, others
+ # declare it as taking 2.
+ AC_CACHE_CHECK([if rl_startup_hook takes arguments], [ac_cv_readline_rl_startup_hook_takes_args], [
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([readline_includes]
+ [extern int test_hook_func(const char *text, int state);],
+ [rl_startup_hook=test_hook_func;])],
+ [ac_cv_readline_rl_startup_hook_takes_args=yes],
+ [ac_cv_readline_rl_startup_hook_takes_args=no]
+ )
+ ])
+ AS_VAR_IF([ac_cv_readline_rl_startup_hook_takes_args], [yes], [
+ AC_DEFINE([Py_RL_STARTUP_HOOK_TAKES_ARGS], [1], [Define if rl_startup_hook takes arguments])
+ ])
+
m4_undefine([readline_includes])
])dnl WITH_SAVE_ENV()
])
SipHash13: 3, externally defined: 0 */
#undef Py_HASH_ALGORITHM
+/* Define if rl_startup_hook takes arguments */
+#undef Py_RL_STARTUP_HOOK_TAKES_ARGS
+
/* Define if you want to enable internal statistics gathering. */
#undef Py_STATS