summaryrefslogtreecommitdiff
path: root/m4/ullong_max.m4
blob: 49fc3402d4d9706117c2b53afe123b6f8821b304 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# ullong_max.m4 - define ULLONG_MAX if necessary

dnl Copyright (C) 2005 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.

# Written by Paul Eggert.

AC_DEFUN([gl_ULLONG_MAX],
[
  dnl Avoid _AC_COMPUTE_INT-related macros, as they may not work with
  dnl types wider than long int, due to problems with expr.
  AC_CACHE_CHECK([for ULLONG_MAX], gl_cv_ullong_max,
    [gl_cv_ullong_max=no
     AC_EGREP_CPP([ULLONG_MAX is defined],
       [
	#include <limits.h>
	#ifdef ULLONG_MAX
	 "ULLONG_MAX is defined"
	#endif
       ],
       [gl_cv_ullong_max=yes])
     case $gl_cv_ullong_max in
     no)
       for gl_expr in \
	 18446744073709551615ULL \
	 4722366482869645213695ULL \
	 340282366920938463463374607431768211455ULL
       do
	 AC_TRY_COMPILE([],
	   [char test[$gl_expr == (unsigned long long int) -1 ? 1 : -1];
	    static unsigned long long int i = $gl_expr;
	    return i && test;],
	   [gl_cv_ullong_max=$gl_expr])
         test $gl_cv_ullong_max != no && break
       done
     esac])
  case $gl_cv_ullong_max in
  yes | no) ;;
  *)
    AC_DEFINE_UNQUOTED([ULLONG_MAX], [$gl_cv_ullong_max],
      [Define as the maximum value of the type 'unsigned long long int',
       if the system doesn't define it, and if the system has that type.]);;
  esac
])