]> granicus.if.org Git - python/commitdiff
Rewritten the readline test, hopefully it's okay now.
authorGuido van Rossum <guido@python.org>
Tue, 31 Dec 1996 22:34:17 +0000 (22:34 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 31 Dec 1996 22:34:17 +0000 (22:34 +0000)
configure.in

index 1dc5c8e392fdff1638b38fc5dca9420a235b6c9b..5d60834a67f813f2d6ce771f19ddd5b729931f57 100644 (file)
@@ -243,38 +243,67 @@ AC_MSG_RESULT($withval)
 LIBS="$withval $LIBS"
 ], AC_MSG_RESULT(no))
 
-AC_MSG_CHECKING(for --with-readline)
-AC_ARG_WITH(readline, [--with-readline[=DIRECTORY] use GNU readline library], [
-AC_MSG_RESULT($withval)
-AC_DEFINE(WITH_READLINE)
-if test -d "$withval"
-then LDFLAGS="$LDFLAGS -L$withval"
+AC_MSG_CHECKING(for --with(out)-readline)
+use_readline="yes"
+AC_ARG_WITH(readline,
+[--with-readline=DIRECTORY search GNU readline library in DIRECTORY
+--without-readline        do not use GNU readline library],
+[AC_MSG_RESULT($withval); use_readline="$withval"],
+[AC_MSG_RESULT((default) yes)])
+if test "$use_readline" != "no"
+then
+       if test "$use_readline" != "yes"
+       then add_ldflags="-L$use_readline"
+       else add_ldflags=""
+       fi
+       # See where the termcap interface could be hiding...
+       AC_MSG_CHECKING(for readline and termcap libraries)
+       AC_CACHE_VAL(ac_cv_readline_termcap,
+               [
+               AC_MSG_RESULT(have to find out)
+               save_libs="$LIBS"
+               save_ldflags="$LDFLAGS"
+               LDFLAGS="$save_ldflags $add_ldflags"
+               rl="-lreadline"
+               first=""
+               # Hack for SGI IRIX 5.x.
+               # Both termcap and gl have an entry point clear().
+               # When linking with both shared libraries, we're in trouble.
+               # We don't need the one in termcap.
+               # By forcing a static link for termcap, we avoid
+               # linking its clear() entry point.
+               if test -f /usr/lib/libgl.so -a -f /usr/lib/libtermcap.a
+               then first="/usr/lib/libtermcap.a"
+               fi
+               for add_lib in \
+                       "$first" "-ltermcap" "-ltermlib" "-lcurses" "-lncurses"
+               do
+                       AC_MSG_CHECKING(for $rl $add_lib)
+                       LIBS="$save_libs $rl $add_lib"
+                       AC_TRY_LINK([extern char *readline();],
+                           [char *line=readline();],
+                           [AC_MSG_RESULT(yes);
+                            ac_cv_readline_termcap="$rl $add_lib"],
+                           [AC_MSG_RESULT(no)])
+                       if test "$ac_cv_readline_termcap" != ""
+                       then break
+                       fi
+               done
+               LIBS="$save_libs"
+               LDFLAGS="$save_ldflags"
+               AC_MSG_CHECKING(result from check for readline and termcap)
+               ])
+       if test "$ac_cv_readline_termcap" = ""
+       then
+               AC_MSG_RESULT(no)
+               AC_MSG_WARN(cannot link with GNU readline -- see config.log)
+       else
+               AC_MSG_RESULT($ac_cv_readline_termcap)
+               LIBS="$LIBS $ac_cv_readline_termcap"
+               LDFLAGS="$LDFLAGS $add_ldflags"
+               AC_DEFINE(WITH_READLINE)
+       fi
 fi
-# first check if we can compile without lib termcap
-AC_MSG_CHECKING(for -lreadline without -ltermcap)
-# check if a libreadline exists
-LIBS="$LIBS -lreadline"
-AC_TRY_LINK(extern char *readline();,char *line=readline();,[
-      AC_MSG_RESULT(yes)],[
-      AC_MSG_RESULT(no)
-      AC_CHECKING(for -lreadline that needs -ltermcap)
-      termcap=
-      AC_CHECK_LIB(termcap, tgetent, [termcap=termcap], [
-      AC_CHECK_LIB(termlib, tgetent, [termcap=termlib], [
-      AC_ERROR(no working -ltermcap/termlib found -- do not use --with-readline)])])
-      # Avoid possible conflict between shared libraries termcap and gl
-      # on IRIX 5: both contain a routine called clear.
-      if test -f /usr/lib/lib$termcap.a
-      then LIBS="$LIBS /usr/lib/lib$termcap.a"
-      else LIBS="$LIBS -l$termcap"
-      fi
-      AC_MSG_CHECKING(for -lreadline)
-      AC_TRY_LINK(extern char *readline();, char *line=readline();,[
-         AC_MSG_RESULT(yes)],[
-        AC_ERROR(no working GNU readline library found -- do not use --with-readline)])
-      ])
-],
-AC_MSG_RESULT(no))
 
 AC_MSG_CHECKING(for --with-thread)
 AC_ARG_WITH(thread, [--with-thread[=DIRECTORY] make interpreter thread-safe], [