diff options
Diffstat (limited to 'gl/m4/stdint.m4')
| -rw-r--r-- | gl/m4/stdint.m4 | 40 |
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 |
| 2 | dnl Copyright (C) 2001-2010 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2001-2013 Free Software Foundation, Inc. |
| 3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
| 5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl 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. | |||
| 7 | dnl From Paul Eggert and Bruno Haible. | 7 | dnl From Paul Eggert and Bruno Haible. |
| 8 | dnl Test whether <stdint.h> is supported or must be substituted. | 8 | dnl Test whether <stdint.h> is supported or must be substituted. |
| 9 | 9 | ||
| 10 | AC_DEFUN([gl_STDINT_H], | 10 | AC_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))) | ||
| 151 | struct s { | 160 | struct 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 | ||
| 303 | dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES) | 307 | dnl 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 | ||
| 463 | dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. | 475 | dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. |
