summaryrefslogtreecommitdiffstats
path: root/gl/m4/stdint.m4
diff options
context:
space:
mode:
Diffstat (limited to 'gl/m4/stdint.m4')
-rw-r--r--gl/m4/stdint.m440
1 files changed, 26 insertions, 14 deletions
diff --git a/gl/m4/stdint.m4 b/gl/m4/stdint.m4
index c5e813a9..27cdcdb9 100644
--- a/gl/m4/stdint.m4
+++ b/gl/m4/stdint.m4
@@ -1,5 +1,5 @@
1# stdint.m4 serial 35 1# stdint.m4 serial 43
2dnl Copyright (C) 2001-2010 Free Software Foundation, Inc. 2dnl Copyright (C) 2001-2013 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation 3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it, 4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved. 5dnl with or without modifications, as long as this notice is preserved.
@@ -7,7 +7,7 @@ dnl with or without modifications, as long as this notice is preserved.
7dnl From Paul Eggert and Bruno Haible. 7dnl From Paul Eggert and Bruno Haible.
8dnl Test whether <stdint.h> is supported or must be substituted. 8dnl Test whether <stdint.h> is supported or must be substituted.
9 9
10AC_DEFUN([gl_STDINT_H], 10AC_DEFUN_ONCE([gl_STDINT_H],
11[ 11[
12 AC_PREREQ([2.59])dnl 12 AC_PREREQ([2.59])dnl
13 13
@@ -27,6 +27,15 @@ AC_DEFUN([gl_STDINT_H],
27 fi 27 fi
28 AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT]) 28 AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT])
29 29
30 dnl Check for <wchar.h>, in the same way as gl_WCHAR_H does.
31 AC_CHECK_HEADERS_ONCE([wchar.h])
32 if test $ac_cv_header_wchar_h = yes; then
33 HAVE_WCHAR_H=1
34 else
35 HAVE_WCHAR_H=0
36 fi
37 AC_SUBST([HAVE_WCHAR_H])
38
30 dnl Check for <inttypes.h>. 39 dnl Check for <inttypes.h>.
31 dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h. 40 dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h.
32 if test $ac_cv_header_inttypes_h = yes; then 41 if test $ac_cv_header_inttypes_h = yes; then
@@ -60,8 +69,6 @@ AC_DEFUN([gl_STDINT_H],
60 [gl_cv_header_working_stdint_h=no 69 [gl_cv_header_working_stdint_h=no
61 AC_COMPILE_IFELSE([ 70 AC_COMPILE_IFELSE([
62 AC_LANG_PROGRAM([[ 71 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 */ 72#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
66#include <stdint.h> 73#include <stdint.h>
67/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */ 74/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */
@@ -145,9 +152,11 @@ uintmax_t j = UINTMAX_MAX;
145 152
146#include <limits.h> /* for CHAR_BIT */ 153#include <limits.h> /* for CHAR_BIT */
147#define TYPE_MINIMUM(t) \ 154#define TYPE_MINIMUM(t) \
148 ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))) 155 ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
149#define TYPE_MAXIMUM(t) \ 156#define TYPE_MAXIMUM(t) \
150 ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))) 157 ((t) ((t) 0 < (t) -1 \
158 ? (t) -1 \
159 : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
151struct s { 160struct s {
152 int check_PTRDIFF: 161 int check_PTRDIFF:
153 PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t) 162 PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
@@ -208,8 +217,6 @@ struct s {
208 dnl This detects a bug on HP-UX 11.23/ia64. 217 dnl This detects a bug on HP-UX 11.23/ia64.
209 AC_RUN_IFELSE([ 218 AC_RUN_IFELSE([
210 AC_LANG_PROGRAM([[ 219 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 */ 220#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
214#include <stdint.h> 221#include <stdint.h>
215] 222]
@@ -259,7 +266,7 @@ static const char *macro_values[] =
259 || strncmp (value, "((int)"/*)*/, 6) == 0 266 || strncmp (value, "((int)"/*)*/, 6) == 0
260 || strncmp (value, "((signed short)"/*)*/, 15) == 0 267 || strncmp (value, "((signed short)"/*)*/, 15) == 0
261 || strncmp (value, "((signed char)"/*)*/, 14) == 0) 268 || strncmp (value, "((signed char)"/*)*/, 14) == 0)
262 return 1; 269 return mv - macro_values + 1;
263 } 270 }
264 return 0; 271 return 0;
265]])], 272]])],
@@ -290,14 +297,11 @@ static const char *macro_values[] =
290 fi 297 fi
291 AC_SUBST([HAVE_SYS_BITYPES_H]) 298 AC_SUBST([HAVE_SYS_BITYPES_H])
292 299
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 300 gl_STDINT_TYPE_PROPERTIES
298 STDINT_H=stdint.h 301 STDINT_H=stdint.h
299 fi 302 fi
300 AC_SUBST([STDINT_H]) 303 AC_SUBST([STDINT_H])
304 AM_CONDITIONAL([GL_GENERATE_STDINT_H], [test -n "$STDINT_H"])
301]) 305])
302 306
303dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES) 307dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES)
@@ -458,6 +462,14 @@ AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
458 fi 462 fi
459 gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t], 463 gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t],
460 [gl_STDINT_INCLUDES]) 464 [gl_STDINT_INCLUDES])
465
466 dnl If wint_t is smaller than 'int', it cannot satisfy the ISO C 99
467 dnl requirement that wint_t is "unchanged by default argument promotions".
468 dnl In this case gnulib's <wchar.h> and <wctype.h> override wint_t.
469 dnl Set the variable BITSIZEOF_WINT_T accordingly.
470 if test $BITSIZEOF_WINT_T -lt 32; then
471 BITSIZEOF_WINT_T=32
472 fi
461]) 473])
462 474
463dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. 475dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.