1 # Process this file with autoconf to produce a configure script.
3 # Copyright (C) 1984-2002 Mark Nudelman
5 # You may distribute under the terms of either the GNU General Public
6 # License or the Less License, as specified in the README file.
8 # For more information about less, or for information on how to
9 # contact the author, see the README file.
11 # Autoconf initialization.
13 AC_CONFIG_SRCDIR([forwback.c])
14 AC_CONFIG_HEADER([defines.h])
16 # Checks for programs.
19 AC_PROG_GCC_TRADITIONAL
22 # Checks for compilation model.
25 # Checks for general libraries.
26 AC_CHECK_LIB(xcurses, initscr, [have_xcurses=yes], [have_xcurses=no])
27 AC_CHECK_LIB(ncurses, initscr, [have_ncurses=yes], [have_ncurses=no])
28 AC_CHECK_LIB(curses, initscr, [have_curses=yes], [have_curses=no])
29 AC_CHECK_LIB(termcap, tgetent, [have_termcap=yes], [have_termcap=no])
30 AC_CHECK_LIB(termlib, tgetent, [have_termlib=yes], [have_termlib=no])
31 # Regular expressions (regcmp) are in -lgen on Solaris 2,
32 # and in -lintl on SCO Unix.
33 AC_CHECK_LIB(gen, regcmp)
34 AC_CHECK_LIB(intl, regcmp)
35 AC_CHECK_LIB(PW, regcmp)
37 # Checks for terminal libraries
38 AC_MSG_CHECKING([for working terminal libraries])
41 # Check for systems where curses is broken.
43 if test x`uname -s` = "xHP-UX" >/dev/null 2>&1; then
44 if test x`uname -r` = "xB.11.00" >/dev/null 2>&1; then
47 if test x`uname -r` = "xB.11.11" >/dev/null 2>&1; then
52 if test $curses_broken = 0; then
54 if test "x$TERMLIBS" = x; then
55 if test $have_xcurses = yes; then
58 LIBS="$LIBS $TERMLIBS"
59 AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
60 [termok=yes], [termok=no])
62 if test $termok = no; then TERMLIBS=""; fi
67 if test "x$TERMLIBS" = x; then
68 if test $have_ncurses = yes; then
71 LIBS="$LIBS $TERMLIBS"
72 AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
73 [termok=yes], [termok=no])
75 if test $termok = no; then TERMLIBS=""; fi
80 if test "x$TERMLIBS" = x; then
81 if test $have_curses = yes; then
84 LIBS="$LIBS $TERMLIBS"
85 AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
86 [termok=yes], [termok=no])
88 if test $termok = no; then TERMLIBS=""; fi
92 # -- Try curses & termcap.
93 if test "x$TERMLIBS" = x; then
94 if test $have_curses = yes; then
95 if test $have_termcap = yes; then
96 TERMLIBS="-lcurses -ltermcap"
98 LIBS="$LIBS $TERMLIBS"
99 AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
100 [termok=yes], [termok=no])
102 if test $termok = no; then TERMLIBS=""; fi
109 if test "x$TERMLIBS" = x; then
110 if test $have_termcap = yes; then
113 LIBS="$LIBS $TERMLIBS"
114 AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
115 [termok=yes], [termok=no])
117 if test $termok = no; then TERMLIBS=""; fi
122 if test "x$TERMLIBS" = x; then
123 if test $have_termlib = yes; then
124 TERMLIBS="-lcurses -ltermlib"
126 LIBS="$LIBS $TERMLIBS"
127 AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
128 [termok=yes], [termok=no])
130 if test $termok = no; then TERMLIBS=""; fi
134 if test "x$TERMLIBS" = x; then
135 AC_MSG_RESULT(Cannot find terminal libraries - configure failed)
138 AC_MSG_RESULT(using $TERMLIBS)
139 LIBS="$LIBS $TERMLIBS"
141 # Checks for header files.
143 AC_CHECK_HEADERS([ctype.h errno.h fcntl.h limits.h stdio.h stdlib.h string.h termcap.h termio.h termios.h time.h unistd.h values.h sys/ioctl.h sys/stream.h sys/ptem.h])
145 # Checks for typedefs, structures, and compiler characteristics.
152 # Autoheader templates for symbols defined later by AC_DEFINE.
153 AH_TEMPLATE([HAVE_POSIX_REGCOMP],
154 [POSIX regcomp() and regex.h])
155 AH_TEMPLATE([HAVE_PCRE],
156 [PCRE (Perl-compatible regular expression) library])
157 AH_TEMPLATE([HAVE_RE_COMP],
159 AH_TEMPLATE([HAVE_REGCMP],
161 AH_TEMPLATE([HAVE_V8_REGCOMP],
162 [Henry Spencer V8 regcomp() and regexp.h])
163 AH_TEMPLATE([NO_REGEX],
164 [pattern matching is supported, but without metacharacters.])
165 AH_TEMPLATE([HAVE_REGEXEC2],
167 AH_TEMPLATE([HAVE_VOID],
168 [Define HAVE_VOID if your compiler supports the "void" type.])
169 AH_TEMPLATE([HAVE_CONST],
170 [Define HAVE_CONST if your compiler supports the "const" modifier.])
171 AH_TEMPLATE([HAVE_TIME_T],
172 [Define HAVE_TIME_T if your system supports the "time_t" type.])
173 AH_TEMPLATE([HAVE_STRERROR],
174 [Define HAVE_STRERROR if you have the strerror() function.])
175 AH_TEMPLATE([HAVE_FILENO],
176 [Define HAVE_FILENO if you have the fileno() macro.])
177 AH_TEMPLATE([HAVE_ERRNO],
178 [Define HAVE_ERRNO if you have the errno variable.])
179 AH_TEMPLATE([MUST_DEFINE_ERRNO],
180 [Define MUST_DEFINE_ERRNO if you have errno but it is not define in errno.h.])
181 AH_TEMPLATE([HAVE_SYS_ERRLIST],
182 [Define HAVE_SYS_ERRLIST if you have the sys_errlist[] variable.])
183 AH_TEMPLATE([HAVE_OSPEED],
184 [Define HAVE_OSPEED if your termcap library has the ospeed variable.])
185 AH_TEMPLATE([MUST_DEFINE_OSPEED],
186 [Define MUST_DEFINE_OSPEED if you have ospeed but it is not defined in termcap.h.])
187 AH_TEMPLATE([HAVE_LOCALE],
188 [Define HAVE_LOCALE if you have locale.h and setlocale.])
189 AH_TEMPLATE([HAVE_TERMIOS_FUNCS],
190 [Define HAVE_TERMIOS_FUNCS if you have tcgetattr/tcsetattr.])
191 AH_TEMPLATE([HAVE_UPPER_LOWER],
192 [Define HAVE_UPPER_LOWER if you have isupper, islower, toupper, tolower.])
193 AH_TEMPLATE([HAVE_SIGSET_T],
194 [Define HAVE_SIGSET_T you have the sigset_t type.])
195 AH_TEMPLATE([HAVE_SIGEMPTYSET],
196 [Define HAVE_SIGEMPTYSET if you have the sigemptyset macro.])
197 AH_TEMPLATE([EDIT_PGM],
198 [Define EDIT_PGM to your editor.])
200 # Checks for identifiers.
202 AC_MSG_CHECKING(for void)
203 AC_TRY_COMPILE(, [void *foo = 0;],
204 [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_VOID)], [AC_MSG_RESULT(no)])
205 AC_MSG_CHECKING(for const)
206 AC_TRY_COMPILE(, [const int foo = 0;],
207 [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_CONST)], [AC_MSG_RESULT(no)])
208 AC_MSG_CHECKING(for time_t)
209 AC_TRY_COMPILE([#include <time.h>], [time_t t = 0;],
210 [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_TIME_T)], [AC_MSG_RESULT(no)])
212 # Checks for library functions.
214 AC_CHECK_FUNCS([fsync memcpy popen _setjmp sigprocmask sigsetmask stat strchr strstr system])
216 # Some systems have termios.h but not the corresponding functions.
217 AC_CHECK_FUNC(tcgetattr, AC_DEFINE(HAVE_TERMIOS_FUNCS))
219 AC_MSG_CHECKING(for fileno)
223 #endif], [static int x; x = fileno(stdin);],
224 [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FILENO)], [AC_MSG_RESULT(no)])
226 AC_MSG_CHECKING(for strerror)
236 #endif], [static char *x; x = strerror(0);],
237 [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_STRERROR)], [AC_MSG_RESULT(no)])
239 AC_MSG_CHECKING(for sys_errlist)
240 AC_TRY_LINK(, [extern char *sys_errlist[]; static char **x; x = sys_errlist;],
241 [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYS_ERRLIST)], [AC_MSG_RESULT(no)])
243 AC_MSG_CHECKING(for sigset_t)
246 ], [sigset_t s; s = 0;],
247 [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SIGSET_T)], [AC_MSG_RESULT(no)])
249 AC_MSG_CHECKING(for sigemptyset)
252 ], [sigset_t s; sigemptyset(&s);],
253 [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SIGEMPTYSET)], [AC_MSG_RESULT(no)])
256 AC_MSG_CHECKING(for errno)
260 #endif], [static int x; x = errno;],
261 [AC_MSG_RESULT(yes - in errno.h); AC_DEFINE(HAVE_ERRNO) have_errno=yes])
262 if test $have_errno = no; then
266 #endif], [extern int errno; static int x; x = errno;],
267 [AC_MSG_RESULT(yes - must define); AC_DEFINE(HAVE_ERRNO) AC_DEFINE(MUST_DEFINE_ERRNO)],
271 AC_MSG_CHECKING(for locale)
272 AC_TRY_LINK([#include <locale.h>
273 #include <ctype.h>], [setlocale(LC_CTYPE,""); isprint(0); iscntrl(0);],
274 [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_LOCALE)], [AC_MSG_RESULT(no)])
275 AC_MSG_CHECKING(for ctype functions)
279 #endif], [static int x; x = isupper(x); x = tolower(x); x = toupper(x);],
280 [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UPPER_LOWER)], [AC_MSG_RESULT(no)])
282 # Checks for external variable ospeed in the termcap library.
284 AC_MSG_CHECKING(termcap for ospeed)
286 #include <sys/types.h>
292 #endif], [ospeed = 0;],
293 [AC_MSG_RESULT(yes - in termcap.h); AC_DEFINE(HAVE_OSPEED) have_ospeed=yes])
294 if test $have_ospeed = no; then
295 AC_TRY_LINK(, [extern short ospeed; ospeed = 0;],
296 [AC_MSG_RESULT(yes - must define); AC_DEFINE(HAVE_OSPEED) AC_DEFINE(MUST_DEFINE_OSPEED)],
300 # Checks for regular expression functions.
302 have_posix_regex=unknown
303 AC_MSG_CHECKING(for regcomp)
307 [ --with-regex={auto,pcre,posix,regcmp,re_comp,regcomp,regcomp-local} Select a regular expression library [auto]],
308 WANT_REGEX="$withval")
310 if test $have_regex = no; then
311 if test $WANT_REGEX = auto -o $WANT_REGEX = posix; then
312 # Some versions of Solaris have a regcomp() function, but it doesn't work!
313 # So we run a test program. If we're cross-compiling, do it the old way.
315 #include <sys/types.h>
317 main() { regex_t r; regmatch_t rm; char *text = "xabcy";
318 if (regcomp(&r, "abc", 0)) exit(1);
319 if (regexec(&r, text, 1, &rm, 0)) exit(1);
321 if (rm.rm_so != 1) exit(1); /* check for correct offset */
323 if (rm.rm_sp != text + 1) exit(1); /* check for correct offset */
326 have_posix_regex=yes, have_posix_regex=no, have_posix_regex=unknown)
327 if test $have_posix_regex = yes; then
328 AC_MSG_RESULT(using POSIX regcomp)
329 AC_DEFINE(HAVE_POSIX_REGCOMP)
331 elif test $have_posix_regex = unknown; then
333 #include <sys/types.h>
335 [regex_t *r; regfree(r);],
336 AC_MSG_RESULT(using POSIX regcomp)
337 AC_DEFINE(HAVE_POSIX_REGCOMP) have_regex=yes)
344 if test $have_regex = no; then
345 if test $WANT_REGEX = auto -o $WANT_REGEX = pcre; then
346 AC_CHECK_LIB(pcre, pcre_compile,
347 [AC_MSG_RESULT(using pcre); AC_DEFINE(HAVE_PCRE) LIBS="$LIBS -lpcre" have_regex=yes], [])
351 if test $have_regex = no; then
352 if test $WANT_REGEX = auto -o $WANT_REGEX = regcmp; then
353 AC_CHECK_FUNC(regcmp,
354 AC_MSG_RESULT(using regcmp); AC_DEFINE(HAVE_REGCMP) have_regex=yes)
358 if test $have_regex = no; then
359 if test $WANT_REGEX = auto -o $WANT_REGEX = regcomp; then
361 #include "regexp.h"], [regcomp("");],
362 AC_MSG_RESULT(using V8 regcomp); AC_DEFINE(HAVE_V8_REGCOMP) have_regex=yes)
366 if test $have_regex = no && test -f ${srcdir}/regexp.c; then
367 if test $WANT_REGEX = auto -o $WANT_REGEX = regcomp-local; then
368 AC_MSG_RESULT(using V8 regcomp -- local source); AC_DEFINE(HAVE_V8_REGCOMP) AC_DEFINE(HAVE_REGEXEC2) REGEX_O='regexp.$(O)' AC_SUBST(REGEX_O) have_regex=yes
372 if test $have_regex = no; then
373 if test $WANT_REGEX = auto -o $WANT_REGEX = re_comp; then
374 AC_MSG_RESULT(using re_comp); AC_CHECK_FUNC(re_comp, AC_DEFINE(HAVE_RE_COMP) have_regex=yes)
378 if test $have_regex = no; then
379 AC_MSG_RESULT(cannot find regular expression library); AC_DEFINE(NO_REGEX)
383 [ --with-editor=PROGRAM use PROGRAM as the default editor [vi]],
384 AC_DEFINE_UNQUOTED(EDIT_PGM, "$withval"), AC_DEFINE(EDIT_PGM, "vi"))
387 /* Unix definition file for less. -*- C -*-
389 * This file has 3 sections:
391 * Settings always true on Unix.
392 * Settings automatically determined by configure.
394 * * * * * * WARNING * * * * * *
395 * If you edit defines.h by hand, do "touch stamp-h" before you run make
396 * so config.status doesn't overwrite your changes.
399 /* User preferences. */
402 * SECURE is 1 if you wish to disable a bunch of features in order to
403 * be safe to run by unprivileged users.
408 * SHELL_ESCAPE is 1 if you wish to allow shell escapes.
409 * (This is possible only if your system supplies the system() function.)
411 #define SHELL_ESCAPE (!SECURE)
414 * EXAMINE is 1 if you wish to allow examining files by name from within less.
416 #define EXAMINE (!SECURE)
419 * TAB_COMPLETE_FILENAME is 1 if you wish to allow the TAB key
420 * to complete filenames at prompts.
422 #define TAB_COMPLETE_FILENAME (!SECURE)
425 * CMD_HISTORY is 1 if you wish to allow keys to cycle through
426 * previous commands at prompts.
428 #define CMD_HISTORY 1
431 * HILITE_SEARCH is 1 if you wish to have search targets to be
432 * displayed in standout mode.
434 #define HILITE_SEARCH 1
437 * EDITOR is 1 if you wish to allow editor invocation (the "v" command).
438 * (This is possible only if your system supplies the system() function.)
439 * EDIT_PGM is the name of the (default) editor to be invoked.
441 #define EDITOR (!SECURE)
444 * TAGS is 1 if you wish to support tag files.
446 #define TAGS (!SECURE)
449 * USERFILE is 1 if you wish to allow a .less file to specify
450 * user-defined key bindings.
452 #define USERFILE (!SECURE)
455 * GLOB is 1 if you wish to have shell metacharacters expanded in filenames.
456 * This will generally work if your system provides the "popen" function
457 * and the "echo" shell command.
459 #define GLOB (!SECURE)
462 * PIPEC is 1 if you wish to have the "|" command
463 * which allows the user to pipe data into a shell command.
465 #define PIPEC (!SECURE)
468 * LOGFILE is 1 if you wish to allow the -l option (to create log files).
470 #define LOGFILE (!SECURE)
473 * GNU_OPTIONS is 1 if you wish to support the GNU-style command
474 * line options --help and --version.
476 #define GNU_OPTIONS 1
479 * ONLY_RETURN is 1 if you want RETURN to be the only input which
480 * will continue past an error message.
481 * Otherwise, any key will continue past an error message.
483 #define ONLY_RETURN 0
486 * LESSKEYFILE is the filename of the default lesskey output file
487 * (in the HOME directory).
488 * LESSKEYFILE_SYS is the filename of the system-wide lesskey output file.
489 * DEF_LESSKEYINFILE is the filename of the default lesskey input
490 * (in the HOME directory).
492 #define LESSKEYFILE ".less"
493 #define LESSKEYFILE_SYS SYSDIR "/sysless"
494 #define DEF_LESSKEYINFILE ".lesskey"
497 /* Settings always true on Unix. */
500 * Define MSDOS_COMPILER if compiling under Microsoft C.
502 #define MSDOS_COMPILER 0
505 * Pathname separator character.
507 #define PATHNAME_SEP "/"
510 * HAVE_SYS_TYPES_H is 1 if your system has <sys/types.h>.
512 #define HAVE_SYS_TYPES_H 1
515 * Define if you have the <sgstat.h> header file.
520 * HAVE_PERROR is 1 if your system has the perror() call.
521 * (Actually, if it has sys_errlist, sys_nerr and errno.)
523 #define HAVE_PERROR 1
526 * HAVE_TIME is 1 if your system has the time() call.
531 * HAVE_SHELL is 1 if your system supports a SHELL command interpreter.
536 * Default shell metacharacters and meta-escape character.
538 #define DEF_METACHARS "; *?\t\n'\"()<>|&^`#\\"
539 #define DEF_METAESCAPE "\\"
542 * HAVE_DUP is 1 if your system has the dup() call.
547 * Sizes of various buffers.
549 #define CMDBUF_SIZE 512 /* Buffer for multichar commands */
550 #define UNGOT_SIZE 100 /* Max chars to unget() */
551 #define LINEBUF_SIZE 1024 /* Max size of line in input file */
552 #define OUTBUF_SIZE 1024 /* Output buffer */
553 #define PROMPT_SIZE 200 /* Max size of prompt string */
554 #define TERMBUF_SIZE 2048 /* Termcap buffer for tgetent */
555 #define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */
556 #define TAGLINE_SIZE 512 /* Max size of line in tags file */
557 #define TABSTOP_MAX 32 /* Max number of custom tab stops */
559 /* Settings automatically determined by configure. */
562 AC_CONFIG_FILES([Makefile])