From 431f022263a59595dd7894181515832828a950f9 Mon Sep 17 00:00:00 2001 From: Darren Tucker Date: Tue, 7 Jun 2005 17:53:40 +1000 Subject: - (dtucker) [configure.ac] Continue the hunt for LLONG_MIN and LLONG_MAX: in today's episode we attempt to coax it from limits.h where it may be hiding, failing that we take the DIY approach. Tested by tim@ --- ChangeLog | 7 ++++++- configure.ac | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 71 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2046df86c..efebb2820 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +20050607 + - (dtucker) [configure.ac] Continue the hunt for LLONG_MIN and LLONG_MAX: + in today's episode we attempt to coax it from limits.h where it may be + hiding, failing that we take the DIY approach. Tested by tim@ + 20050603 - (dtucker) [configure.ac] Only try gcc -std=gnu99 if LLONG_MAX isn't defined, and check that it helps before keeping it in CFLAGS. Some old @@ -2681,4 +2686,4 @@ - (djm) Trim deprecated options from INSTALL. Mention UsePAM - (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu -$Id: ChangeLog,v 1.3812 2005/06/03 09:33:10 dtucker Exp $ +$Id: ChangeLog,v 1.3813 2005/06/07 07:53:40 dtucker Exp $ diff --git a/configure.ac b/configure.ac index 00fc858ef..62a11fa1e 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -# $Id: configure.ac,v 1.274 2005/06/03 09:33:10 dtucker Exp $ +# $Id: configure.ac,v 1.275 2005/06/07 07:53:40 dtucker Exp $ # # Copyright (c) 1999-2004 Damien Miller # @@ -96,6 +96,70 @@ if test "$GCC" = "yes" || test "$GCC" = "egcs"; then fi fi +if test -z "$have_llong_max"; then + AC_MSG_CHECKING([for max value of long long]) + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +/* Why is this so damn hard? */ +#ifdef __GNUC__ +# undef __GNUC__ +#endif +#define __USE_ISOC99 +#include +#define DATA "conftest.llminmax" +int main(void) { + FILE *f; + long long i, llmin, llmax = 0; + + if((f = fopen(DATA,"w")) == NULL) + exit(1); + +#if defined(LLONG_MIN) && defined(LLONG_MAX) + fprintf(stderr, "Using system header for LLONG_MIN and LLONG_MAX\n"); + llmin = LLONG_MIN; + llmax = LLONG_MAX; +#else + fprintf(stderr, "Calculating LLONG_MIN and LLONG_MAX\n"); + /* This will work on one's complement and two's complement */ + for (i = 1; i > llmax; i <<= 1, i++) + llmax = i; + llmin = llmax + 1LL; /* wrap */ +#endif + + /* Sanity check */ + if (llmin + 1 < llmin || llmin - 1 < llmin || llmax + 1 > llmax + || llmax - 1 > llmax) { + fprintf(f, "unknown unknown\n"); + exit(2); + } + + if (fprintf(f ,"%lld %lld", llmin, llmax) < 0) + exit(3); + + exit(0); +} + ]])], + [ + llong_min=`$AWK '{print $1}' conftest.llminmax` + llong_max=`$AWK '{print $2}' conftest.llminmax` + AC_MSG_RESULT($llong_max) + AC_DEFINE_UNQUOTED(LLONG_MAX, [${llong_max}LL], + [max value of long long calculated by configure]) + AC_MSG_CHECKING([for min value of long long]) + AC_MSG_RESULT($llong_min) + AC_DEFINE_UNQUOTED(LLONG_MIN, [${llong_min}LL], + [min value of long long calculated by configure]) + ], + [ + AC_MSG_RESULT(not found) + ], + [ + AC_MSG_WARN([cross compiling: not checking]) + ] + ) +fi + AC_ARG_WITH(rpath, [ --without-rpath Disable auto-added -R linker paths], [ -- cgit v1.2.3