+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
dnl existence of an include file <stdint.h> that defines a set of
dnl typedefs, especially uint8_t,int32_t,uintptr_t.
dnl Many older installations will not provide this file, but some will
-dnl have the very same definitions in <inttypes.h>. In other enviroments
+dnl have the very same definitions in <inttypes.h>. In other environments
dnl we can use the inet-types in <sys/types.h> which would define the
dnl typedefs int8_t and u_int8_t respectivly.
dnl
dnl create an installable file mylib-int.h that all your other installable
dnl header may include. So, for a library package named "mylib", just use
dnl GCC_HEADER_STDINT(mylib-int.h)
-dnl in configure.in and install that header file in Makefile.am along with
+dnl in configure.ac and install that header file in Makefile.am along with
dnl the other headers (mylib.h). The mylib-specific headers can simply
dnl use "#include <mylib-int.h>" to obtain the stdint-types.
dnl
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
_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
AC_MSG_CHECKING(for type equivalent to int8_t)
case "$ac_cv_sizeof_char" in
1) acx_cv_type_int8_t=char ;;
- *) AC_MSG_ERROR(no 8-bit type, please report a bug)
+ *) AC_MSG_ERROR([no 8-bit type, please report a bug])
esac
AC_MSG_RESULT($acx_cv_type_int8_t)
case "$ac_cv_sizeof_int:$ac_cv_sizeof_short" in
2:*) acx_cv_type_int16_t=int ;;
*:2) acx_cv_type_int16_t=short ;;
- *) AC_MSG_ERROR(no 16-bit type, please report a bug)
+ *) AC_MSG_ERROR([no 16-bit type, please report a bug])
esac
AC_MSG_RESULT($acx_cv_type_int16_t)
case "$ac_cv_sizeof_int:$ac_cv_sizeof_long" in
4:*) acx_cv_type_int32_t=int ;;
*:4) acx_cv_type_int32_t=long ;;
- *) AC_MSG_ERROR(no 32-bit type, please report a bug)
+ *) AC_MSG_ERROR([no 32-bit type, please report a bug])
esac
AC_MSG_RESULT($acx_cv_type_int32_t)
fi
2) acx_cv_type_intptr_t=int16_t ;;
4) acx_cv_type_intptr_t=int32_t ;;
8) acx_cv_type_intptr_t=int64_t ;;
- *) AC_MSG_ERROR(no equivalent for intptr_t, please report a bug)
+ *) AC_MSG_ERROR([no equivalent for intptr_t, please report a bug])
esac
AC_MSG_RESULT($acx_cv_type_intptr_t)
fi
#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
#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
#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
/* 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
#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
# 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 */
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
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