1*4882a593SmuzhiyunFrom fc392c939b9a18959482f588aff0afc29dd6d30a Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Romain Naour <romain.naour@openwide.fr> 3*4882a593SmuzhiyunDate: Fri, 23 Jan 2015 22:20:18 +0100 4*4882a593SmuzhiyunSubject: [PATCH 6/6] unix/configure: borrow the LFS test from autotools. 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunInfozip's LFS check can't work for cross-compilation 7*4882a593Smuzhiyunsince it try to run a target's binary on the host system. 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunInstead, use to LFS test used by autotools which is a 10*4882a593Smuzhiyuncompilation test. 11*4882a593Smuzhiyun(see autotools/lib/autoconf/specific.m4) 12*4882a593Smuzhiyun 13*4882a593SmuzhiyunReported-by: Richard Genoud <richard.genoud@gmail.com> 14*4882a593SmuzhiyunSigned-off-by: Romain Naour <romain.naour@openwide.fr> 15*4882a593Smuzhiyun--- 16*4882a593Smuzhiyun unix/configure | 51 ++++++++++++++++++--------------------------------- 17*4882a593Smuzhiyun 1 file changed, 18 insertions(+), 33 deletions(-) 18*4882a593Smuzhiyun 19*4882a593Smuzhiyundiff --git a/unix/configure b/unix/configure 20*4882a593Smuzhiyunindex 7bfc9eb..588f269 100644 21*4882a593Smuzhiyun--- a/unix/configure 22*4882a593Smuzhiyun+++ b/unix/configure 23*4882a593Smuzhiyun@@ -237,9 +237,8 @@ _EOF_ 24*4882a593Smuzhiyun $CC $CFLAGS -c conftest.c >/dev/null 2>/dev/null 25*4882a593Smuzhiyun [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_OFF_T" 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun-# Now we set the 64-bit file environment and check the size of off_t 28*4882a593Smuzhiyun-# Added 11/4/2003 EG 29*4882a593Smuzhiyun-# Revised 8/12/2004 EG 30*4882a593Smuzhiyun+# LFS check borrowed from autotools sources 31*4882a593Smuzhiyun+# lib/autoconf/specific.m4 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun echo Check for Large File Support 34*4882a593Smuzhiyun cat > conftest.c << _EOF_ 35*4882a593Smuzhiyun@@ -247,24 +246,22 @@ cat > conftest.c << _EOF_ 36*4882a593Smuzhiyun # define _LARGEFILE64_SOURCE 37*4882a593Smuzhiyun # define _FILE_OFFSET_BITS 64 /* select default interface as 64 bit */ 38*4882a593Smuzhiyun # define _LARGE_FILES /* some OSes need this for 64-bit off_t */ 39*4882a593Smuzhiyun+ 40*4882a593Smuzhiyun #include <sys/types.h> 41*4882a593Smuzhiyun-#include <sys/stat.h> 42*4882a593Smuzhiyun-#include <unistd.h> 43*4882a593Smuzhiyun-#include <stdio.h> 44*4882a593Smuzhiyun-int main() 45*4882a593Smuzhiyun+ /* Check that off_t can represent 2**63 - 1 correctly. 46*4882a593Smuzhiyun+ We can't simply define LARGE_OFF_T to be 9223372036854775807, 47*4882a593Smuzhiyun+ since some C++ compilers masquerading as C compilers 48*4882a593Smuzhiyun+ incorrectly reject 9223372036854775807. */ 49*4882a593Smuzhiyun+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) 50*4882a593Smuzhiyun+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 51*4882a593Smuzhiyun+ && LARGE_OFF_T % 2147483647 == 1) 52*4882a593Smuzhiyun+ ? 1 : -1]; 53*4882a593Smuzhiyun+int 54*4882a593Smuzhiyun+main () 55*4882a593Smuzhiyun { 56*4882a593Smuzhiyun- off_t offset; 57*4882a593Smuzhiyun- struct stat s; 58*4882a593Smuzhiyun- /* see if have 64-bit off_t */ 59*4882a593Smuzhiyun- if (sizeof(offset) < 8) 60*4882a593Smuzhiyun- return 1; 61*4882a593Smuzhiyun- printf(" off_t is %d bytes\n", sizeof(off_t)); 62*4882a593Smuzhiyun- /* see if have 64-bit stat */ 63*4882a593Smuzhiyun- if (sizeof(s.st_size) < 8) { 64*4882a593Smuzhiyun- printf(" s.st_size is %d bytes\n", sizeof(s.st_size)); 65*4882a593Smuzhiyun- return 2; 66*4882a593Smuzhiyun- } 67*4882a593Smuzhiyun- return 3; 68*4882a593Smuzhiyun+ 69*4882a593Smuzhiyun+ ; 70*4882a593Smuzhiyun+ return 0; 71*4882a593Smuzhiyun } 72*4882a593Smuzhiyun _EOF_ 73*4882a593Smuzhiyun # compile it 74*4882a593Smuzhiyun@@ -272,22 +269,10 @@ $CC -o conftest conftest.c >/dev/null 2>/dev/null 75*4882a593Smuzhiyun if [ $? -ne 0 ]; then 76*4882a593Smuzhiyun echo -- no Large File Support 77*4882a593Smuzhiyun else 78*4882a593Smuzhiyun-# run it 79*4882a593Smuzhiyun- ./conftest 80*4882a593Smuzhiyun- r=$? 81*4882a593Smuzhiyun- if [ $r -eq 1 ]; then 82*4882a593Smuzhiyun- echo -- no Large File Support - no 64-bit off_t 83*4882a593Smuzhiyun- elif [ $r -eq 2 ]; then 84*4882a593Smuzhiyun- echo -- no Large File Support - no 64-bit stat 85*4882a593Smuzhiyun- elif [ $r -eq 3 ]; then 86*4882a593Smuzhiyun- echo -- yes we have Large File Support! 87*4882a593Smuzhiyun- CFLAGS="${CFLAGS} -DLARGE_FILE_SUPPORT" 88*4882a593Smuzhiyun- else 89*4882a593Smuzhiyun- echo -- no Large File Support - conftest returned $r 90*4882a593Smuzhiyun- fi 91*4882a593Smuzhiyun+ echo -- yes we have Large File Support! 92*4882a593Smuzhiyun+ CFLAGS="${CFLAGS} -DLARGE_FILE_SUPPORT" 93*4882a593Smuzhiyun fi 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun- 96*4882a593Smuzhiyun # Check for wide char for Unicode support 97*4882a593Smuzhiyun # Added 11/24/2005 EG 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun-- 100*4882a593Smuzhiyun1.9.3 101*4882a593Smuzhiyun 102