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,
209 [AC_REQUIRE([AC_DECL_SYS_SIGLIST])
210 AC_MSG_CHECKING([for sys_siglist in system C library])
211 AC_CACHE_VAL(bash_cv_sys_siglist,
213 #include <sys/types.h>
218 #ifndef SYS_SIGLIST_DECLARED
219 extern char *sys_siglist[];
223 char *msg = sys_siglist[2];
226 bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no,
227 [AC_MSG_WARN(cannot check for sys_siglist if cross compiling -- defaulting to no)
228 bash_cv_sys_siglist=no])])
229 AC_MSG_RESULT($bash_cv_sys_siglist)
230 if test $bash_cv_sys_siglist = yes; then
231 AC_DEFINE(HAVE_SYS_SIGLIST)
235 dnl Check for the various permutations of sys_siglist and make sure we
236 dnl compile in siglist.o if they're not defined
237 AC_DEFUN(BASH_CHECK_SYS_SIGLIST, [
238 AC_REQUIRE([BASH_SYS_SIGLIST])
239 AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST])
240 AC_REQUIRE([BASH_FUNC_STRSIGNAL])
241 if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then
246 AC_SUBST([SIGLIST_O])
249 dnl Check for sys_errlist[] and sys_nerr, check for declaration
250 AC_DEFUN(BASH_SYS_ERRLIST,
251 [AC_MSG_CHECKING([for sys_errlist and sys_nerr])
252 AC_CACHE_VAL(bash_cv_sys_errlist,
253 [AC_TRY_LINK([#include <errno.h>],
254 [extern char *sys_errlist[];
256 char *msg = sys_errlist[sys_nerr - 1];],
257 bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl
258 AC_MSG_RESULT($bash_cv_sys_errlist)
259 if test $bash_cv_sys_errlist = yes; then
260 AC_DEFINE(HAVE_SYS_ERRLIST)
265 dnl Check if dup2() does not clear the close on exec flag
267 AC_DEFUN(BASH_FUNC_DUP2_CLOEXEC_CHECK,
268 [AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag)
269 AC_CACHE_VAL(bash_cv_dup2_broken,
271 #include <sys/types.h>
276 fd1 = open("/dev/null", 2);
277 if (fcntl(fd1, 2, 1) < 0)
282 fl = fcntl(fd2, 1, 0);
283 /* fl will be 1 if dup2 did not reset the close-on-exec flag. */
286 ], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no,
287 [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no)
288 bash_cv_dup2_broken=no])
290 AC_MSG_RESULT($bash_cv_dup2_broken)
291 if test $bash_cv_dup2_broken = yes; then
292 AC_DEFINE(DUP2_BROKEN)
296 AC_DEFUN(BASH_FUNC_STRSIGNAL,
297 [AC_MSG_CHECKING([for the existence of strsignal])
298 AC_CACHE_VAL(bash_cv_have_strsignal,
299 [AC_TRY_LINK([#include <sys/types.h>
300 #include <signal.h>],
301 [char *s = (char *)strsignal(2);],
302 bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)])
303 AC_MSG_RESULT($bash_cv_have_strsignal)
304 if test $bash_cv_have_strsignal = yes; then
305 AC_DEFINE(HAVE_STRSIGNAL)
309 dnl Check to see if opendir will open non-directories (not a nice thing)
310 AC_DEFUN(BASH_FUNC_OPENDIR_CHECK,
311 [AC_REQUIRE([AC_HEADER_DIRENT])dnl
312 AC_MSG_CHECKING(if opendir() opens non-directories)
313 AC_CACHE_VAL(bash_cv_opendir_not_robust,
316 #include <sys/types.h>
320 #endif /* HAVE_UNISTD_H */
321 #if defined(HAVE_DIRENT_H)
324 # define dirent direct
325 # ifdef HAVE_SYS_NDIR_H
326 # include <sys/ndir.h>
327 # endif /* SYSNDIR */
328 # ifdef HAVE_SYS_DIR_H
329 # include <sys/dir.h>
334 #endif /* HAVE_DIRENT_H */
339 err = mkdir("/tmp/bash-aclocal", 0700);
344 unlink("/tmp/bash-aclocal/not_a_directory");
345 fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666);
348 dir = opendir("/tmp/bash-aclocal/not_a_directory");
349 unlink("/tmp/bash-aclocal/not_a_directory");
350 rmdir("/tmp/bash-aclocal");
352 }], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no,
353 [AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no)
354 bash_cv_opendir_not_robust=no]
356 AC_MSG_RESULT($bash_cv_opendir_not_robust)
357 if test $bash_cv_opendir_not_robust = yes; then
358 AC_DEFINE(OPENDIR_NOT_ROBUST)
363 AC_DEFUN(BASH_TYPE_SIGHANDLER,
364 [AC_MSG_CHECKING([whether signal handlers are of type void])
365 AC_CACHE_VAL(bash_cv_void_sighandler,
366 [AC_TRY_COMPILE([#include <sys/types.h>
374 void (*signal ()) ();],
375 [int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl
376 AC_MSG_RESULT($bash_cv_void_sighandler)
377 if test $bash_cv_void_sighandler = yes; then
378 AC_DEFINE(VOID_SIGHANDLER)
383 dnl A signed 16-bit integer quantity
385 AC_DEFUN(BASH_TYPE_BITS16_T,
387 if test "$ac_cv_sizeof_short" = 2; then
388 AC_CHECK_TYPE(bits16_t, short)
389 elif test "$ac_cv_sizeof_char" = 2; then
390 AC_CHECK_TYPE(bits16_t, char)
392 AC_CHECK_TYPE(bits16_t, short)
397 dnl An unsigned 16-bit integer quantity
399 AC_DEFUN(BASH_TYPE_U_BITS16_T,
401 if test "$ac_cv_sizeof_short" = 2; then
402 AC_CHECK_TYPE(u_bits16_t, unsigned short)
403 elif test "$ac_cv_sizeof_char" = 2; then
404 AC_CHECK_TYPE(u_bits16_t, unsigned char)
406 AC_CHECK_TYPE(u_bits16_t, unsigned short)
411 dnl A signed 32-bit integer quantity
413 AC_DEFUN(BASH_TYPE_BITS32_T,
415 if test "$ac_cv_sizeof_int" = 4; then
416 AC_CHECK_TYPE(bits32_t, int)
417 elif test "$ac_cv_sizeof_long" = 4; then
418 AC_CHECK_TYPE(bits32_t, long)
420 AC_CHECK_TYPE(bits32_t, int)
425 dnl An unsigned 32-bit integer quantity
427 AC_DEFUN(BASH_TYPE_U_BITS32_T,
429 if test "$ac_cv_sizeof_int" = 4; then
430 AC_CHECK_TYPE(u_bits32_t, unsigned int)
431 elif test "$ac_cv_sizeof_long" = 4; then
432 AC_CHECK_TYPE(u_bits32_t, unsigned long)
434 AC_CHECK_TYPE(u_bits32_t, unsigned int)
438 AC_DEFUN(BASH_TYPE_PTRDIFF_T,
440 if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then
441 AC_CHECK_TYPE(ptrdiff_t, int)
442 elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then
443 AC_CHECK_TYPE(ptrdiff_t, long)
444 elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then
445 AC_CHECK_TYPE(ptrdiff_t, [long long])
447 AC_CHECK_TYPE(ptrdiff_t, int)
452 dnl A signed 64-bit quantity
454 AC_DEFUN(BASH_TYPE_BITS64_T,
456 if test "$ac_cv_sizeof_char_p" = 8; then
457 AC_CHECK_TYPE(bits64_t, char *)
458 elif test "$ac_cv_sizeof_double" = 8; then
459 AC_CHECK_TYPE(bits64_t, double)
460 elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then
461 AC_CHECK_TYPE(bits64_t, [long long])
462 elif test "$ac_cv_sizeof_long" = 8; then
463 AC_CHECK_TYPE(bits64_t, long)
465 AC_CHECK_TYPE(bits64_t, double)
469 AC_DEFUN(BASH_TYPE_LONG_LONG,
471 AC_CACHE_CHECK([for long long], bash_cv_type_long_long,
473 long long ll = 1; int i = 63;],
475 long long llm = (long long) -1;
476 return ll << i | ll >> i | llm / ll | llm % ll;
477 ], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')])
478 if test "$bash_cv_type_long_long" = 'long long'; then
479 AC_DEFINE(HAVE_LONG_LONG, 1)
483 AC_DEFUN(BASH_TYPE_UNSIGNED_LONG_LONG,
485 AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long,
487 unsigned long long ull = 1; int i = 63;],
489 unsigned long long ullmax = (unsigned long long) -1;
490 return ull << i | ull >> i | ullmax / ull | ullmax % ull;
491 ], bash_cv_type_unsigned_long_long='unsigned long long',
492 bash_cv_type_unsigned_long_long='unsigned long')])
493 if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then
494 AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1)
499 dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0)
500 dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use
501 dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify
502 dnl matters, this just checks for rlim_t, quad_t, or long.
504 AC_DEFUN(BASH_TYPE_RLIMIT,
505 [AC_MSG_CHECKING(for size and type of struct rlimit fields)
506 AC_CACHE_VAL(bash_cv_type_rlimit,
507 [AC_TRY_COMPILE([#include <sys/types.h>
508 #include <sys/resource.h>],
509 [rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[
511 #include <sys/types.h>
512 #include <sys/time.h>
513 #include <sys/resource.h>
518 if (sizeof(rl.rlim_cur) == sizeof(quad_t))
522 }], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long,
523 [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long)
524 bash_cv_type_rlimit=long])])
526 AC_MSG_RESULT($bash_cv_type_rlimit)
527 if test $bash_cv_type_rlimit = quad_t; then
528 AC_DEFINE(RLIMTYPE, quad_t)
529 elif test $bash_cv_type_rlimit = rlim_t; then
530 AC_DEFINE(RLIMTYPE, rlim_t)
534 AC_DEFUN(BASH_FUNC_LSTAT,
535 [dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an
536 dnl inline function in <sys/stat.h>.
537 AC_CACHE_CHECK([for lstat], bash_cv_func_lstat,
539 #include <sys/types.h>
540 #include <sys/stat.h>
541 ],[ lstat(".",(struct stat *)0); ],
542 bash_cv_func_lstat=yes, bash_cv_func_lstat=no)])
543 if test $bash_cv_func_lstat = yes; then
544 AC_DEFINE(HAVE_LSTAT)
548 AC_DEFUN(BASH_FUNC_INET_ATON,
550 AC_CACHE_CHECK([for inet_aton], bash_cv_func_inet_aton,
552 #include <sys/types.h>
553 #include <netinet/in.h>
554 #include <arpa/inet.h>
555 struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ],
556 bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)])
557 if test $bash_cv_func_inet_aton = yes; then
558 AC_DEFINE(HAVE_INET_ATON)
564 AC_DEFUN(BASH_FUNC_GETENV,
565 [AC_MSG_CHECKING(to see if getenv can be redefined)
566 AC_CACHE_VAL(bash_cv_getenv_redef,
578 #if defined (__linux__) || defined (__bsdi__) || defined (convex)
582 #endif /* !__linux__ && !__bsdi__ && !convex */
589 /* The next allows this program to run, but does not allow bash to link
590 when it redefines getenv. I'm not really interested in figuring out
596 exit(s == 0); /* force optimizer to leave getenv in */
598 ], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no,
599 [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes)
600 bash_cv_getenv_redef=yes]
602 AC_MSG_RESULT($bash_cv_getenv_redef)
603 if test $bash_cv_getenv_redef = yes; then
604 AC_DEFINE(CAN_REDEFINE_GETENV)
608 AC_DEFUN(BASH_FUNC_ULIMIT_MAXFDS,
609 [AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize)
610 AC_CACHE_VAL(bash_cv_ulimit_maxfds,
614 long maxfds = ulimit(4, 0L);
615 exit (maxfds == -1L);
617 ], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no,
618 [AC_MSG_WARN(cannot check ulimit if cross compiling -- defaulting to no)
619 bash_cv_ulimit_maxfds=no]
621 AC_MSG_RESULT($bash_cv_ulimit_maxfds)
622 if test $bash_cv_ulimit_maxfds = yes; then
623 AC_DEFINE(ULIMIT_MAXFDS)
627 AC_DEFUN(BASH_FUNC_GETCWD,
628 [AC_MSG_CHECKING([if getcwd() calls popen()])
629 AC_CACHE_VAL(bash_cv_getcwd_calls_popen,
653 FILE *_popen(command, type)
657 return (popen (command, type));
681 ], bash_cv_getcwd_calls_popen=no, bash_cv_getcwd_calls_popen=yes,
682 [AC_MSG_WARN(cannot check whether getcwd calls popen if cross compiling -- defaulting to no)
683 bash_cv_getcwd_calls_popen=no]
685 AC_MSG_RESULT($bash_cv_getcwd_calls_popen)
686 if test $bash_cv_getcwd_calls_popen = yes; then
687 AC_DEFINE(GETCWD_BROKEN)
693 dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every
694 dnl system, we can't use AC_PREREQ
696 AC_DEFUN(BASH_FUNC_GETHOSTBYNAME,
697 [if test "X$bash_cv_have_gethostbyname" = "X"; then
700 AC_MSG_CHECKING(for gethostbyname in socket library)
703 AC_CACHE_VAL(bash_cv_have_gethostbyname,
704 [AC_TRY_LINK([#include <netdb.h>],
705 [ struct hostent *hp;
706 hp = gethostbyname("localhost");
707 ], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)]
709 if test "X$_bash_needmsg" = Xyes; then
710 AC_MSG_CHECKING(for gethostbyname in socket library)
712 AC_MSG_RESULT($bash_cv_have_gethostbyname)
713 if test "$bash_cv_have_gethostbyname" = yes; then
714 AC_DEFINE(HAVE_GETHOSTBYNAME)
718 AC_DEFUN(BASH_FUNC_FNMATCH_EXTMATCH,
719 [AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH)
720 AC_CACHE_VAL(bash_cv_fnm_extmatch,
732 ], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no,
733 [AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no)
734 bash_cv_fnm_extmatch=no])
736 AC_MSG_RESULT($bash_cv_fnm_extmatch)
737 if test $bash_cv_fnm_extmatch = yes; then
738 AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH)
742 AC_DEFUN(BASH_FUNC_POSIX_SETJMP,
743 [AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
744 AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp)
745 AC_CACHE_VAL(bash_cv_func_sigsetjmp,
750 #include <sys/types.h>
756 #if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS)
767 sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set);
768 sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset);
771 code = sigsetjmp(xx, 1);
773 exit(0); /* could get sigmask and compare to oset here. */
776 sigaddset(&set, SIGINT);
777 sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL);
783 }], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing,
784 [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing)
785 bash_cv_func_sigsetjmp=missing]
787 AC_MSG_RESULT($bash_cv_func_sigsetjmp)
788 if test $bash_cv_func_sigsetjmp = present; then
789 AC_DEFINE(HAVE_POSIX_SIGSETJMP)
793 AC_DEFUN(BASH_FUNC_STRCOLL,
795 AC_MSG_CHECKING(whether or not strcoll and strcmp differ)
796 AC_CACHE_VAL(bash_cv_func_strcoll_broken,
799 #if defined (HAVE_LOCALE_H)
808 char *deflocale, *defcoll;
810 #ifdef HAVE_SETLOCALE
811 deflocale = setlocale(LC_ALL, "");
812 defcoll = setlocale(LC_COLLATE, "");
816 /* These two values are taken from tests/glob-test. */
817 r1 = strcoll("abd", "aXd");
821 r2 = strcmp("abd", "aXd");
823 /* These two should both be greater than 0. It is permissible for
824 a system to return different values, as long as the sign is the
827 /* Exit with 1 (failure) if these two values are both > 0, since
828 this tests whether strcoll(3) is broken with respect to strcmp(3)
829 in the default locale. */
830 exit (r1 > 0 && r2 > 0);
832 ], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no,
833 [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no)
834 bash_cv_func_strcoll_broken=no]
836 AC_MSG_RESULT($bash_cv_func_strcoll_broken)
837 if test $bash_cv_func_strcoll_broken = yes; then
838 AC_DEFINE(STRCOLL_BROKEN)
842 AC_DEFUN(BASH_FUNC_PRINTF_A_FORMAT,
843 [AC_MSG_CHECKING([for printf floating point output in hex notation])
844 AC_CACHE_VAL(bash_cv_printf_a_format,
855 sprintf(abuf, "%A", y);
856 exit(strchr(abuf, 'P') == (char *)0);
858 ], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no,
859 [AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no)
860 bash_cv_printf_a_format=no]
862 AC_MSG_RESULT($bash_cv_printf_a_format)
863 if test $bash_cv_printf_a_format = yes; then
864 AC_DEFINE(HAVE_PRINTF_A_FORMAT)
868 AC_DEFUN(BASH_STRUCT_TERMIOS_LDISC,
870 AC_CHECK_MEMBER(struct termios.c_line, AC_DEFINE(TERMIOS_LDISC), ,[
871 #include <sys/types.h>
876 AC_DEFUN(BASH_STRUCT_TERMIO_LDISC,
878 AC_CHECK_MEMBER(struct termio.c_line, AC_DEFINE(TERMIO_LDISC), ,[
879 #include <sys/types.h>
885 dnl Like AC_STRUCT_ST_BLOCKS, but doesn't muck with LIBOBJS
887 dnl sets bash_cv_struct_stat_st_blocks
889 dnl unused for now; we'll see how AC_CHECK_MEMBERS works
891 AC_DEFUN(BASH_STRUCT_ST_BLOCKS,
893 AC_MSG_CHECKING([for struct stat.st_blocks])
894 AC_CACHE_VAL(bash_cv_struct_stat_st_blocks,
897 #include <sys/types.h>
898 #include <sys/stat.h>
903 static struct stat a;
904 if (a.st_blocks) return 0;
907 ], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no)
909 AC_MSG_RESULT($bash_cv_struct_stat_st_blocks)
910 if test "$bash_cv_struct_stat_st_blocks" = "yes"; then
911 AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS)
915 AC_DEFUN(BASH_CHECK_LIB_TERMCAP,
917 if test "X$bash_cv_termcap_lib" = "X"; then
920 AC_MSG_CHECKING(which library has the termcap functions)
923 AC_CACHE_VAL(bash_cv_termcap_lib,
924 [AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap,
925 [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcal_lib=libtinfo,
926 [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
927 [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
928 bash_cv_termcap_lib=gnutermcap)])])])])
929 if test "X$_bash_needmsg" = "Xyes"; then
930 AC_MSG_CHECKING(which library has the termcap functions)
932 AC_MSG_RESULT(using $bash_cv_termcap_lib)
933 if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
934 LDFLAGS="$LDFLAGS -L./lib/termcap"
935 TERMCAP_LIB="./lib/termcap/libtermcap.a"
936 TERMCAP_DEP="./lib/termcap/libtermcap.a"
937 elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then
938 TERMCAP_LIB=-ltermcap
940 elif test $bash_cv_termcap_lib = libtinfo; then
943 elif test $bash_cv_termcap_lib = libncurses; then
944 TERMCAP_LIB=-lncurses
953 dnl Check for the presence of getpeername in libsocket.
954 dnl If libsocket is present, check for libnsl and add it to LIBS if
955 dnl it's there, since most systems with libsocket require linking
956 dnl with libnsl as well. This should only be called if getpeername
957 dnl was not found in libc.
959 dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT
962 AC_DEFUN(BASH_CHECK_LIB_SOCKET,
964 if test "X$bash_cv_have_socklib" = "X"; then
967 AC_MSG_CHECKING(for socket library)
970 AC_CACHE_VAL(bash_cv_have_socklib,
971 [AC_CHECK_LIB(socket, getpeername,
972 bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)])
973 if test "X$_bash_needmsg" = Xyes; then
974 AC_MSG_RESULT($bash_cv_have_socklib)
977 if test $bash_cv_have_socklib = yes; then
978 # check for libnsl, add it to LIBS if present
979 if test "X$bash_cv_have_libnsl" = "X"; then
982 AC_MSG_CHECKING(for libnsl)
985 AC_CACHE_VAL(bash_cv_have_libnsl,
986 [AC_CHECK_LIB(nsl, t_open,
987 bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)])
988 if test "X$_bash_needmsg" = Xyes; then
989 AC_MSG_RESULT($bash_cv_have_libnsl)
992 if test $bash_cv_have_libnsl = yes; then
993 LIBS="-lsocket -lnsl $LIBS"
995 LIBS="-lsocket $LIBS"
997 AC_DEFINE(HAVE_LIBSOCKET)
998 AC_DEFINE(HAVE_GETPEERNAME)
1002 AC_DEFUN(BASH_STRUCT_DIRENT_D_INO,
1003 [AC_REQUIRE([AC_HEADER_DIRENT])
1004 AC_MSG_CHECKING(if struct dirent has a d_ino member)
1005 AC_CACHE_VAL(bash_cv_dirent_has_dino,
1008 #include <sys/types.h>
1009 #ifdef HAVE_UNISTD_H
1010 # include <unistd.h>
1011 #endif /* HAVE_UNISTD_H */
1012 #if defined(HAVE_DIRENT_H)
1013 # include <dirent.h>
1015 # define dirent direct
1016 # ifdef HAVE_SYS_NDIR_H
1017 # include <sys/ndir.h>
1018 # endif /* SYSNDIR */
1019 # ifdef HAVE_SYS_DIR_H
1020 # include <sys/dir.h>
1021 # endif /* SYSDIR */
1025 #endif /* HAVE_DIRENT_H */
1027 struct dirent d; int z; z = d.d_ino;
1028 ], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)])
1029 AC_MSG_RESULT($bash_cv_dirent_has_dino)
1030 if test $bash_cv_dirent_has_dino = yes; then
1031 AC_DEFINE(STRUCT_DIRENT_HAS_D_INO)
1035 AC_DEFUN(BASH_STRUCT_DIRENT_D_FILENO,
1036 [AC_REQUIRE([AC_HEADER_DIRENT])
1037 AC_MSG_CHECKING(if struct dirent has a d_fileno member)
1038 AC_CACHE_VAL(bash_cv_dirent_has_d_fileno,
1041 #include <sys/types.h>
1042 #ifdef HAVE_UNISTD_H
1043 # include <unistd.h>
1044 #endif /* HAVE_UNISTD_H */
1045 #if defined(HAVE_DIRENT_H)
1046 # include <dirent.h>
1048 # define dirent direct
1049 # ifdef HAVE_SYS_NDIR_H
1050 # include <sys/ndir.h>
1051 # endif /* SYSNDIR */
1052 # ifdef HAVE_SYS_DIR_H
1053 # include <sys/dir.h>
1054 # endif /* SYSDIR */
1058 #endif /* HAVE_DIRENT_H */
1060 struct dirent d; int z; z = d.d_fileno;
1061 ], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)])
1062 AC_MSG_RESULT($bash_cv_dirent_has_d_fileno)
1063 if test $bash_cv_dirent_has_d_fileno = yes; then
1064 AC_DEFINE(STRUCT_DIRENT_HAS_D_FILENO)
1068 AC_DEFUN(BASH_STRUCT_TIMEVAL,
1069 [AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h)
1070 AC_CACHE_VAL(bash_cv_struct_timeval,
1072 AC_EGREP_HEADER(struct timeval, sys/time.h,
1073 bash_cv_struct_timeval=yes,
1074 AC_EGREP_HEADER(struct timeval, time.h,
1075 bash_cv_struct_timeval=yes,
1076 bash_cv_struct_timeval=no))
1078 AC_MSG_RESULT($bash_cv_struct_timeval)
1079 if test $bash_cv_struct_timeval = yes; then
1080 AC_DEFINE(HAVE_TIMEVAL)
1084 AC_DEFUN(BASH_STRUCT_WINSIZE,
1085 [AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h)
1086 AC_CACHE_VAL(bash_cv_struct_winsize_header,
1087 [AC_TRY_COMPILE([#include <sys/types.h>
1088 #include <sys/ioctl.h>], [struct winsize x;],
1089 bash_cv_struct_winsize_header=ioctl_h,
1090 [AC_TRY_COMPILE([#include <sys/types.h>
1091 #include <termios.h>], [struct winsize x;],
1092 bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other)
1094 if test $bash_cv_struct_winsize_header = ioctl_h; then
1095 AC_MSG_RESULT(sys/ioctl.h)
1096 AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL)
1097 elif test $bash_cv_struct_winsize_header = termios_h; then
1098 AC_MSG_RESULT(termios.h)
1099 AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS)
1101 AC_MSG_RESULT(not found)
1105 dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7)
1106 AC_DEFUN(BASH_SYS_SIGNAL_VINTAGE,
1107 [AC_REQUIRE([AC_TYPE_SIGNAL])
1108 AC_MSG_CHECKING(for type of signal functions)
1109 AC_CACHE_VAL(bash_cv_signal_vintage,
1111 AC_TRY_LINK([#include <signal.h>],[
1113 struct sigaction sa;
1114 sigemptyset(&ss); sigsuspend(&ss);
1115 sigaction(SIGINT, &sa, (struct sigaction *) 0);
1116 sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0);
1117 ], bash_cv_signal_vintage=posix,
1119 AC_TRY_LINK([#include <signal.h>], [
1120 int mask = sigmask(SIGINT);
1121 sigsetmask(mask); sigblock(mask); sigpause(mask);
1122 ], bash_cv_signal_vintage=4.2bsd,
1126 RETSIGTYPE foo() { }], [
1127 int mask = sigmask(SIGINT);
1128 sigset(SIGINT, foo); sigrelse(SIGINT);
1129 sighold(SIGINT); sigpause(SIGINT);
1130 ], bash_cv_signal_vintage=svr3, bash_cv_signal_vintage=v7
1135 AC_MSG_RESULT($bash_cv_signal_vintage)
1136 if test "$bash_cv_signal_vintage" = posix; then
1137 AC_DEFINE(HAVE_POSIX_SIGNALS)
1138 elif test "$bash_cv_signal_vintage" = "4.2bsd"; then
1139 AC_DEFINE(HAVE_BSD_SIGNALS)
1140 elif test "$bash_cv_signal_vintage" = svr3; then
1141 AC_DEFINE(HAVE_USG_SIGHOLD)
1145 dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process.
1146 AC_DEFUN(BASH_SYS_PGRP_SYNC,
1147 [AC_REQUIRE([AC_FUNC_GETPGRP])
1148 AC_MSG_CHECKING(whether pgrps need synchronization)
1149 AC_CACHE_VAL(bash_cv_pgrp_pipe,
1151 #ifdef HAVE_UNISTD_H
1152 # include <unistd.h>
1156 # ifdef GETPGRP_VOID
1157 # define getpgID() getpgrp()
1159 # define getpgID() getpgrp(0)
1160 # define setpgid(x,y) setpgrp(x,y)
1162 int pid1, pid2, fds[2];
1166 switch (pid1 = fork()) {
1170 setpgid(0, getpid());
1173 setpgid(pid1, pid1);
1175 sleep(2); /* let first child die */
1180 switch (pid2 = fork()) {
1185 ok = getpgID() == pid1;
1186 write(fds[1], &ok, 1);
1189 setpgid(pid2, pid1);
1192 if (read(fds[0], &ok, 1) != 1)
1198 ], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes,
1199 [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no)
1200 bash_cv_pgrp_pipe=no])
1202 AC_MSG_RESULT($bash_cv_pgrp_pipe)
1203 if test $bash_cv_pgrp_pipe = yes; then
1204 AC_DEFINE(PGRP_PIPE)
1208 AC_DEFUN(BASH_SYS_REINSTALL_SIGHANDLERS,
1209 [AC_REQUIRE([AC_TYPE_SIGNAL])
1210 AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
1211 AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked])
1212 AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers,
1215 #ifdef HAVE_UNISTD_H
1219 typedef RETSIGTYPE sigfunc();
1223 #ifdef HAVE_POSIX_SIGNALS
1225 set_signal_handler(sig, handler)
1229 struct sigaction act, oact;
1230 act.sa_handler = handler;
1232 sigemptyset (&act.sa_mask);
1233 sigemptyset (&oact.sa_mask);
1234 sigaction (sig, &act, &oact);
1235 return (oact.sa_handler);
1238 #define set_signal_handler(s, h) signal(s, h)
1251 set_signal_handler(SIGINT, sigint);
1252 kill((int)getpid(), SIGINT);
1253 kill((int)getpid(), SIGINT);
1256 ], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes,
1257 [AC_MSG_WARN(cannot check signal handling if cross compiling -- defaulting to no)
1258 bash_cv_must_reinstall_sighandlers=no]
1260 AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers)
1261 if test $bash_cv_must_reinstall_sighandlers = yes; then
1262 AC_DEFINE(MUST_REINSTALL_SIGHANDLERS)
1266 dnl check that some necessary job control definitions are present
1267 AC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING,
1268 [AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
1269 AC_MSG_CHECKING(for presence of necessary job control definitions)
1270 AC_CACHE_VAL(bash_cv_job_control_missing,
1272 #include <sys/types.h>
1273 #ifdef HAVE_SYS_WAIT_H
1274 #include <sys/wait.h>
1276 #ifdef HAVE_UNISTD_H
1281 /* Add more tests in here as appropriate. */
1285 #if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS)
1289 /* signals and tty control. */
1290 #if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT)
1294 /* process control */
1295 #if !defined (WNOHANG) || !defined (WUNTRACED)
1299 /* Posix systems have tcgetpgrp and waitpid. */
1300 #if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP)
1304 #if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID)
1308 /* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */
1309 #if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3)
1314 }], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing,
1315 [AC_MSG_WARN(cannot check job control if cross-compiling -- defaulting to missing)
1316 bash_cv_job_control_missing=missing]
1318 AC_MSG_RESULT($bash_cv_job_control_missing)
1319 if test $bash_cv_job_control_missing = missing; then
1320 AC_DEFINE(JOB_CONTROL_MISSING)
1324 dnl check whether named pipes are present
1325 dnl this requires a previous check for mkfifo, but that is awkward to specify
1326 AC_DEFUN(BASH_SYS_NAMED_PIPES,
1327 [AC_MSG_CHECKING(for presence of named pipes)
1328 AC_CACHE_VAL(bash_cv_sys_named_pipes,
1330 #include <sys/types.h>
1331 #include <sys/stat.h>
1332 #ifdef HAVE_UNISTD_H
1336 /* Add more tests in here as appropriate. */
1341 #if defined (HAVE_MKFIFO)
1345 #if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO))
1352 err = mkdir("/tmp/bash-aclocal", 0700);
1357 fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0);
1359 rmdir ("/tmp/bash-aclocal");
1363 unlink ("/tmp/bash-aclocal/sh-np-autoconf");
1364 rmdir ("/tmp/bash-aclocal");
1366 }], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing,
1367 [AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing)
1368 bash_cv_sys_named_pipes=missing]
1370 AC_MSG_RESULT($bash_cv_sys_named_pipes)
1371 if test $bash_cv_sys_named_pipes = missing; then
1372 AC_DEFINE(NAMED_PIPES_MISSING)
1376 AC_DEFUN(BASH_SYS_DEFAULT_MAIL_DIR,
1377 [AC_MSG_CHECKING(for default mail directory)
1378 AC_CACHE_VAL(bash_cv_mail_dir,
1379 [if test -d /var/mail; then
1380 bash_cv_mail_dir=/var/mail
1381 elif test -d /usr/mail; then
1382 bash_cv_mail_dir=/usr/mail
1383 elif test -d /var/spool/mail; then
1384 bash_cv_mail_dir=/var/spool/mail
1385 elif test -d /usr/spool/mail; then
1386 bash_cv_mail_dir=/usr/spool/mail
1388 bash_cv_mail_dir=unknown
1391 AC_MSG_RESULT($bash_cv_mail_dir)
1392 if test $bash_cv_mail_dir = "/var/mail"; then
1393 AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/var/mail")
1394 elif test $bash_cv_mail_dir = "/usr/mail"; then
1395 AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/usr/mail")
1396 elif test $bash_cv_mail_dir = "/var/spool/mail"; then
1397 AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/var/spool/mail")
1398 elif test $bash_cv_mail_dir = "/usr/spool/mail"; then
1399 AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/usr/spool/mail")
1401 AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "unknown")
1405 AC_DEFUN(BASH_HAVE_TIOCGWINSZ,
1406 [AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h)
1407 AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl,
1408 [AC_TRY_COMPILE([#include <sys/types.h>
1409 #include <sys/ioctl.h>], [int x = TIOCGWINSZ;],
1410 bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)])
1411 AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl)
1412 if test $bash_cv_tiocgwinsz_in_ioctl = yes; then
1413 AC_DEFINE(GWINSZ_IN_SYS_IOCTL)
1417 AC_DEFUN(BASH_HAVE_TIOCSTAT,
1418 [AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h)
1419 AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl,
1420 [AC_TRY_COMPILE([#include <sys/types.h>
1421 #include <sys/ioctl.h>], [int x = TIOCSTAT;],
1422 bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)])
1423 AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl)
1424 if test $bash_cv_tiocstat_in_ioctl = yes; then
1425 AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL)
1429 AC_DEFUN(BASH_HAVE_FIONREAD,
1430 [AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h)
1431 AC_CACHE_VAL(bash_cv_fionread_in_ioctl,
1432 [AC_TRY_COMPILE([#include <sys/types.h>
1433 #include <sys/ioctl.h>], [int x = FIONREAD;],
1434 bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)])
1435 AC_MSG_RESULT($bash_cv_fionread_in_ioctl)
1436 if test $bash_cv_fionread_in_ioctl = yes; then
1437 AC_DEFINE(FIONREAD_IN_SYS_IOCTL)
1442 dnl See if speed_t is declared in <sys/types.h>. Some versions of linux
1443 dnl require a definition of speed_t each time <termcap.h> is included,
1444 dnl but you can only get speed_t if you include <termios.h> (on some
1445 dnl versions) or <sys/types.h> (on others).
1447 AC_DEFUN(BASH_CHECK_SPEED_T,
1448 [AC_MSG_CHECKING(for speed_t in sys/types.h)
1449 AC_CACHE_VAL(bash_cv_speed_t_in_sys_types,
1450 [AC_TRY_COMPILE([#include <sys/types.h>], [speed_t x;],
1451 bash_cv_speed_t_in_sys_types=yes,bash_cv_speed_t_in_sys_types=no)])
1452 AC_MSG_RESULT($bash_cv_speed_t_in_sys_types)
1453 if test $bash_cv_speed_t_in_sys_types = yes; then
1454 AC_DEFINE(SPEED_T_IN_SYS_TYPES)
1458 AC_DEFUN(BASH_CHECK_GETPW_FUNCS,
1459 [AC_MSG_CHECKING(whether getpw functions are declared in pwd.h)
1460 AC_CACHE_VAL(bash_cv_getpw_declared,
1461 [AC_EGREP_CPP(getpwuid,
1463 #include <sys/types.h>
1464 #ifdef HAVE_UNISTD_H
1465 # include <unistd.h>
1469 bash_cv_getpw_declared=yes,bash_cv_getpw_declared=no)])
1470 AC_MSG_RESULT($bash_cv_getpw_declared)
1471 if test $bash_cv_getpw_declared = yes; then
1472 AC_DEFINE(HAVE_GETPW_DECLS)
1476 AC_DEFUN(BASH_CHECK_DEV_FD,
1477 [AC_MSG_CHECKING(whether /dev/fd is available)
1478 AC_CACHE_VAL(bash_cv_dev_fd,
1479 [if test -d /dev/fd && test -r /dev/fd/0; then
1480 bash_cv_dev_fd=standard
1481 elif test -d /proc/self/fd && test -r /proc/self/fd/0; then
1482 bash_cv_dev_fd=whacky
1484 bash_cv_dev_fd=absent
1487 AC_MSG_RESULT($bash_cv_dev_fd)
1488 if test $bash_cv_dev_fd = "standard"; then
1489 AC_DEFINE(HAVE_DEV_FD)
1490 AC_DEFINE(DEV_FD_PREFIX, "/dev/fd/")
1491 elif test $bash_cv_dev_fd = "whacky"; then
1492 AC_DEFINE(HAVE_DEV_FD)
1493 AC_DEFINE(DEV_FD_PREFIX, "/proc/self/fd/")
1497 AC_DEFUN(BASH_CHECK_DEV_STDIN,
1498 [AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available)
1499 AC_CACHE_VAL(bash_cv_dev_stdin,
1500 [if test -d /dev/fd && test -r /dev/stdin; then
1501 bash_cv_dev_stdin=present
1502 elif test -d /proc/self/fd && test -r /dev/stdin; then
1503 bash_cv_dev_stdin=present
1505 bash_cv_dev_stdin=absent
1508 AC_MSG_RESULT($bash_cv_dev_stdin)
1509 if test $bash_cv_dev_stdin = "present"; then
1510 AC_DEFINE(HAVE_DEV_STDIN)
1515 dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions
1517 AC_DEFUN(BASH_CHECK_KERNEL_RLIMIT,
1518 [AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines])
1519 AC_CACHE_VAL(bash_cv_kernel_rlimit,
1521 #include <sys/types.h>
1522 #include <sys/resource.h>
1527 ], bash_cv_kernel_rlimit=no,
1529 #include <sys/types.h>
1531 #include <sys/resource.h>
1537 ], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)]
1539 AC_MSG_RESULT($bash_cv_kernel_rlimit)
1540 if test $bash_cv_kernel_rlimit = yes; then
1541 AC_DEFINE(RLIMIT_NEEDS_KERNEL)
1546 dnl Check for 64-bit off_t -- used for malloc alignment
1548 dnl C does not allow duplicate case labels, so the compile will fail if
1549 dnl sizeof(off_t) is > 4.
1551 AC_DEFUN(BASH_CHECK_OFF_T_64,
1552 [AC_CACHE_CHECK(for 64-bit off_t, bash_cv_off_t_64,
1554 #ifdef HAVE_UNISTD_H
1557 #include <sys/types.h>
1559 switch (0) case 0: case (sizeof (off_t) <= 4):;
1560 ], bash_cv_off_t_64=no, bash_cv_off_t_64=yes))
1561 if test $bash_cv_off_t_64 = yes; then
1562 AC_DEFINE(HAVE_OFF_T_64)
1565 AC_DEFUN(BASH_CHECK_RTSIGS,
1566 [AC_MSG_CHECKING(for unusable real-time signals due to large values)
1567 AC_CACHE_VAL(bash_cv_unusable_rtsigs,
1569 #include <sys/types.h>
1578 int n_sigs = 2 * NSIG;
1580 int rtmin = SIGRTMIN;
1585 exit(rtmin < n_sigs);
1586 }], bash_cv_unusable_rtsigs=yes, bash_cv_unusable_rtsigs=no,
1587 [AC_MSG_WARN(cannot check real-time signals if cross compiling -- defaulting to yes)
1588 bash_cv_unusable_rtsigs=yes]
1590 AC_MSG_RESULT($bash_cv_unusable_rtsigs)
1591 if test $bash_cv_unusable_rtsigs = yes; then
1592 AC_DEFINE(UNUSABLE_RT_SIGNALS)
1596 dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB
1599 dnl BASH_CHECK_LIB_TERMCAP
1601 AC_DEFUN(RL_LIB_READLINE_VERSION,
1603 AC_REQUIRE([BASH_CHECK_LIB_TERMCAP])
1605 AC_MSG_CHECKING([version of installed readline library])
1607 # What a pain in the ass this is.
1609 # save cpp and ld options
1610 _save_CFLAGS="$CFLAGS"
1611 _save_LDFLAGS="$LDFLAGS"
1614 # Don't set ac_cv_rl_prefix if the caller has already assigned a value. This
1615 # allows the caller to do something like $_rl_prefix=$withval if the user
1616 # specifies --with-installed-readline=PREFIX as an argument to configure
1618 if test -z "$ac_cv_rl_prefix"; then
1619 test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix}
1622 eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include
1623 eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib
1625 LIBS="$LIBS -lreadline ${TERMCAP_LIB}"
1626 CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}"
1627 LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}"
1631 #include <readline/readline.h>
1636 fp = fopen("conftest.rlv", "w");
1637 if (fp == 0) exit(1);
1638 fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0");
1643 ac_cv_rl_version=`cat conftest.rlv`,
1644 ac_cv_rl_version='0.0',
1645 ac_cv_rl_version='4.2')
1647 CFLAGS="$_save_CFLAGS"
1648 LDFLAGS="$_save_LDFLAGS"
1655 case "$ac_cv_rl_version" in
1656 2*|3*|4*|5*|6*|7*|8*|9*)
1657 RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'`
1658 RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[a-zA-Z]*$::'`
1664 [[0-9][0-9]]) _RL_MAJOR=$RL_MAJOR ;;
1665 [[0-9]]) _RL_MAJOR=0$RL_MAJOR ;;
1671 [[0-9][0-9]]) _RL_MINOR=$RL_MINOR ;;
1672 [[0-9]]) _RL_MINOR=0$RL_MINOR ;;
1676 RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}"
1678 # Readline versions greater than 4.2 have these defines in readline.h
1680 if test $ac_cv_rl_version = '0.0' ; then
1681 AC_MSG_WARN([Could not test version of installed readline library.])
1682 elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then
1683 # set these for use by the caller
1684 RL_PREFIX=$ac_cv_rl_prefix
1685 RL_LIBDIR=$ac_cv_rl_libdir
1686 RL_INCLUDEDIR=$ac_cv_rl_includedir
1687 AC_MSG_RESULT($ac_cv_rl_version)
1690 AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library])
1691 AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library])
1692 AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library])
1694 AC_SUBST(RL_VERSION)
1698 # set these for use by the caller
1699 RL_PREFIX=$ac_cv_rl_prefix
1700 RL_LIBDIR=$ac_cv_rl_libdir
1701 RL_INCLUDEDIR=$ac_cv_rl_includedir
1703 AC_MSG_RESULT($ac_cv_rl_version)