~hamo/ubuntu/precise/grub2/grub2.hi_res

« back to all changes in this revision

Viewing changes to m4/stdint.m4

  • Committer: Bazaar Package Importer
  • Author(s): Colin Watson, Colin Watson, Evan Broder, Mario Limonciello
  • Date: 2010-11-24 13:59:55 UTC
  • mfrom: (1.17.6 upstream) (17.6.15 experimental)
  • Revision ID: james.westby@ubuntu.com-20101124135955-r6ii5sepayr7jt53
Tags: 1.99~20101124-1ubuntu1
[ Colin Watson ]
* Resynchronise with Debian experimental.  Remaining changes:
  - Adjust for default Ubuntu boot options ("quiet splash").
  - Default to hiding the menu; holding down Shift at boot will show it.
  - Set a monochromatic theme for Ubuntu.
  - Apply Ubuntu GRUB Legacy changes to legacy update-grub script: title,
    recovery mode, quiet option, tweak how memtest86+ is displayed, and
    use UUIDs where appropriate.
  - Fix backslash-escaping in merge_debconf_into_conf.
  - Remove "GNU/Linux" from default distributor string.
  - Add crashkernel= options if kdump and makedumpfile are available.
  - If other operating systems are installed, then automatically unhide
    the menu.  Otherwise, if GRUB_HIDDEN_TIMEOUT is 0, then use keystatus
    if available to check whether Shift is pressed.  If it is, show the
    menu, otherwise boot immediately.  If keystatus is not available, then
    fall back to a short delay interruptible with Escape.
  - Allow Shift to interrupt 'sleep --interruptible'.
  - Don't display introductory message about line editing unless we're
    actually offering a shell prompt.  Don't clear the screen just before
    booting if we never drew the menu in the first place.
  - Remove some verbose messages printed before reading the configuration
    file.
  - Suppress progress messages as the kernel and initrd load for
    non-recovery kernel menu entries.
  - Change prepare_grub_to_access_device to handle filesystems
    loop-mounted on file images.
  - Ignore devices loop-mounted from files in 10_linux.
  - Show the boot menu if the previous boot failed, that is if it failed
    to get to the end of one of the normal runlevels.
  - Don't generate /boot/grub/device.map during grub-install or
    grub-mkconfig by default.
  - Adjust upgrade version checks for Ubuntu.
  - Don't display "GRUB loading" unless Shift is held down.
  - Adjust versions of grub-doc and grub-legacy-doc conflicts to tolerate
    our backport of the grub-doc split.
  - Fix LVM/RAID probing in the absence of /boot/grub/device.map.
  - Look for .mo files in /usr/share/locale-langpack as well, in
    preference.
  - Make sure GRUB_TIMEOUT isn't quoted unnecessarily.
  - Probe all devices in 'grub-probe --target=drive' if
    /boot/grub/device.map is missing.
  - Build-depend on qemu-kvm rather than qemu-system for grub-pc tests.
  - Use qemu rather than qemu-system-i386.
  - Program vesafb on BIOS systems rather than efifb.
  - Add a grub-rescue-efi-amd64 package containing a rescue CD-ROM image
    for EFI-AMD64.
  - On Wubi, don't ask for an install device, but just update wubildr
    using the diverted grub-install.
  - When embedding the core image in a post-MBR gap, check for and avoid
    sectors matching any of a list of known signatures.
  - Disable video_bochs and video_cirrus on PC BIOS systems, as probing
    PCI space seems to break on some systems.
* Downgrade "ACPI shutdown failed" error to a debug message, since it can
  cause spurious test failures.

[ Evan Broder ]
* Enable lua from grub-extras.
* Incorporate the bitop library into lua.
* Add enum_pci function to grub module in lua.
* Switch back to gfxpayload=keep by default, unless the video hardware
  is known to not support it.

[ Mario Limonciello ]
* Built part_msdos and vfat into bootx64.efi (LP: #677758)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# stdint.m4 serial 35
 
2
dnl Copyright (C) 2001-2010 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 and Bruno Haible.
 
8
dnl Test whether <stdint.h> is supported or must be substituted.
 
9
 
 
10
AC_DEFUN([gl_STDINT_H],
 
11
[
 
12
  AC_PREREQ([2.59])dnl
 
13
 
 
14
  dnl Check for long long int and unsigned long long int.
 
15
  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
 
16
  if test $ac_cv_type_long_long_int = yes; then
 
17
    HAVE_LONG_LONG_INT=1
 
18
  else
 
19
    HAVE_LONG_LONG_INT=0
 
20
  fi
 
21
  AC_SUBST([HAVE_LONG_LONG_INT])
 
22
  AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
 
23
  if test $ac_cv_type_unsigned_long_long_int = yes; then
 
24
    HAVE_UNSIGNED_LONG_LONG_INT=1
 
25
  else
 
26
    HAVE_UNSIGNED_LONG_LONG_INT=0
 
27
  fi
 
28
  AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT])
 
29
 
 
30
  dnl Check for <inttypes.h>.
 
31
  dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h.
 
32
  if test $ac_cv_header_inttypes_h = yes; then
 
33
    HAVE_INTTYPES_H=1
 
34
  else
 
35
    HAVE_INTTYPES_H=0
 
36
  fi
 
37
  AC_SUBST([HAVE_INTTYPES_H])
 
38
 
 
39
  dnl Check for <sys/types.h>.
 
40
  dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_sys_types_h.
 
41
  if test $ac_cv_header_sys_types_h = yes; then
 
42
    HAVE_SYS_TYPES_H=1
 
43
  else
 
44
    HAVE_SYS_TYPES_H=0
 
45
  fi
 
46
  AC_SUBST([HAVE_SYS_TYPES_H])
 
47
 
 
48
  gl_CHECK_NEXT_HEADERS([stdint.h])
 
49
  if test $ac_cv_header_stdint_h = yes; then
 
50
    HAVE_STDINT_H=1
 
51
  else
 
52
    HAVE_STDINT_H=0
 
53
  fi
 
54
  AC_SUBST([HAVE_STDINT_H])
 
55
 
 
56
  dnl Now see whether we need a substitute <stdint.h>.
 
57
  if test $ac_cv_header_stdint_h = yes; then
 
58
    AC_CACHE_CHECK([whether stdint.h conforms to C99],
 
59
      [gl_cv_header_working_stdint_h],
 
60
      [gl_cv_header_working_stdint_h=no
 
61
       AC_COMPILE_IFELSE([
 
62
         AC_LANG_PROGRAM([[
 
63
#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
 
64
#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
 
65
#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
 
66
#include <stdint.h>
 
67
/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>.  */
 
68
#if !(defined WCHAR_MIN && defined WCHAR_MAX)
 
69
#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
 
70
#endif
 
71
]
 
72
gl_STDINT_INCLUDES
 
73
[
 
74
#ifdef INT8_MAX
 
75
int8_t a1 = INT8_MAX;
 
76
int8_t a1min = INT8_MIN;
 
77
#endif
 
78
#ifdef INT16_MAX
 
79
int16_t a2 = INT16_MAX;
 
80
int16_t a2min = INT16_MIN;
 
81
#endif
 
82
#ifdef INT32_MAX
 
83
int32_t a3 = INT32_MAX;
 
84
int32_t a3min = INT32_MIN;
 
85
#endif
 
86
#ifdef INT64_MAX
 
87
int64_t a4 = INT64_MAX;
 
88
int64_t a4min = INT64_MIN;
 
89
#endif
 
90
#ifdef UINT8_MAX
 
91
uint8_t b1 = UINT8_MAX;
 
92
#else
 
93
typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
 
94
#endif
 
95
#ifdef UINT16_MAX
 
96
uint16_t b2 = UINT16_MAX;
 
97
#endif
 
98
#ifdef UINT32_MAX
 
99
uint32_t b3 = UINT32_MAX;
 
100
#endif
 
101
#ifdef UINT64_MAX
 
102
uint64_t b4 = UINT64_MAX;
 
103
#endif
 
104
int_least8_t c1 = INT8_C (0x7f);
 
105
int_least8_t c1max = INT_LEAST8_MAX;
 
106
int_least8_t c1min = INT_LEAST8_MIN;
 
107
int_least16_t c2 = INT16_C (0x7fff);
 
108
int_least16_t c2max = INT_LEAST16_MAX;
 
109
int_least16_t c2min = INT_LEAST16_MIN;
 
110
int_least32_t c3 = INT32_C (0x7fffffff);
 
111
int_least32_t c3max = INT_LEAST32_MAX;
 
112
int_least32_t c3min = INT_LEAST32_MIN;
 
113
int_least64_t c4 = INT64_C (0x7fffffffffffffff);
 
114
int_least64_t c4max = INT_LEAST64_MAX;
 
115
int_least64_t c4min = INT_LEAST64_MIN;
 
116
uint_least8_t d1 = UINT8_C (0xff);
 
117
uint_least8_t d1max = UINT_LEAST8_MAX;
 
118
uint_least16_t d2 = UINT16_C (0xffff);
 
119
uint_least16_t d2max = UINT_LEAST16_MAX;
 
120
uint_least32_t d3 = UINT32_C (0xffffffff);
 
121
uint_least32_t d3max = UINT_LEAST32_MAX;
 
122
uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
 
123
uint_least64_t d4max = UINT_LEAST64_MAX;
 
124
int_fast8_t e1 = INT_FAST8_MAX;
 
125
int_fast8_t e1min = INT_FAST8_MIN;
 
126
int_fast16_t e2 = INT_FAST16_MAX;
 
127
int_fast16_t e2min = INT_FAST16_MIN;
 
128
int_fast32_t e3 = INT_FAST32_MAX;
 
129
int_fast32_t e3min = INT_FAST32_MIN;
 
130
int_fast64_t e4 = INT_FAST64_MAX;
 
131
int_fast64_t e4min = INT_FAST64_MIN;
 
132
uint_fast8_t f1 = UINT_FAST8_MAX;
 
133
uint_fast16_t f2 = UINT_FAST16_MAX;
 
134
uint_fast32_t f3 = UINT_FAST32_MAX;
 
135
uint_fast64_t f4 = UINT_FAST64_MAX;
 
136
#ifdef INTPTR_MAX
 
137
intptr_t g = INTPTR_MAX;
 
138
intptr_t gmin = INTPTR_MIN;
 
139
#endif
 
140
#ifdef UINTPTR_MAX
 
141
uintptr_t h = UINTPTR_MAX;
 
142
#endif
 
143
intmax_t i = INTMAX_MAX;
 
144
uintmax_t j = UINTMAX_MAX;
 
145
 
 
146
#include <limits.h> /* for CHAR_BIT */
 
147
#define TYPE_MINIMUM(t) \
 
148
  ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
 
149
#define TYPE_MAXIMUM(t) \
 
150
  ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
 
151
struct s {
 
152
  int check_PTRDIFF:
 
153
      PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
 
154
      && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
 
155
      ? 1 : -1;
 
156
  /* Detect bug in FreeBSD 6.0 / ia64.  */
 
157
  int check_SIG_ATOMIC:
 
158
      SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
 
159
      && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
 
160
      ? 1 : -1;
 
161
  int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
 
162
  int check_WCHAR:
 
163
      WCHAR_MIN == TYPE_MINIMUM (wchar_t)
 
164
      && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
 
165
      ? 1 : -1;
 
166
  /* Detect bug in mingw.  */
 
167
  int check_WINT:
 
168
      WINT_MIN == TYPE_MINIMUM (wint_t)
 
169
      && WINT_MAX == TYPE_MAXIMUM (wint_t)
 
170
      ? 1 : -1;
 
171
 
 
172
  /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others.  */
 
173
  int check_UINT8_C:
 
174
        (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
 
175
  int check_UINT16_C:
 
176
        (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
 
177
 
 
178
  /* Detect bugs in OpenBSD 3.9 stdint.h.  */
 
179
#ifdef UINT8_MAX
 
180
  int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
 
181
#endif
 
182
#ifdef UINT16_MAX
 
183
  int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
 
184
#endif
 
185
#ifdef UINT32_MAX
 
186
  int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
 
187
#endif
 
188
#ifdef UINT64_MAX
 
189
  int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
 
190
#endif
 
191
  int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
 
192
  int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
 
193
  int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
 
194
  int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
 
195
  int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
 
196
  int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
 
197
  int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
 
198
  int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
 
199
  int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
 
200
  int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
 
201
  int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
 
202
};
 
203
         ]])],
 
204
         [dnl Determine whether the various *_MIN, *_MAX macros are usable
 
205
          dnl in preprocessor expression. We could do it by compiling a test
 
206
          dnl program for each of these macros. It is faster to run a program
 
207
          dnl that inspects the macro expansion.
 
208
          dnl This detects a bug on HP-UX 11.23/ia64.
 
209
          AC_RUN_IFELSE([
 
210
            AC_LANG_PROGRAM([[
 
211
#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
 
212
#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
 
213
#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
 
214
#include <stdint.h>
 
215
]
 
216
gl_STDINT_INCLUDES
 
217
[
 
218
#include <stdio.h>
 
219
#include <string.h>
 
220
#define MVAL(macro) MVAL1(macro)
 
221
#define MVAL1(expression) #expression
 
222
static const char *macro_values[] =
 
223
  {
 
224
#ifdef INT8_MAX
 
225
    MVAL (INT8_MAX),
 
226
#endif
 
227
#ifdef INT16_MAX
 
228
    MVAL (INT16_MAX),
 
229
#endif
 
230
#ifdef INT32_MAX
 
231
    MVAL (INT32_MAX),
 
232
#endif
 
233
#ifdef INT64_MAX
 
234
    MVAL (INT64_MAX),
 
235
#endif
 
236
#ifdef UINT8_MAX
 
237
    MVAL (UINT8_MAX),
 
238
#endif
 
239
#ifdef UINT16_MAX
 
240
    MVAL (UINT16_MAX),
 
241
#endif
 
242
#ifdef UINT32_MAX
 
243
    MVAL (UINT32_MAX),
 
244
#endif
 
245
#ifdef UINT64_MAX
 
246
    MVAL (UINT64_MAX),
 
247
#endif
 
248
    NULL
 
249
  };
 
250
]], [[
 
251
  const char **mv;
 
252
  for (mv = macro_values; *mv != NULL; mv++)
 
253
    {
 
254
      const char *value = *mv;
 
255
      /* Test whether it looks like a cast expression.  */
 
256
      if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
 
257
          || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
 
258
          || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
 
259
          || strncmp (value, "((int)"/*)*/, 6) == 0
 
260
          || strncmp (value, "((signed short)"/*)*/, 15) == 0
 
261
          || strncmp (value, "((signed char)"/*)*/, 14) == 0)
 
262
        return 1;
 
263
    }
 
264
  return 0;
 
265
]])],
 
266
              [gl_cv_header_working_stdint_h=yes],
 
267
              [],
 
268
              [dnl When cross-compiling, assume it works.
 
269
               gl_cv_header_working_stdint_h=yes
 
270
              ])
 
271
         ])
 
272
      ])
 
273
  fi
 
274
  if test "$gl_cv_header_working_stdint_h" = yes; then
 
275
    STDINT_H=
 
276
  else
 
277
    dnl Check for <sys/inttypes.h>, and for
 
278
    dnl <sys/bitypes.h> (used in Linux libc4 >= 4.6.7 and libc5).
 
279
    AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h])
 
280
    if test $ac_cv_header_sys_inttypes_h = yes; then
 
281
      HAVE_SYS_INTTYPES_H=1
 
282
    else
 
283
      HAVE_SYS_INTTYPES_H=0
 
284
    fi
 
285
    AC_SUBST([HAVE_SYS_INTTYPES_H])
 
286
    if test $ac_cv_header_sys_bitypes_h = yes; then
 
287
      HAVE_SYS_BITYPES_H=1
 
288
    else
 
289
      HAVE_SYS_BITYPES_H=0
 
290
    fi
 
291
    AC_SUBST([HAVE_SYS_BITYPES_H])
 
292
 
 
293
    dnl Check for <wchar.h> (missing in Linux uClibc when built without wide
 
294
    dnl character support).
 
295
    AC_CHECK_HEADERS_ONCE([wchar.h])
 
296
 
 
297
    gl_STDINT_TYPE_PROPERTIES
 
298
    STDINT_H=stdint.h
 
299
  fi
 
300
  AC_SUBST([STDINT_H])
 
301
])
 
302
 
 
303
dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES)
 
304
dnl Determine the size of each of the given types in bits.
 
305
AC_DEFUN([gl_STDINT_BITSIZEOF],
 
306
[
 
307
  dnl Use a shell loop, to avoid bloating configure, and
 
308
  dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
 
309
  dnl   config.h.in,
 
310
  dnl - extra AC_SUBST calls, so that the right substitutions are made.
 
311
  m4_foreach_w([gltype], [$1],
 
312
    [AH_TEMPLATE([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
 
313
       [Define to the number of bits in type ']gltype['.])])
 
314
  for gltype in $1 ; do
 
315
    AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}],
 
316
      [AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT],
 
317
         [$2
 
318
#include <limits.h>], [result=unknown])
 
319
       eval gl_cv_bitsizeof_${gltype}=\$result
 
320
      ])
 
321
    eval result=\$gl_cv_bitsizeof_${gltype}
 
322
    if test $result = unknown; then
 
323
      dnl Use a nonempty default, because some compilers, such as IRIX 5 cc,
 
324
      dnl do a syntax check even on unused #if conditions and give an error
 
325
      dnl on valid C code like this:
 
326
      dnl   #if 0
 
327
      dnl   # if  > 32
 
328
      dnl   # endif
 
329
      dnl   #endif
 
330
      result=0
 
331
    fi
 
332
    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
 
333
    AC_DEFINE_UNQUOTED([BITSIZEOF_${GLTYPE}], [$result])
 
334
    eval BITSIZEOF_${GLTYPE}=\$result
 
335
  done
 
336
  m4_foreach_w([gltype], [$1],
 
337
    [AC_SUBST([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
 
338
])
 
339
 
 
340
dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES)
 
341
dnl Determine the signedness of each of the given types.
 
342
dnl Define HAVE_SIGNED_TYPE if type is signed.
 
343
AC_DEFUN([gl_CHECK_TYPES_SIGNED],
 
344
[
 
345
  dnl Use a shell loop, to avoid bloating configure, and
 
346
  dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
 
347
  dnl   config.h.in,
 
348
  dnl - extra AC_SUBST calls, so that the right substitutions are made.
 
349
  m4_foreach_w([gltype], [$1],
 
350
    [AH_TEMPLATE([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
 
351
       [Define to 1 if ']gltype[' is a signed integer type.])])
 
352
  for gltype in $1 ; do
 
353
    AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed],
 
354
      [AC_COMPILE_IFELSE(
 
355
         [AC_LANG_PROGRAM([$2[
 
356
            int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];]])],
 
357
         result=yes, result=no)
 
358
       eval gl_cv_type_${gltype}_signed=\$result
 
359
      ])
 
360
    eval result=\$gl_cv_type_${gltype}_signed
 
361
    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
 
362
    if test "$result" = yes; then
 
363
      AC_DEFINE_UNQUOTED([HAVE_SIGNED_${GLTYPE}], [1])
 
364
      eval HAVE_SIGNED_${GLTYPE}=1
 
365
    else
 
366
      eval HAVE_SIGNED_${GLTYPE}=0
 
367
    fi
 
368
  done
 
369
  m4_foreach_w([gltype], [$1],
 
370
    [AC_SUBST([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
 
371
])
 
372
 
 
373
dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES)
 
374
dnl Determine the suffix to use for integer constants of the given types.
 
375
dnl Define t_SUFFIX for each such type.
 
376
AC_DEFUN([gl_INTEGER_TYPE_SUFFIX],
 
377
[
 
378
  dnl Use a shell loop, to avoid bloating configure, and
 
379
  dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
 
380
  dnl   config.h.in,
 
381
  dnl - extra AC_SUBST calls, so that the right substitutions are made.
 
382
  m4_foreach_w([gltype], [$1],
 
383
    [AH_TEMPLATE(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX],
 
384
       [Define to l, ll, u, ul, ull, etc., as suitable for
 
385
        constants of type ']gltype['.])])
 
386
  for gltype in $1 ; do
 
387
    AC_CACHE_CHECK([for $gltype integer literal suffix],
 
388
      [gl_cv_type_${gltype}_suffix],
 
389
      [eval gl_cv_type_${gltype}_suffix=no
 
390
       eval result=\$gl_cv_type_${gltype}_signed
 
391
       if test "$result" = yes; then
 
392
         glsufu=
 
393
       else
 
394
         glsufu=u
 
395
       fi
 
396
       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
 
397
         case $glsuf in
 
398
           '')  gltype1='int';;
 
399
           l)   gltype1='long int';;
 
400
           ll)  gltype1='long long int';;
 
401
           i64) gltype1='__int64';;
 
402
           u)   gltype1='unsigned int';;
 
403
           ul)  gltype1='unsigned long int';;
 
404
           ull) gltype1='unsigned long long int';;
 
405
           ui64)gltype1='unsigned __int64';;
 
406
         esac
 
407
         AC_COMPILE_IFELSE(
 
408
           [AC_LANG_PROGRAM([$2[
 
409
              extern $gltype foo;
 
410
              extern $gltype1 foo;]])],
 
411
           [eval gl_cv_type_${gltype}_suffix=\$glsuf])
 
412
         eval result=\$gl_cv_type_${gltype}_suffix
 
413
         test "$result" != no && break
 
414
       done])
 
415
    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
 
416
    eval result=\$gl_cv_type_${gltype}_suffix
 
417
    test "$result" = no && result=
 
418
    eval ${GLTYPE}_SUFFIX=\$result
 
419
    AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result])
 
420
  done
 
421
  m4_foreach_w([gltype], [$1],
 
422
    [AC_SUBST(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])])
 
423
])
 
424
 
 
425
dnl gl_STDINT_INCLUDES
 
426
AC_DEFUN([gl_STDINT_INCLUDES],
 
427
[[
 
428
  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
 
429
     included before <wchar.h>.  */
 
430
  #include <stddef.h>
 
431
  #include <signal.h>
 
432
  #if HAVE_WCHAR_H
 
433
  # include <stdio.h>
 
434
  # include <time.h>
 
435
  # include <wchar.h>
 
436
  #endif
 
437
]])
 
438
 
 
439
dnl gl_STDINT_TYPE_PROPERTIES
 
440
dnl Compute HAVE_SIGNED_t, BITSIZEOF_t and t_SUFFIX, for all the types t
 
441
dnl of interest to stdint.in.h.
 
442
AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
 
443
[
 
444
  AC_REQUIRE([gl_MULTIARCH])
 
445
  if test $APPLE_UNIVERSAL_BUILD = 0; then
 
446
    gl_STDINT_BITSIZEOF([ptrdiff_t size_t],
 
447
      [gl_STDINT_INCLUDES])
 
448
  fi
 
449
  gl_STDINT_BITSIZEOF([sig_atomic_t wchar_t wint_t],
 
450
    [gl_STDINT_INCLUDES])
 
451
  gl_CHECK_TYPES_SIGNED([sig_atomic_t wchar_t wint_t],
 
452
    [gl_STDINT_INCLUDES])
 
453
  gl_cv_type_ptrdiff_t_signed=yes
 
454
  gl_cv_type_size_t_signed=no
 
455
  if test $APPLE_UNIVERSAL_BUILD = 0; then
 
456
    gl_INTEGER_TYPE_SUFFIX([ptrdiff_t size_t],
 
457
      [gl_STDINT_INCLUDES])
 
458
  fi
 
459
  gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t],
 
460
    [gl_STDINT_INCLUDES])
 
461
])
 
462
 
 
463
dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
 
464
dnl Remove this when we can assume autoconf >= 2.61.
 
465
m4_ifdef([AC_COMPUTE_INT], [], [
 
466
  AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
 
467
])
 
468
 
 
469
# Hey Emacs!
 
470
# Local Variables:
 
471
# indent-tabs-mode: nil
 
472
# End: