diff options
Diffstat (limited to 'm4/intdiv0.m4')
-rw-r--r-- | m4/intdiv0.m4 | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/m4/intdiv0.m4 b/m4/intdiv0.m4 new file mode 100644 index 00000000..289c4df5 --- /dev/null +++ b/m4/intdiv0.m4 | |||
@@ -0,0 +1,84 @@ | |||
1 | # intdiv0.m4 serial 3 (gettext-0.18) | ||
2 | dnl Copyright (C) 2002, 2007-2010 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl From Bruno Haible. | ||
8 | |||
9 | AC_DEFUN([gt_INTDIV0], | ||
10 | [ | ||
11 | AC_REQUIRE([AC_PROG_CC])dnl | ||
12 | AC_REQUIRE([AC_CANONICAL_HOST])dnl | ||
13 | |||
14 | AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], | ||
15 | gt_cv_int_divbyzero_sigfpe, | ||
16 | [ | ||
17 | gt_cv_int_divbyzero_sigfpe= | ||
18 | changequote(,)dnl | ||
19 | case "$host_os" in | ||
20 | macos* | darwin[6-9]* | darwin[1-9][0-9]*) | ||
21 | # On MacOS X 10.2 or newer, just assume the same as when cross- | ||
22 | # compiling. If we were to perform the real test, 1 Crash Report | ||
23 | # dialog window would pop up. | ||
24 | case "$host_cpu" in | ||
25 | i[34567]86 | x86_64) | ||
26 | gt_cv_int_divbyzero_sigfpe="guessing yes" ;; | ||
27 | esac | ||
28 | ;; | ||
29 | esac | ||
30 | changequote([,])dnl | ||
31 | if test -z "$gt_cv_int_divbyzero_sigfpe"; then | ||
32 | AC_TRY_RUN([ | ||
33 | #include <stdlib.h> | ||
34 | #include <signal.h> | ||
35 | |||
36 | static void | ||
37 | sigfpe_handler (int sig) | ||
38 | { | ||
39 | /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ | ||
40 | exit (sig != SIGFPE); | ||
41 | } | ||
42 | |||
43 | int x = 1; | ||
44 | int y = 0; | ||
45 | int z; | ||
46 | int nan; | ||
47 | |||
48 | int main () | ||
49 | { | ||
50 | signal (SIGFPE, sigfpe_handler); | ||
51 | /* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ | ||
52 | #if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) | ||
53 | signal (SIGTRAP, sigfpe_handler); | ||
54 | #endif | ||
55 | /* Linux/SPARC yields signal SIGILL. */ | ||
56 | #if defined (__sparc__) && defined (__linux__) | ||
57 | signal (SIGILL, sigfpe_handler); | ||
58 | #endif | ||
59 | |||
60 | z = x / y; | ||
61 | nan = y / y; | ||
62 | exit (1); | ||
63 | } | ||
64 | ], [gt_cv_int_divbyzero_sigfpe=yes], [gt_cv_int_divbyzero_sigfpe=no], | ||
65 | [ | ||
66 | # Guess based on the CPU. | ||
67 | changequote(,)dnl | ||
68 | case "$host_cpu" in | ||
69 | alpha* | i[34567]86 | x86_64 | m68k | s390*) | ||
70 | gt_cv_int_divbyzero_sigfpe="guessing yes";; | ||
71 | *) | ||
72 | gt_cv_int_divbyzero_sigfpe="guessing no";; | ||
73 | esac | ||
74 | changequote([,])dnl | ||
75 | ]) | ||
76 | fi | ||
77 | ]) | ||
78 | case "$gt_cv_int_divbyzero_sigfpe" in | ||
79 | *yes) value=1;; | ||
80 | *) value=0;; | ||
81 | esac | ||
82 | AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value], | ||
83 | [Define if integer division by zero raises signal SIGFPE.]) | ||
84 | ]) | ||