Files
asterisk/build_tools/menuselect-deps.in
George Joseph 79427c1ac1 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`.
2025-01-06 12:48:24 -07:00

83 lines
1.7 KiB
Plaintext

BLUETOOTH=@PBX_BLUETOOTH@
BEANSTALK=@PBX_BEANSTALK@
COROSYNC=@PBX_COROSYNC@
CRYPTO=@PBX_CRYPTO@
BFD=@PBX_BFD@
BISON=@PBX_BISON@
CODEC2=@PBX_CODEC2@
CURL=@PBX_CURL@
DAHDI=@PBX_DAHDI@
DLADDR=@PBX_DLADDR@
FLEX=@PBX_FLEX@
FREETDS=@PBX_FREETDS@
GENERIC_ODBC=@PBX_GENERIC_ODBC@
GMIME=@PBX_GMIME@
GNU_LD=@GNU_LD@
GSM=@PBX_GSM@
ILBC=@PBX_ILBC@
GTK2=@PBX_GTK2@
HOARD=@PBX_HOARD@
ICAL=@PBX_ICAL@
ICONV=@PBX_ICONV@
IKSEMEL=@PBX_IKSEMEL@
IMAP_TK=@PBX_IMAP_TK@
IODBC=@PBX_IODBC@
JACK=@PBX_JACK@
JANSSON=@PBX_JANSSON@
URIPARSER=@PBX_URIPARSER@
KQUEUE=@PBX_KQUEUE@
LDAP=@PBX_LDAP@
LIBEDIT=@PBX_LIBEDIT@
LIBJWT=@PBX_LIBJWT@
LIBXML2=@PBX_LIBXML2@
LIBXSLT=@PBX_LIBXSLT@
XMLSTARLET=@PBX_XMLSTARLET@
BASH=@PBX_BASH@
LUA=@PBX_LUA@
MYSQLCLIENT=@PBX_MYSQLCLIENT@
NETSNMP=@PBX_NETSNMP@
NEWT=@PBX_NEWT@
NEON=@PBX_NEON@
NEON29=@PBX_NEON29@
OGG=@PBX_OGG@
OPUS=@PBX_OPUS@
OPUSFILE=@PBX_OPUSFILE@
PGSQL=@PBX_PGSQL@
PJPROJECT=@PBX_PJPROJECT@
POPT=@PBX_POPT@
PORTAUDIO=@PBX_PORTAUDIO@
PRI=@PBX_PRI@
OPENR2=@PBX_OPENR2@
RESAMPLE=@PBX_RESAMPLE@
FFTW3=@PBX_FFTW3@
RADIUS=@PBX_RADIUS@
LAUNCHD=@PBX_LAUNCHD@
SNDFILE=@PBX_SNDFILE@
SPANDSP=@PBX_SPANDSP@
SPEEX=@PBX_SPEEX@
SPEEXDSP=@PBX_SPEEXDSP@
SPEEX_PREPROCESS=@PBX_SPEEX_PREPROCESS@
SQLITE3=@PBX_SQLITE3@
SRTP=@PBX_SRTP@
SS7=@PBX_SS7@
OPENSSL=@PBX_OPENSSL@
SYSLOG=@PBX_SYSLOG@
TONEZONE=@PBX_TONEZONE@
UNBOUND=@PBX_UNBOUND@
UNIXODBC=@PBX_UNIXODBC@
VORBIS=@PBX_VORBIS@
WINARCH=@PBX_WINARCH@
ZLIB=@PBX_ZLIB@
TIMERFD=@PBX_TIMERFD@
NATIVE_ARCH=@AST_NATIVE_ARCH@
HAVE_ADDRESS_SANITIZER=@AST_ADDRESS_SANITIZER@
HAVE_LEAK_SANITIZER=@AST_LEAK_SANITIZER@
HAVE_THREAD_SANITIZER=@AST_THREAD_SANITIZER@
HAVE_UNDEFINED_SANITIZER=@AST_UNDEFINED_SANITIZER@
NO_BINARY_MODULES=@PBX_NO_BINARY_MODULES@
CXX11=@PBX_CXX11@
CXX14=@PBX_CXX14@
CXX17=@PBX_CXX17@
CXX20=@PBX_CXX20@
CXX23=@PBX_CXX23@