OSDN Git Service

2010-04-20 Harald Anlauf <anlauf@gmx.de>
[pf3gnuchains/gcc-fork.git] / config / stdint.m4
index 21ef2ec..d63081d 100644 (file)
@@ -1,3 +1,17 @@
+AC_DEFUN([GCC_STDINT_TYPES],
+[AC_REQUIRE([AC_TYPE_INT8_T])
+AC_REQUIRE([AC_TYPE_INT16_T])
+AC_REQUIRE([AC_TYPE_INT32_T])
+AC_REQUIRE([AC_TYPE_INT64_T])
+AC_REQUIRE([AC_TYPE_INTMAX_T])
+AC_REQUIRE([AC_TYPE_INTPTR_T])
+AC_REQUIRE([AC_TYPE_UINT8_T])
+AC_REQUIRE([AC_TYPE_UINT16_T])
+AC_REQUIRE([AC_TYPE_UINT32_T])
+AC_REQUIRE([AC_TYPE_UINT64_T])
+AC_REQUIRE([AC_TYPE_UINTMAX_T])
+AC_REQUIRE([AC_TYPE_UINTPTR_T])])
+
 dnl @synopsis GCC_HEADER_STDINT [( HEADER-TO-GENERATE [, HEADERS-TO-CHECK])]
 dnl
 dnl the "ISO C9X: 7.18 Integer types <stdint.h>" section requires the
@@ -61,14 +75,17 @@ for i in stdint.h $inttype_headers; do
   break
 done
 if test "$acx_cv_header_stdint" = stddef.h; then
-  acx_cv_header_stdint_kind="(lacks uintptr_t)"
+  acx_cv_header_stdint_kind="(lacks uintmax_t)"
   for i in stdint.h $inttype_headers; do
+    unset ac_cv_type_uintptr_t
     unset ac_cv_type_uint32_t
     unset ac_cv_type_uint64_t
     _AS_ECHO_N([looking for an incomplete stdint.h in $i, ])
     AC_CHECK_TYPE(uint32_t,[acx_cv_header_stdint=$i],continue,[#include <sys/types.h>
 #include <$i>])
-    AC_CHECK_TYPE(uint64_t,,[acx_cv_header_stdint_kind="(lacks uintptr_t and uint64_t)"], [#include <sys/types.h>
+    AC_CHECK_TYPE(uint64_t,,,[#include <sys/types.h>
+#include <$i>])
+    AC_CHECK_TYPE(uintptr_t,,,[#include <sys/types.h>
 #include <$i>])
     break
   done
@@ -81,7 +98,7 @@ if test "$acx_cv_header_stdint" = stddef.h; then
     _AS_ECHO_N([looking for u_intXX_t types in $i, ])
     AC_CHECK_TYPE(u_int32_t,[acx_cv_header_stdint=$i],continue,[#include <sys/types.h>
 #include <$i>])
-    AC_CHECK_TYPE(u_int64_t,,[acx_cv_header_stdint_kind="(u_intXX_t style, lacks u_int64_t)"], [#include <sys/types.h>
+    AC_CHECK_TYPE(u_int64_t,,,[#include <sys/types.h>
 #include <$i>])
     break
   done
@@ -215,33 +232,63 @@ if test "$acx_cv_header_stdint" = stddef.h; then
 
     #ifndef _UINT8_T
     #define _UINT8_T
+    #ifndef __uint8_t_defined
+    #define __uint8_t_defined
+    #ifndef uint8_t
     typedef unsigned $acx_cv_type_int8_t uint8_t;
     #endif
+    #endif
+    #endif
 
     #ifndef _UINT16_T
     #define _UINT16_T
+    #ifndef __uint16_t_defined
+    #define __uint16_t_defined
+    #ifndef uint16_t
     typedef unsigned $acx_cv_type_int16_t uint16_t;
     #endif
+    #endif
+    #endif
 
     #ifndef _UINT32_T
     #define _UINT32_T
+    #ifndef __uint32_t_defined
+    #define __uint32_t_defined
+    #ifndef uint32_t
     typedef unsigned $acx_cv_type_int32_t uint32_t;
     #endif
+    #endif
+    #endif
 
     #ifndef _INT8_T
     #define _INT8_T
+    #ifndef __int8_t_defined
+    #define __int8_t_defined
+    #ifndef int8_t
     typedef $acx_cv_type_int8_t int8_t;
     #endif
+    #endif
+    #endif
 
     #ifndef _INT16_T
     #define _INT16_T
+    #ifndef __int16_t_defined
+    #define __int16_t_defined
+    #ifndef int16_t
     typedef $acx_cv_type_int16_t int16_t;
     #endif
+    #endif
+    #endif
 
     #ifndef _INT32_T
     #define _INT32_T
+    #ifndef __int32_t_defined
+    #define __int32_t_defined
+    #ifndef int32_t
     typedef $acx_cv_type_int32_t int32_t;
     #endif
+    #endif
+    #endif
 EOF
 elif test "$ac_cv_type_u_int32_t" = yes; then
   sed 's/^ *//' >> tmp-stdint.h <<EOF
@@ -259,18 +306,33 @@ elif test "$ac_cv_type_u_int32_t" = yes; then
 
     #ifndef _UINT8_T
     #define _UINT8_T
+    #ifndef __uint8_t_defined
+    #define __uint8_t_defined
+    #ifndef uint8_t
     typedef u_int8_t uint8_t;
     #endif
+    #endif
+    #endif
 
     #ifndef _UINT16_T
     #define _UINT16_T
+    #ifndef __uint16_t_defined
+    #define __uint16_t_defined
+    #ifndef uint16_t
     typedef u_int16_t uint16_t;
     #endif
+    #endif
+    #endif
 
     #ifndef _UINT32_T
     #define _UINT32_T
+    #ifndef __uint32_t_defined
+    #define __uint32_t_defined
+    #ifndef uint32_t
     typedef u_int32_t uint32_t;
     #endif
+    #endif
+    #endif
 EOF
 else
   sed 's/^ *//' >> tmp-stdint.h <<EOF
@@ -318,8 +380,13 @@ elif test "$ac_cv_type_u_int64_t" = yes; then
     #endif
     #ifndef _UINT64_T
     #define _UINT64_T
+    #ifndef __uint64_t_defined
+    #define __uint64_t_defined
+    #ifndef uint64_t
     typedef u_int64_t uint64_t;
     #endif
+    #endif
+    #endif
 EOF
 elif test -n "$acx_cv_type_int64_t"; then
   sed 's/^ *//' >> tmp-stdint.h <<EOF
@@ -327,12 +394,19 @@ elif test -n "$acx_cv_type_int64_t"; then
     /* architecture has a 64-bit type, $acx_cv_type_int64_t */
     #ifndef _INT64_T
     #define _INT64_T
+    #ifndef int64_t
     typedef $acx_cv_type_int64_t int64_t;
     #endif
+    #endif
     #ifndef _UINT64_T
     #define _UINT64_T
+    #ifndef __uint64_t_defined
+    #define __uint64_t_defined
+    #ifndef uint64_t
     typedef unsigned $acx_cv_type_int64_t uint64_t;
     #endif
+    #endif
+    #endif
 EOF
 else
   sed 's/^ *//' >> tmp-stdint.h <<EOF
@@ -341,12 +415,18 @@ else
     #if defined __STDC_VERSION__ && (__STDC_VERSION__-0) >= 199901L
     #ifndef _INT64_T
     #define _INT64_T
+    #ifndef __int64_t_defined
+    #ifndef int64_t
     typedef long long int64_t;
     #endif
+    #endif
+    #endif
     #ifndef _UINT64_T
     #define _UINT64_T
+    #ifndef uint64_t
     typedef unsigned long long uint64_t;
     #endif
+    #endif
 
     #elif defined __GNUC__ && defined (__STDC__) && __STDC__-0
     /* NextStep 2.0 cc is really gcc 1.93 but it defines __GNUC__ = 2 and
@@ -358,24 +438,32 @@ else
 
     # ifndef _INT64_T
     # define _INT64_T
+    # ifndef int64_t
     __extension__ typedef long long int64_t;
     # endif
+    # endif
     # ifndef _UINT64_T
     # define _UINT64_T
+    # ifndef uint64_t
     __extension__ typedef unsigned long long uint64_t;
     # endif
+    # endif
 
     #elif !defined __STRICT_ANSI__
     # if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__
 
     #  ifndef _INT64_T
     #  define _INT64_T
+    #  ifndef int64_t
     typedef __int64 int64_t;
     #  endif
+    #  endif
     #  ifndef _UINT64_T
     #  define _UINT64_T
+    #  ifndef uint64_t
     typedef unsigned __int64 uint64_t;
     #  endif
+    #  endif
     # endif /* compiler */
 
     #endif /* ANSI version */
@@ -387,8 +475,16 @@ if test "$ac_cv_type_uintptr_t" != yes; then
   sed 's/^ *//' >> tmp-stdint.h <<EOF
 
     /* Define intptr_t based on sizeof(void*) = $ac_cv_sizeof_void_p */
+    #ifndef __uintptr_t_defined
+    #ifndef uintptr_t
     typedef u$acx_cv_type_intptr_t uintptr_t;
+    #endif
+    #endif
+    #ifndef __intptr_t_defined
+    #ifndef intptr_t
     typedef $acx_cv_type_intptr_t  intptr_t;
+    #endif
+    #endif
 EOF
 fi
 
@@ -440,16 +536,20 @@ if test "$ac_cv_type_uintmax_t" != yes; then
   sed 's/^ *//' >> tmp-stdint.h <<EOF
 
     /* Define intmax based on what we found */
+    #ifndef intmax_t
     #ifdef _INT64_T
     typedef int64_t       intmax_t;
     #else
     typedef long          intmax_t;
     #endif
+    #endif
+    #ifndef uintmax_t
     #ifdef _UINT64_T
     typedef uint64_t      uintmax_t;
     #else
     typedef unsigned long uintmax_t;
     #endif
+    #endif
 EOF
 fi