dnl *********** BSD vs. POSIX signal handling ************** AC_DEFUN([AC_BSD_SIGNALS], [ AC_MSG_CHECKING(for BSD signal semantics) AC_CACHE_VAL(knfsd_cv_bsd_signals, [AC_TRY_RUN([ #include #include #include static int counter = 0; static RETSIGTYPE handler(int num) { counter++; } int main() { int s; if ((s = fork()) < 0) return 1; if (s != 0) { if (wait(&s) < 0) return 1; return WIFSIGNALED(s)? 1 : 0; } signal(SIGHUP, handler); kill(getpid(), SIGHUP); kill(getpid(), SIGHUP); return (counter == 2)? 0 : 1; } ], knfsd_cv_bsd_signals=yes, knfsd_cv_bsd_signals=no, [ case "$host_os" in *linux*) knfsd_cv_bsd_signals=no;; *bsd*) knfsd_cv_bsd_signals=yes;; *) AC_MSG_ERROR([unable to guess signal semantics for $host_os; please set knfsd_cv_bsd_signals]);; esac ])]) dnl AC_MSG_RESULT($knfsd_cv_bsd_signals) test $knfsd_cv_bsd_signals = yes && AC_DEFINE(HAVE_BSD_SIGNALS, 1, [Define this if you want to use BSD signal semantics]) ])dnl