]>
Commit | Line | Data |
---|---|---|
269004c1 CW |
1 | # intdiv0.m4 serial 4 (gettext-0.18.2) |
2 | dnl Copyright (C) 2002, 2007-2008, 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_RUN_IFELSE( | |
33 | [AC_LANG_SOURCE([[ | |
34 | #include <stdlib.h> | |
35 | #include <signal.h> | |
36 | ||
37 | static void | |
38 | sigfpe_handler (int sig) | |
39 | { | |
40 | /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ | |
41 | exit (sig != SIGFPE); | |
42 | } | |
43 | ||
44 | int x = 1; | |
45 | int y = 0; | |
46 | int z; | |
47 | int nan; | |
48 | ||
49 | int main () | |
50 | { | |
51 | signal (SIGFPE, sigfpe_handler); | |
52 | /* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ | |
53 | #if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) | |
54 | signal (SIGTRAP, sigfpe_handler); | |
55 | #endif | |
56 | /* Linux/SPARC yields signal SIGILL. */ | |
57 | #if defined (__sparc__) && defined (__linux__) | |
58 | signal (SIGILL, sigfpe_handler); | |
59 | #endif | |
60 | ||
61 | z = x / y; | |
62 | nan = y / y; | |
63 | exit (1); | |
64 | } | |
65 | ]])], | |
66 | [gt_cv_int_divbyzero_sigfpe=yes], | |
67 | [gt_cv_int_divbyzero_sigfpe=no], | |
68 | [ | |
69 | # Guess based on the CPU. | |
70 | changequote(,)dnl | |
71 | case "$host_cpu" in | |
72 | alpha* | i[34567]86 | x86_64 | m68k | s390*) | |
73 | gt_cv_int_divbyzero_sigfpe="guessing yes";; | |
74 | *) | |
75 | gt_cv_int_divbyzero_sigfpe="guessing no";; | |
76 | esac | |
77 | changequote([,])dnl | |
78 | ]) | |
79 | fi | |
80 | ]) | |
81 | case "$gt_cv_int_divbyzero_sigfpe" in | |
82 | *yes) value=1;; | |
83 | *) value=0;; | |
84 | esac | |
85 | AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value], | |
86 | [Define if integer division by zero raises signal SIGFPE.]) | |
87 | ]) |