From e01a0cda4337e0cd3e9e558d6f583f0dc03a2de8 Mon Sep 17 00:00:00 2001 From: "Gregory P. Smith" Date: Sun, 7 Sep 2008 06:42:43 +0000 Subject: [PATCH] backport r66179 and r66283 from trunk: - Issue #1204: The configure script now tests for additional libraries that may be required when linking against readline. This fixes issues with x86_64 builds on some platforms (a few Linux flavors and OpenBSD). --- configure.in | 40 ++++++++++++++++++++++++++++++++-------- pyconfig.h.in | 3 --- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/configure.in b/configure.in index 4fc9e7a5c9..87a0e34244 100644 --- a/configure.in +++ b/configure.in @@ -201,7 +201,7 @@ case $ac_sys_system/$ac_sys_release in # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined, # even though select is a POSIX function. Reported by J. Ribbens. # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish. - OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0@:>@) + OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@) define_xopen_source=no # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is # also defined. This can be overridden by defining _BSD_SOURCE @@ -3095,16 +3095,40 @@ fi # check where readline lives # save the value of LIBS so we don't actually link Python with readline LIBS_no_readline=$LIBS -AC_CHECK_LIB(readline, readline) -if test "$ac_cv_have_readline_readline" = no -then - AC_CHECK_LIB(termcap, readline) + +# On some systems we need to link readline to a termcap compatible +# library. NOTE: Keep the precedence of listed libraries synchronised +# with setup.py. +py_cv_lib_readline=no +AC_MSG_CHECKING([how to link readline libs]) +for py_libtermcap in "" ncursesw ncurses curses termcap; do + if test -z "$py_libtermcap"; then + READLINE_LIBS="-lreadline" + else + READLINE_LIBS="-lreadline -l$py_libtermcap" + fi + LIBS="$READLINE_LIBS $LIBS_no_readline" + AC_LINK_IFELSE( + [AC_LANG_CALL([],[readline])], + [py_cv_lib_readline=yes]) + if test $py_cv_lib_readline = yes; then + break + fi +done +# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts +#AC_SUBST([READLINE_LIBS]) +if test $py_cv_lib_readline = !yes; then + AC_MSG_RESULT([none]) +else + AC_MSG_RESULT([$READLINE_LIBS]) + AC_DEFINE(HAVE_LIBREADLINE, 1, + [Define if you have the readline library (-lreadline).]) fi # check for readline 2.1 AC_CHECK_LIB(readline, rl_callback_handler_install, AC_DEFINE(HAVE_RL_CALLBACK, 1, - [Define if you have readline 2.1]), , ) + [Define if you have readline 2.1]), ,$READLINE_LIBS) # check for readline 2.2 AC_TRY_CPP([#include ], @@ -3120,12 +3144,12 @@ fi # check for readline 4.0 AC_CHECK_LIB(readline, rl_pre_input_hook, AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1, - [Define if you have readline 4.0]), , ) + [Define if you have readline 4.0]), ,$READLINE_LIBS) # check for readline 4.2 AC_CHECK_LIB(readline, rl_completion_matches, AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1, - [Define if you have readline 4.2]), , ) + [Define if you have readline 4.2]), ,$READLINE_LIBS) # also in readline 4.2 AC_TRY_CPP([#include ], diff --git a/pyconfig.h.in b/pyconfig.h.in index fc8d1468a6..1bf543280c 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in @@ -309,9 +309,6 @@ /* Define to 1 if you have the `resolv' library (-lresolv). */ #undef HAVE_LIBRESOLV -/* Define to 1 if you have the `termcap' library (-ltermcap). */ -#undef HAVE_LIBTERMCAP - /* Define to 1 if you have the header file. */ #undef HAVE_LIBUTIL_H -- 2.40.0