summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--byterun/config.h8
-rwxr-xr-xconfigure13
2 files changed, 17 insertions, 4 deletions
diff --git a/byterun/config.h b/byterun/config.h
index 02bdd53be..b8d457818 100644
--- a/byterun/config.h
+++ b/byterun/config.h
@@ -47,14 +47,14 @@ typedef unsigned short uint32;
#if defined(ARCH_INT64_TYPE)
typedef ARCH_INT64_TYPE int64;
typedef ARCH_UINT64_TYPE uint64;
-#elif SIZEOF_LONG == 8
-typedef long int64;
-typedef unsigned long uint64;
-#define ARCH_INT64_PRINTF_FORMAT "l"
#elif SIZEOF_LONGLONG == 8
typedef long long int64;
typedef unsigned long long uint64;
#define ARCH_INT64_PRINTF_FORMAT "ll"
+#elif SIZEOF_LONG == 8
+typedef long int64;
+typedef unsigned long uint64;
+#define ARCH_INT64_PRINTF_FORMAT "l"
#else
#error "No 64-bit integer type available"
#endif
diff --git a/configure b/configure
index f2d312d55..995b43a54 100755
--- a/configure
+++ b/configure
@@ -529,6 +529,19 @@ echo "#define SIZEOF_PTR $3" >> m.h
echo "#define SIZEOF_SHORT $4" >> m.h
echo "#define SIZEOF_LONGLONG $5" >> m.h
+# Temporary fix: some OCaml programs, e.g. Coq, assume that
+# ARCH_INT64_TYPE is defined in config/m.h. Put a definition
+# there, even if it duplicates the logic present in config.h
+if test $5 = 8; then
+ echo '#define ARCH_INT64_TYPE long long' >> m.h
+ echo '#define ARCH_UINT64_TYPE unsigned long long' >> m.h
+ echo '#define ARCH_INT64_PRINTF_FORMAT "ll"' >> m.h
+else
+ echo '#define ARCH_INT64_TYPE long' >> m.h
+ echo '#define ARCH_UINT64_TYPE unsigned long' >> m.h
+ echo '#define ARCH_INT64_PRINTF_FORMAT "l"' >> m.h
+fi
+
# Determine endianness
sh ./runtest endian.c