On 27/09/15 09:05, Edmund Grimley Evans wrote:
peter green <plugwash@p10link.net>:From the ppc64 build log (s390x was much the same).Thank you for taking the trouble to look at the build logs; I just saw that it was "Installed" and naively assumed it had worked! Perhaps then the architectures for which "INTEGER" is "long" (or whatever) really are exactly those architectures for which a pointer is 64-bit. Umm, you seem to be reading things backwards. #if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__) typedef int integer; typedef int logical; #else typedef long int integer; typedef long int logical; #endif That code is defining "integer" and "logical" as "long" on most architectures but as "int" on a list of 64-bit architectures. My interpretation is that the code is trying to make "integer" and "logical" 32-bit on all systems. If you only care about Debian and other modern systems you could probablly reduce the code to typedef int integer; typedef int logical; Since int is 32-bit on all Debian architectures. If my understanding of the intent of the ifdef is correct and you believe it's ok to rely on c99 stuff you may as well just do#include <stdint.h> #if UINTPTR_MAX == UINT64_MAX I think that last approach is required to work by the standards, while __LP64__ is a GCC extension, though I might be wrong. #include < inttypes.h >typedef int32_t integer; typedef int32_t logical; |