Based on a patch by Apple.
--HG--
branch : HEAD
AC_SUBST(dict_drivers)
dnl **
-dnl ** Index file compatibility flags
+dnl ** Endianess
dnl **
-dnl * currently just checking for endianess
-
-AC_C_BIGENDIAN
-
-if test $ac_cv_c_bigendian = yes; then
- flags=0
-else
- flags=1
-fi
-
-AC_DEFINE_UNQUOTED(MAIL_INDEX_COMPAT_FLAGS, $flags, Index file compatibility flags)
+dnl At least Apple's gcc supports __BIG_ENDIAN__ and __LITTLE_ENDIAN__
+dnl defines. Use them if possible to allow cross-compiling.
+AC_MSG_CHECKING([if __BIG_ENDIAN__ or __LITTLE_ENDIAN__ is defined])
+AC_TRY_COMPILE([
+ #if !(__BIG_ENDIAN__ || __LITTLE_ENDIAN__)
+ #error nope
+ #endif
+], [
+], [
+ AC_DEFINE(WORDS_BIGENDIAN, __BIG_ENDIAN__, Define if your CPU is big endian)
+ AC_MSG_RESULT(yes)
+], [
+ AC_MSG_RESULT(no)
+ AC_C_BIGENDIAN
+])
dnl **
dnl ** IPv6 support
{
enum mail_index_header_compat_flags compat_flags = 0;
-#ifndef WORDS_BIGENDIAN
+#if !WORDS_BIGENDIAN
compat_flags |= MAIL_INDEX_COMPAT_LITTLE_ENDIAN;
#endif
hdr->header_size = sizeof(*hdr);
hdr->record_size = sizeof(struct mail_index_record);
-#ifndef WORDS_BIGENDIAN
+#if !WORDS_BIGENDIAN
hdr->compat_flags |= MAIL_INDEX_COMPAT_LITTLE_ENDIAN;
#endif
index->index_lock_timeout = FALSE;
}
-#ifdef WORDS_BIGENDIAN
+#if WORDS_BIGENDIAN
/* FIXME: Unfortunately these functions were originally written to use
endian-specific code and we can't avoid that without breaking backwards
compatibility. When we do break it, just select one of these. */
size_t t, s;
uint32_t tmp;
-#ifndef WORDS_BIGENDIAN
+#if !WORDS_BIGENDIAN
struct sha1_ctxt tctxt;
memmove(&tctxt.m.b8[0], &ctxt->m.b8[0], 64);
ctxt->m.b8[0] = tctxt.m.b8[3]; ctxt->m.b8[1] = tctxt.m.b8[2];
memset(&ctxt->m.b8[padstart], 0, padlen - 8);
COUNT += (padlen - 8);
COUNT %= 64;
-#ifdef WORDS_BIGENDIAN
+#if WORDS_BIGENDIAN
PUTPAD(ctxt->c.b8[0]); PUTPAD(ctxt->c.b8[1]);
PUTPAD(ctxt->c.b8[2]); PUTPAD(ctxt->c.b8[3]);
PUTPAD(ctxt->c.b8[4]); PUTPAD(ctxt->c.b8[5]);
digest = (uint8_t *)digest0;
sha1_pad(ctxt);
-#ifdef WORDS_BIGENDIAN
+#if WORDS_BIGENDIAN
memmove(digest, &ctxt->h.b8[0], 20);
#else
digest[0] = ctxt->h.b8[3]; digest[1] = ctxt->h.b8[2];