mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 19:16:15 +00:00
Add C++ Standard detection to configure and fix a new C++20 compile issue
* The autoconf-archive package contains macros useful for detecting C++ standard and testing other C++ capabilities but that package was never included in the install_prereq script so many existing build environments won't have it. Even if it is installed, older versions won't newer C++ standards and will actually cause an error if you try to test for that version. To make it available for those environments, the ax_cxx_compile_stdcxx.m4 macro has copied from the latest release of autoconf-archive into the autoconf directory. * A convenience wrapper(ast_cxx_check_std) around ax_cxx_compile_stdcxx was also added so checking the standard version and setting the asterisk-specific PBX_ variables becomes a one-liner: `AST_CXX_CHECK_STD([std], [force_latest_std])`. Calling that with a version of `17` for instance, will set PBX_CXX17 to 0 or 1 depending on whether the current c++ compiler supports stdc++17. HAVE_CXX17 will also be 'defined" or not depending on the result. * C++ compilers hardly ever default to the latest standard they support. g++ version 14 for instance supports up to C++23 but only uses C++17 by default. If you want to use C++23, you have to add `-std=gnu++=23` to the g++ command line. If you set the second argument of AST_CXX_CHECK_STD to "yes", the macro will automatically keep the highest `-std=gnu++` value that worked and pass that to the Makefiles. * The autoconf-archive package was added to install_prereq for future use. * Updated configure.ac to use AST_CXX_CHECK_STD() to check for C++ versions 11, 14, 17, 20 and 23. * Updated configure.ac to accept the `--enable-latest-cxx-std` option which will set the second option to AST_CXX_CHECK_STD() to "yes". The default is "no". * ast_copy_string() in strings.h declares the 'sz' variable as volatile and does an `sz--` on it later. C++20 no longer allows the `++` and `--` increment and decrement operators to be used on variables declared as volatile however so that was changed to `sz -= 1`.
This commit is contained in:
committed by
asterisk-org-access-app[bot]
parent
5ed7f4d152
commit
62ec48cf1c
@@ -13,13 +13,13 @@
|
||||
/* Define to 1 if <alloca.h> works. */
|
||||
#undef HAVE_ALLOCA_H
|
||||
|
||||
/* Define to 1 if you have the `asprintf' function. */
|
||||
/* Define to 1 if you have the 'asprintf' function. */
|
||||
#undef HAVE_ASPRINTF
|
||||
|
||||
/* Define to 1 if you have the curses library. */
|
||||
#undef HAVE_CURSES
|
||||
|
||||
/* Define to 1 if you have the `getloadavg' function. */
|
||||
/* Define to 1 if you have the 'getloadavg' function. */
|
||||
#undef HAVE_GETLOADAVG
|
||||
|
||||
/* Define if your system has the GTK2 libraries. */
|
||||
@@ -37,7 +37,7 @@
|
||||
/* Define to 1 if you have the newt library. */
|
||||
#undef HAVE_NEWT
|
||||
|
||||
/* Define to 1 if you have the `setenv' function. */
|
||||
/* Define to 1 if you have the 'setenv' function. */
|
||||
#undef HAVE_SETENV
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
@@ -49,7 +49,7 @@
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the `strcasestr' function. */
|
||||
/* Define to 1 if you have the 'strcasestr' function. */
|
||||
#undef HAVE_STRCASESTR
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
@@ -58,13 +58,13 @@
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have the `strndup' function. */
|
||||
/* Define to 1 if you have the 'strndup' function. */
|
||||
#undef HAVE_STRNDUP
|
||||
|
||||
/* Define to 1 if you have the `strnlen' function. */
|
||||
/* Define to 1 if you have the 'strnlen' function. */
|
||||
#undef HAVE_STRNLEN
|
||||
|
||||
/* Define to 1 if you have the `strsep' function. */
|
||||
/* Define to 1 if you have the 'strsep' function. */
|
||||
#undef HAVE_STRSEP
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
@@ -79,10 +79,10 @@
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to 1 if you have the `unsetenv' function. */
|
||||
/* Define to 1 if you have the 'unsetenv' function. */
|
||||
#undef HAVE_UNSETENV
|
||||
|
||||
/* Define to 1 if you have the `vasprintf' function. */
|
||||
/* Define to 1 if you have the 'vasprintf' function. */
|
||||
#undef HAVE_VASPRINTF
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
@@ -111,12 +111,12 @@
|
||||
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||
#undef STACK_DIRECTION
|
||||
|
||||
/* Define to 1 if all of the C90 standard headers exist (not just the ones
|
||||
/* Define to 1 if all of the C89 standard headers exist (not just the ones
|
||||
required in a freestanding environment). This macro is provided for
|
||||
backward compatibility; new code need not use it. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
/* Define as 'unsigned int' if <stddef.h> doesn't define. */
|
||||
#undef size_t
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user