# $Id: sequence.m4,v 12.3 2005/11/24 00:49:24 bostic Exp $ # Try and configure sequence support. AC_DEFUN(AM_SEQUENCE_CONFIGURE, [ AC_MSG_CHECKING([for 64-bit integral type support for sequences]) db_cv_build_sequence="yes" # Have to have found 64-bit types to support sequences. If we don't # find the native types, we try and create our own. if test "$ac_cv_type_int64_t" = "no" -a -z "$int64_decl"; then db_cv_build_sequence="no" fi if test "$ac_cv_type_uint64_t" = "no" -a -z "$u_int64_decl"; then db_cv_build_sequence="no" fi # Figure out what type is the right size, and set the format. AC_SUBST(INT64_FMT) AC_SUBST(UINT64_FMT) db_cv_seq_type="no" if test "$db_cv_build_sequence" = "yes" -a\ "$ac_cv_sizeof_long" -eq "8"; then db_cv_seq_type="long" db_cv_seq_fmt='"%ld"' db_cv_seq_ufmt='"%lu"' INT64_FMT='#define INT64_FMT "%ld"' UINT64_FMT='#define UINT64_FMT "%lu"' else if test "$db_cv_build_sequence" = "yes" -a\ "$ac_cv_sizeof_long_long" -eq "8"; then db_cv_seq_type="long long" db_cv_seq_fmt='"%lld"' db_cv_seq_ufmt='"%llu"' INT64_FMT='#define INT64_FMT "%lld"' UINT64_FMT='#define UINT64_FMT "%llu"' else db_cv_build_sequence="no" fi fi # Test to see if we can declare variables of the appropriate size # and format them. If we're cross-compiling, all we get is a link # test, which won't test for the appropriate printf format strings. if test "$db_cv_build_sequence" = "yes"; then AC_TRY_RUN([ main() { $db_cv_seq_type l; unsigned $db_cv_seq_type u; char buf@<:@100@:>@; buf@<:@0@:>@ = 'a'; l = 9223372036854775807LL; (void)snprintf(buf, sizeof(buf), $db_cv_seq_fmt, l); if (strcmp(buf, "9223372036854775807")) return (1); u = 18446744073709551615ULL; (void)snprintf(buf, sizeof(buf), $db_cv_seq_ufmt, u); if (strcmp(buf, "18446744073709551615")) return (1); return (0); }],, [db_cv_build_sequence="no"], AC_TRY_LINK(,[ $db_cv_seq_type l; unsigned $db_cv_seq_type u; char buf@<:@100@:>@; buf@<:@0@:>@ = 'a'; l = 9223372036854775807LL; (void)snprintf(buf, sizeof(buf), $db_cv_seq_fmt, l); if (strcmp(buf, "9223372036854775807")) return (1); u = 18446744073709551615ULL; (void)snprintf(buf, sizeof(buf), $db_cv_seq_ufmt, u); if (strcmp(buf, "18446744073709551615")) return (1); return (0); ],, [db_cv_build_sequence="no"])) fi if test "$db_cv_build_sequence" = "yes"; then AC_SUBST(db_seq_decl) db_seq_decl="typedef int64_t db_seq_t;"; AC_DEFINE(HAVE_64BIT_TYPES) AH_TEMPLATE(HAVE_64BIT_TYPES, [Define to 1 if 64-bit types are available.]) else # It still has to compile, but it won't run. db_seq_decl="typedef int db_seq_t;"; fi AC_MSG_RESULT($db_cv_build_sequence) ])