]> git.ipfire.org Git - thirdparty/gcc.git/blob - config/stdint.m4
ffb759d06b643775db3f1dfcf4a82133ef793d29
[thirdparty/gcc.git] / config / stdint.m4
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])])
14
15 AC_DEFUN([GCC_HEADER_STDINT],
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 # ----------------- Summarize what we found so far
26
27 m4_define([_GCC_STDINT_H], m4_ifval($1, $1, _stdint.h))
28 m4_if(m4_bmatch(m4_quote(/_GCC_STDINT_H),
29 /stdint\.h$, bad,
30 /inttypes\.h$, bad, ok), bad,
31 [m4_fatal([cannot overwrite ]m4_quote(_GCC_STDINT_H))])
32
33 # ----------------- done all checks, emit header -------------
34 AC_CONFIG_COMMANDS(_GCC_STDINT_H, [
35 cat >> tmp-stdint.h <<EOF
36 #ifndef GCC_GENERATED_STDINT_H
37 #define GCC_GENERATED_STDINT_H 1
38
39 #include "config.h"
40 #include <sys/types.h>
41 #ifdef HAVE_STDINT_H
42 #include <stdint.h>
43 #endif
44 #ifdef HAVE_INTTYPES_H
45 #include <inttypes.h>
46 #endif
47 EOF
48
49 if test "$ac_cv_type_int_least32_t" != yes; then
50 sed 's/^ *//' >> tmp-stdint.h <<EOF
51
52 /* Define int_least types */
53 typedef int8_t int_least8_t;
54 typedef int16_t int_least16_t;
55 typedef int32_t int_least32_t;
56 typedef int64_t int_least64_t;
57
58 typedef uint8_t uint_least8_t;
59 typedef uint16_t uint_least16_t;
60 typedef uint32_t uint_least32_t;
61 typedef uint64_t uint_least64_t;
62 EOF
63 fi
64
65 if test "$ac_cv_type_int_fast32_t" != yes; then
66 dnl NOTE: The following code assumes that sizeof (int) > 1.
67 dnl Fix when strange machines are reported.
68 sed 's/^ *//' >> tmp-stdint.h <<EOF
69
70 /* Define int_fast types. short is often slow */
71 typedef int8_t int_fast8_t;
72 typedef int int_fast16_t;
73 typedef int32_t int_fast32_t;
74 typedef int64_t int_fast64_t;
75
76 typedef uint8_t uint_fast8_t;
77 typedef unsigned int uint_fast16_t;
78 typedef uint32_t uint_fast32_t;
79 typedef uint64_t uint_fast64_t;
80 EOF
81 fi
82
83 echo '#endif /* GCC_GENERATED_STDINT_H */' >> tmp-stdint.h
84
85 if test -r ]_GCC_STDINT_H[ && cmp -s tmp-stdint.h ]_GCC_STDINT_H[; then
86 rm -f tmp-stdint.h
87 else
88 mv -f tmp-stdint.h ]_GCC_STDINT_H[
89 fi
90
91 ], [
92 ac_cv_type_int_least32_t="$ac_cv_type_int_least32_t"
93 ac_cv_type_int_fast32_t="$ac_cv_type_int_fast32_t"
94 ])
95
96 ])