Commit | Line | Data |
---|---|---|
07c58694 PB |
1 | AC_DEFUN([GCC_STDINT_TYPES], |
2 | [AC_REQUIRE([AC_TYPE_INT8_T]) | |
3 | AC_REQUIRE([AC_TYPE_INT16_T]) | |
4 | AC_REQUIRE([AC_TYPE_INT32_T]) | |
5 | AC_REQUIRE([AC_TYPE_INT64_T]) | |
6 | AC_REQUIRE([AC_TYPE_INTMAX_T]) | |
7 | AC_REQUIRE([AC_TYPE_INTPTR_T]) | |
8 | AC_REQUIRE([AC_TYPE_UINT8_T]) | |
9 | AC_REQUIRE([AC_TYPE_UINT16_T]) | |
10 | AC_REQUIRE([AC_TYPE_UINT32_T]) | |
11 | AC_REQUIRE([AC_TYPE_UINT64_T]) | |
12 | AC_REQUIRE([AC_TYPE_UINTMAX_T]) | |
13 | AC_REQUIRE([AC_TYPE_UINTPTR_T])]) | |
8eb2f3f0 PB |
14 | |
15 | AC_DEFUN([GCC_HEADER_STDINT], | |
07c58694 PB |
16 | [AC_REQUIRE([GCC_STDINT_TYPES]) |
17 | AC_CHECK_TYPES([int_least32_t, int_fast32_t],,,[#include <sys/types.h> | |
18 | #ifdef HAVE_STDINT_H | |
19 | #include <stdint.h> | |
20 | #endif | |
21 | #ifdef HAVE_INTTYPES_H | |
22 | #include <inttypes.h> | |
23 | #endif]) | |
24 | ||
25 | m4_define([_GCC_STDINT_H], m4_ifval($1, $1, _stdint.h)) | |
26 | m4_if(m4_bmatch(m4_quote(/_GCC_STDINT_H), | |
27 | /stdint\.h$, bad, | |
28 | /inttypes\.h$, bad, ok), bad, | |
29 | [m4_fatal([cannot overwrite ]m4_quote(_GCC_STDINT_H))]) | |
8eb2f3f0 | 30 | |
8eb2f3f0 | 31 | AC_CONFIG_COMMANDS(_GCC_STDINT_H, [ |
07c58694 PB |
32 | cat > $tmp/_GCC_STDINT_H <<EOF |
33 | #ifndef GCC_GENERATED_STDINT_H | |
34 | #define GCC_GENERATED_STDINT_H 1 | |
35 | ||
36 | #include "config.h" | |
37 | #include <sys/types.h> | |
38 | #ifdef HAVE_STDINT_H | |
39 | #include <stdint.h> | |
40 | #endif | |
41 | #ifdef HAVE_INTTYPES_H | |
42 | #include <inttypes.h> | |
43 | #endif | |
8eb2f3f0 | 44 | EOF |
8eb2f3f0 | 45 | |
8eb2f3f0 | 46 | if test "$ac_cv_type_int_least32_t" != yes; then |
07c58694 | 47 | sed 's/^ *//' >> $tmp/_GCC_STDINT_H <<EOF |
8eb2f3f0 PB |
48 | |
49 | /* Define int_least types */ | |
50 | typedef int8_t int_least8_t; | |
51 | typedef int16_t int_least16_t; | |
52 | typedef int32_t int_least32_t; | |
8eb2f3f0 | 53 | typedef int64_t int_least64_t; |
8eb2f3f0 PB |
54 | |
55 | typedef uint8_t uint_least8_t; | |
56 | typedef uint16_t uint_least16_t; | |
57 | typedef uint32_t uint_least32_t; | |
8eb2f3f0 | 58 | typedef uint64_t uint_least64_t; |
8eb2f3f0 PB |
59 | EOF |
60 | fi | |
61 | ||
8eb2f3f0 PB |
62 | if test "$ac_cv_type_int_fast32_t" != yes; then |
63 | dnl NOTE: The following code assumes that sizeof (int) > 1. | |
64 | dnl Fix when strange machines are reported. | |
07c58694 | 65 | sed 's/^ *//' >> $tmp/_GCC_STDINT_H <<EOF |
8eb2f3f0 PB |
66 | |
67 | /* Define int_fast types. short is often slow */ | |
68 | typedef int8_t int_fast8_t; | |
69 | typedef int int_fast16_t; | |
70 | typedef int32_t int_fast32_t; | |
8eb2f3f0 | 71 | typedef int64_t int_fast64_t; |
8eb2f3f0 PB |
72 | |
73 | typedef uint8_t uint_fast8_t; | |
74 | typedef unsigned int uint_fast16_t; | |
75 | typedef uint32_t uint_fast32_t; | |
8eb2f3f0 | 76 | typedef uint64_t uint_fast64_t; |
8eb2f3f0 PB |
77 | EOF |
78 | fi | |
79 | ||
07c58694 | 80 | echo '@%:@endif /* GCC_GENERATED_STDINT_H */' >> $tmp/_GCC_STDINT_H |
8eb2f3f0 | 81 | |
07c58694 PB |
82 | if test -r _GCC_STDINT_H && cmp -s $tmp/_GCC_STDINT_H _GCC_STDINT_H; then |
83 | rm -f $tmp/_GCC_STDINT_H | |
8eb2f3f0 | 84 | else |
07c58694 | 85 | mv -f $tmp/_GCC_STDINT_H _GCC_STDINT_H |
8eb2f3f0 PB |
86 | fi |
87 | ||
88 | ], [ | |
8eb2f3f0 PB |
89 | ac_cv_type_int_least32_t="$ac_cv_type_int_least32_t" |
90 | ac_cv_type_int_fast32_t="$ac_cv_type_int_fast32_t" | |
8eb2f3f0 PB |
91 | ]) |
92 | ||
93 | ]) |