Imported Upstream version 551
[platform/upstream/less.git] / configure.ac
1 # Process this file with autoconf to produce a configure script.
2
3 # Copyright (C) 1984-2011  Mark Nudelman
4 #
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.
7 #
8 # For more information about less, or for information on how to 
9 # contact the author, see the README file.
10
11 # Autoconf initialization.
12 AC_INIT(less, 1)
13 AC_CONFIG_SRCDIR([forwback.c])
14 AC_CONFIG_HEADER([defines.h])
15
16 # Checks for programs.
17 AC_PROG_CC
18 AC_ISC_POSIX
19 AC_PROG_GCC_TRADITIONAL
20 AC_PROG_INSTALL
21
22 # Checks for compilation model.
23 AC_SYS_LARGEFILE
24
25 # Checks for general libraries.
26 AC_CHECK_LIB(tinfo, tgoto, [have_tinfo=yes], [have_tinfo=no])
27 AC_CHECK_LIB(xcurses, initscr, [have_xcurses=yes], [have_xcurses=no])
28 AC_CHECK_LIB(ncursesw, initscr, [have_ncursesw=yes], [have_ncursesw=no])
29 AC_CHECK_LIB(ncurses, initscr, [have_ncurses=yes], [have_ncurses=no])
30 AC_CHECK_LIB(curses, initscr, [have_curses=yes], [have_curses=no])
31 AC_CHECK_LIB(termcap, tgetent, [have_termcap=yes], [have_termcap=no])
32 AC_CHECK_LIB(termlib, tgetent, [have_termlib=yes], [have_termlib=no])
33 # Regular expressions (regcmp) are in -lgen on Solaris 2, (but in libc
34 # at least on Solaris 10 (2.10)) and in -lintl on SCO Unix.
35 AC_SEARCH_LIBS([regcmp], [gen intl PW])
36
37 # Checks for terminal libraries
38 AC_MSG_CHECKING([for working terminal libraries])
39 TERMLIBS=
40
41 # Check for systems where curses is broken.
42 curses_broken=0
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
45    curses_broken=1
46 fi
47 if test x`uname -r` = "xB.11.11" >/dev/null 2>&1; then
48    curses_broken=1
49 fi
50 fi
51
52 if test $curses_broken = 0; then
53
54 # -- Try tinfo.
55 if test "x$TERMLIBS" = x; then
56   if test $have_tinfo = yes; then
57     TERMLIBS="-ltinfo"
58     SAVE_LIBS=$LIBS
59     LIBS="$LIBS $TERMLIBS"
60     AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
61       [termok=yes], [termok=no])
62     LIBS=$SAVE_LIBS
63     if test $termok = no; then TERMLIBS=""; fi
64   fi
65 fi
66
67 # -- Try xcurses.
68 if test "x$TERMLIBS" = x; then
69   if test $have_xcurses = yes; then
70     TERMLIBS="-lxcurses"
71     SAVE_LIBS=$LIBS
72     LIBS="$LIBS $TERMLIBS"
73     AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
74       [termok=yes], [termok=no])
75     LIBS=$SAVE_LIBS
76     if test $termok = no; then TERMLIBS=""; fi
77   fi
78 fi
79
80 # -- Try ncursesw.
81 if test "x$TERMLIBS" = x; then
82   if test $have_ncursesw = yes; then
83     TERMLIBS="-lncursesw"
84     SAVE_LIBS=$LIBS
85     LIBS="$LIBS $TERMLIBS"
86     AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
87       [termok=yes], [termok=no])
88     LIBS=$SAVE_LIBS
89     if test $termok = no; then TERMLIBS=""; fi
90   fi
91 fi
92
93 # -- Try ncurses.
94 if test "x$TERMLIBS" = x; then
95   if test $have_ncurses = yes; then
96     TERMLIBS="-lncurses"
97     SAVE_LIBS=$LIBS
98     LIBS="$LIBS $TERMLIBS"
99     AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
100       [termok=yes], [termok=no])
101     LIBS=$SAVE_LIBS
102     if test $termok = no; then TERMLIBS=""; fi
103   fi
104 fi
105
106 # -- Try curses.
107 if test "x$TERMLIBS" = x; then
108   if test $have_curses = yes; then
109     TERMLIBS="-lcurses"
110     SAVE_LIBS=$LIBS
111     LIBS="$LIBS $TERMLIBS"
112     AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
113       [termok=yes], [termok=no])
114     LIBS=$SAVE_LIBS
115     if test $termok = no; then TERMLIBS=""; fi
116   fi
117 fi
118
119 # -- Try curses & termcap.
120 if test "x$TERMLIBS" = x; then
121   if test $have_curses = yes; then
122   if test $have_termcap = yes; then
123     TERMLIBS="-lcurses -ltermcap"
124     SAVE_LIBS=$LIBS
125     LIBS="$LIBS $TERMLIBS"
126     AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
127       [termok=yes], [termok=no])
128     LIBS=$SAVE_LIBS
129     if test $termok = no; then TERMLIBS=""; fi
130   fi
131   fi
132 fi
133 fi
134
135 # -- Try termcap.
136 if test "x$TERMLIBS" = x; then
137   if test $have_termcap = yes; then
138     TERMLIBS="-ltermcap"
139     SAVE_LIBS=$LIBS
140     LIBS="$LIBS $TERMLIBS"
141     AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
142       [termok=yes], [termok=no])
143     LIBS=$SAVE_LIBS
144     if test $termok = no; then TERMLIBS=""; fi
145   fi
146 fi
147
148 # -- Try termlib.
149 if test "x$TERMLIBS" = x; then
150   if test $have_termlib = yes; then
151     TERMLIBS="-lcurses -ltermlib"
152     SAVE_LIBS=$LIBS
153     LIBS="$LIBS $TERMLIBS"
154     AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
155       [termok=yes], [termok=no])
156     LIBS=$SAVE_LIBS
157     if test $termok = no; then TERMLIBS=""; fi
158   fi
159 fi
160
161 if test "x$TERMLIBS" = x; then
162   AC_MSG_RESULT(Cannot find terminal libraries - configure failed)
163   exit 1
164 fi
165 AC_MSG_RESULT(using $TERMLIBS)
166 LIBS="$LIBS $TERMLIBS"
167
168 # Checks for header files.
169 AC_HEADER_STDC
170 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 wctype.h])
171
172 # Checks for typedefs, structures, and compiler characteristics.
173 AC_HEADER_STAT
174 AC_C_CONST
175 AC_TYPE_OFF_T
176 AC_TYPE_SIZE_T
177 AC_HEADER_TIME
178
179 # Autoheader templates for symbols defined later by AC_DEFINE.
180 AH_TEMPLATE([HAVE_GNU_REGEX],
181         [GNU regex library])
182 AH_TEMPLATE([HAVE_POSIX_REGCOMP],
183         [POSIX regcomp() and regex.h])
184 AH_TEMPLATE([HAVE_PCRE],
185         [PCRE (Perl-compatible regular expression) library])
186 AH_TEMPLATE([HAVE_PCRE2],
187         [PCRE2 (Perl-compatible regular expression) library])
188 AH_TEMPLATE([HAVE_RE_COMP],
189         [BSD re_comp()])
190 AH_TEMPLATE([HAVE_REGCMP],
191         [System V regcmp()])
192 AH_TEMPLATE([HAVE_V8_REGCOMP],
193         [Henry Spencer V8 regcomp() and regexp.h])
194 AH_TEMPLATE([NO_REGEX],
195         [pattern matching is supported, but without metacharacters.])
196 AH_TEMPLATE([HAVE_REGEXEC2],
197         [])
198 AH_TEMPLATE([HAVE_VOID],
199         [Define HAVE_VOID if your compiler supports the "void" type.])
200 AH_TEMPLATE([HAVE_FLOAT],
201         [Define HAVE_FLOAT if your compiler supports the "double" type.])
202 AH_TEMPLATE([HAVE_CONST],
203         [Define HAVE_CONST if your compiler supports the "const" modifier.])
204 AH_TEMPLATE([HAVE_STAT_INO],
205         [Define HAVE_STAT_INO if your struct stat has st_ino and st_dev.])
206 AH_TEMPLATE([HAVE_TIME_T],
207         [Define HAVE_TIME_T if your system supports the "time_t" type.])
208 AH_TEMPLATE([HAVE_STRERROR],
209         [Define HAVE_STRERROR if you have the strerror() function.])
210 AH_TEMPLATE([HAVE_FILENO],
211         [Define HAVE_FILENO if you have the fileno() macro.])
212 AH_TEMPLATE([HAVE_ERRNO],
213         [Define HAVE_ERRNO if you have the errno variable.])
214 AH_TEMPLATE([MUST_DEFINE_ERRNO],
215         [Define MUST_DEFINE_ERRNO if you have errno but it is not define in errno.h.])
216 AH_TEMPLATE([HAVE_SYS_ERRLIST],
217         [Define HAVE_SYS_ERRLIST if you have the sys_errlist[] variable.])
218 AH_TEMPLATE([HAVE_OSPEED],
219         [Define HAVE_OSPEED if your termcap library has the ospeed variable.])
220 AH_TEMPLATE([MUST_DEFINE_OSPEED],
221         [Define MUST_DEFINE_OSPEED if you have ospeed but it is not defined in termcap.h.])
222 AH_TEMPLATE([HAVE_LOCALE],
223         [Define HAVE_LOCALE if you have locale.h and setlocale.])
224 AH_TEMPLATE([HAVE_TERMIOS_FUNCS],
225         [Define HAVE_TERMIOS_FUNCS if you have tcgetattr/tcsetattr.])
226 AH_TEMPLATE([HAVE_UPPER_LOWER],
227         [Define HAVE_UPPER_LOWER if you have isupper, islower, toupper, tolower.])
228 AH_TEMPLATE([HAVE_WCTYPE],
229         [Define HAVE_WCTYPE if you have iswupper, iswlower, towupper, towlower.])
230 AH_TEMPLATE([HAVE_SIGSET_T],
231         [Define HAVE_SIGSET_T you have the sigset_t type.])
232 AH_TEMPLATE([HAVE_SIGEMPTYSET],
233         [Define HAVE_SIGEMPTYSET if you have the sigemptyset macro.])
234 AH_TEMPLATE([EDIT_PGM],
235         [Define EDIT_PGM to your editor.])
236 AH_TEMPLATE([SECURE_COMPILE],
237         [Define SECURE_COMPILE=1 to build a secure version of less.])
238
239 # Checks for identifiers.
240 AC_TYPE_OFF_T
241 AC_MSG_CHECKING(for void)
242 AC_TRY_COMPILE(, [void *foo = 0;], 
243   [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_VOID)], [AC_MSG_RESULT(no)])
244 AC_MSG_CHECKING(for const)
245 AC_TRY_COMPILE(, [const int foo = 0;], 
246   [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_CONST)], [AC_MSG_RESULT(no)])
247 AC_MSG_CHECKING(for time_t)
248 AC_TRY_COMPILE([#include <time.h>], [time_t t = 0;],
249   [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_TIME_T)], [AC_MSG_RESULT(no)])
250 AC_MSG_CHECKING(for st_ino in struct stat)
251 AC_TRY_COMPILE([#include <sys/types.h>
252 #include <sys/stat.h>],
253   [struct stat s; dev_t dev = s.st_dev; ino_t ino = s.st_ino;],
254   [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_STAT_INO)], [AC_MSG_RESULT(no)])
255
256 # Checks for ANSI function prototypes.
257 AC_MSG_CHECKING(for ANSI function prototypes)
258 AC_TRY_COMPILE([], [int f(int a) { return a; }],
259   [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ANSI_PROTOS)], [AC_MSG_RESULT(no)])
260
261 # Checks for library functions.
262 AC_TYPE_SIGNAL
263 AC_CHECK_FUNCS([fsync popen _setjmp sigprocmask sigsetmask snprintf stat system fchmod realpath])
264
265 # AC_CHECK_FUNCS may not work for inline functions, so test these separately.
266 AC_MSG_CHECKING(for memcpy)
267 AC_TRY_LINK([
268 #if HAVE_STRING_H
269 #include <string.h>
270 #endif], [memcpy(0,0,0);],
271   [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MEMCPY)], [AC_MSG_RESULT(no)])
272
273 AC_MSG_CHECKING(for strchr)
274 AC_TRY_LINK([
275 #if HAVE_STRING_H
276 #include <string.h>
277 #endif], [strchr("x",'x');],
278   [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_STRCHR)], [AC_MSG_RESULT(no)])
279
280 AC_MSG_CHECKING(for strstr)
281 AC_TRY_LINK([
282 #if HAVE_STRING_H
283 #include <string.h>
284 #endif], [strstr("x","x");],
285   [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_STRSTR)], [AC_MSG_RESULT(no)])
286
287 # Some systems have termios.h but not the corresponding functions.
288 AC_CHECK_FUNC(tcgetattr, AC_DEFINE(HAVE_TERMIOS_FUNCS))
289
290 AC_MSG_CHECKING(for fileno)
291 AC_TRY_LINK([
292 #if HAVE_STDIO_H
293 #include <stdio.h>
294 #endif], [static int x; x = fileno(stdin);],
295   [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FILENO)], [AC_MSG_RESULT(no)])
296
297 AC_MSG_CHECKING(for strerror)
298 AC_TRY_LINK([
299 #if HAVE_STDIO_H
300 #include <stdio.h>
301 #endif
302 #if HAVE_STRING_H
303 #include <string.h>
304 #endif
305 #if HAVE_ERRNO_H
306 #include <errno.h>
307 #endif], [static char *x; x = strerror(0);],
308   [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_STRERROR)], [AC_MSG_RESULT(no)])
309
310 AC_MSG_CHECKING(for sys_errlist)
311 AC_TRY_LINK(, [extern char *sys_errlist[]; static char **x; x = sys_errlist;], 
312   [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYS_ERRLIST)], [AC_MSG_RESULT(no)])
313
314 AC_CHECK_TYPES([sigset_t],,,[#include <signal.h>])
315
316 AC_MSG_CHECKING(for sigemptyset)
317 AC_TRY_LINK([
318 #include <signal.h>
319 ], [sigset_t s; sigemptyset(&s);],
320   [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SIGEMPTYSET)], [AC_MSG_RESULT(no)])
321
322 have_errno=no
323 AC_MSG_CHECKING(for errno)
324 AC_TRY_LINK([
325 #if HAVE_ERRNO_H
326 #include <errno.h>
327 #endif], [static int x; x = errno;], 
328   [AC_MSG_RESULT(yes - in errno.h); AC_DEFINE(HAVE_ERRNO) have_errno=yes])
329 if test $have_errno = no; then
330 AC_TRY_LINK([
331 #if HAVE_ERRNO_H
332 #include <errno.h>
333 #endif], [extern int errno; static int x; x = errno;], 
334   [AC_MSG_RESULT(yes - must define); AC_DEFINE(HAVE_ERRNO) AC_DEFINE(MUST_DEFINE_ERRNO)],
335   [AC_MSG_RESULT(no)])
336 fi
337
338 AC_MSG_CHECKING(for locale)
339 AC_TRY_LINK([#include <locale.h>
340 #include <ctype.h>
341 #include <langinfo.h>], [setlocale(LC_CTYPE,""); isprint(0); iscntrl(0);],
342   [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_LOCALE)], [AC_MSG_RESULT(no)])
343
344 AC_MSG_CHECKING(for ctype functions)
345 AC_TRY_LINK([
346 #if HAVE_CTYPE_H
347 #include <ctype.h>
348 #endif], [static int x; x = isupper(x); x = tolower(x); x = toupper(x);],
349   [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UPPER_LOWER)], [AC_MSG_RESULT(no)])
350
351 AC_MSG_CHECKING(for wctype functions)
352 AC_TRY_LINK([#include <wctype.h>], [iswlower(0); iswupper(0); towlower(0); towupper(0);],
353   [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_WCTYPE)], [AC_MSG_RESULT(no)])
354
355 # Checks for external variable ospeed in the termcap library.
356 have_ospeed=no
357 AC_MSG_CHECKING(termcap for ospeed)
358 AC_TRY_LINK([
359 #include <sys/types.h>
360 #if HAVE_TERMIOS_H
361 #include <termios.h>
362 #endif
363 #if HAVE_TERMCAP_H
364 #include <termcap.h>
365 #endif], [ospeed = 0;],
366 [AC_MSG_RESULT(yes - in termcap.h); AC_DEFINE(HAVE_OSPEED) have_ospeed=yes])
367 if test $have_ospeed = no; then
368 AC_TRY_LINK(, [extern short ospeed; ospeed = 0;], 
369   [AC_MSG_RESULT(yes - must define); AC_DEFINE(HAVE_OSPEED) AC_DEFINE(MUST_DEFINE_OSPEED)],
370   [AC_MSG_RESULT(no)])
371 fi
372
373 # Compile in secure mode?
374 AC_ARG_WITH(secure,
375   [  --with-secure           Compile in secure mode],
376   AC_DEFINE(SECURE_COMPILE, 1), AC_DEFINE(SECURE_COMPILE, 0))
377
378 # Should we use floating point?
379 AC_MSG_CHECKING(for floating point)
380 AC_ARG_WITH(no-float,
381   [  --with-no-float         Do not use floating point],
382   WANT_NO_FLOAT=1, WANT_NO_FLOAT=0)
383 if test $WANT_NO_FLOAT = 0; then
384   AC_TRY_LINK(, [double f1 = 12.5; double f2 = f1*f1/2.5;], 
385     [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT)], [AC_MSG_RESULT(no)])
386 else
387   AC_MSG_RESULT(disabled by user)
388 fi
389
390 # Checks for regular expression functions.
391 have_regex=no
392 have_posix_regex=unknown
393 supported_regex=""
394
395 # Select a regular expression library.
396 WANT_REGEX=auto
397 AC_ARG_WITH(regex,
398   [  --with-regex=LIB        select regular expression library (LIB is one of auto,none,gnu,pcre,pcre2,posix,regcmp,re_comp,regcomp,regcomp-local) [[auto]]],
399   WANT_REGEX="$withval")
400
401 if test $have_regex = no; then
402 if test $WANT_REGEX = auto -o $WANT_REGEX = posix; then
403 # Some versions of Solaris have a regcomp() function, but it doesn't work!
404 # So we run a test program.  If we're cross-compiling, do it the old way.
405 AC_MSG_CHECKING(for POSIX regcomp)
406 AC_TRY_RUN([
407 #include <sys/types.h>
408 #include <regex.h>
409 main() { regex_t r; regmatch_t rm; char *text = "xabcy";
410 if (regcomp(&r, "abc", 0)) exit(1);
411 if (regexec(&r, text, 1, &rm, 0)) exit(1);
412 #ifndef __WATCOMC__
413 if (rm.rm_so != 1) exit(1); /* check for correct offset */
414 #else
415 if (rm.rm_sp != text + 1) exit(1); /* check for correct offset */
416 #endif
417 exit(0); }],
418   have_posix_regex=yes, have_posix_regex=no, have_posix_regex=unknown)
419 if test $have_posix_regex = yes; then
420   AC_MSG_RESULT(yes)
421   AC_DEFINE(HAVE_POSIX_REGCOMP) supported_regex="$supported_regex posix"
422   have_regex=yes
423 elif test $have_posix_regex = unknown; then
424   AC_TRY_LINK([
425 #include <sys/types.h>
426 #include <regex.h>],
427   [regex_t *r; regfree(r);],
428   AC_MSG_RESULT(yes)
429   AC_DEFINE(HAVE_POSIX_REGCOMP) have_regex=yes; supported_regex="$supported_regex posix")
430 else
431   AC_MSG_RESULT(no)
432 fi
433 fi
434 fi
435
436 if test $have_regex = no; then
437 if test $WANT_REGEX = auto -o $WANT_REGEX = pcre2; then
438 AC_CHECK_LIB(pcre2-8, pcre2_compile_8, 
439 [AC_DEFINE(HAVE_PCRE2) LIBS="$LIBS -lpcre2-8" have_regex=yes; supported_regex="$supported_regex pcre2"], [])
440 fi
441 fi
442
443 if test $have_regex = no; then
444 if test $WANT_REGEX = auto -o $WANT_REGEX = pcre; then
445 AC_CHECK_LIB(pcre, pcre_compile, 
446 [AC_DEFINE(HAVE_PCRE) LIBS="$LIBS -lpcre" have_regex=yes; supported_regex="$supported_regex pcre"], [])
447 fi
448 fi
449
450 if test $have_regex = no; then
451 if test $WANT_REGEX = auto -o $WANT_REGEX = gnu; then
452 AC_CHECK_LIB(c, re_compile_pattern, 
453 [AC_DEFINE(HAVE_GNU_REGEX) have_regex=yes; supported_regex="$supported_regex gnu"], [])
454 fi
455 fi
456
457 if test $have_regex = no; then
458 if test $WANT_REGEX = auto -o $WANT_REGEX = regcmp; then
459 AC_CHECK_FUNC(regcmp, 
460 [AC_DEFINE(HAVE_REGCMP) have_regex=yes; supported_regex="$supported_regex regcmp"],[])
461 fi
462 fi
463
464 if test $have_regex = no; then
465 if test $WANT_REGEX = auto -o $WANT_REGEX = regcomp; then
466 AC_MSG_CHECKING(for V8 regcomp)
467 AC_TRY_LINK([
468 #include "regexp.h"], [regcomp("");],
469 [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_V8_REGCOMP) have_regex=yes; supported_regex="$supported_regex regcomp"],[AC_MSG_RESULT(no)])
470 fi
471 fi
472
473 if test $have_regex = no && test -f ${srcdir}/regexp.c; then
474 if test $WANT_REGEX = auto -o $WANT_REGEX = regcomp-local; then
475 AC_MSG_RESULT(using V8 regcomp -- local source); AC_DEFINE(HAVE_V8_REGCOMP) 
476 supported_regex="$supported_regex regcomp-local"
477 AC_DEFINE(HAVE_REGEXEC2) REGEX_O='regexp.$(O)' AC_SUBST(REGEX_O) have_regex=yes
478 fi
479 fi
480
481 if test $have_regex = no; then
482 if test $WANT_REGEX = auto -o $WANT_REGEX = re_comp; then
483 AC_MSG_CHECKING(for re_comp)
484 AC_CHECK_FUNC(re_comp,
485 [AC_DEFINE(HAVE_RE_COMP) have_regex=yes; supported_regex="$supported_regex re_comp"],[])
486 fi
487 fi
488
489 if test $have_regex = no; then
490 if test $WANT_REGEX = auto -o $WANT_REGEX = none; then
491 AC_MSG_RESULT(using no regex)
492 else
493 AC_MSG_WARN(cannot find regular expression library)
494 fi
495 AC_DEFINE(NO_REGEX) supported_regex="$supported_regex none"
496 fi
497
498 AC_MSG_RESULT(regular expression library: $supported_regex)
499
500 AC_ARG_WITH(editor,
501   [  --with-editor=PROGRAM   use PROGRAM as the default editor [[vi]]],
502   AC_DEFINE_UNQUOTED(EDIT_PGM, "$withval"), AC_DEFINE(EDIT_PGM, "vi"))
503
504 AH_TOP([
505 /* Unix definition file for less.  -*- C -*-
506  *
507  * This file has 3 sections:
508  * User preferences.
509  * Settings always true on Unix.
510  * Settings automatically determined by configure.
511  *
512  * * * * * *  WARNING  * * * * * *
513  * If you edit defines.h by hand, do "touch stamp-h" before you run make
514  * so config.status doesn't overwrite your changes.
515  */
516
517 /* User preferences.  */
518
519 /*
520  * SECURE is 1 if you wish to disable a bunch of features in order to
521  * be safe to run by unprivileged users.
522  * SECURE_COMPILE is set by the --with-secure configure option.
523  */
524 #define SECURE          SECURE_COMPILE
525
526 /*
527  * SHELL_ESCAPE is 1 if you wish to allow shell escapes.
528  * (This is possible only if your system supplies the system() function.)
529  */
530 #define SHELL_ESCAPE    (!SECURE)
531
532 /*
533  * EXAMINE is 1 if you wish to allow examining files by name from within less.
534  */
535 #define EXAMINE         (!SECURE)
536
537 /*
538  * TAB_COMPLETE_FILENAME is 1 if you wish to allow the TAB key
539  * to complete filenames at prompts.
540  */
541 #define TAB_COMPLETE_FILENAME   (!SECURE)
542
543 /*
544  * CMD_HISTORY is 1 if you wish to allow keys to cycle through
545  * previous commands at prompts.
546  */
547 #define CMD_HISTORY     1
548
549 /*
550  * HILITE_SEARCH is 1 if you wish to have search targets to be 
551  * displayed in standout mode.
552  */
553 #define HILITE_SEARCH   1
554
555 /*
556  * EDITOR is 1 if you wish to allow editor invocation (the "v" command).
557  * (This is possible only if your system supplies the system() function.)
558  * EDIT_PGM is the name of the (default) editor to be invoked.
559  */
560 #define EDITOR          (!SECURE)
561
562 /*
563  * TAGS is 1 if you wish to support tag files.
564  */
565 #define TAGS            (!SECURE)
566
567 /*
568  * USERFILE is 1 if you wish to allow a .less file to specify 
569  * user-defined key bindings.
570  */
571 #define USERFILE        (!SECURE)
572
573 /*
574  * GLOB is 1 if you wish to have shell metacharacters expanded in filenames.
575  * This will generally work if your system provides the "popen" function
576  * and the "echo" shell command.
577  */
578 #define GLOB            (!SECURE)
579
580 /*
581  * PIPEC is 1 if you wish to have the "|" command
582  * which allows the user to pipe data into a shell command.
583  */
584 #define PIPEC           (!SECURE)
585
586 /*
587  * LOGFILE is 1 if you wish to allow the -o option (to create log files).
588  */
589 #define LOGFILE         (!SECURE)
590
591 /*
592  * GNU_OPTIONS is 1 if you wish to support the GNU-style command
593  * line options --help and --version.
594  */
595 #define GNU_OPTIONS     1
596
597 /*
598  * ONLY_RETURN is 1 if you want RETURN to be the only input which
599  * will continue past an error message.
600  * Otherwise, any key will continue past an error message.
601  */
602 #define ONLY_RETURN     0
603
604 /*
605  * LESSKEYFILE is the filename of the default lesskey output file 
606  * (in the HOME directory).
607  * LESSKEYFILE_SYS is the filename of the system-wide lesskey output file.
608  * DEF_LESSKEYINFILE is the filename of the default lesskey input 
609  * (in the HOME directory).
610  * LESSHISTFILE is the filename of the history file
611  * (in the HOME directory).
612  */
613 #define LESSKEYFILE             ".less"
614 #define LESSKEYFILE_SYS         SYSDIR "/sysless"
615 #define DEF_LESSKEYINFILE       ".lesskey"
616 #define LESSHISTFILE            ".lesshst"
617
618
619 /* Settings always true on Unix.  */
620
621 /*
622  * Define MSDOS_COMPILER if compiling under Microsoft C.
623  */
624 #define MSDOS_COMPILER  0
625
626 /*
627  * Pathname separator character.
628  */
629 #define PATHNAME_SEP    "/"
630
631 /*
632  * The value returned from tgetent on success.
633  * Some HP-UX systems return 0 on success.
634  */
635 #define TGETENT_OK  1
636
637 /*
638  * HAVE_ANSI_PROTOS     is 1 if your compiler supports ANSI function prototypes.
639  */
640 #define HAVE_ANSI_PROTOS        1
641
642 /*
643  * HAVE_SYS_TYPES_H is 1 if your system has <sys/types.h>.
644  */
645 #define HAVE_SYS_TYPES_H        1
646
647 /*
648  * Define if you have the <sgstat.h> header file.
649  */
650 #undef HAVE_SGSTAT_H
651
652 /*
653  * HAVE_PERROR is 1 if your system has the perror() call.
654  * (Actually, if it has sys_errlist, sys_nerr and errno.)
655  */
656 #define HAVE_PERROR     1
657
658 /*
659  * HAVE_TIME is 1 if your system has the time() call.
660  */
661 #define HAVE_TIME       1
662
663 /*
664  * HAVE_SHELL is 1 if your system supports a SHELL command interpreter.
665  */
666 #define HAVE_SHELL      1
667
668 /*
669  * Default shell metacharacters and meta-escape character.
670  */
671 #define DEF_METACHARS   "; *?\t\n'\"()<>[]|&^`#\\$%=~{},"
672 #define DEF_METAESCAPE  "\\"
673
674 /* 
675  * HAVE_DUP is 1 if your system has the dup() call.
676  */
677 #define HAVE_DUP        1
678
679 /* Define to 1 if you have the memcpy() function. */
680 #define HAVE_MEMCPY 1
681
682 /* Define to 1 if you have the strchr() function. */
683 #define HAVE_STRCHR 1
684
685 /* Define to 1 if you have the strstr() function. */
686 #define HAVE_STRSTR 1
687
688 /*
689  * Sizes of various buffers.
690  */
691 #if 0 /* old sizes for small memory machines */
692 #define CMDBUF_SIZE     512     /* Buffer for multichar commands */
693 #define UNGOT_SIZE      100     /* Max chars to unget() */
694 #define LINEBUF_SIZE    1024    /* Max size of line in input file */
695 #define OUTBUF_SIZE     1024    /* Output buffer */
696 #define PROMPT_SIZE     200     /* Max size of prompt string */
697 #define TERMBUF_SIZE    2048    /* Termcap buffer for tgetent */
698 #define TERMSBUF_SIZE   1024    /* Buffer to hold termcap strings */
699 #define TAGLINE_SIZE    512     /* Max size of line in tags file */
700 #define TABSTOP_MAX     32      /* Max number of custom tab stops */
701 #else /* more reasonable sizes for modern machines */
702 #define CMDBUF_SIZE     2048    /* Buffer for multichar commands */
703 #define UNGOT_SIZE      200     /* Max chars to unget() */
704 #define LINEBUF_SIZE    1024    /* Initial max size of line in input file */
705 #define OUTBUF_SIZE     1024    /* Output buffer */
706 #define PROMPT_SIZE     2048    /* Max size of prompt string */
707 #define TERMBUF_SIZE    2048    /* Termcap buffer for tgetent */
708 #define TERMSBUF_SIZE   1024    /* Buffer to hold termcap strings */
709 #define TAGLINE_SIZE    1024    /* Max size of line in tags file */
710 #define TABSTOP_MAX     128     /* Max number of custom tab stops */
711 #endif
712
713 /* Settings automatically determined by configure.  */
714 ])
715
716 AC_CONFIG_FILES([Makefile])
717 AC_OUTPUT