On Sat, 2 Jun 2001, George Greer wrote:
> Actually, we can't do it because it would break 64-bit platforms.
We can add an int32_t typedef/macro and have configure determine the size
of a 32-bit integer on the given platform.
dnl Find what int32_t should be, regardless of whether or not the
dnl system already defines it (we'll find that out later). This way
dnl we can use AC_CHECK_TYPE. Hopefully this will work with C99's
dnl <inttypes.h> header, otherwise we'll have to do more.
AC_CHECK_CACHE([for sizeof(long)], ac_sizeof_long,
AC_TRY_RUN([int main() { return (sizeof(long)); }], ,
ac_cv_sizeof_long=$?)])
if test ac_cv_sizeof_long = 4; then
AC_CHECK_TYPE(int32_t, long)
else
AC_CHECK_TYPE(int32_t, int)
fi
General idea being if the system doesn't define the int32_t where
AC_CHECK_TYPE looks for it, we find out if 'long' is the 32-bit integer
type (4 bytes) and define int32_t as such if it is; otherwise, we define
'int' to be int32_t. So
Platform int32_t
16-bit long
32-bit long
64-bit int
I'd imagine that more recent versions of autoconf check <inttypes.h>, or
that the ISO standard specifies mandatory inclusion of <inttypes.h>
through <sys/types.h> or similar. I also imagine that by the time we get
around to anything beyond 64-bit architectures, compilers will be in
compliance with the standard and thus define int32_t for us.
Any thoughts?
-dak
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/05/01 PST