📄 aclocal.m4
字号:
}], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no)])AC_MSG_RESULT($bash_cv_struct_stat_st_blocks)if test "$bash_cv_struct_stat_st_blocks" = "yes"; thenAC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS)fi])AC_DEFUN(BASH_CHECK_LIB_TERMCAP,[if test "X$bash_cv_termcap_lib" = "X"; then_bash_needmsg=yeselseAC_MSG_CHECKING(which library has the termcap functions)_bash_needmsg=fiAC_CACHE_VAL(bash_cv_termcap_lib,[AC_CHECK_FUNC(tgetent, bash_cv_termcap_lib=libc, [AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, bash_cv_termcap_lib=gnutermcap)])])])])])if test "X$_bash_needmsg" = "Xyes"; thenAC_MSG_CHECKING(which library has the termcap functions)fiAC_MSG_RESULT(using $bash_cv_termcap_lib)if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; thenLDFLAGS="$LDFLAGS -L./lib/termcap"TERMCAP_LIB="./lib/termcap/libtermcap.a"TERMCAP_DEP="./lib/termcap/libtermcap.a"elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; thenTERMCAP_LIB=-ltermcapTERMCAP_DEP=elif test $bash_cv_termcap_lib = libtinfo; thenTERMCAP_LIB=-ltinfoTERMCAP_DEP=elif test $bash_cv_termcap_lib = libncurses; thenTERMCAP_LIB=-lncursesTERMCAP_DEP=elif test $bash_cv_termcap_lib = libc; thenTERMCAP_LIB=TERMCAP_DEP=elseTERMCAP_LIB=-lcursesTERMCAP_DEP=fi])dnldnl Check for the presence of getpeername in libsocket.dnl If libsocket is present, check for libnsl and add it to LIBS ifdnl it's there, since most systems with libsocket require linkingdnl with libnsl as well. This should only be called if getpeernamednl was not found in libc.dnldnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECTdnl AS WELLdnlAC_DEFUN(BASH_CHECK_LIB_SOCKET,[if test "X$bash_cv_have_socklib" = "X"; then_bash_needmsg=elseAC_MSG_CHECKING(for socket library)_bash_needmsg=yesfiAC_CACHE_VAL(bash_cv_have_socklib,[AC_CHECK_LIB(socket, getpeername, bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)])if test "X$_bash_needmsg" = Xyes; then AC_MSG_RESULT($bash_cv_have_socklib) _bash_needmsg=fiif test $bash_cv_have_socklib = yes; then # check for libnsl, add it to LIBS if present if test "X$bash_cv_have_libnsl" = "X"; then _bash_needmsg= else AC_MSG_CHECKING(for libnsl) _bash_needmsg=yes fi AC_CACHE_VAL(bash_cv_have_libnsl, [AC_CHECK_LIB(nsl, t_open, bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)]) if test "X$_bash_needmsg" = Xyes; then AC_MSG_RESULT($bash_cv_have_libnsl) _bash_needmsg= fi if test $bash_cv_have_libnsl = yes; then LIBS="-lsocket -lnsl $LIBS" else LIBS="-lsocket $LIBS" fi AC_DEFINE(HAVE_LIBSOCKET) AC_DEFINE(HAVE_GETPEERNAME)fi])AC_DEFUN(BASH_STRUCT_DIRENT_D_INO,[AC_REQUIRE([AC_HEADER_DIRENT])AC_MSG_CHECKING(for struct dirent.d_ino)AC_CACHE_VAL(bash_cv_dirent_has_dino,[AC_TRY_COMPILE([#include <stdio.h>#include <sys/types.h>#ifdef HAVE_UNISTD_H# include <unistd.h>#endif /* HAVE_UNISTD_H */#if defined(HAVE_DIRENT_H)# include <dirent.h>#else# define dirent direct# ifdef HAVE_SYS_NDIR_H# include <sys/ndir.h># endif /* SYSNDIR */# ifdef HAVE_SYS_DIR_H# include <sys/dir.h># endif /* SYSDIR */# ifdef HAVE_NDIR_H# include <ndir.h># endif#endif /* HAVE_DIRENT_H */],[struct dirent d; int z; z = d.d_ino;], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)])AC_MSG_RESULT($bash_cv_dirent_has_dino)if test $bash_cv_dirent_has_dino = yes; thenAC_DEFINE(HAVE_STRUCT_DIRENT_D_INO)fi])AC_DEFUN(BASH_STRUCT_DIRENT_D_FILENO,[AC_REQUIRE([AC_HEADER_DIRENT])AC_MSG_CHECKING(for struct dirent.d_fileno)AC_CACHE_VAL(bash_cv_dirent_has_d_fileno,[AC_TRY_COMPILE([#include <stdio.h>#include <sys/types.h>#ifdef HAVE_UNISTD_H# include <unistd.h>#endif /* HAVE_UNISTD_H */#if defined(HAVE_DIRENT_H)# include <dirent.h>#else# define dirent direct# ifdef HAVE_SYS_NDIR_H# include <sys/ndir.h># endif /* SYSNDIR */# ifdef HAVE_SYS_DIR_H# include <sys/dir.h># endif /* SYSDIR */# ifdef HAVE_NDIR_H# include <ndir.h># endif#endif /* HAVE_DIRENT_H */],[struct dirent d; int z; z = d.d_fileno;], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)])AC_MSG_RESULT($bash_cv_dirent_has_d_fileno)if test $bash_cv_dirent_has_d_fileno = yes; thenAC_DEFINE(HAVE_STRUCT_DIRENT_D_FILENO)fi])AC_DEFUN(BASH_STRUCT_DIRENT_D_NAMLEN,[AC_REQUIRE([AC_HEADER_DIRENT])AC_MSG_CHECKING(for struct dirent.d_namlen)AC_CACHE_VAL(bash_cv_dirent_has_d_namlen,[AC_TRY_COMPILE([#include <stdio.h>#include <sys/types.h>#ifdef HAVE_UNISTD_H# include <unistd.h>#endif /* HAVE_UNISTD_H */#if defined(HAVE_DIRENT_H)# include <dirent.h>#else# define dirent direct# ifdef HAVE_SYS_NDIR_H# include <sys/ndir.h># endif /* SYSNDIR */# ifdef HAVE_SYS_DIR_H# include <sys/dir.h># endif /* SYSDIR */# ifdef HAVE_NDIR_H# include <ndir.h># endif#endif /* HAVE_DIRENT_H */],[struct dirent d; int z; z = d.d_namlen;], bash_cv_dirent_has_d_namlen=yes, bash_cv_dirent_has_d_namlen=no)])AC_MSG_RESULT($bash_cv_dirent_has_d_namlen)if test $bash_cv_dirent_has_d_namlen = yes; thenAC_DEFINE(HAVE_STRUCT_DIRENT_D_NAMLEN)fi])AC_DEFUN(BASH_STRUCT_TIMEVAL,[AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h)AC_CACHE_VAL(bash_cv_struct_timeval,[AC_EGREP_HEADER(struct timeval, sys/time.h, bash_cv_struct_timeval=yes, AC_EGREP_HEADER(struct timeval, time.h, bash_cv_struct_timeval=yes, bash_cv_struct_timeval=no))])AC_MSG_RESULT($bash_cv_struct_timeval)if test $bash_cv_struct_timeval = yes; then AC_DEFINE(HAVE_TIMEVAL)fi])AC_DEFUN(BASH_STRUCT_TIMEZONE,[AC_MSG_CHECKING(for struct timezone in sys/time.h and time.h)AC_CACHE_VAL(bash_cv_struct_timezone,[AC_EGREP_HEADER(struct timezone, sys/time.h, bash_cv_struct_timezone=yes, AC_EGREP_HEADER(struct timezone, time.h, bash_cv_struct_timezone=yes, bash_cv_struct_timezone=no))])AC_MSG_RESULT($bash_cv_struct_timezone)if test $bash_cv_struct_timezone = yes; then AC_DEFINE(HAVE_STRUCT_TIMEZONE)fi])AC_DEFUN(BASH_STRUCT_WINSIZE,[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_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])dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7)AC_DEFUN(BASH_SYS_SIGNAL_VINTAGE,[AC_REQUIRE([AC_TYPE_SIGNAL])AC_MSG_CHECKING(for type of signal functions)AC_CACHE_VAL(bash_cv_signal_vintage,[ AC_TRY_LINK([#include <signal.h>],[ sigset_t ss; struct sigaction sa; sigemptyset(&ss); sigsuspend(&ss); sigaction(SIGINT, &sa, (struct sigaction *) 0); sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); ], bash_cv_signal_vintage=posix, [ AC_TRY_LINK([#include <signal.h>], [ int mask = sigmask(SIGINT); sigsetmask(mask); sigblock(mask); sigpause(mask); ], bash_cv_signal_vintage=4.2bsd, [ AC_TRY_LINK([ #include <signal.h> RETSIGTYPE foo() { }], [ int mask = sigmask(SIGINT); sigset(SIGINT, foo); sigrelse(SIGINT); sighold(SIGINT); sigpause(SIGINT); ], bash_cv_signal_vintage=svr3, bash_cv_signal_vintage=v7 )] )])])AC_MSG_RESULT($bash_cv_signal_vintage)if test "$bash_cv_signal_vintage" = posix; thenAC_DEFINE(HAVE_POSIX_SIGNALS)elif test "$bash_cv_signal_vintage" = "4.2bsd"; thenAC_DEFINE(HAVE_BSD_SIGNALS)elif test "$bash_cv_signal_vintage" = svr3; thenAC_DEFINE(HAVE_USG_SIGHOLD)fi])dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process.AC_DEFUN(BASH_SYS_PGRP_SYNC,[AC_REQUIRE([AC_FUNC_GETPGRP])AC_MSG_CHECKING(whether pgrps need synchronization)AC_CACHE_VAL(bash_cv_pgrp_pipe,[AC_TRY_RUN([#ifdef HAVE_UNISTD_H# include <unistd.h>#endifmain(){# ifdef GETPGRP_VOID# define getpgID() getpgrp()# else# define getpgID() getpgrp(0)# define setpgid(x,y) setpgrp(x,y)# endif int pid1, pid2, fds[2]; int status; char ok; switch (pid1 = fork()) { case -1: exit(1); case 0: setpgid(0, getpid()); exit(0); } setpgid(pid1, pid1); sleep(2); /* let first child die */ if (pipe(fds) < 0) exit(2); switch (pid2 = fork()) { case -1: exit(3); case 0: setpgid(0, pid1); ok = getpgID() == pid1; write(fds[1], &ok, 1); exit(0); } setpgid(pid2, pid1); close(fds[1]); if (read(fds[0], &ok, 1) != 1) exit(4); wait(&status); wait(&status); exit(ok ? 0 : 5);}], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes, [AC_MSG_WARN(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; thenAC_DEFINE(PGRP_PIPE)fi])AC_DEFUN(BASH_SYS_REINSTALL_SIGHANDLERS,[AC_REQUIRE([AC_TYPE_SIGNAL])AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked])AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers,[AC_TRY_RUN([#include <signal.h>#ifdef HAVE_UNISTD_H#include <unistd.h>#endiftypedef RETSIGTYPE sigfunc();int nsigint;#ifdef HAVE_POSIX_SIGNALSsigfunc *set_signal_handler(sig, handler) int sig; sigfunc *handler;{ struct sigaction act, oact; act.sa_handler = handler; act.sa_flags = 0; sigemptyset (&act.sa_mask); sigemptyset (&oact.sa_mask); sigaction (sig, &act, &oact); return (oact.sa_handler);}#else#define set_signal_handler(s, h) signal(s, h)#endifRETSIGTYPEsigint(s)int s;{ nsigint++;}main(){ nsigint = 0; set_signal_handler(SIGINT, sigint); kill((int)getpid(), SIGINT); kill((int)getpid(), SIGINT); exit(nsigint != 2);}], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes, [AC_MSG_WARN(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; thenAC_DEFINE(MUST_REINSTALL_SIGHANDLERS)fi])dnl check that some necessary job control definitions are presentAC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING,[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])AC_MSG_CHECKING(for presence of necessary job control definitions)AC_CACHE_VAL(bash_cv_job_control_missing,[AC_TRY_RUN([#include <sys/types.h>#ifdef HAVE_SYS_WAIT_H#include <sys/wait.h>#endif#ifdef HAVE_UNISTD_H#include <unistd.h>#endif#include <signal.h>/* Add more tests in here as appropriate. */main(){/* signal type */#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS)exit(1);#endif/* signals and tty control. */#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT)exit (1);#endif/* process control */#if !defined (WNOHANG) || !defined (WUNTRACED) exit(1);#endif/* Posix systems have tcgetpgrp and waitpid. */#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP)exit(1);#endif#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID)exit(1);#endif/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3)exit(1);#endifexit(0);}], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing, [AC_MSG_WARN(cannot check job control if cross-compiling -- defaulting to missing)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -