("" < 3.4) always evaluates to true, which unconditionally
[dragonfly.git] / contrib / less-381 / configure.ac
blobd9e6ccab6ec507ec92a06c046def212a6041413d
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.
12 AC_INIT(less, 1)
13 AC_CONFIG_SRCDIR([forwback.c])
14 AC_CONFIG_HEADER([defines.h])
16 # Checks for programs.
17 AC_PROG_CC
18 AC_ISC_POSIX
19 AC_PROG_GCC_TRADITIONAL
20 AC_PROG_INSTALL
22 # Checks for compilation model.
23 AC_SYS_LARGEFILE
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])
39 TERMLIBS=
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
47 if test x`uname -r` = "xB.11.11" >/dev/null 2>&1; then
48    curses_broken=1
52 if test $curses_broken = 0; then
53 # -- Try xcurses.
54 if test "x$TERMLIBS" = x; then
55   if test $have_xcurses = yes; then
56     TERMLIBS="-lxcurses"
57     SAVE_LIBS=$LIBS
58     LIBS="$LIBS $TERMLIBS"
59     AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
60       [termok=yes], [termok=no])
61     LIBS=$SAVE_LIBS
62     if test $termok = no; then TERMLIBS=""; fi
63   fi
66 # -- Try ncurses.
67 if test "x$TERMLIBS" = x; then
68   if test $have_ncurses = yes; then
69     TERMLIBS="-lncurses"
70     SAVE_LIBS=$LIBS
71     LIBS="$LIBS $TERMLIBS"
72     AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
73       [termok=yes], [termok=no])
74     LIBS=$SAVE_LIBS
75     if test $termok = no; then TERMLIBS=""; fi
76   fi
79 # -- Try curses.
80 if test "x$TERMLIBS" = x; then
81   if test $have_curses = yes; then
82     TERMLIBS="-lcurses"
83     SAVE_LIBS=$LIBS
84     LIBS="$LIBS $TERMLIBS"
85     AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
86       [termok=yes], [termok=no])
87     LIBS=$SAVE_LIBS
88     if test $termok = no; then TERMLIBS=""; fi
89   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"
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
108 # -- Try termcap.
109 if test "x$TERMLIBS" = x; then
110   if test $have_termcap = yes; then
111     TERMLIBS="-ltermcap"
112     SAVE_LIBS=$LIBS
113     LIBS="$LIBS $TERMLIBS"
114     AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
115       [termok=yes], [termok=no])
116     LIBS=$SAVE_LIBS
117     if test $termok = no; then TERMLIBS=""; fi
118   fi
121 # -- Try termlib.
122 if test "x$TERMLIBS" = x; then
123   if test $have_termlib = yes; then
124     TERMLIBS="-lcurses -ltermlib"
125     SAVE_LIBS=$LIBS
126     LIBS="$LIBS $TERMLIBS"
127     AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
128       [termok=yes], [termok=no])
129     LIBS=$SAVE_LIBS
130     if test $termok = no; then TERMLIBS=""; fi
131   fi
134 if test "x$TERMLIBS" = x; then
135   AC_MSG_RESULT(Cannot find terminal libraries - configure failed)
136   exit 1
138 AC_MSG_RESULT(using $TERMLIBS)
139 LIBS="$LIBS $TERMLIBS"
141 # Checks for header files.
142 AC_HEADER_STDC
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.
146 AC_HEADER_STAT
147 AC_C_CONST
148 AC_TYPE_OFF_T
149 AC_TYPE_SIZE_T
150 AC_HEADER_TIME
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],
158         [BSD re_comp()])
159 AH_TEMPLATE([HAVE_REGCMP],
160         [System V 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],
166         [])
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.
201 AC_TYPE_OFF_T
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.
213 AC_TYPE_SIGNAL
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)
220 AC_TRY_LINK([
221 #if HAVE_STDIO_H
222 #include <stdio.h>
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)
227 AC_TRY_LINK([
228 #if HAVE_STDIO_H
229 #include <stdio.h>
230 #endif
231 #if HAVE_STRING_H
232 #include <string.h>
233 #endif
234 #if HAVE_ERRNO_H
235 #include <errno.h>
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)
244 AC_TRY_LINK([
245 #include <signal.h>
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)
250 AC_TRY_LINK([
251 #include <signal.h>
252 ], [sigset_t s; sigemptyset(&s);],
253   [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SIGEMPTYSET)], [AC_MSG_RESULT(no)])
255 have_errno=no
256 AC_MSG_CHECKING(for errno)
257 AC_TRY_LINK([
258 #if HAVE_ERRNO_H
259 #include <errno.h>
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
263 AC_TRY_LINK([
264 #if HAVE_ERRNO_H
265 #include <errno.h>
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)],
268   [AC_MSG_RESULT(no)])
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)
276 AC_TRY_LINK([
277 #if HAVE_CTYPE_H
278 #include <ctype.h>
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.
283 have_ospeed=no
284 AC_MSG_CHECKING(termcap for ospeed)
285 AC_TRY_LINK([
286 #include <sys/types.h>
287 #if HAVE_TERMIOS_H
288 #include <termios.h>
289 #endif
290 #if HAVE_TERMCAP_H
291 #include <termcap.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)],
297   [AC_MSG_RESULT(no)])
300 # Checks for regular expression functions.
301 have_regex=no
302 have_posix_regex=unknown
303 AC_MSG_CHECKING(for regcomp)
305 WANT_REGEX=auto
306 AC_ARG_WITH(regex,
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.
314 AC_TRY_RUN([
315 #include <sys/types.h>
316 #include <regex.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);
320 #ifndef __WATCOMC__
321 if (rm.rm_so != 1) exit(1); /* check for correct offset */
322 #else
323 if (rm.rm_sp != text + 1) exit(1); /* check for correct offset */
324 #endif
325 exit(0); }],
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)
330   have_regex=yes
331 elif test $have_posix_regex = unknown; then
332   AC_TRY_LINK([
333 #include <sys/types.h>
334 #include <regex.h>],
335   [regex_t *r; regfree(r);],
336   AC_MSG_RESULT(using POSIX regcomp)
337   AC_DEFINE(HAVE_POSIX_REGCOMP) have_regex=yes)
338 else
339   AC_MSG_RESULT(no)
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
360 AC_TRY_LINK([
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)
382 AC_ARG_WITH(editor,
383   [  --with-editor=PROGRAM   use PROGRAM as the default editor [vi]],
384   AC_DEFINE_UNQUOTED(EDIT_PGM, "$withval"), AC_DEFINE(EDIT_PGM, "vi"))
386 AH_TOP([
387 /* Unix definition file for less.  -*- C -*-
389  * This file has 3 sections:
390  * User preferences.
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.
397  */
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.
404  */
405 #define SECURE          0
408  * SHELL_ESCAPE is 1 if you wish to allow shell escapes.
409  * (This is possible only if your system supplies the system() function.)
410  */
411 #define SHELL_ESCAPE    (!SECURE)
414  * EXAMINE is 1 if you wish to allow examining files by name from within less.
415  */
416 #define EXAMINE         (!SECURE)
419  * TAB_COMPLETE_FILENAME is 1 if you wish to allow the TAB key
420  * to complete filenames at prompts.
421  */
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.
427  */
428 #define CMD_HISTORY     1
431  * HILITE_SEARCH is 1 if you wish to have search targets to be 
432  * displayed in standout mode.
433  */
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.
440  */
441 #define EDITOR          (!SECURE)
444  * TAGS is 1 if you wish to support tag files.
445  */
446 #define TAGS            (!SECURE)
449  * USERFILE is 1 if you wish to allow a .less file to specify 
450  * user-defined key bindings.
451  */
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.
458  */
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.
464  */
465 #define PIPEC           (!SECURE)
468  * LOGFILE is 1 if you wish to allow the -l option (to create log files).
469  */
470 #define LOGFILE         (!SECURE)
473  * GNU_OPTIONS is 1 if you wish to support the GNU-style command
474  * line options --help and --version.
475  */
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.
482  */
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).
491  */
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.
501  */
502 #define MSDOS_COMPILER  0
505  * Pathname separator character.
506  */
507 #define PATHNAME_SEP    "/"
510  * HAVE_SYS_TYPES_H is 1 if your system has <sys/types.h>.
511  */
512 #define HAVE_SYS_TYPES_H        1
515  * Define if you have the <sgstat.h> header file.
516  */
517 #undef HAVE_SGSTAT_H
520  * HAVE_PERROR is 1 if your system has the perror() call.
521  * (Actually, if it has sys_errlist, sys_nerr and errno.)
522  */
523 #define HAVE_PERROR     1
526  * HAVE_TIME is 1 if your system has the time() call.
527  */
528 #define HAVE_TIME       1
531  * HAVE_SHELL is 1 if your system supports a SHELL command interpreter.
532  */
533 #define HAVE_SHELL      1
536  * Default shell metacharacters and meta-escape character.
537  */
538 #define DEF_METACHARS   "; *?\t\n'\"()<>|&^`#\\"
539 #define DEF_METAESCAPE  "\\"
541 /* 
542  * HAVE_DUP is 1 if your system has the dup() call.
543  */
544 #define HAVE_DUP        1
547  * Sizes of various buffers.
548  */
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])
563 AC_OUTPUT