~ubuntu-branches/ubuntu/precise/parted/precise

« back to all changes in this revision

Viewing changes to gnulib/m4/longlong.m4

  • Committer: Bazaar Package Importer
  • Author(s): Otavio Salvador
  • Date: 2010-02-06 16:39:19 UTC
  • mfrom: (1.1.5 upstream)
  • mto: (7.3.2 experimental)
  • mto: This revision was merged to the branch mainline in revision 48.
  • Revision ID: james.westby@ubuntu.com-20100206163919-nsxr2vtchk0ecabf
Tags: upstream-2.1
ImportĀ upstreamĀ versionĀ 2.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# longlong.m4 serial 10
2
 
dnl Copyright (C) 1999-2006 Free Software Foundation, Inc.
3
 
dnl This file is free software; the Free Software Foundation
4
 
dnl gives unlimited permission to copy and/or distribute it,
5
 
dnl with or without modifications, as long as this notice is preserved.
6
 
 
7
 
dnl From Paul Eggert.
8
 
 
9
 
# Define HAVE_LONG_LONG_INT if 'long long int' works.
10
 
# This fixes a bug in Autoconf 2.60, but can be removed once we
11
 
# assume 2.61 everywhere.
12
 
 
13
 
# Note: If the type 'long long int' exists but is only 32 bits large
14
 
# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
15
 
# defined. In this case you can treat 'long long int' like 'long int'.
16
 
 
17
 
AC_DEFUN([AC_TYPE_LONG_LONG_INT],
18
 
[
19
 
  AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
20
 
    [AC_LINK_IFELSE(
21
 
       [AC_LANG_PROGRAM(
22
 
          [[long long int ll = 9223372036854775807ll;
23
 
            long long int nll = -9223372036854775807LL;
24
 
            typedef int a[((-9223372036854775807LL < 0
25
 
                            && 0 < 9223372036854775807ll)
26
 
                           ? 1 : -1)];
27
 
            int i = 63;]],
28
 
          [[long long int llmax = 9223372036854775807ll;
29
 
            return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
30
 
                    | (llmax / ll) | (llmax % ll));]])],
31
 
       [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
32
 
        dnl If cross compiling, assume the bug isn't important, since
33
 
        dnl nobody cross compiles for this platform as far as we know.
34
 
        AC_RUN_IFELSE(
35
 
          [AC_LANG_PROGRAM(
36
 
             [[@%:@include <limits.h>
37
 
               @%:@ifndef LLONG_MAX
38
 
               @%:@ define HALF \
39
 
                        (1LL << (sizeof (long long int) * CHAR_BIT - 2))
40
 
               @%:@ define LLONG_MAX (HALF - 1 + HALF)
41
 
               @%:@endif]],
42
 
             [[long long int n = 1;
43
 
               int i;
44
 
               for (i = 0; ; i++)
45
 
                 {
46
 
                   long long int m = n << i;
47
 
                   if (m >> i != n)
48
 
                     return 1;
49
 
                   if (LLONG_MAX / 2 < m)
50
 
                     break;
51
 
                 }
52
 
               return 0;]])],
53
 
          [ac_cv_type_long_long_int=yes],
54
 
          [ac_cv_type_long_long_int=no],
55
 
          [ac_cv_type_long_long_int=yes])],
56
 
       [ac_cv_type_long_long_int=no])])
57
 
  if test $ac_cv_type_long_long_int = yes; then
58
 
    AC_DEFINE([HAVE_LONG_LONG_INT], 1,
59
 
      [Define to 1 if the system has the type `long long int'.])
60
 
  fi
61
 
])
62
 
 
63
 
# This macro is obsolescent and should go away soon.
64
 
AC_DEFUN([gl_AC_TYPE_LONG_LONG],
65
 
[
66
 
  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
67
 
  ac_cv_type_long_long=$ac_cv_type_long_long_int
68
 
  if test $ac_cv_type_long_long = yes; then
69
 
    AC_DEFINE(HAVE_LONG_LONG, 1,
70
 
      [Define if you have the 'long long' type.])
71
 
  fi
72
 
])