xref: /freebsd/contrib/ntp/sntp/m4/ntp_lineeditlibs.m4 (revision 0b3105a37d7adcadcb720112fed4dc4e8040be99)
1AC_DEFUN([NTP_LINEEDITLIBS], [
2    NTP_ORIG_LIBS="$LIBS"
3    AC_ARG_WITH(
4	[lineeditlibs],
5	[AS_HELP_STRING(
6	    [--with-lineeditlibs],
7	    [edit,editline (readline may be specified if desired)]
8	)],
9	[use_lineeditlibs="$withval"],
10	[use_lineeditlibs="edit,editline"]
11    )
12    AC_MSG_CHECKING([line editing libraries])
13    AC_MSG_RESULT([$use_lineeditlibs])
14    case "$use_lineeditlibs" in
15     no)
16	ntp_lib_lineedit=no
17	;;
18     *)
19	for lineedit_lib in `echo $use_lineeditlibs | sed -e 's/,/ /'`; do
20	    for term_lib in "" termcap curses ncurses; do
21		case "$term_lib" in
22		 '')
23		    TRY_LIB="-l$lineedit_lib"
24		    ;;
25		 *)
26		    TRY_LIB="-l$lineedit_lib -l$term_lib"
27		    ;;
28		esac
29		LIBS="$NTP_ORIG_LIBS $TRY_LIB"
30		AC_MSG_CHECKING([for readline() with $TRY_LIB])
31		AC_TRY_LINK_FUNC([readline], [ntp_lib_lineedit="$TRY_LIB"])
32		case "$ntp_lib_lineedit" in
33		 '')
34		    AC_MSG_RESULT([no])
35		    ;;
36		 *)
37		    # Use readline()
38		    AC_MSG_RESULT([yes])
39		    break
40		esac
41		case "$term_lib" in
42		 '')
43		    # do not try el_gets without a terminal library
44		    ;;
45		 *)
46		    AC_MSG_CHECKING([for el_gets() with $TRY_LIB])
47		    AC_TRY_LINK_FUNC([el_gets], [ntp_lib_lineedit="$TRY_LIB"])
48		    case "$ntp_lib_lineedit" in
49		     '')
50			AC_MSG_RESULT([no])
51			;;
52		     *) # Use el_gets()
53			AC_MSG_RESULT([yes])
54			break
55			;;
56		    esac	# $ntp_lib_lineedit
57		esac		# $term_lib
58	    done
59	    case "$ntp_lib_lineedit" in
60	     '')
61		;;
62	     *)
63		break
64		;;
65	    esac
66	done
67	LIBS="$NTP_ORIG_LIBS"
68	;;
69    esac	# $use_lineeditlibs
70
71    case "$ntp_lib_lineedit" in
72     '')
73	ntp_lib_lineedit="no"
74	;;
75     no)
76	;;
77     *)
78	EDITLINE_LIBS="$ntp_lib_lineedit"
79	AC_SUBST([EDITLINE_LIBS])
80	;;
81    esac	# $ntp_lib_lineedit
82
83    case "$ntp_lib_lineedit" in
84     no)
85	;;
86     *)
87	AC_CHECK_HEADERS([readline.h readline/readline.h histedit.h])
88	AC_CHECK_HEADERS([history.h readline/history.h])
89
90	case "$ac_cv_header_histedit_h" in
91	 yes)
92	    AC_CACHE_CHECK(
93		[number of arguments to el_init()],
94		[ntp_cv_el_init_args],
95		[AC_COMPILE_IFELSE(
96		    [AC_LANG_PROGRAM(
97			[[
98			    #include <stdio.h>
99			    #include <histedit.h>
100			]],
101			[[
102			    el_init("conftest", stdin, stdout, stderr);
103			]]
104		    )],
105		    [ntp_cv_el_init_args=4],
106		    [ntp_cv_el_init_args=3]
107		)]
108	    )
109	    AC_DEFINE_UNQUOTED(
110		[EL_INIT_ARGS],
111		[$ntp_cv_el_init_args],
112		[number of args to el_init()]
113		)
114	esac
115
116	AC_MSG_CHECKING([whether readline supports history])
117
118	ntp_lib_lineedit_history="no"
119	ORIG_LIBS="$LIBS"
120	LIBS="$ORIG_LIBS $ntp_lib_lineedit"
121	AC_TRY_LINK_FUNC([add_history], [ntp_lib_lineedit_history="yes"])
122	LIBS="$ORIG_LIBS"
123
124	AC_MSG_RESULT([$ntp_lib_lineedit_history])
125
126	case "$ntp_lib_lineedit_history" in
127	 yes)
128	    AC_DEFINE([HAVE_READLINE_HISTORY], [1],
129		[Define if your readline library has \`add_history'])
130	esac
131    esac	# $ntp_lib_lineedit
132    AS_UNSET([NTP_ORIG_LIBS])
133    AS_UNSET([ORIG_LIBS])
134    AS_UNSET([TRY_LIB])
135    AS_UNSET([use_lineeditlibs])
136])dnl
137