Blame m4/readline.m4

Packit Service f629e6
dnl Check for readline and dependencies
Packit Service f629e6
dnl Copyright (C) 2004, 2005, 2013, 2014 Free Software Foundation, Inc.
Packit Service f629e6
dnl
Packit Service f629e6
dnl This file is free software, distributed under the terms of the GNU
Packit Service f629e6
dnl General Public License.  As a special exception to the GNU General
Packit Service f629e6
dnl Public License, this file may be distributed as part of a program
Packit Service f629e6
dnl that contains a configuration script generated by Autoconf, under
Packit Service f629e6
dnl the same distribution terms as the rest of that program.
Packit Service f629e6
dnl
Packit Service f629e6
dnl Defines HAVE_LIBREADLINE to 1 if a working readline setup is
Packit Service f629e6
dnl found, and sets @LIBREADLINE@ to the necessary libraries.
Packit Service f629e6
dnl
Packit Service f629e6
dnl Based upon GNUPG_CHECK_READLINE.  Many more years into the
Packit Service f629e6
dnl twenty-first century, it is not enough to link a test program
Packit Service f629e6
dnl with the readline library. On several systems, if readline is
Packit Service f629e6
dnl not linked with the curses / termcap / whatever libraries, the
Packit Service f629e6
dnl problem is only discovered at run time.  Isn't that special?
Packit Service f629e6
Packit Service f629e6
AC_DEFUN([GAWK_CHECK_READLINE],
Packit Service f629e6
[
Packit Service f629e6
  AC_ARG_WITH([readline],
Packit Service f629e6
     AC_HELP_STRING([--with-readline=DIR],
Packit Service f629e6
	[look for the readline library in DIR]),
Packit Service f629e6
     [_do_readline=$withval],[_do_readline=yes])
Packit Service f629e6
Packit Service f629e6
  if test "$_do_readline" != "no" ; then
Packit Service f629e6
     if test -d "$withval" ; then
Packit Service f629e6
        CPPFLAGS="${CPPFLAGS} -I$withval/include"
Packit Service f629e6
        LDFLAGS="${LDFLAGS} -L$withval/lib"
Packit Service f629e6
     fi
Packit Service f629e6
Packit Service f629e6
     for _termcap in "" "-ltermcap" "-lcurses" "-lncurses" ; do
Packit Service f629e6
        _readline_save_libs=$LIBS
Packit Service f629e6
        _combo="-lreadline${_termcap:+ $_termcap}"
Packit Service f629e6
        LIBS="$LIBS $_combo"
Packit Service f629e6
Packit Service f629e6
        AC_MSG_CHECKING([whether readline via \"$_combo\" is present and sane])
Packit Service f629e6
Packit Service f629e6
	AC_TRY_RUN(
Packit Service f629e6
dnl source program:
Packit Service f629e6
AC_LANG_SOURCE([[#include <stdio.h>
Packit Service f629e6
#include <readline/readline.h>
Packit Service f629e6
#include <readline/history.h>
Packit Service f629e6
Packit Service f629e6
int main(int argc, char **argv)
Packit Service f629e6
{
Packit Service f629e6
	int fd;
Packit Service f629e6
	char *line;
Packit Service f629e6
Packit Service f629e6
	close(0);
Packit Service f629e6
	close(1);
Packit Service f629e6
	fd = open("/dev/null", 2);	/* should get fd 0 */
Packit Service f629e6
	dup(fd);
Packit Service f629e6
	line = readline("giveittome> ");
Packit Service f629e6
Packit Service f629e6
	/* some printfs don't handle NULL for %s */
Packit Service f629e6
	printf("got <%s>\n", line ? line : "(NULL)");
Packit Service f629e6
	return 0;
Packit Service f629e6
}]]),
Packit Service f629e6
dnl action if true:
Packit Service f629e6
            [_found_readline=yes],
Packit Service f629e6
dnl action if false:
Packit Service f629e6
            [_found_readline=no],
Packit Service f629e6
dnl action if cross compiling:
Packit Service f629e6
		AC_TRY_LINK([#include <stdio.h>
Packit Service f629e6
#include <readline/readline.h>
Packit Service f629e6
#include <readline/history.h>],		dnl includes
Packit Service f629e6
			dnl function body
Packit Service f629e6
			[
Packit Service f629e6
	int fd;
Packit Service f629e6
	char *line;
Packit Service f629e6
Packit Service f629e6
	close(0);
Packit Service f629e6
	close(1);
Packit Service f629e6
	fd = open("/dev/null", 2);	/* should get fd 0 */
Packit Service f629e6
	dup(fd);
Packit Service f629e6
	line = readline("giveittome> ");
Packit Service f629e6
Packit Service f629e6
	/* some printfs don't handle NULL for %s */
Packit Service f629e6
	printf("got <%s>\n", line ? line : "(NULL)");
Packit Service f629e6
],
Packit Service f629e6
dnl action if found:
Packit Service f629e6
			[_found_readline=yes],
Packit Service f629e6
dnl action if not found:
Packit Service f629e6
			[_found_readline=no]
Packit Service f629e6
		)
Packit Service f629e6
	)
Packit Service f629e6
Packit Service f629e6
        AC_MSG_RESULT([$_found_readline])
Packit Service f629e6
Packit Service f629e6
        LIBS=$_readline_save_libs
Packit Service f629e6
Packit Service f629e6
        if test $_found_readline = yes ; then
Packit Service f629e6
	   case $host_os in
Packit Service f629e6
	   *bsd* )	AC_CHECK_LIB(termcap, tgetent, _combo="$_combo -ltermcap")
Packit Service f629e6
	  	 ;;
Packit Service f629e6
	   esac
Packit Service f629e6
           AC_DEFINE(HAVE_LIBREADLINE,1,
Packit Service f629e6
	      [Define to 1 if you have a fully functional readline library.])
Packit Service f629e6
           AC_SUBST(LIBREADLINE,$_combo)
Packit Service f629e6
Packit Service f629e6
	   AC_CHECK_LIB(readline, history_list,
Packit Service f629e6
		[AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
Packit Service f629e6
		[],
Packit Service f629e6
		[$_combo])
Packit Service f629e6
Packit Service f629e6
           break
Packit Service f629e6
        fi
Packit Service f629e6
     done
Packit Service f629e6
Packit Service f629e6
     unset _termcap
Packit Service f629e6
     unset _readline_save_libs
Packit Service f629e6
     unset _combo
Packit Service f629e6
     unset _found_readline
Packit Service f629e6
  fi
Packit Service f629e6
])dnl