Hi HEAD fails to compile in 64-bit mode on Mac OS X 10.6 with gcc 4.2 and -Werror.
What happens is that INT64_FORMAT gets defined as "%ld" (which is correct - "long" and "unsigned long" are 64 bits wide on x86_64), but the check for a working 64-bit int fails, causing INT64_IS_BUSTED to get defined and int64 becoming actually a 32-bit type. This is turn causes warnings when these pseudo int64s are passed to printf with format specified INT64_FORMAT, which get turned to errors by -Werror. configure fails to recognize "long" as a working 64-bit type because the does_int64_work configure test produces warning due to a missing return value declaration for main() and a missing prototype for does_int64_work(). (Aain, those warning are turned into errors by -Werror). I use the following envvar settings (when running ./configure) to force 64-bit mode and -Werror CC=gcc-4.2 CFLAGS="-arch x86_64 -Werror" LDFLAGS="-arch x86_64" The following patch fixed the problem for me - though I didn't yet try it on any other platform that Mac OS X 10.6 with gcc 4.2 and in 64-bit mode. ---------------------------------------------------------------------- diff --git a/config/c-compiler.m4 b/config/c-compiler.m4 index 9ac2c30..c6bd523 100644 --- a/config/c-compiler.m4 +++ b/config/c-compiler.m4 @@ -35,7 +35,7 @@ AC_CACHE_CHECK([whether $1 is 64 bits], [Ac_cachevar], ac_int64 a = 20000001; ac_int64 b = 40000005; -int does_int64_work() +static int does_int64_work() { ac_int64 c,d; @@ -49,8 +49,8 @@ int does_int64_work() return 0; return 1; } -main() { - exit(! does_int64_work()); +int main() { + return(! does_int64_work()); }], [Ac_cachevar=yes], [Ac_cachevar=no], ---------------------------------------------------------------------- best regards, Florian Pflug
smime.p7s
Description: S/MIME Cryptographic Signature