View | Details | Raw Unified | Return to bug 1104 | Differences between
and this patch

Collapse All | Expand All

(-)configure.ac (-64 / +78 lines)
Lines 103-172 if test "$GCC" = "yes" || test "$GCC" = Link Here
103
	fi
103
	fi
104
fi
104
fi
105
105
106
if test -z "$have_llong_max"; then
107
	AC_MSG_CHECKING([for max value of long long])
108
	AC_RUN_IFELSE(
109
		[AC_LANG_SOURCE([[
110
#include <stdio.h>
111
/* Why is this so damn hard? */
112
#ifdef __GNUC__
113
# undef __GNUC__
114
#endif
115
#define __USE_ISOC99
116
#include <limits.h>
117
#define DATA "conftest.llminmax"
118
int main(void) {
119
	FILE *f;
120
	long long i, llmin, llmax = 0;
121
122
	if((f = fopen(DATA,"w")) == NULL)
123
		exit(1);
124
125
#if defined(LLONG_MIN) && defined(LLONG_MAX)
126
	fprintf(stderr, "Using system header for LLONG_MIN and LLONG_MAX\n");
127
	llmin = LLONG_MIN;
128
	llmax = LLONG_MAX;
129
#else
130
	fprintf(stderr, "Calculating  LLONG_MIN and LLONG_MAX\n");
131
	/* This will work on one's complement and two's complement */
132
	for (i = 1; i > llmax; i <<= 1, i++)
133
		llmax = i;
134
	llmin = llmax + 1LL;	/* wrap */
135
#endif
136
137
	/* Sanity check */
138
	if (llmin + 1 < llmin || llmin - 1 < llmin || llmax + 1 > llmax
139
	    || llmax - 1 > llmax) {
140
		fprintf(f, "unknown unknown\n");
141
		exit(2);
142
	}
143
144
	if (fprintf(f ,"%lld %lld", llmin, llmax) < 0)
145
		exit(3);
146
147
	exit(0);
148
}
149
		]])],
150
		[
151
			llong_min=`$AWK '{print $1}' conftest.llminmax`
152
			llong_max=`$AWK '{print $2}' conftest.llminmax`
153
			AC_MSG_RESULT($llong_max)
154
			AC_DEFINE_UNQUOTED(LLONG_MAX, [${llong_max}LL],
155
			    [max value of long long calculated by configure])
156
			AC_MSG_CHECKING([for min value of long long])
157
			AC_MSG_RESULT($llong_min)
158
			AC_DEFINE_UNQUOTED(LLONG_MIN, [${llong_min}LL],
159
			    [min value of long long calculated by configure])
160
		],
161
		[
162
			AC_MSG_RESULT(not found)
163
		],
164
		[
165
			AC_MSG_WARN([cross compiling: not checking])
166
		]
167
	)
168
fi
169
170
AC_ARG_WITH(rpath,
106
AC_ARG_WITH(rpath,
171
	[  --without-rpath         Disable auto-added -R linker paths],
107
	[  --without-rpath         Disable auto-added -R linker paths],
172
	[
108
	[
Lines 1953-1958 if test "x$ac_cv_sizeof_long_long_int" = Link Here
1953
	ac_cv_sizeof_long_long_int=0
1889
	ac_cv_sizeof_long_long_int=0
1954
fi
1890
fi
1955
1891
1892
# compute LLONG_MIN and LLONG_MAX if we don't know them.
1893
if test -z "$have_llong_max"; then
1894
	AC_MSG_CHECKING([for max value of long long])
1895
	AC_RUN_IFELSE(
1896
		[AC_LANG_SOURCE([[
1897
#include <stdio.h>
1898
/* Why is this so damn hard? */
1899
#ifdef __GNUC__
1900
# undef __GNUC__
1901
#endif
1902
#define __USE_ISOC99
1903
#include <limits.h>
1904
#define DATA "conftest.llminmax"
1905
int main(void) {
1906
	FILE *f;
1907
	long long i, llmin, llmax = 0;
1908
1909
	if((f = fopen(DATA,"w")) == NULL)
1910
		exit(1);
1911
1912
#if defined(LLONG_MIN) && defined(LLONG_MAX)
1913
	fprintf(stderr, "Using system header for LLONG_MIN and LLONG_MAX\n");
1914
	llmin = LLONG_MIN;
1915
	llmax = LLONG_MAX;
1916
#else
1917
	fprintf(stderr, "Calculating  LLONG_MIN and LLONG_MAX\n");
1918
	/* This will work on one's complement and two's complement */
1919
	for (i = 1; i > llmax; i <<= 1, i++)
1920
		llmax = i;
1921
	llmin = llmax + 1LL;	/* wrap */
1922
#endif
1923
1924
	/* Sanity check */
1925
	if (llmin + 1 < llmin || llmin - 1 < llmin || llmax + 1 > llmax
1926
	    || llmax - 1 > llmax) {
1927
		fprintf(f, "unknown unknown\n");
1928
		exit(2);
1929
	}
1930
1931
	if (fprintf(f ,"%lld %lld", llmin, llmax) < 0)
1932
		exit(3);
1933
1934
	exit(0);
1935
}
1936
		]])],
1937
		[
1938
			llong_min=`$AWK '{print $1}' conftest.llminmax`
1939
			llong_max=`$AWK '{print $2}' conftest.llminmax`
1940
1941
			# snprintf on some Tru64s doesn't understand "%lld"
1942
			case "$host" in
1943
			alpha-dec-osf*)
1944
				if test "x$ac_cv_sizeof_long_long_int" = "x8" &&
1945
				  "x$llong_min" = "xld"; then
1946
					llong_min="-9223372036854775808"
1947
					llong_max="9223372036854775807"
1948
				fi
1949
				;;
1950
			esac
1951
1952
			AC_MSG_RESULT($llong_max)
1953
			AC_DEFINE_UNQUOTED(LLONG_MAX, [${llong_max}LL],
1954
			    [max value of long long calculated by configure])
1955
			AC_MSG_CHECKING([for min value of long long])
1956
			AC_MSG_RESULT($llong_min)
1957
			AC_DEFINE_UNQUOTED(LLONG_MIN, [${llong_min}LL],
1958
			    [min value of long long calculated by configure])
1959
		],
1960
		[
1961
			AC_MSG_RESULT(not found)
1962
		],
1963
		[
1964
			AC_MSG_WARN([cross compiling: not checking])
1965
		]
1966
	)
1967
fi
1968
1969
1956
# More checks for data types
1970
# More checks for data types
1957
AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int, [
1971
AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int, [
1958
	AC_TRY_COMPILE(
1972
	AC_TRY_COMPILE(

Return to bug 1104