diff options
Diffstat (limited to 'aclocal.m4')
-rw-r--r-- | aclocal.m4 | 317 |
1 files changed, 272 insertions, 45 deletions
@@ -26,7 +26,8 @@ main() exit(fl != 1); } ], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no, - AC_MSG_ERROR(cannot check dup2 if cross compiling)) + [AC_MSG_ERROR(cannot check dup2 if cross compiling -- defaulting to no) + bash_cv_dup2_broken=no]) ]) AC_MSG_RESULT($bash_cv_dup2_broken) if test $bash_cv_dup2_broken = yes; then @@ -128,7 +129,8 @@ main() exit(ok ? 0 : 5); } ], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes, - AC_MSG_ERROR(cannot check pgrp synchronization if cross compiling)) + [AC_MSG_ERROR(cannot check pgrp synchronization if cross compiling -- defaulting to no) + bash_cv_pgrp_pipe=no]) ]) AC_MSG_RESULT($bash_cv_pgrp_pipe) if test $bash_cv_pgrp_pipe = yes; then @@ -169,7 +171,8 @@ dnl AC_DEFUN(BASH_RLIMIT_TYPE, [AC_MSG_CHECKING(for size and type of struct rlimit fields) AC_CACHE_VAL(bash_cv_type_rlimit, -[AC_TRY_COMPILE([#include <sys/types.h>], +[AC_TRY_COMPILE([#include <sys/types.h> +#include <sys/resource.h>], [rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[ AC_TRY_RUN([ #include <sys/types.h> @@ -184,7 +187,8 @@ main() #endif exit(1); }], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long, - AC_MSG_ERROR(cannot check quad_t if cross compiling))]) + [AC_MSG_ERROR(cannot check quad_t if cross compiling -- defaulting to long) + bash_cv_type_rlimit=long])]) ]) AC_MSG_RESULT($bash_cv_type_rlimit) if test $bash_cv_type_rlimit = quad_t; then @@ -207,7 +211,7 @@ AC_CACHE_VAL(bash_cv_decl_under_sys_siglist, #include <unistd.h> #endif], [ char *msg = _sys_siglist[2]; ], bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no, -AC_MSG_ERROR(cannot check for _sys_siglist[] if cross compiling))])dnl + [AC_MSG_ERROR(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)])])dnl AC_MSG_RESULT($bash_cv_decl_under_sys_siglist) if test $bash_cv_decl_under_sys_siglist = yes; then AC_DEFINE(UNDER_SYS_SIGLIST_DECLARED) @@ -232,8 +236,9 @@ main() char *msg = (char *)_sys_siglist[2]; exit(msg == 0); }], -bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no, -AC_MSG_ERROR(cannot check for _sys_siglist[] if cross compiling))])dnl + bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no, + [AC_MSG_ERROR(cannot check for _sys_siglist[] if cross compiling -- defaulting to no) + bash_cv_under_sys_siglist=no])]) AC_MSG_RESULT($bash_cv_under_sys_siglist) if test $bash_cv_under_sys_siglist = yes; then AC_DEFINE(HAVE_UNDER_SYS_SIGLIST) @@ -258,8 +263,9 @@ main() char *msg = sys_siglist[2]; exit(msg == 0); }], -bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no, -AC_MSG_ERROR(cannot check for sys_siglist if cross compiling))])dnl + bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no, + [AC_MSG_ERROR(cannot check for sys_siglist if cross compiling -- defaulting to no) + bash_cv_sys_siglist=no])]) AC_MSG_RESULT($bash_cv_sys_siglist) if test $bash_cv_sys_siglist = yes; then AC_DEFINE(HAVE_SYS_SIGLIST) @@ -319,7 +325,9 @@ dir = opendir("/tmp/not_a_directory"); unlink("/tmp/not_a_directory"); exit (dir == 0); }], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no, - AC_MSG_ERROR(cannot check opendir if cross compiling))]) + [AC_MSG_ERROR(cannot check opendir if cross compiling -- defaulting to no) + bash_cv_opendir_not_robust=no] +)]) AC_MSG_RESULT($bash_cv_opendir_not_robust) if test $bash_cv_opendir_not_robust = yes; then AC_DEFINE(OPENDIR_NOT_ROBUST) @@ -346,8 +354,116 @@ AC_DEFINE(VOID_SIGHANDLER) fi ]) +AC_DEFUN(BASH_TYPE_INT32_T, +[ +if test "X$bash_cv_type_int32_t" = "X"; then +_bash_needmsg=yes +else +AC_MSG_CHECKING(which builtin C type is 32 bits wide) +_bash_needmsg= +fi +AC_CACHE_VAL(bash_cv_type_int32_t, +[AC_TRY_RUN([ +main() +{ +#if SIZEOF_INT == 4 +exit (0); +#else +# if SIZEOF_LONG == 4 +exit (1); +# else +# error cannot find 32 bit type... +# endif +#endif +}], bash_cv_type_int32_t=int, bash_cv_type_int32_t=long, + [AC_MSG_ERROR(cannot check type sizes if cross-compiling -- defaulting to int) + bash_cv_type_int32_t=int] +)]) +if test "X$_bash_needmsg" = "Xyes"; then +AC_MSG_CHECKING(which builtin C type is 32 bits wide) +fi +AC_MSG_RESULT($bash_cv_type_int32_t); +if test "$bash_cv_type_int32_t" = "int"; then +AC_DEFINE(int32_t, int) +else +AC_DEFINE(int32_t, long) +fi +]) + +AC_DEFUN(BASH_TYPE_U_INT32_T, +[ +if test "X$bash_cv_type_u_int32_t" = "X"; then +_bash_needmsg=yes +else +AC_MSG_CHECKING(which unsigned builtin C type is 32 bits wide) +_bash_needmsg= +fi +AC_CACHE_VAL(bash_cv_type_u_int32_t, +[AC_TRY_RUN([ +main() +{ +#if SIZEOF_INT == 4 +exit (0); +#else +# if SIZEOF_LONG == 4 +exit (1); +# else +# error cannot find 32 bit type... +# endif +#endif +}], bash_cv_type_u_int32_t=int, bash_cv_type_u_int32_t=long, + [AC_MSG_ERROR(cannot check type sizes if cross-compiling -- defaulting to int) + bash_cv_type_u_int32_t=int] +)]) +if test "X$_bash_needmsg" = "Xyes"; then +AC_MSG_CHECKING(which unsigned builtin C type is 32 bits wide) +fi +AC_MSG_RESULT($bash_cv_type_u_int32_t); +if test "$bash_cv_type_u_int32_t" = "int"; then +AC_DEFINE(u_int32_t, unsigned int) +else +AC_DEFINE(u_int32_t, unsigned long) +fi +]) + +AC_DEFUN(BASH_TYPE_PTRDIFF_T, +[ +if test "X$bash_cv_type_ptrdiff_t" = "X"; then +_bash_needmsg=yes +else +AC_MSG_CHECKING(which builtin C type is correct for ptrdiff_t) +_bash_needmsg= +fi +AC_CACHE_VAL(bash_cv_type_ptrdiff_t, +[AC_TRY_RUN([ +main() +{ +#if SIZEOF_CHAR_P == SIZEOF_INT +exit (0); +#else +# if SIZEOF_CHAR_P == SIZEOF_LONG +exit (1); +# else +# error cannot find type for pointer arithmetic... +# endif +#endif +}], bash_cv_type_ptrdiff_t=int, bash_cv_type_ptrdiff_t=long, + [AC_MSG_ERROR(cannot check type sizes if cross-compiling -- defaulting to int) + bash_cv_type_ptrdiff_t=int] +)]) +if test "X$_bash_needmsg" = "Xyes"; then +AC_MSG_CHECKING(which builtin C type is correct for ptrdiff_t) +fi +AC_MSG_RESULT($bash_cv_type_ptrdiff_t); +if test "$bash_cv_type_ptrdiff_t" = "int"; then +AC_DEFINE(ptrdiff_t, int) +else +AC_DEFINE(ptrdiff_t, long) +fi +]) + AC_DEFUN(BASH_FUNC_STRSIGNAL, -[AC_MSG_CHECKING([for the existance of strsignal]) +[AC_MSG_CHECKING([for the existence of strsignal]) AC_CACHE_VAL(bash_cv_have_strsignal, [AC_TRY_LINK([#include <sys/types.h> #include <signal.h>], @@ -366,7 +482,7 @@ AC_CACHE_CHECK([for lstat], bash_cv_func_lstat, [AC_TRY_LINK([ #include <sys/types.h> #include <sys/stat.h> -],[ lstat("",(struct stat *)0); ], +],[ lstat(".",(struct stat *)0); ], bash_cv_func_lstat=yes, bash_cv_func_lstat=no)]) if test $bash_cv_func_lstat = yes; then AC_DEFINE(HAVE_LSTAT) @@ -432,7 +548,9 @@ s = getenv("ABCDE"); exit(s == 0); /* force optimizer to leave getenv in */ } ], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no, -AC_MSG_ERROR(cannot check getenv redefinition if cross compiling))]) + [AC_MSG_ERROR(cannot check getenv redefinition if cross compiling -- defaulting to yes) + bash_cv_getenv_redef=yes] +)]) AC_MSG_RESULT($bash_cv_getenv_redef) if test $bash_cv_getenv_redef = yes; then AC_DEFINE(CAN_REDEFINE_GETENV) @@ -455,8 +573,10 @@ _bashfunc pf; pf = (_bashfunc) printf; exit(pf == 0); } -],bash_cv_printf_declared=yes, bash_cv_printf_declared=no, -AC_MSG_ERROR(cannot check printf declaration if cross compiling))]) +], bash_cv_printf_declared=yes, bash_cv_printf_declared=no, + [AC_MSG_ERROR(cannot check printf declaration if cross compiling -- defaulting to yes) + bash_cv_printf_declared=yes] +)]) AC_MSG_RESULT($bash_cv_printf_declared) if test $bash_cv_printf_declared = yes; then AC_DEFINE(PRINTF_DECLARED) @@ -472,8 +592,10 @@ main() long maxfds = ulimit(4, 0L); exit (maxfds == -1L); } -],bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no, -AC_MSG_ERROR(cannot check ulimit if cross compiling))]) +], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no, + [AC_MSG_ERROR(cannot check ulimit if cross compiling -- defaulting to no) + bash_cv_ulimit_maxfds=no] +)]) AC_MSG_RESULT($bash_cv_ulimit_maxfds) if test $bash_cv_ulimit_maxfds = yes; then AC_DEFINE(ULIMIT_MAXFDS) @@ -497,7 +619,7 @@ if test "X$_bash_needmsg" = "Xyes"; then AC_MSG_CHECKING(which library has the termcap functions) fi AC_MSG_RESULT(using $bash_cv_termcap_lib) -if test $bash_cv_termcap_lib = gnutermcap; then +if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then LDFLAGS="$LDFLAGS -L./lib/termcap" TERMCAP_LIB="./lib/termcap/libtermcap.a" TERMCAP_DEP="./lib/termcap/libtermcap.a" @@ -568,7 +690,9 @@ main() exit (popen_called); } ], bash_cv_getcwd_calls_popen=no, bash_cv_getcwd_calls_popen=yes, -AC_MSG_ERROR(cannot check whether getcwd calls popen if cross compiling))]) + [AC_MSG_ERROR(cannot check whether getcwd calls popen if cross compiling -- defaulting to no) + bash_cv_getcwd_calls_popen=no] +)]) AC_MSG_RESULT($bash_cv_getcwd_calls_popen) if test $bash_cv_getcwd_calls_popen = yes; then AC_DEFINE(GETCWD_BROKEN) @@ -690,7 +814,9 @@ main() exit(nsigint != 2); } ], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes, -AC_MSG_ERROR(cannot check signal handling if cross compiling))]) + [AC_MSG_ERROR(cannot check signal handling if cross compiling -- defaulting to no) + bash_cv_must_reinstall_sighandlers=no] +)]) AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers) if test $bash_cv_must_reinstall_sighandlers = yes; then AC_DEFINE(MUST_REINSTALL_SIGHANDLERS) @@ -756,9 +882,10 @@ exit(1); #endif exit(0); -}],bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing, - AC_MSG_ERROR(cannot check job control if cross-compiling)) -]) +}], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing, + [AC_MSG_ERROR(cannot check job control if cross-compiling -- defaulting to missing) + bash_cv_job_control_missing=missing] +)]) AC_MSG_RESULT($bash_cv_job_control_missing) if test $bash_cv_job_control_missing = missing; then AC_DEFINE(JOB_CONTROL_MISSING) @@ -800,9 +927,10 @@ if (fd == -1) close(fd); unlink ("/tmp/sh-np-autoconf"); exit(0); -}],bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing, - AC_MSG_ERROR(cannot check for named pipes if cross-compiling)) -]) +}], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing, + [AC_MSG_ERROR(cannot check for named pipes if cross-compiling -- defaulting to missing) + bash_cv_sys_named_pipes=missing] +)]) AC_MSG_RESULT($bash_cv_sys_named_pipes) if test $bash_cv_sys_named_pipes = missing; then AC_DEFINE(NAMED_PIPES_MISSING) @@ -850,9 +978,10 @@ sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); siglongjmp(xx, 10); exit(1); #endif -}],bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing, - AC_MSG_ERROR(cannot check for sigsetjmp/siglongjmp if cross-compiling)) -]) +}], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing, + [AC_MSG_ERROR(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing) + bash_cv_func_sigsetjmp=missing] +)]) AC_MSG_RESULT($bash_cv_func_sigsetjmp) if test $bash_cv_func_sigsetjmp = present; then AC_DEFINE(HAVE_POSIX_SIGSETJMP) @@ -872,14 +1001,23 @@ fi ]) AC_DEFUN(BASH_STRUCT_WINSIZE, -[AC_MSG_CHECKING(for struct winsize in sys/ioctl.h) -AC_CACHE_VAL(bash_cv_struct_winsize_in_ioctl, +[AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h) +AC_CACHE_VAL(bash_cv_struct_winsize_header, [AC_TRY_COMPILE([#include <sys/types.h> #include <sys/ioctl.h>], [struct winsize x;], - bash_cv_struct_winsize_in_ioctl=yes,bash_cv_struct_winsize_in_ioctl=no)]) -AC_MSG_RESULT($bash_cv_struct_winsize_in_ioctl) -if test $bash_cv_struct_winsize_in_ioctl = yes; then -AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL) + bash_cv_struct_winsize_header=ioctl_h, + [AC_TRY_COMPILE([#include <sys/types.h> +#include <termios.h>], [struct winsize x;], + bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other) +])]) +if test $bash_cv_struct_winsize_header = ioctl_h; then + AC_MSG_RESULT(sys/ioctl.h) + AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL) +elif test $bash_cv_struct_winsize_header = termios_h; then + AC_MSG_RESULT(termios.h) + AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS) +else + AC_MSG_RESULT(not found) fi ]) @@ -1051,16 +1189,16 @@ AC_CACHE_VAL(bash_cv_kernel_rlimit, int f; f = RLIMIT_DATA; ], bash_cv_kernel_rlimit=no, - [AC_TRY_COMPILE([ - #include <sys/types.h> - #define _KERNEL - #include <sys/resource.h> - #undef _KERNEL - ], - [ +[AC_TRY_COMPILE([ +#include <sys/types.h> +#define _KERNEL +#include <sys/resource.h> +#undef _KERNEL +], +[ int f; f = RLIMIT_DATA; - ], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)] +], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)] )]) AC_MSG_RESULT($bash_cv_kernel_rlimit) if test $bash_cv_kernel_rlimit = yes; then @@ -1108,10 +1246,99 @@ char *v[]; exit (r1 > 0 && r2 > 0); } ], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no, - AC_MSG_ERROR(cannot check strcoll if cross compiling)) -]) + [AC_MSG_ERROR(cannot check strcoll if cross compiling -- defaulting to no) + bash_cv_func_strcoll_broken=no] +)]) AC_MSG_RESULT($bash_cv_func_strcoll_broken) if test $bash_cv_func_strcoll_broken = yes; then AC_DEFINE(STRCOLL_BROKEN) fi ]) + +dnl +dnl If available, use support for large files unless the user specified +dnl one of the CPPFLAGS, LDFLAGS, or LIBS variables (<eggert@twinsun.com> +dnl via GNU patch 2.5) +dnl +AC_DEFUN(BASH_LARGE_FILE_SUPPORT, +[AC_MSG_CHECKING(whether large file support needs explicit enabling) +ac_getconfs='' +ac_result=yes +ac_set='' +ac_shellvars='CPPFLAGS LDFLAGS LIBS' +for ac_shellvar in $ac_shellvars; do + case $ac_shellvar in + CPPFLAGS) ac_lfsvar=LFS_CFLAGS ac_lfs64var=LFS64_CFLAGS ;; + *) ac_lfsvar=LFS_$ac_shellvar ac_lfs64var=LFS64_$ac_shellvar ;; + esac + eval test '"${'$ac_shellvar'+set}"' = set && ac_set=$ac_shellvar + (getconf $ac_lfsvar) >/dev/null 2>&1 || { ac_result=no; break; } + ac_getconf=`getconf $ac_lfsvar` + ac_getconf64=`getconf $ac_lfs64var` + ac_getconfs=$ac_getconfs$ac_getconf\ $ac_getconf64 + eval ac_test_$ac_shellvar="\$ac_getconf\ \$ac_getconf64" +done +case "$ac_result$ac_getconfs" in +yes) ac_result=no ;; +esac +case "$ac_result$ac_set" in +yes?*) ac_result="yes, but $ac_set is already set, so use its settings" +esac +AC_MSG_RESULT($ac_result) +case $ac_result in +yes) + for ac_shellvar in $ac_shellvars; do + eval $ac_shellvar=\$ac_test_$ac_shellvar + done ;; +esac +]) + +dnl +dnl AC_SYS_RESTARTABLE_SYSCALLS tests only for restarted system calls +dnl after a signal handler has been installed with signal(). Since +dnl Bash uses sigaction() if it is available, we need to check whether +dnl or not a signal handler installed with sigaction and SA_RESTART +dnl causes system calls to be restarted after the signal is caught +dnl +AC_DEFUN(BASH_SYS_RESTARTABLE_SYSCALLS, +[AC_REQUIRE([BASH_SIGNAL_CHECK]) +AC_CACHE_CHECK(for restartable system calls with posix sigaction, +bash_cv_sys_restartable_syscalls, +[AC_TRY_RUN( +[/* Exit 0 (true) if wait returns something other than -1, + i.e. the pid of the child, which means that wait was restarted + after getting the signal. */ +#include <sys/types.h> +#include <signal.h> +static int caught = 0; +void ucatch (isig) int isig; { caught = 1; } +main () +{ +#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) + exit (1); +#else + struct sigaction act, oact; + int i, status; + + act.sa_handler = ucatch; + /* Might want to add SA_RESTART here, but bash's set_signal_handler + does not. */ + act.sa_flags = 0; + sigemptyset(&act.sa_mask); + sigemptyset(&oact.sa_mask); + i = fork (); + /* A possible race condition here, but in practice it never happens. */ + if (i == 0) { sleep (3); kill (getppid (), SIGINT); sleep (3); exit (0); } + sigaction(SIGINT, &act, &oact); + status = wait(&i); + if (status == -1) wait(&i); + exit (status == -1); +#endif +} +], bash_cv_sys_restartable_syscalls=yes, bash_cv_sys_restartable_syscalls=no, + AC_MSG_ERROR(cannot check restartable syscalls if cross compiling)) +]) +if test $bash_cv_sys_restartable_syscalls = yes; then + AC_DEFINE(HAVE_RESTARTABLE_SYSCALLS) +fi +]) |