2 dnl Bash specific tests
4 dnl Some derived from PDKSH 5.1.3 autoconf tests
7 AC_DEFUN([BASH_C_LONG_LONG],
8 [AC_CACHE_CHECK(for long long, ac_cv_c_long_long,
9 [if test "$GCC" = yes; then
17 exit(sizeof(long long) < sizeof(long));
19 ], ac_cv_c_long_long=yes, ac_cv_c_long_long=no)
21 if test $ac_cv_c_long_long = yes; then
22 AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the `long long' type works.])
27 dnl This is very similar to AC_C_LONG_DOUBLE, with the fix for IRIX
28 dnl (< changed to <=) added.
30 AC_DEFUN([BASH_C_LONG_DOUBLE],
31 [AC_CACHE_CHECK(for long double, ac_cv_c_long_double,
32 [if test "$GCC" = yes; then
33 ac_cv_c_long_double=yes
39 /* The Stardent Vistra knows sizeof(long double), but does not
41 long double foo = 0.0;
42 /* On Ultrix 4.3 cc, long double is 4 and double is 8. */
43 /* On IRIX 5.3, the compiler converts long double to double with a warning,
44 but compiles this successfully. */
45 exit(sizeof(long double) <= sizeof(double));
47 ], ac_cv_c_long_double=yes, ac_cv_c_long_double=no)
49 if test $ac_cv_c_long_double = yes; then
50 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if the `long double' type works.])
55 dnl Check for <inttypes.h>. This is separated out so that it can be
58 dnl BASH_HEADER_INTTYPES
59 AC_DEFUN([BASH_HEADER_INTTYPES],
61 AC_CHECK_HEADERS(inttypes.h)
65 dnl check for typedef'd symbols in header files, but allow the caller to
66 dnl specify the include files to be checked in addition to the default
68 dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND])
69 AC_DEFUN([BASH_CHECK_TYPE],
71 AC_REQUIRE([AC_HEADER_STDC])dnl
72 AC_REQUIRE([BASH_HEADER_INTTYPES])
73 AC_MSG_CHECKING(for $1)
74 AC_CACHE_VAL(bash_cv_type_$1,
75 [AC_EGREP_CPP($1, [#include <sys/types.h>
84 ], bash_cv_type_$1=yes, bash_cv_type_$1=no)])
85 AC_MSG_RESULT($bash_cv_type_$1)
86 ifelse($#, 4, [if test $bash_cv_type_$1 = yes; then
89 if test $bash_cv_type_$1 = no; then
90 AC_DEFINE_UNQUOTED($1, $3)
95 dnl BASH_CHECK_DECL(FUNC)
97 dnl Check for a declaration of FUNC in stdlib.h and inttypes.h like
100 AC_DEFUN([BASH_CHECK_DECL],
102 AC_REQUIRE([AC_HEADER_STDC])
103 AC_REQUIRE([BASH_HEADER_INTTYPES])
104 AC_CACHE_CHECK([for declaration of $1], bash_cv_decl_$1,
111 # include <inttypes.h>
115 bash_cv_decl_$1=yes, bash_cv_decl_$1=no)])
116 bash_tr_func=HAVE_DECL_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
117 if test $bash_cv_decl_$1 = yes; then
118 AC_DEFINE_UNQUOTED($bash_tr_func, 1)
120 AC_DEFINE_UNQUOTED($bash_tr_func, 0)
124 AC_DEFUN([BASH_DECL_PRINTF],
125 [AC_MSG_CHECKING(for declaration of printf in <stdio.h>)
126 AC_CACHE_VAL(bash_cv_printf_declared,
130 typedef int (*_bashfunc)(const char *, ...);
132 typedef int (*_bashfunc)();
137 pf = (_bashfunc) printf;
140 ], bash_cv_printf_declared=yes, bash_cv_printf_declared=no,
141 [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes)
142 bash_cv_printf_declared=yes]
144 AC_MSG_RESULT($bash_cv_printf_declared)
145 if test $bash_cv_printf_declared = yes; then
146 AC_DEFINE(PRINTF_DECLARED)
150 AC_DEFUN([BASH_DECL_SBRK],
151 [AC_MSG_CHECKING(for declaration of sbrk in <unistd.h>)
152 AC_CACHE_VAL(bash_cv_sbrk_declared,
153 [AC_EGREP_HEADER(sbrk, unistd.h,
154 bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)])
155 AC_MSG_RESULT($bash_cv_sbrk_declared)
156 if test $bash_cv_sbrk_declared = yes; then
157 AC_DEFINE(SBRK_DECLARED)
162 dnl Check for sys_siglist[] or _sys_siglist[]
164 AC_DEFUN([BASH_DECL_UNDER_SYS_SIGLIST],
165 [AC_MSG_CHECKING([for _sys_siglist in signal.h or unistd.h])
166 AC_CACHE_VAL(bash_cv_decl_under_sys_siglist,
168 #include <sys/types.h>
172 #endif], [ char *msg = _sys_siglist[2]; ],
173 bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no,
174 [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)])])dnl
175 AC_MSG_RESULT($bash_cv_decl_under_sys_siglist)
176 if test $bash_cv_decl_under_sys_siglist = yes; then
177 AC_DEFINE(UNDER_SYS_SIGLIST_DECLARED)
181 AC_DEFUN([BASH_UNDER_SYS_SIGLIST],
182 [AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST])
183 AC_MSG_CHECKING([for _sys_siglist in system C library])
184 AC_CACHE_VAL(bash_cv_under_sys_siglist,
186 #include <sys/types.h>
191 #ifndef UNDER_SYS_SIGLIST_DECLARED
192 extern char *_sys_siglist[];
196 char *msg = (char *)_sys_siglist[2];
199 bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no,
200 [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)
201 bash_cv_under_sys_siglist=no])])
202 AC_MSG_RESULT($bash_cv_under_sys_siglist)
203 if test $bash_cv_under_sys_siglist = yes; then
204 AC_DEFINE(HAVE_UNDER_SYS_SIGLIST)
208 AC_DEFUN([BASH_SYS_SIGLIST],
210 AC_CHECK_DECLS([sys_siglist])
211 AC_MSG_CHECKING([for sys_siglist in system C library])
212 AC_CACHE_VAL(bash_cv_sys_siglist,
214 #include <sys/types.h>
219 #ifndef HAVE_DECL_SYS_SIGLIST
220 extern char *sys_siglist[];
224 char *msg = sys_siglist[2];
227 bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no,
228 [AC_MSG_WARN(cannot check for sys_siglist if cross compiling -- defaulting to no)
229 bash_cv_sys_siglist=no])])
230 AC_MSG_RESULT($bash_cv_sys_siglist)
231 if test $bash_cv_sys_siglist = yes; then
232 AC_DEFINE(HAVE_SYS_SIGLIST)
236 dnl Check for the various permutations of sys_siglist and make sure we
237 dnl compile in siglist.o if they're not defined
238 AC_DEFUN([BASH_CHECK_SYS_SIGLIST], [
239 AC_REQUIRE([BASH_SYS_SIGLIST])
240 AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST])
241 AC_REQUIRE([BASH_FUNC_STRSIGNAL])
242 if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then
247 AC_SUBST([SIGLIST_O])
250 dnl Check for sys_errlist[] and sys_nerr, check for declaration
251 AC_DEFUN([BASH_SYS_ERRLIST],
252 [AC_MSG_CHECKING([for sys_errlist and sys_nerr])
253 AC_CACHE_VAL(bash_cv_sys_errlist,
254 [AC_TRY_LINK([#include <errno.h>],
255 [extern char *sys_errlist[];
257 char *msg = sys_errlist[sys_nerr - 1];],
258 bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl
259 AC_MSG_RESULT($bash_cv_sys_errlist)
260 if test $bash_cv_sys_errlist = yes; then
261 AC_DEFINE(HAVE_SYS_ERRLIST)
266 dnl Check if dup2() does not clear the close on exec flag
268 AC_DEFUN([BASH_FUNC_DUP2_CLOEXEC_CHECK],
269 [AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag)
270 AC_CACHE_VAL(bash_cv_dup2_broken,
272 #include <sys/types.h>
277 fd1 = open("/dev/null", 2);
278 if (fcntl(fd1, 2, 1) < 0)
283 fl = fcntl(fd2, 1, 0);
284 /* fl will be 1 if dup2 did not reset the close-on-exec flag. */
287 ], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no,
288 [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no)
289 bash_cv_dup2_broken=no])
291 AC_MSG_RESULT($bash_cv_dup2_broken)
292 if test $bash_cv_dup2_broken = yes; then
293 AC_DEFINE(DUP2_BROKEN)
297 AC_DEFUN([BASH_FUNC_STRSIGNAL],
298 [AC_MSG_CHECKING([for the existence of strsignal])
299 AC_CACHE_VAL(bash_cv_have_strsignal,
300 [AC_TRY_LINK([#include <sys/types.h>
301 #include <signal.h>],
302 [char *s = (char *)strsignal(2);],
303 bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)])
304 AC_MSG_RESULT($bash_cv_have_strsignal)
305 if test $bash_cv_have_strsignal = yes; then
306 AC_DEFINE(HAVE_STRSIGNAL)
310 dnl Check to see if opendir will open non-directories (not a nice thing)
311 AC_DEFUN([BASH_FUNC_OPENDIR_CHECK],
312 [AC_REQUIRE([AC_HEADER_DIRENT])dnl
313 AC_MSG_CHECKING(if opendir() opens non-directories)
314 AC_CACHE_VAL(bash_cv_opendir_not_robust,
317 #include <sys/types.h>
321 #endif /* HAVE_UNISTD_H */
322 #if defined(HAVE_DIRENT_H)
325 # define dirent direct
326 # ifdef HAVE_SYS_NDIR_H
327 # include <sys/ndir.h>
328 # endif /* SYSNDIR */
329 # ifdef HAVE_SYS_DIR_H
330 # include <sys/dir.h>
335 #endif /* HAVE_DIRENT_H */
340 err = mkdir("/tmp/bash-aclocal", 0700);
345 unlink("/tmp/bash-aclocal/not_a_directory");
346 fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666);
349 dir = opendir("/tmp/bash-aclocal/not_a_directory");
350 unlink("/tmp/bash-aclocal/not_a_directory");
351 rmdir("/tmp/bash-aclocal");
353 }], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no,
354 [AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no)
355 bash_cv_opendir_not_robust=no]
357 AC_MSG_RESULT($bash_cv_opendir_not_robust)
358 if test $bash_cv_opendir_not_robust = yes; then
359 AC_DEFINE(OPENDIR_NOT_ROBUST)
364 AH_TEMPLATE([VOID_SIGHANDLER], [Define if signal handlers return type void])
365 AC_DEFUN([BASH_TYPE_SIGHANDLER],
366 [AC_MSG_CHECKING([whether signal handlers are of type void])
367 AC_CACHE_VAL(bash_cv_void_sighandler,
368 [AC_TRY_COMPILE([#include <sys/types.h>
376 void (*signal ()) ();],
377 [int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl
378 AC_MSG_RESULT($bash_cv_void_sighandler)
379 if test $bash_cv_void_sighandler = yes; then
380 AC_DEFINE(VOID_SIGHANDLER)
385 dnl A signed 16-bit integer quantity
387 AC_DEFUN([BASH_TYPE_BITS16_T],
389 if test "$ac_cv_sizeof_short" = 2; then
390 AC_CHECK_TYPE(bits16_t, short)
391 elif test "$ac_cv_sizeof_char" = 2; then
392 AC_CHECK_TYPE(bits16_t, char)
394 AC_CHECK_TYPE(bits16_t, short)
399 dnl An unsigned 16-bit integer quantity
401 AC_DEFUN([BASH_TYPE_U_BITS16_T],
403 if test "$ac_cv_sizeof_short" = 2; then
404 AC_CHECK_TYPE(u_bits16_t, unsigned short)
405 elif test "$ac_cv_sizeof_char" = 2; then
406 AC_CHECK_TYPE(u_bits16_t, unsigned char)
408 AC_CHECK_TYPE(u_bits16_t, unsigned short)
413 dnl A signed 32-bit integer quantity
415 AC_DEFUN([BASH_TYPE_BITS32_T],
417 if test "$ac_cv_sizeof_int" = 4; then
418 AC_CHECK_TYPE(bits32_t, int)
419 elif test "$ac_cv_sizeof_long" = 4; then
420 AC_CHECK_TYPE(bits32_t, long)
422 AC_CHECK_TYPE(bits32_t, int)
427 dnl An unsigned 32-bit integer quantity
429 AC_DEFUN([BASH_TYPE_U_BITS32_T],
431 if test "$ac_cv_sizeof_int" = 4; then
432 AC_CHECK_TYPE(u_bits32_t, unsigned int)
433 elif test "$ac_cv_sizeof_long" = 4; then
434 AC_CHECK_TYPE(u_bits32_t, unsigned long)
436 AC_CHECK_TYPE(u_bits32_t, unsigned int)
440 AC_DEFUN([BASH_TYPE_PTRDIFF_T],
442 if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then
443 AC_CHECK_TYPE(ptrdiff_t, int)
444 elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then
445 AC_CHECK_TYPE(ptrdiff_t, long)
446 elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then
447 AC_CHECK_TYPE(ptrdiff_t, [long long])
449 AC_CHECK_TYPE(ptrdiff_t, int)
454 dnl A signed 64-bit quantity
456 AC_DEFUN([BASH_TYPE_BITS64_T],
458 if test "$ac_cv_sizeof_char_p" = 8; then
459 AC_CHECK_TYPE(bits64_t, char *)
460 elif test "$ac_cv_sizeof_double" = 8; then
461 AC_CHECK_TYPE(bits64_t, double)
462 elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then
463 AC_CHECK_TYPE(bits64_t, [long long])
464 elif test "$ac_cv_sizeof_long" = 8; then
465 AC_CHECK_TYPE(bits64_t, long)
467 AC_CHECK_TYPE(bits64_t, double)
471 AC_DEFUN([BASH_TYPE_LONG_LONG],
473 AC_CACHE_CHECK([for long long], bash_cv_type_long_long,
475 long long ll = 1; int i = 63;],
477 long long llm = (long long) -1;
478 return ll << i | ll >> i | llm / ll | llm % ll;
479 ], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')])
480 if test "$bash_cv_type_long_long" = 'long long'; then
481 AC_DEFINE(HAVE_LONG_LONG, 1)
485 AC_DEFUN([BASH_TYPE_UNSIGNED_LONG_LONG],
487 AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long,
489 unsigned long long ull = 1; int i = 63;],
491 unsigned long long ullmax = (unsigned long long) -1;
492 return ull << i | ull >> i | ullmax / ull | ullmax % ull;
493 ], bash_cv_type_unsigned_long_long='unsigned long long',
494 bash_cv_type_unsigned_long_long='unsigned long')])
495 if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then
496 AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1)
501 dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0)
502 dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use
503 dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify
504 dnl matters, this just checks for rlim_t, quad_t, or long.
506 AC_DEFUN([BASH_TYPE_RLIMIT],
507 [AC_MSG_CHECKING(for size and type of struct rlimit fields)
508 AC_CACHE_VAL(bash_cv_type_rlimit,
509 [AC_TRY_COMPILE([#include <sys/types.h>
510 #include <sys/resource.h>],
511 [rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[
513 #include <sys/types.h>
514 #include <sys/time.h>
515 #include <sys/resource.h>
520 if (sizeof(rl.rlim_cur) == sizeof(quad_t))
524 }], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long,
525 [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long)
526 bash_cv_type_rlimit=long])])
528 AC_MSG_RESULT($bash_cv_type_rlimit)
529 if test $bash_cv_type_rlimit = quad_t; then
530 AC_DEFINE(RLIMTYPE, quad_t)
531 elif test $bash_cv_type_rlimit = rlim_t; then
532 AC_DEFINE(RLIMTYPE, rlim_t)
536 AC_DEFUN([BASH_FUNC_LSTAT],
537 [dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an
538 dnl inline function in <sys/stat.h>.
539 AC_CACHE_CHECK([for lstat], bash_cv_func_lstat,
541 #include <sys/types.h>
542 #include <sys/stat.h>
543 ],[ lstat(".",(struct stat *)0); ],
544 bash_cv_func_lstat=yes, bash_cv_func_lstat=no)])
545 if test $bash_cv_func_lstat = yes; then
546 AC_DEFINE(HAVE_LSTAT)
550 AC_DEFUN([BASH_FUNC_INET_ATON],
552 AC_CACHE_CHECK([for inet_aton], bash_cv_func_inet_aton,
554 #include <sys/types.h>
555 #include <netinet/in.h>
556 #include <arpa/inet.h>
557 struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ],
558 bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)])
559 if test $bash_cv_func_inet_aton = yes; then
560 AC_DEFINE(HAVE_INET_ATON)
566 AC_DEFUN([BASH_FUNC_GETENV],
567 [AC_MSG_CHECKING(to see if getenv can be redefined)
568 AC_CACHE_VAL(bash_cv_getenv_redef,
580 #if defined (__linux__) || defined (__bsdi__) || defined (convex)
584 #endif /* !__linux__ && !__bsdi__ && !convex */
591 /* The next allows this program to run, but does not allow bash to link
592 when it redefines getenv. I'm not really interested in figuring out
598 exit(s == 0); /* force optimizer to leave getenv in */
600 ], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no,
601 [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes)
602 bash_cv_getenv_redef=yes]
604 AC_MSG_RESULT($bash_cv_getenv_redef)
605 if test $bash_cv_getenv_redef = yes; then
606 AC_DEFINE(CAN_REDEFINE_GETENV)
610 # We should check for putenv before calling this
611 AC_DEFUN([BASH_FUNC_STD_PUTENV],
613 AC_REQUIRE([AC_HEADER_STDC])
614 AC_REQUIRE([AC_C_PROTOTYPES])
615 AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv,
627 extern int putenv (char *);
629 extern int putenv ();
632 [return (putenv == 0);],
633 bash_cv_std_putenv=yes, bash_cv_std_putenv=no
635 if test $bash_cv_std_putenv = yes; then
636 AC_DEFINE(HAVE_STD_PUTENV)
640 # We should check for unsetenv before calling this
641 AC_DEFUN([BASH_FUNC_STD_UNSETENV],
643 AC_REQUIRE([AC_HEADER_STDC])
644 AC_REQUIRE([AC_C_PROTOTYPES])
645 AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unsetenv,
657 extern int unsetenv (const char *);
659 extern int unsetenv ();
662 [return (unsetenv == 0);],
663 bash_cv_std_unsetenv=yes, bash_cv_std_unsetenv=no
665 if test $bash_cv_std_unsetenv = yes; then
666 AC_DEFINE(HAVE_STD_UNSETENV)
670 AC_DEFUN([BASH_FUNC_ULIMIT_MAXFDS],
671 [AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize)
672 AC_CACHE_VAL(bash_cv_ulimit_maxfds,
676 long maxfds = ulimit(4, 0L);
677 exit (maxfds == -1L);
679 ], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no,
680 [AC_MSG_WARN(cannot check ulimit if cross compiling -- defaulting to no)
681 bash_cv_ulimit_maxfds=no]
683 AC_MSG_RESULT($bash_cv_ulimit_maxfds)
684 if test $bash_cv_ulimit_maxfds = yes; then
685 AC_DEFINE(ULIMIT_MAXFDS)
689 AC_DEFUN([BASH_FUNC_GETCWD],
690 [AC_MSG_CHECKING([if getcwd() calls popen()])
691 AC_CACHE_VAL(bash_cv_getcwd_calls_popen,
715 FILE *_popen(command, type)
719 return (popen (command, type));
743 ], bash_cv_getcwd_calls_popen=no, bash_cv_getcwd_calls_popen=yes,
744 [AC_MSG_WARN(cannot check whether getcwd calls popen if cross compiling -- defaulting to no)
745 bash_cv_getcwd_calls_popen=no]
747 AC_MSG_RESULT($bash_cv_getcwd_calls_popen)
748 if test $bash_cv_getcwd_calls_popen = yes; then
749 AC_DEFINE(GETCWD_BROKEN)
755 dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every
756 dnl system, we can't use AC_PREREQ
758 AC_DEFUN([BASH_FUNC_GETHOSTBYNAME],
759 [if test "X$bash_cv_have_gethostbyname" = "X"; then
762 AC_MSG_CHECKING(for gethostbyname in socket library)
765 AC_CACHE_VAL(bash_cv_have_gethostbyname,
766 [AC_TRY_LINK([#include <netdb.h>],
767 [ struct hostent *hp;
768 hp = gethostbyname("localhost");
769 ], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)]
771 if test "X$_bash_needmsg" = Xyes; then
772 AC_MSG_CHECKING(for gethostbyname in socket library)
774 AC_MSG_RESULT($bash_cv_have_gethostbyname)
775 if test "$bash_cv_have_gethostbyname" = yes; then
776 AC_DEFINE(HAVE_GETHOSTBYNAME)
780 AC_DEFUN([BASH_FUNC_FNMATCH_EXTMATCH],
781 [AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH)
782 AC_CACHE_VAL(bash_cv_fnm_extmatch,
794 ], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no,
795 [AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no)
796 bash_cv_fnm_extmatch=no])
798 AC_MSG_RESULT($bash_cv_fnm_extmatch)
799 if test $bash_cv_fnm_extmatch = yes; then
800 AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH)
804 AH_TEMPLATE([HAVE_POSIX_SIGSETJMP], [Define if we POSIX-style sigsetjmp/siglongjmp are available])
805 AC_DEFUN([BASH_FUNC_POSIX_SETJMP],
806 [AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
807 AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp)
808 AC_CACHE_VAL(bash_cv_func_sigsetjmp,
813 #include <sys/types.h>
819 #if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS)
830 sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set);
831 sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset);
834 code = sigsetjmp(xx, 1);
836 exit(0); /* could get sigmask and compare to oset here. */
839 sigaddset(&set, SIGINT);
840 sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL);
846 }], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing,
847 [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing)
848 bash_cv_func_sigsetjmp=missing]
850 AC_MSG_RESULT($bash_cv_func_sigsetjmp)
851 if test $bash_cv_func_sigsetjmp = present; then
852 AC_DEFINE(HAVE_POSIX_SIGSETJMP)
856 AH_TEMPLATE([STRCOLL_BROKEN], [Define if strcoll is broken with respect to strcmp in the default locale.])
857 AC_DEFUN([BASH_FUNC_STRCOLL],
859 AC_MSG_CHECKING(whether or not strcoll and strcmp differ)
860 AC_CACHE_VAL(bash_cv_func_strcoll_broken,
863 #if defined (HAVE_LOCALE_H)
872 char *deflocale, *defcoll;
874 #ifdef HAVE_SETLOCALE
875 deflocale = setlocale(LC_ALL, "");
876 defcoll = setlocale(LC_COLLATE, "");
880 /* These two values are taken from tests/glob-test. */
881 r1 = strcoll("abd", "aXd");
885 r2 = strcmp("abd", "aXd");
887 /* These two should both be greater than 0. It is permissible for
888 a system to return different values, as long as the sign is the
891 /* Exit with 1 (failure) if these two values are both > 0, since
892 this tests whether strcoll(3) is broken with respect to strcmp(3)
893 in the default locale. */
894 exit (r1 > 0 && r2 > 0);
896 ], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no,
897 [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no)
898 bash_cv_func_strcoll_broken=no]
900 AC_MSG_RESULT($bash_cv_func_strcoll_broken)
901 if test $bash_cv_func_strcoll_broken = yes; then
902 AC_DEFINE(STRCOLL_BROKEN)
906 AC_DEFUN([BASH_FUNC_PRINTF_A_FORMAT],
907 [AC_MSG_CHECKING([for printf floating point output in hex notation])
908 AC_CACHE_VAL(bash_cv_printf_a_format,
919 sprintf(abuf, "%A", y);
920 exit(strchr(abuf, 'P') == (char *)0);
922 ], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no,
923 [AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no)
924 bash_cv_printf_a_format=no]
926 AC_MSG_RESULT($bash_cv_printf_a_format)
927 if test $bash_cv_printf_a_format = yes; then
928 AC_DEFINE(HAVE_PRINTF_A_FORMAT)
932 AC_DEFUN([BASH_STRUCT_TERMIOS_LDISC],
934 AC_CHECK_MEMBER(struct termios.c_line, AC_DEFINE(TERMIOS_LDISC), ,[
935 #include <sys/types.h>
940 AC_DEFUN([BASH_STRUCT_TERMIO_LDISC],
942 AC_CHECK_MEMBER(struct termio.c_line, AC_DEFINE(TERMIO_LDISC), ,[
943 #include <sys/types.h>
949 dnl Like AC_STRUCT_ST_BLOCKS, but doesn't muck with LIBOBJS
951 dnl sets bash_cv_struct_stat_st_blocks
953 dnl unused for now; we'll see how AC_CHECK_MEMBERS works
955 AC_DEFUN([BASH_STRUCT_ST_BLOCKS],
957 AC_MSG_CHECKING([for struct stat.st_blocks])
958 AC_CACHE_VAL(bash_cv_struct_stat_st_blocks,
961 #include <sys/types.h>
962 #include <sys/stat.h>
967 static struct stat a;
968 if (a.st_blocks) return 0;
971 ], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no)
973 AC_MSG_RESULT($bash_cv_struct_stat_st_blocks)
974 if test "$bash_cv_struct_stat_st_blocks" = "yes"; then
975 AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS)
979 AC_DEFUN([BASH_CHECK_LIB_TERMCAP],
981 if test "X$bash_cv_termcap_lib" = "X"; then
984 AC_MSG_CHECKING(which library has the termcap functions)
987 AC_CACHE_VAL(bash_cv_termcap_lib,
988 [AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap,
989 [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo,
990 [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
991 [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
992 bash_cv_termcap_lib=gnutermcap)])])])])
993 if test "X$_bash_needmsg" = "Xyes"; then
994 AC_MSG_CHECKING(which library has the termcap functions)
996 AC_MSG_RESULT(using $bash_cv_termcap_lib)
997 if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
998 LDFLAGS="$LDFLAGS -L./lib/termcap"
999 TERMCAP_LIB="./lib/termcap/libtermcap.a"
1000 TERMCAP_DEP="./lib/termcap/libtermcap.a"
1001 elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then
1002 TERMCAP_LIB=-ltermcap
1004 elif test $bash_cv_termcap_lib = libtinfo; then
1007 elif test $bash_cv_termcap_lib = libncurses; then
1008 TERMCAP_LIB=-lncurses
1011 TERMCAP_LIB=-lcurses
1017 dnl Check for the presence of getpeername in libsocket.
1018 dnl If libsocket is present, check for libnsl and add it to LIBS if
1019 dnl it's there, since most systems with libsocket require linking
1020 dnl with libnsl as well. This should only be called if getpeername
1021 dnl was not found in libc.
1023 dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT
1026 AC_DEFUN([BASH_CHECK_LIB_SOCKET],
1028 if test "X$bash_cv_have_socklib" = "X"; then
1031 AC_MSG_CHECKING(for socket library)
1034 AC_CACHE_VAL(bash_cv_have_socklib,
1035 [AC_CHECK_LIB(socket, getpeername,
1036 bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)])
1037 if test "X$_bash_needmsg" = Xyes; then
1038 AC_MSG_RESULT($bash_cv_have_socklib)
1041 if test $bash_cv_have_socklib = yes; then
1042 # check for libnsl, add it to LIBS if present
1043 if test "X$bash_cv_have_libnsl" = "X"; then
1046 AC_MSG_CHECKING(for libnsl)
1049 AC_CACHE_VAL(bash_cv_have_libnsl,
1050 [AC_CHECK_LIB(nsl, t_open,
1051 bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)])
1052 if test "X$_bash_needmsg" = Xyes; then
1053 AC_MSG_RESULT($bash_cv_have_libnsl)
1056 if test $bash_cv_have_libnsl = yes; then
1057 LIBS="-lsocket -lnsl $LIBS"
1059 LIBS="-lsocket $LIBS"
1061 AC_DEFINE(HAVE_LIBSOCKET)
1062 AC_DEFINE(HAVE_GETPEERNAME)
1066 AH_TEMPLATE([STRUCT_DIRENT_HAS_D_INO], [Define if struct dirent has a d_ino member])
1067 AC_DEFUN([BASH_STRUCT_DIRENT_D_INO],
1068 [AC_REQUIRE([AC_HEADER_DIRENT])
1069 AC_MSG_CHECKING(if struct dirent has a d_ino member)
1070 AC_CACHE_VAL(bash_cv_dirent_has_dino,
1073 #include <sys/types.h>
1074 #ifdef HAVE_UNISTD_H
1075 # include <unistd.h>
1076 #endif /* HAVE_UNISTD_H */
1077 #if defined(HAVE_DIRENT_H)
1078 # include <dirent.h>
1080 # define dirent direct
1081 # ifdef HAVE_SYS_NDIR_H
1082 # include <sys/ndir.h>
1083 # endif /* SYSNDIR */
1084 # ifdef HAVE_SYS_DIR_H
1085 # include <sys/dir.h>
1086 # endif /* SYSDIR */
1090 #endif /* HAVE_DIRENT_H */
1092 struct dirent d; int z; z = d.d_ino;
1093 ], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)])
1094 AC_MSG_RESULT($bash_cv_dirent_has_dino)
1095 if test $bash_cv_dirent_has_dino = yes; then
1096 AC_DEFINE(STRUCT_DIRENT_HAS_D_INO)
1100 AH_TEMPLATE([STRUCT_DIRENT_HAS_D_FILENO], [Define if struct dirent has a d_fileno member])
1101 AC_DEFUN([BASH_STRUCT_DIRENT_D_FILENO],
1102 [AC_REQUIRE([AC_HEADER_DIRENT])
1103 AC_MSG_CHECKING(if struct dirent has a d_fileno member)
1104 AC_CACHE_VAL(bash_cv_dirent_has_d_fileno,
1107 #include <sys/types.h>
1108 #ifdef HAVE_UNISTD_H
1109 # include <unistd.h>
1110 #endif /* HAVE_UNISTD_H */
1111 #if defined(HAVE_DIRENT_H)
1112 # include <dirent.h>
1114 # define dirent direct
1115 # ifdef HAVE_SYS_NDIR_H
1116 # include <sys/ndir.h>
1117 # endif /* SYSNDIR */
1118 # ifdef HAVE_SYS_DIR_H
1119 # include <sys/dir.h>
1120 # endif /* SYSDIR */
1124 #endif /* HAVE_DIRENT_H */
1126 struct dirent d; int z; z = d.d_fileno;
1127 ], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)])
1128 AC_MSG_RESULT($bash_cv_dirent_has_d_fileno)
1129 if test $bash_cv_dirent_has_d_fileno = yes; then
1130 AC_DEFINE(STRUCT_DIRENT_HAS_D_FILENO)
1134 AC_DEFUN([BASH_STRUCT_TIMEVAL],
1135 [AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h)
1136 AC_CACHE_VAL(bash_cv_struct_timeval,
1138 AC_EGREP_HEADER(struct timeval, sys/time.h,
1139 bash_cv_struct_timeval=yes,
1140 AC_EGREP_HEADER(struct timeval, time.h,
1141 bash_cv_struct_timeval=yes,
1142 bash_cv_struct_timeval=no))
1144 AC_MSG_RESULT($bash_cv_struct_timeval)
1145 if test $bash_cv_struct_timeval = yes; then
1146 AC_DEFINE(HAVE_TIMEVAL)
1150 AH_TEMPLATE([STRUCT_WINSIZE_IN_SYS_IOCTL], [Define if struct winsize is in sys/ioctl.h])
1151 AH_TEMPLATE([STRUCT_WINSIZE_IN_TERMIOS], [Define if struct winsize is in termios.h])
1152 AC_DEFUN([BASH_STRUCT_WINSIZE],
1153 [AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h)
1154 AC_CACHE_VAL(bash_cv_struct_winsize_header,
1155 [AC_TRY_COMPILE([#include <sys/types.h>
1156 #include <sys/ioctl.h>], [struct winsize x;],
1157 bash_cv_struct_winsize_header=ioctl_h,
1158 [AC_TRY_COMPILE([#include <sys/types.h>
1159 #include <termios.h>], [struct winsize x;],
1160 bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other)
1162 if test $bash_cv_struct_winsize_header = ioctl_h; then
1163 AC_MSG_RESULT(sys/ioctl.h)
1164 AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL)
1165 elif test $bash_cv_struct_winsize_header = termios_h; then
1166 AC_MSG_RESULT(termios.h)
1167 AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS)
1169 AC_MSG_RESULT(not found)
1173 dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7)
1174 AH_TEMPLATE([HAVE_POSIX_SIGNALS], [Define if we have the POSIX signal routines])
1175 AH_TEMPLATE([HAVE_BSD_SIGNALS], [Define if we have the BSD signal routines])
1176 AH_TEMPLATE([HAVE_USG_SIGHOLD], [Define if we have the USG signal routines])
1177 AC_DEFUN([BASH_SYS_SIGNAL_VINTAGE],
1178 [AC_REQUIRE([AC_TYPE_SIGNAL])
1179 AC_MSG_CHECKING(for type of signal functions)
1180 AC_CACHE_VAL(bash_cv_signal_vintage,
1182 AC_MSG_WARN([checking for posix...])
1183 AC_TRY_LINK([#include <signal.h>],[
1185 struct sigaction sa;
1186 sigemptyset(&ss); sigsuspend(&ss);
1187 sigaction(SIGINT, &sa, (struct sigaction *) 0);
1188 sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0);
1189 ], bash_cv_signal_vintage="posix",
1191 AC_MSG_WARN([checking for 4.2bsd...])
1192 AC_TRY_LINK([#include <signal.h>], [
1193 int mask = sigmask(SIGINT);
1194 sigsetmask(mask); sigblock(mask); sigpause(mask);
1195 ], bash_cv_signal_vintage="4.2bsd",
1197 AC_MSG_WARN([checking for svr3...])
1200 RETSIGTYPE foo() { }], [
1201 int mask = sigmask(SIGINT);
1202 sigset(SIGINT, foo); sigrelse(SIGINT);
1203 sighold(SIGINT); sigpause(SIGINT);
1204 ], bash_cv_signal_vintage="svr3", bash_cv_signal_vintage="v7"
1209 AC_MSG_RESULT($bash_cv_signal_vintage)
1210 if test "$bash_cv_signal_vintage" = "posix"; then
1211 AC_DEFINE(HAVE_POSIX_SIGNALS)
1212 elif test "$bash_cv_signal_vintage" = "4.2bsd"; then
1213 AC_DEFINE(HAVE_BSD_SIGNALS)
1214 elif test "$bash_cv_signal_vintage" = "svr3"; then
1215 AC_DEFINE(HAVE_USG_SIGHOLD)
1219 dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process.
1220 AC_DEFUN([BASH_SYS_PGRP_SYNC],
1221 [AC_REQUIRE([AC_FUNC_GETPGRP])
1222 AC_MSG_CHECKING(whether pgrps need synchronization)
1223 AC_CACHE_VAL(bash_cv_pgrp_pipe,
1225 #ifdef HAVE_UNISTD_H
1226 # include <unistd.h>
1230 # ifdef GETPGRP_VOID
1231 # define getpgID() getpgrp()
1233 # define getpgID() getpgrp(0)
1234 # define setpgid(x,y) setpgrp(x,y)
1236 int pid1, pid2, fds[2];
1240 switch (pid1 = fork()) {
1244 setpgid(0, getpid());
1247 setpgid(pid1, pid1);
1249 sleep(2); /* let first child die */
1254 switch (pid2 = fork()) {
1259 ok = getpgID() == pid1;
1260 write(fds[1], &ok, 1);
1263 setpgid(pid2, pid1);
1266 if (read(fds[0], &ok, 1) != 1)
1272 ], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes,
1273 [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no)
1274 bash_cv_pgrp_pipe=no])
1276 AC_MSG_RESULT($bash_cv_pgrp_pipe)
1277 if test $bash_cv_pgrp_pipe = yes; then
1278 AC_DEFINE(PGRP_PIPE)
1282 AH_TEMPLATE([MUST_REINSTALL_SIGHANDLERS], [Define if signal handlers must be reinstalled when invoked.])
1283 AC_DEFUN([BASH_SYS_REINSTALL_SIGHANDLERS],
1284 [AC_REQUIRE([AC_TYPE_SIGNAL])
1285 AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
1286 AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked])
1287 AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers,
1290 #ifdef HAVE_UNISTD_H
1294 typedef RETSIGTYPE sigfunc();
1298 #ifdef HAVE_POSIX_SIGNALS
1300 set_signal_handler(sig, handler)
1304 struct sigaction act, oact;
1305 act.sa_handler = handler;
1307 sigemptyset (&act.sa_mask);
1308 sigemptyset (&oact.sa_mask);
1309 sigaction (sig, &act, &oact);
1310 return (oact.sa_handler);
1313 #define set_signal_handler(s, h) signal(s, h)
1326 set_signal_handler(SIGINT, sigint);
1327 kill((int)getpid(), SIGINT);
1328 kill((int)getpid(), SIGINT);
1331 ], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes,
1332 [AC_MSG_WARN(cannot check signal handling if cross compiling -- defaulting to no)
1333 bash_cv_must_reinstall_sighandlers=no]
1335 AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers)
1336 if test $bash_cv_must_reinstall_sighandlers = yes; then
1337 AC_DEFINE(MUST_REINSTALL_SIGHANDLERS)
1341 dnl check that some necessary job control definitions are present
1342 AC_DEFUN([BASH_SYS_JOB_CONTROL_MISSING],
1343 [AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
1344 AC_MSG_CHECKING(for presence of necessary job control definitions)
1345 AC_CACHE_VAL(bash_cv_job_control_missing,
1347 #include <sys/types.h>
1348 #ifdef HAVE_SYS_WAIT_H
1349 #include <sys/wait.h>
1351 #ifdef HAVE_UNISTD_H
1356 /* Add more tests in here as appropriate. */
1360 #if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS)
1364 /* signals and tty control. */
1365 #if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT)
1369 /* process control */
1370 #if !defined (WNOHANG) || !defined (WUNTRACED)
1374 /* Posix systems have tcgetpgrp and waitpid. */
1375 #if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP)
1379 #if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID)
1383 /* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */
1384 #if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3)
1389 }], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing,
1390 [AC_MSG_WARN(cannot check job control if cross-compiling -- defaulting to missing)
1391 bash_cv_job_control_missing=missing]
1393 AC_MSG_RESULT($bash_cv_job_control_missing)
1394 if test $bash_cv_job_control_missing = missing; then
1395 AC_DEFINE(JOB_CONTROL_MISSING)
1399 dnl check whether named pipes are present
1400 dnl this requires a previous check for mkfifo, but that is awkward to specify
1401 AC_DEFUN([BASH_SYS_NAMED_PIPES],
1402 [AC_MSG_CHECKING(for presence of named pipes)
1403 AC_CACHE_VAL(bash_cv_sys_named_pipes,
1405 #include <sys/types.h>
1406 #include <sys/stat.h>
1407 #ifdef HAVE_UNISTD_H
1411 /* Add more tests in here as appropriate. */
1416 #if defined (HAVE_MKFIFO)
1420 #if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO))
1427 err = mkdir("/tmp/bash-aclocal", 0700);
1432 fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0);
1434 rmdir ("/tmp/bash-aclocal");
1438 unlink ("/tmp/bash-aclocal/sh-np-autoconf");
1439 rmdir ("/tmp/bash-aclocal");
1441 }], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing,
1442 [AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing)
1443 bash_cv_sys_named_pipes=missing]
1445 AC_MSG_RESULT($bash_cv_sys_named_pipes)
1446 if test $bash_cv_sys_named_pipes = missing; then
1447 AC_DEFINE(NAMED_PIPES_MISSING)
1451 AC_DEFUN([BASH_SYS_DEFAULT_MAIL_DIR],
1452 [AC_MSG_CHECKING(for default mail directory)
1453 AC_CACHE_VAL(bash_cv_mail_dir,
1454 [if test -d /var/mail; then
1455 bash_cv_mail_dir=/var/mail
1456 elif test -d /var/spool/mail; then
1457 bash_cv_mail_dir=/var/spool/mail
1458 elif test -d /usr/mail; then
1459 bash_cv_mail_dir=/usr/mail
1460 elif test -d /usr/spool/mail; then
1461 bash_cv_mail_dir=/usr/spool/mail
1463 bash_cv_mail_dir=unknown
1466 AC_MSG_RESULT($bash_cv_mail_dir)
1467 AC_DEFINE_UNQUOTED(DEFAULT_MAIL_DIRECTORY, "$bash_cv_mail_dir")
1470 AC_DEFUN([BASH_HAVE_TIOCGWINSZ],
1471 [AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h)
1472 AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl,
1473 [AC_TRY_COMPILE([#include <sys/types.h>
1474 #include <sys/ioctl.h>], [int x = TIOCGWINSZ;],
1475 bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)])
1476 AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl)
1477 if test $bash_cv_tiocgwinsz_in_ioctl = yes; then
1478 AC_DEFINE(GWINSZ_IN_SYS_IOCTL)
1482 AH_TEMPLATE([TIOCSTAT_IN_SYS_IOCTL], [Define if TIOCSTAT is in sys/ioctl.h])
1483 AC_DEFUN([BASH_HAVE_TIOCSTAT],
1484 [AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h)
1485 AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl,
1486 [AC_TRY_COMPILE([#include <sys/types.h>
1487 #include <sys/ioctl.h>], [int x = TIOCSTAT;],
1488 bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)])
1489 AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl)
1490 if test $bash_cv_tiocstat_in_ioctl = yes; then
1491 AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL)
1495 AH_TEMPLATE([FIONREAD_IN_SYS_IOCTL], [Define if FIONREAD is in sys/ioctl.h])
1496 AC_DEFUN([BASH_HAVE_FIONREAD],
1497 [AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h)
1498 AC_CACHE_VAL(bash_cv_fionread_in_ioctl,
1499 [AC_TRY_COMPILE([#include <sys/types.h>
1500 #include <sys/ioctl.h>], [int x = FIONREAD;],
1501 bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)])
1502 AC_MSG_RESULT($bash_cv_fionread_in_ioctl)
1503 if test $bash_cv_fionread_in_ioctl = yes; then
1504 AC_DEFINE(FIONREAD_IN_SYS_IOCTL)
1509 dnl See if speed_t is declared in <sys/types.h>. Some versions of linux
1510 dnl require a definition of speed_t each time <termcap.h> is included,
1511 dnl but you can only get speed_t if you include <termios.h> (on some
1512 dnl versions) or <sys/types.h> (on others).
1514 AH_TEMPLATE([SPEED_T_IN_SYS_TYPES], [Define if speed_t is in sys/types.h])
1515 AC_DEFUN([BASH_CHECK_SPEED_T],
1516 [AC_MSG_CHECKING(for speed_t in sys/types.h)
1517 AC_CACHE_VAL(bash_cv_speed_t_in_sys_types,
1518 [AC_TRY_COMPILE([#include <sys/types.h>], [speed_t x;],
1519 bash_cv_speed_t_in_sys_types=yes,bash_cv_speed_t_in_sys_types=no)])
1520 AC_MSG_RESULT($bash_cv_speed_t_in_sys_types)
1521 if test $bash_cv_speed_t_in_sys_types = yes; then
1522 AC_DEFINE(SPEED_T_IN_SYS_TYPES)
1526 AH_TEMPLATE([HAVE_GETPW_DECLS], [Define if getpw functions are declared in pwd.h])
1527 AC_DEFUN([BASH_CHECK_GETPW_FUNCS],
1528 [AC_MSG_CHECKING(whether getpw functions are declared in pwd.h)
1529 AC_CACHE_VAL(bash_cv_getpw_declared,
1530 [AC_EGREP_CPP(getpwuid,
1532 #include <sys/types.h>
1533 #ifdef HAVE_UNISTD_H
1534 # include <unistd.h>
1538 bash_cv_getpw_declared=yes,bash_cv_getpw_declared=no)])
1539 AC_MSG_RESULT($bash_cv_getpw_declared)
1540 if test $bash_cv_getpw_declared = yes; then
1541 AC_DEFINE(HAVE_GETPW_DECLS)
1545 AC_DEFUN([BASH_CHECK_DEV_FD],
1546 [AC_MSG_CHECKING(whether /dev/fd is available)
1547 AC_CACHE_VAL(bash_cv_dev_fd,
1548 [if test -d /dev/fd && test -r /dev/fd/0; then
1549 bash_cv_dev_fd=standard
1550 elif test -d /proc/self/fd && test -r /proc/self/fd/0; then
1551 bash_cv_dev_fd=whacky
1553 bash_cv_dev_fd=absent
1556 AC_MSG_RESULT($bash_cv_dev_fd)
1557 if test $bash_cv_dev_fd = "standard"; then
1558 AC_DEFINE(HAVE_DEV_FD)
1559 AC_DEFINE(DEV_FD_PREFIX, "/dev/fd/")
1560 elif test $bash_cv_dev_fd = "whacky"; then
1561 AC_DEFINE(HAVE_DEV_FD)
1562 AC_DEFINE(DEV_FD_PREFIX, "/proc/self/fd/")
1566 AC_DEFUN([BASH_CHECK_DEV_STDIN],
1567 [AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available)
1568 AC_CACHE_VAL(bash_cv_dev_stdin,
1569 [if test -d /dev/fd && test -r /dev/stdin; then
1570 bash_cv_dev_stdin=present
1571 elif test -d /proc/self/fd && test -r /dev/stdin; then
1572 bash_cv_dev_stdin=present
1574 bash_cv_dev_stdin=absent
1577 AC_MSG_RESULT($bash_cv_dev_stdin)
1578 if test $bash_cv_dev_stdin = "present"; then
1579 AC_DEFINE(HAVE_DEV_STDIN)
1584 dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions
1586 AC_DEFUN([BASH_CHECK_KERNEL_RLIMIT],
1587 [AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines])
1588 AC_CACHE_VAL(bash_cv_kernel_rlimit,
1590 #include <sys/types.h>
1591 #include <sys/resource.h>
1596 ], bash_cv_kernel_rlimit=no,
1598 #include <sys/types.h>
1600 #include <sys/resource.h>
1606 ], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)]
1608 AC_MSG_RESULT($bash_cv_kernel_rlimit)
1609 if test $bash_cv_kernel_rlimit = yes; then
1610 AC_DEFINE(RLIMIT_NEEDS_KERNEL)
1615 dnl Check for 64-bit off_t -- used for malloc alignment
1617 dnl C does not allow duplicate case labels, so the compile will fail if
1618 dnl sizeof(off_t) is > 4.
1620 AC_DEFUN([BASH_CHECK_OFF_T_64],
1621 [AC_CACHE_CHECK(for 64-bit off_t, bash_cv_off_t_64,
1623 #ifdef HAVE_UNISTD_H
1626 #include <sys/types.h>
1628 switch (0) case 0: case (sizeof (off_t) <= 4):;
1629 ], bash_cv_off_t_64=no, bash_cv_off_t_64=yes))
1630 if test $bash_cv_off_t_64 = yes; then
1631 AC_DEFINE(HAVE_OFF_T_64)
1634 AC_DEFUN([BASH_CHECK_RTSIGS],
1635 [AC_MSG_CHECKING(for unusable real-time signals due to large values)
1636 AC_CACHE_VAL(bash_cv_unusable_rtsigs,
1638 #include <sys/types.h>
1647 int n_sigs = 2 * NSIG;
1649 int rtmin = SIGRTMIN;
1654 exit(rtmin < n_sigs);
1655 }], bash_cv_unusable_rtsigs=yes, bash_cv_unusable_rtsigs=no,
1656 [AC_MSG_WARN(cannot check real-time signals if cross compiling -- defaulting to yes)
1657 bash_cv_unusable_rtsigs=yes]
1659 AC_MSG_RESULT($bash_cv_unusable_rtsigs)
1660 if test $bash_cv_unusable_rtsigs = yes; then
1661 AC_DEFINE(UNUSABLE_RT_SIGNALS)
1666 dnl check for availability of multibyte characters and functions
1668 AH_TEMPLATE([HAVE_MBSRTOWCS], [Define if we have the mbsrtowcs function])
1669 AH_TEMPLATE([HAVE_WCWIDTH], [Define if we have the wcwidth function])
1670 AH_TEMPLATE([HAVE_MBSTATE_T], [Define if we have mbstate_t])
1671 AH_TEMPLATE([HAVE_LANGINFO_CODESET], [Define if we have nl_langinfo and CODESET])
1672 AC_DEFUN([BASH_CHECK_MULTIBYTE],
1674 AC_CHECK_HEADERS(wctype.h)
1675 AC_CHECK_HEADERS(wchar.h)
1676 AC_CHECK_HEADERS(langinfo.h)
1678 AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS))
1679 AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH))
1681 AC_CACHE_CHECK([for mbstate_t], bash_cv_have_mbstate_t,
1689 }], bash_cv_have_mbstate_t=yes, bash_cv_have_mbstate_t=no)])
1690 if test $bash_cv_have_mbstate_t = yes; then
1691 AC_DEFINE(HAVE_MBSTATE_T)
1694 AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset,
1696 [#include <langinfo.h>],
1697 [char* cs = nl_langinfo(CODESET);],
1698 bash_cv_langinfo_codeset=yes, bash_cv_langinfo_codeset=no)])
1699 if test $bash_cv_langinfo_codeset = yes; then
1700 AC_DEFINE(HAVE_LANGINFO_CODESET)
1705 dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB
1708 dnl BASH_CHECK_LIB_TERMCAP
1710 AC_DEFUN([RL_LIB_READLINE_VERSION],
1712 AC_REQUIRE([BASH_CHECK_LIB_TERMCAP])
1714 AC_MSG_CHECKING([version of installed readline library])
1716 # What a pain in the ass this is.
1718 # save cpp and ld options
1719 _save_CFLAGS="$CFLAGS"
1720 _save_LDFLAGS="$LDFLAGS"
1723 # Don't set ac_cv_rl_prefix if the caller has already assigned a value. This
1724 # allows the caller to do something like $_rl_prefix=$withval if the user
1725 # specifies --with-installed-readline=PREFIX as an argument to configure
1727 if test -z "$ac_cv_rl_prefix"; then
1728 test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix}
1731 eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include
1732 eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib
1734 LIBS="$LIBS -lreadline ${TERMCAP_LIB}"
1735 CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}"
1736 LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}"
1740 #include <readline/readline.h>
1745 fp = fopen("conftest.rlv", "w");
1746 if (fp == 0) exit(1);
1747 fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0");
1752 ac_cv_rl_version=`cat conftest.rlv`,
1753 ac_cv_rl_version='0.0',
1754 ac_cv_rl_version='4.2')
1756 CFLAGS="$_save_CFLAGS"
1757 LDFLAGS="$_save_LDFLAGS"
1764 case "$ac_cv_rl_version" in
1765 2*|3*|4*|5*|6*|7*|8*|9*)
1766 RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'`
1767 RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[[a-zA-Z]]*$::'`
1773 [[0-9][0-9]]) _RL_MAJOR=$RL_MAJOR ;;
1774 [[0-9]]) _RL_MAJOR=0$RL_MAJOR ;;
1780 [[0-9][0-9]]) _RL_MINOR=$RL_MINOR ;;
1781 [[0-9]]) _RL_MINOR=0$RL_MINOR ;;
1785 RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}"
1787 # Readline versions greater than 4.2 have these defines in readline.h
1789 if test $ac_cv_rl_version = '0.0' ; then
1790 AC_MSG_WARN([Could not test version of installed readline library.])
1791 elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then
1792 # set these for use by the caller
1793 RL_PREFIX=$ac_cv_rl_prefix
1794 RL_LIBDIR=$ac_cv_rl_libdir
1795 RL_INCLUDEDIR=$ac_cv_rl_includedir
1796 AC_MSG_RESULT($ac_cv_rl_version)
1799 AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library])
1800 AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library])
1801 AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library])
1803 AC_SUBST(RL_VERSION)
1807 # set these for use by the caller
1808 RL_PREFIX=$ac_cv_rl_prefix
1809 RL_LIBDIR=$ac_cv_rl_libdir
1810 RL_INCLUDEDIR=$ac_cv_rl_includedir
1812 AC_MSG_RESULT($ac_cv_rl_version)