blob: 7e665a2be70de6df82007cd8cdd2b6b2229ffdec [file] [log] [blame]
dnl @synopsis XERCES_INT_TYPES
dnl
dnl Determines what int types to use for various
dnl Xerces standard integer types.
dnl
dnl @category C
dnl @author James Berry
dnl @version 2005-06-07
dnl @license AllPermissive
dnl
dnl $Id$
AC_DEFUN([XERCES_INT_TYPES],
[
AC_CHECK_HEADERS([inttypes.h])
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
AC_CHECK_SIZEOF(long long)
AC_CHECK_SIZEOF(__int64)
AC_CHECK_TYPE(int16_t)
AC_CHECK_TYPE(int32_t)
AC_CHECK_TYPE(int64_t)
AC_CHECK_TYPE(uint16_t)
AC_CHECK_TYPE(uint32_t)
AC_CHECK_TYPE(uint64_t)
#
# Select a signed 16 bit integer type
#
AC_CACHE_CHECK([for an appropriate signed 16 bit integer type], [xerces_cv_type_s16bit_int], [
AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_int16_t = xyes],
[xerces_cv_type_s16bit_int=int16_t],
[
case $ac_cv_sizeof_int in
2*) xerces_cv_type_s16bit_int=int;;
*)
case $ac_cv_sizeof_short in
2*) xerces_cv_type_s16bit_int=short;;
*) AC_MSG_ERROR([Couldn't find a signed 16 bit int type]);;
esac
;;
esac
])
])
#
# Select an unsigned 16 bit integer type
#
AC_CACHE_CHECK([for an appropriate unsigned 16 bit integer type], [xerces_cv_type_u16bit_int], [
AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_uint16_t = xyes],
[xerces_cv_type_u16bit_int=uint16_t],
[
case $ac_cv_sizeof_int in
2*) xerces_cv_type_u16bit_int="unsigned int";;
*)
case $ac_cv_sizeof_short in
2*) xerces_cv_type_u16bit_int="unsigned short";;
*) AC_MSG_ERROR([Couldn't find an unsigned 16 bit int type]);;
esac
;;
esac
])
])
#
# Select a signed 32 bit integer type
#
AC_CACHE_CHECK([for an appropriate signed 32 bit integer type], [xerces_cv_type_s32bit_int], [
AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_int32_t = xyes],
[xerces_cv_type_s32bit_int=int32_t],
[
case $ac_cv_sizeof_int in
4*) xerces_cv_type_s32bit_int=int;;
*)
case $ac_cv_sizeof_long in
4*) xerces_cv_type_s32bit_int=long;;
*) AC_MSG_ERROR([Couldn't find a signed 32 bit int type]);;
esac
;;
esac
])
])
#
# Select an unsigned 32 bit integer type
#
AC_CACHE_CHECK([for an appropriate unsigned 32 bit integer type], [xerces_cv_type_u32bit_int], [
AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_uint32_t = xyes],
[xerces_cv_type_u32bit_int=uint32_t],
[
case $ac_cv_sizeof_int in
4*) xerces_cv_type_u32bit_int="unsigned int";;
*)
case $ac_cv_sizeof_long in
4*) xerces_cv_type_u32bit_int="unsigned long";;
*) AC_MSG_ERROR([Couldn't find an unsigned 32 bit int type]);;
esac
;;
esac
])
])
#
# Select an signed 64 bit integer type
#
AC_CACHE_CHECK([for an appropriate signed 64 bit integer type], [xerces_cv_type_s64bit_int], [
AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_int64_t = xyes],
[
xerces_cv_type_s64bit_int=int64_t
xerces_cv_sizeof_int64=8
],
[
case $ac_cv_sizeof_int in
8*) xerces_cv_type_s64bit_int="int"
xerces_cv_sizeof_int64=8
;;
*)
case $ac_cv_sizeof_long in
8*) xerces_cv_type_s64bit_int="long"
xerces_cv_sizeof_int64=8
;;
*)
case $ac_cv_sizeof_long_long in
8*) xerces_cv_type_s64bit_int="long long"
xerces_cv_sizeof_int64=8
;;
*)
case $ac_cv_sizeof___int64 in
8*) xerces_cv_type_s64bit_int="__int64"
xerces_cv_sizeof_int64=8
;;
*) xerces_cv_type_s64bit_int=$xerces_cv_type_s32bit_int
xerces_cv_sizeof_int64=4
;;
esac
;;
esac
;;
esac
;;
esac
])
])
#
# Select an unsigned 64 bit integer type
#
AC_CACHE_CHECK([for an appropriate unsigned 64 bit integer type], [xerces_cv_type_u64bit_int], [
AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_uint64_t = xyes],
[xerces_cv_type_u64bit_int=uint64_t],
[
case $ac_cv_sizeof_int in
8*) xerces_cv_type_u64bit_int="unsigned int";;
*)
case $ac_cv_sizeof_long in
8*) xerces_cv_type_u64bit_int="unsigned long";;
*)
case $ac_cv_sizeof_long_long in
8*) xerces_cv_type_u64bit_int="unsigned long long";;
*)
case $ac_cv_sizeof___int64 in
8*) xerces_cv_type_u64bit_int="unsigned __int64";;
*) xerces_cv_type_u64bit_int=$xerces_cv_type_u32bit_int;;
esac
;;
esac
;;
esac
;;
esac
])
])
AC_DEFINE_UNQUOTED([XERCES_S16BIT_INT], $xerces_cv_type_s16bit_int, [An appropriate signed 16 bit integer type])
AC_DEFINE_UNQUOTED([XERCES_U16BIT_INT], $xerces_cv_type_u16bit_int, [An appropriate unsigned 16 bit integer type])
AC_DEFINE_UNQUOTED([XERCES_S32BIT_INT], $xerces_cv_type_s32bit_int, [An appropriate signed 32 bit integer type])
AC_DEFINE_UNQUOTED([XERCES_U32BIT_INT], $xerces_cv_type_u32bit_int, [An appropriate unsigned 32 bit integer type])
AC_DEFINE_UNQUOTED([XERCES_S64BIT_INT], $xerces_cv_type_s64bit_int, [An appropriate signed 64 bit integer type])
AC_DEFINE_UNQUOTED([XERCES_U64BIT_INT], $xerces_cv_type_u64bit_int, [An appropriate unsigned 64 bit integer type])
]
)