diff aclocal.m4 @ 2469:f201716926bb

[project @ 1996-11-05 19:39:33 by jwe]
author jwe
date Tue, 05 Nov 1996 19:40:29 +0000
parents af7790a4bb19
children d47834a272c2
line wrap: on
line diff
--- a/aclocal.m4	Tue Nov 05 03:52:50 1996 +0000
+++ b/aclocal.m4	Tue Nov 05 19:40:29 1996 +0000
@@ -435,3 +435,97 @@
 if test $octave_cv_var_program_inv_name = yes; then
   AC_DEFINE(HAVE_PROGRAM_INVOCATION_NAME)
 fi])
+dnl
+dnl These two checks for signal functions were originally part of the
+dnl aclocal.m4 file distributed with bash 2.0.
+dnl
+dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7)
+AC_DEFUN(OCTAVE_SIGNAL_CHECK,
+[AC_REQUIRE([AC_TYPE_SIGNAL])
+AC_MSG_CHECKING(for type of signal functions)
+AC_CACHE_VAL(octave_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);
+  ], octave_cv_signal_vintage=posix,
+  [
+    AC_TRY_LINK([#include <signal.h>], [
+	int mask = sigmask(SIGINT);
+	sigsetmask(mask); sigblock(mask); sigpause(mask);
+    ], octave_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);
+        ], octave_cv_signal_vintage=svr3
+    )]
+  )]
+)
+])
+AC_MSG_RESULT($octave_cv_signal_vintage)
+if test $octave_cv_signal_vintage = posix; then
+AC_DEFINE(HAVE_POSIX_SIGNALS)
+elif test $octave_cv_signal_vintage = "4.2bsd"; then
+AC_DEFINE(HAVE_BSD_SIGNALS)
+elif test $octave_cv_signal_vintage = svr3; then
+AC_DEFINE(HAVE_USG_SIGHOLD)
+fi
+])
+dnl
+AC_DEFUN(OCTAVE_REINSTALL_SIGHANDLERS,
+[AC_REQUIRE([AC_TYPE_SIGNAL])
+AC_REQUIRE([OCTAVE_SIGNAL_CHECK])
+AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked])
+AC_CACHE_VAL(octave_cv_must_reinstall_sighandlers,
+[AC_TRY_RUN([
+#include <signal.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+typedef RETSIGTYPE sigfunc();
+int nsigint;
+#ifdef HAVE_POSIX_SIGNALS
+sigfunc *
+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)
+#endif
+RETSIGTYPE
+sigint(s)
+    int s;
+{
+  nsigint++;
+}
+main()
+{
+  nsigint = 0;
+  set_signal_handler(SIGINT, sigint);
+  kill((int)getpid(), SIGINT);
+  kill((int)getpid(), SIGINT);
+  exit(nsigint != 2);
+}
+], octave_cv_must_reinstall_sighandlers=no, octave_cv_must_reinstall_sighandlers=yes,
+AC_MSG_ERROR(cannot check signal handling if cross compiling))])
+AC_MSG_RESULT($octave_cv_must_reinstall_sighandlers)
+if test $octave_cv_must_reinstall_sighandlers = yes; then
+AC_DEFINE(MUST_REINSTALL_SIGHANDLERS)
+fi
+])