Fixes bug 7727; fix on 0.2.4.10-alpha.
- Use Ville Laurikari's implementation of AX_CHECK_SIGN() to determine
the signs of types during autoconf. This is better than our old
approach, which didn't work when cross-compiling.
+ - Detect the sign of enum values, rather than assuming that MSC is the
+ only compiler where enum types are all signed. Fix for bug 7727;
+ bugfix on 0.2.4.10-alpha.
AC_MSG_ERROR([You have a signed size_t; that's grossly nonconformant.])
fi
+AX_CHECK_SIGN([enum always],
+ [ AC_DEFINE(ENUM_VALS_ARE_SIGNED, 1, [Define if enum is always signed]) ],
+ [ : ], [
+ enum always { AAA, BBB, CCC };
+])
+
AC_CHECK_SIZEOF(socklen_t, , [AC_INCLUDES_DEFAULT()
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#define DBL_TO_U64(x) ((uint64_t) (x))
#endif
-#if defined(_MSC_VER)
-/* XXXX024 we should instead have a more general check for "Is enum signed?"*/
+#ifdef ENUM_VALS_ARE_SIGNED
#define ENUM_BF(t) unsigned
#else
/** Wrapper for having a bitfield of an enumerated type. Where possible, we
#define CURVE25519_ENABLED
#define USE_CURVE25519_DONNA
+#define ENUM_VALS_ARE_SIGNED 1