diff options
| author | Lorenz Kästle <lorenz.kaestle@netways.de> | 2023-03-09 11:03:48 +0100 |
|---|---|---|
| committer | Lorenz Kästle <lorenz.kaestle@netways.de> | 2023-03-09 11:03:48 +0100 |
| commit | d0edb72a0c9bc1a28197ab4566928f7ee63a6d43 (patch) | |
| tree | 6d524fb16d2dd1aa9f2d98529ef1de7a39f52700 /gl/m4/c-bool.m4 | |
| parent | 9fdc82f0543c6e2891c7079f70297f92e8ef4619 (diff) | |
| parent | 269718094177fb8a7e3d3005d1310495009fe8c4 (diff) | |
| download | monitoring-plugins-d0edb72.tar.gz | |
Merge branch 'master' into RincewindsHat-patch-1
Diffstat (limited to 'gl/m4/c-bool.m4')
| -rw-r--r-- | gl/m4/c-bool.m4 | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/gl/m4/c-bool.m4 b/gl/m4/c-bool.m4 new file mode 100644 index 00000000..f614371b --- /dev/null +++ b/gl/m4/c-bool.m4 | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | # Check for bool that conforms to C2023. | ||
| 2 | |||
| 3 | dnl Copyright 2022-2023 Free Software Foundation, Inc. | ||
| 4 | dnl This file is free software; the Free Software Foundation | ||
| 5 | dnl gives unlimited permission to copy and/or distribute it, | ||
| 6 | dnl with or without modifications, as long as this notice is preserved. | ||
| 7 | |||
| 8 | AC_DEFUN([gl_C_BOOL], | ||
| 9 | [ | ||
| 10 | AC_CACHE_CHECK([for bool, true, false], [gl_cv_c_bool], | ||
| 11 | [AC_COMPILE_IFELSE( | ||
| 12 | [AC_LANG_SOURCE([[ | ||
| 13 | #if true == false | ||
| 14 | #error "true == false" | ||
| 15 | #endif | ||
| 16 | extern bool b; | ||
| 17 | bool b = true == false;]])], | ||
| 18 | [gl_cv_c_bool=yes], | ||
| 19 | [gl_cv_c_bool=no])]) | ||
| 20 | if test "$gl_cv_c_bool" = yes; then | ||
| 21 | AC_DEFINE([HAVE_C_BOOL], [1], | ||
| 22 | [Define to 1 if bool, true and false work as per C2023.]) | ||
| 23 | fi | ||
| 24 | |||
| 25 | AC_CHECK_HEADERS_ONCE([stdbool.h]) | ||
| 26 | |||
| 27 | dnl The "zz" puts this toward config.h's end, to avoid potential | ||
| 28 | dnl collisions with other definitions. | ||
| 29 | dnl If 'bool', 'true' and 'false' do not work, arrange for them to work. | ||
| 30 | dnl In C, this means including <stdbool.h> if it is not already included. | ||
| 31 | dnl However, if the preprocessor mistakenly treats 'true' as 0, | ||
| 32 | dnl define it to a bool expression equal to 1; this is needed in | ||
| 33 | dnl Sun C++ 5.11 (Oracle Solaris Studio 12.2, 2010) and older. | ||
| 34 | AH_VERBATIM([zzbool], | ||
| 35 | [#ifndef HAVE_C_BOOL | ||
| 36 | # if !defined __cplusplus && !defined __bool_true_false_are_defined | ||
| 37 | # if HAVE_STDBOOL_H | ||
| 38 | # include <stdbool.h> | ||
| 39 | # else | ||
| 40 | # if defined __SUNPRO_C | ||
| 41 | # error "<stdbool.h> is not usable with this configuration. To make it usable, add -D_STDC_C99= to $CC." | ||
| 42 | # else | ||
| 43 | # error "<stdbool.h> does not exist on this platform. Use gnulib module 'stdbool-c99' instead of gnulib module 'stdbool'." | ||
| 44 | # endif | ||
| 45 | # endif | ||
| 46 | # endif | ||
| 47 | # if !true | ||
| 48 | # define true (!false) | ||
| 49 | # endif | ||
| 50 | #endif]) | ||
| 51 | ]) | ||
