diff --git a/wscript b/wscript index 0b23397c..378c29b6 100644 --- a/wscript +++ b/wscript @@ -301,12 +301,17 @@ def configure(conf): # set _FILE_OFFSET_BITS=64 for filesystems with 64-bit inodes if conf.env.DEST_OS != 'win32' and conf.env.DEST_SIZEOF_VOID_P == 4: - file_offset_bits_usable = conf.check_cc(fragment='''#define _FILE_OFFSET_BITS 64 - #include - #ifndef __USE_FILE_OFFSET64 - #error - #endif - int main(void){ return 0; }''', + # check was borrowed from libarchive source code + file_offset_bits_usable = conf.check_cc(fragment=''' +#define _FILE_OFFSET_BITS 64 +#include +#define KB ((off_t)1024) +#define MB ((off_t)1024 * KB) +#define GB ((off_t)1024 * MB) +#define TB ((off_t)1024 * GB) +int t2[(((64 * GB -1) % 671088649) == 268434537) + && (((TB - (64 * GB -1) + 255) % 1792151290) == 305159546)? 1: -1]; +int main(void) { return 0; }''', msg='Checking if _FILE_OFFSET_BITS can be defined to 64', mandatory=False) if file_offset_bits_usable: conf.define('_FILE_OFFSET_BITS', 64)