X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=libstdc%2B%2B-v3%2Facinclude.m4;h=74e8eaffe0a5efcb3e8898b5f6200d35ae95c928;hb=11135080fc2fb4f03ff1869cee70fb3f9ddab49c;hp=267302df660c420663be20898a03c5413a136dff;hpb=3ca6351daa2a4e90af9a97085f8fa316b6ede57f;p=gcc.git diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 267302df660..74e8eaffe0a 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -168,6 +168,38 @@ AC_DEFUN([GLIBCXX_CHECK_COMPILER_FEATURES], [ ]) +dnl +dnl Check if the assembler used supports disabling generation of hardware +dnl capabilities. This is only supported by Sun as at the moment. +dnl +dnl Defines: +dnl HWCAP_FLAGS='-Wa,-nH' if possible. +dnl +AC_DEFUN([GLIBCXX_CHECK_ASSEMBLER_HWCAP], [ + test -z "$HWCAP_FLAGS" && HWCAP_FLAGS='' + + # Restrict the test to Solaris, other assemblers (e.g. AIX as) have -nH + # with a different meaning. + case ${target_os} in + solaris2*) + ac_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Wa,-nH" + + AC_MSG_CHECKING([for as that supports -Wa,-nH]) + AC_TRY_COMPILE([], [return 0;], [ac_hwcap_flags=yes],[ac_hwcap_flags=no]) + if test "$ac_hwcap_flags" = "yes"; then + HWCAP_FLAGS="-Wa,-nH $HWCAP_FLAGS" + fi + AC_MSG_RESULT($ac_hwcap_flags) + + CFLAGS="$ac_save_CFLAGS" + ;; + esac + + AC_SUBST(HWCAP_FLAGS) +]) + + dnl dnl If GNU ld is in use, check to see if tricky linker opts can be used. If dnl the native linker is in use, all variables will be defined to something @@ -660,6 +692,10 @@ if test x"$glibcxx_stylesheets" = x"yes"; then glibcxx_local_stylesheets=yes XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns fi + if test -d /usr/share/xml/docbook/stylesheet/nwalsh5/current; then + glibcxx_local_stylesheets=yes + XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/nwalsh5/current + fi fi AC_MSG_RESULT($glibcxx_local_stylesheets) @@ -835,7 +871,8 @@ dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING) dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, permit a|b|c) dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, SHELL-CODE-HANDLER) dnl -dnl See docs/html/17_intro/configury.html#enable for documentation. +dnl See manual/appendix_porting.html#appendix.porting.build_hacking for +dnl documentation. dnl m4_define([GLIBCXX_ENABLE],[dnl m4_define([_g_switch],[--enable-$1])dnl @@ -885,7 +922,7 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [ # Use -std=c++98 because the default (-std=gnu++98) leaves __STRICT_ANSI__ # undefined and fake C99 facilities - like pre-standard snprintf - may be # spuriously enabled. - # Long term, -std=c++0x could be even better, could manage to explicitely + # Long term, -std=c++0x could be even better, could manage to explicitly # request C99 facilities to the underlying C headers. ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -std=c++98" @@ -1015,8 +1052,8 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [ vscanf("%i", args); vsnprintf(fmt, 0, "%i", args); vsscanf(fmt, "%i", args); - }], - [snprintf("12", 0, "%i");], + snprintf(fmt, 0, "%i"); + }], [], [glibcxx_cv_c99_stdio=yes], [glibcxx_cv_c99_stdio=no]) ]) AC_MSG_RESULT($glibcxx_cv_c99_stdio) @@ -1125,17 +1162,22 @@ dnl nanosleep and sched_yield in libc and libposix4 and, if needed, dnl links in the latter. dnl --enable-libstdcxx-time=rt dnl also searches (and, if needed, links) librt. Note that this is -dnl not always desirable because, in glibc, for example, in turn it -dnl triggers the linking of libpthread too, which activates locking, +dnl not always desirable because, in glibc 2.16 and earlier, for +dnl example, in turn it triggers the linking of libpthread too, +dnl which activates locking, dnl a large overhead for single-thread programs. dnl --enable-libstdcxx-time=no dnl --disable-libstdcxx-time dnl disables the checks completely dnl +dnl N.B. Darwin provides nanosleep but doesn't support the whole POSIX +dnl Timers option, so doesn't define _POSIX_TIMERS. Because the test +dnl below fails Darwin unconditionally defines _GLIBCXX_USE_NANOSLEEP in +dnl os_defines.h and also defines _GLIBCXX_USE_SCHED_YIELD. +dnl AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [ - AC_MSG_CHECKING([for clock_gettime, nanosleep and sched_yield]) - GLIBCXX_ENABLE(libstdcxx-time,$1,[[[=KIND]]], + GLIBCXX_ENABLE(libstdcxx-time,auto,[[[=KIND]]], [use KIND for check type], [permit yes|no|rt]) @@ -1147,9 +1189,59 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [ ac_has_clock_monotonic=no ac_has_clock_realtime=no - AC_MSG_RESULT($enable_libstdcxx_time) + ac_has_nanosleep=no + ac_has_sched_yield=no + + if test x"$enable_libstdcxx_time" = x"auto"; then + + case "${target_os}" in + cygwin*) + ac_has_nanosleep=yes + ;; + darwin*) + ac_has_nanosleep=yes + ac_has_sched_yield=yes + ;; + gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu) + AC_MSG_CHECKING([for at least GNU libc 2.17]) + AC_TRY_COMPILE( + [#include ], + [ + #if ! __GLIBC_PREREQ(2, 17) + #error + #endif + ], + [glibcxx_glibc217=yes], [glibcxx_glibc217=no]) + AC_MSG_RESULT($glibcxx_glibc217) + + if test x"$glibcxx_glibc217" = x"yes"; then + ac_has_clock_monotonic=yes + ac_has_clock_realtime=yes + fi + ac_has_nanosleep=yes + ac_has_sched_yield=yes + ;; + freebsd*|netbsd*) + ac_has_clock_monotonic=yes + ac_has_clock_realtime=yes + ac_has_nanosleep=yes + ac_has_sched_yield=yes + ;; + openbsd*) + ac_has_clock_monotonic=yes + ac_has_clock_realtime=yes + ac_has_nanosleep=yes + ;; + solaris*) + GLIBCXX_LIBS="$GLIBCXX_LIBS -lrt" + ac_has_clock_monotonic=yes + ac_has_clock_realtime=yes + ac_has_nanosleep=yes + ac_has_sched_yield=yes + ;; + esac - if test x"$enable_libstdcxx_time" != x"no"; then + elif test x"$enable_libstdcxx_time" != x"no"; then if test x"$enable_libstdcxx_time" = x"rt"; then AC_SEARCH_LIBS(clock_gettime, [rt posix4]) @@ -1173,19 +1265,16 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [ case "$ac_cv_search_sched_yield" in -lposix4*) GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield" - AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1, - [ Defined if sched_yield is available. ]) + ac_has_sched_yield=yes ;; -lrt*) if test x"$enable_libstdcxx_time" = x"rt"; then GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield" - AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1, - [ Defined if sched_yield is available. ]) + ac_has_sched_yield=yes fi ;; *) - AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1, - [ Defined if sched_yield is available. ]) + ac_has_sched_yield=yes ;; esac @@ -1233,6 +1322,31 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [ fi fi + if test x"$ac_has_clock_monotonic" != x"yes"; then + case ${target_os} in + linux*) + AC_MSG_CHECKING([for clock_gettime syscall]) + AC_TRY_COMPILE( + [#include + #include + #include + ], + [#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK) + timespec tp; + #endif + syscall(SYS_clock_gettime, CLOCK_MONOTONIC, &tp); + syscall(SYS_clock_gettime, CLOCK_REALTIME, &tp); + ], [ac_has_clock_monotonic_syscall=yes], [ac_has_clock_monotonic_syscall=no]) + AC_MSG_RESULT($ac_has_clock_monotonic_syscall) + if test x"$ac_has_clock_monotonic_syscall" = x"yes"; then + AC_DEFINE(_GLIBCXX_USE_CLOCK_GETTIME_SYSCALL, 1, + [ Defined if clock_gettime syscall has monotonic and realtime clock support. ]) + ac_has_clock_monotonic=yes + ac_has_clock_realtime=yes + fi;; + esac + fi + if test x"$ac_has_clock_monotonic" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_CLOCK_MONOTONIC, 1, [ Defined if clock_gettime has monotonic clock support. ]) @@ -1243,9 +1357,43 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [ [ Defined if clock_gettime has realtime clock support. ]) fi + if test x"$ac_has_sched_yield" = x"yes"; then + AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1, + [ Defined if sched_yield is available. ]) + fi + if test x"$ac_has_nanosleep" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_NANOSLEEP, 1, [ Defined if nanosleep is available. ]) + else + AC_MSG_CHECKING([for sleep]) + AC_TRY_COMPILE([#include ], + [sleep(1)], + [ac_has_sleep=yes],[ac_has_sleep=no]) + if test x"$ac_has_sleep" = x"yes"; then + AC_DEFINE(HAVE_SLEEP,1, [Defined if sleep exists.]) + fi + AC_MSG_RESULT($ac_has_sleep) + AC_MSG_CHECKING([for usleep]) + AC_TRY_COMPILE([#include ], + [sleep(1); + usleep(100);], + [ac_has_usleep=yes],[ac_has_usleep=no]) + if test x"$ac_has_usleep" = x"yes"; then + AC_DEFINE(HAVE_USLEEP,1, [Defined if usleep exists.]) + fi + AC_MSG_RESULT($ac_has_usleep) + fi + + if test x"$ac_has_nanosleep$ac_has_sleep" = x"nono"; then + AC_MSG_CHECKING([for Sleep]) + AC_TRY_COMPILE([#include ], + [Sleep(1)], + [ac_has_win32_sleep=yes],[ac_has_win32_sleep=no]) + if test x"$ac_has_win32_sleep" = x"yes"; then + AC_DEFINE(HAVE_WIN32_SLEEP,1, [Defined if Sleep exists.]) + fi + AC_MSG_RESULT($ac_has_win32_sleep) fi AC_SUBST(GLIBCXX_LIBS) @@ -1629,7 +1777,7 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [ in namespace std::tr1.]) fi - # Check for the existence of whcar_t functions (NB: doesn't + # Check for the existence of wchar_t functions (NB: doesn't # make sense if the glibcxx_cv_c99_stdint_tr1 check fails, per C99, 7.8/1). ac_c99_inttypes_wchar_t_tr1=no; if test x"$glibcxx_cv_c99_stdint_tr1" = x"yes"; then @@ -1669,7 +1817,12 @@ AC_DEFUN([GLIBCXX_CHECK_RANDOM_TR1], [ AC_MSG_CHECKING([for "/dev/random" and "/dev/urandom" for TR1 random_device]) AC_CACHE_VAL(glibcxx_cv_random_tr1, [ if test -r /dev/random && test -r /dev/urandom; then - glibcxx_cv_random_tr1=yes; + ## For MSys environment the test above is detect as false-positive + ## on mingw-targets. So disable it explicit for them. + case ${target_os} in + *mingw*) glibcxx_cv_random_tr1=no ;; + *) glibcxx_cv_random_tr1=yes ;; + esac else glibcxx_cv_random_tr1=no; fi @@ -1836,6 +1989,12 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [ darwin* | freebsd*) enable_clocale_flag=darwin ;; + dragonfly*) + enable_clocale_flag=dragonfly + ;; + openbsd*) + enable_clocale_flag=newlib + ;; *) if test x"$with_newlib" = x"yes"; then enable_clocale_flag=newlib @@ -1925,6 +2084,23 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [ CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h ;; + dragonfly) + AC_MSG_RESULT(dragonfly) + + CLOCALE_H=config/locale/generic/c_locale.h + CLOCALE_CC=config/locale/dragonfly/c_locale.cc + CCODECVT_CC=config/locale/generic/codecvt_members.cc + CCOLLATE_CC=config/locale/generic/collate_members.cc + CCTYPE_CC=config/locale/dragonfly/ctype_members.cc + CMESSAGES_H=config/locale/generic/messages_members.h + CMESSAGES_CC=config/locale/generic/messages_members.cc + CMONEY_CC=config/locale/generic/monetary_members.cc + CNUMERIC_CC=config/locale/generic/numeric_members.cc + CTIME_H=config/locale/generic/time_members.h + CTIME_CC=config/locale/generic/time_members.cc + CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h + ;; + gnu) AC_MSG_RESULT(gnu) @@ -2128,6 +2304,38 @@ AC_DEFUN([GLIBCXX_ENABLE_EXTERN_TEMPLATE], [ GLIBCXX_CONDITIONAL(ENABLE_EXTERN_TEMPLATE, test $enable_extern_template = yes) ]) +dnl +dnl Use vtable verification. +dnl +dnl --enable-vtable-verify defines _GLIBCXX_VTABLE_VERIFY to 1 +dnl --disable-vtable-verify defines _GLIBCXX_VTABLE_VERIFY to 0 + +dnl + Usage: GLIBCXX_ENABLE_VTABLE_VERIFY[(DEFAULT)] +dnl Where DEFAULT is `yes' or `no'. +dnl +AC_DEFUN([GLIBCXX_ENABLE_VTABLE_VERIFY], [ + + GLIBCXX_ENABLE(vtable-verify,$1,,[enable vtable verify]) + + AC_MSG_CHECKING([for vtable verify support]) + AC_MSG_RESULT([$enable_vtable_verify]) + + if test $enable_vtable_verify = yes; then + VTV_CXXFLAGS="-fvtable-verify=std -Wl,-u_vtable_map_vars_start,-u_vtable_map_vars_end" + VTV_PCH_CXXFLAGS="-fvtable-verify=std" + VTV_CXXLINKFLAGS="-L${toplevel_builddir}/libvtv/.libs -Wl,--rpath -Wl,${toplevel_builddir}/libvtv/.libs" + else + VTV_CXXFLAGS= + VTV_PCH_CXXFLAGS= + VTV_CXXLINKFLAGS= + fi + + AC_SUBST(VTV_CXXFLAGS) + AC_SUBST(VTV_PCH_CXXFLAGS) + AC_SUBST(VTV_CXXLINKFLAGS) + GLIBCXX_CONDITIONAL(ENABLE_VTABLE_VERIFY, test $enable_vtable_verify = yes) +]) + dnl dnl Check for parallel mode pre-requisites, including OpenMP support. dnl @@ -2147,7 +2355,6 @@ AC_DEFUN([GLIBCXX_ENABLE_PARALLEL], [ AC_MSG_CHECKING([for parallel mode support]) AC_MSG_RESULT([$enable_parallel]) - GLIBCXX_CONDITIONAL(ENABLE_PARALLEL, test $enable_parallel = yes) ]) @@ -2316,6 +2523,31 @@ AC_DEFUN([GLIBCXX_ENABLE_HOSTED], [ ]) +dnl +dnl Check if the user wants a non-verbose library implementation. +dnl +dnl --disable-libstdcxx-verbose will turn off descriptive messages to +dnl standard error on termination. +dnl +dnl Defines: +dnl _GLIBCXX_VERBOSE (always defined, either to 1 or 0) +dnl +AC_DEFUN([GLIBCXX_ENABLE_VERBOSE], [ + AC_ARG_ENABLE([libstdcxx-verbose], + AC_HELP_STRING([--disable-libstdcxx-verbose], + [disable termination messages to standard error]),, + [enable_libstdcxx_verbose=yes]) + if test x"$enable_libstdcxx_verbose" = xyes; then + verbose_define=1 + else + AC_MSG_NOTICE([verbose termination messages are disabled]) + verbose_define=0 + fi + AC_DEFINE_UNQUOTED(_GLIBCXX_VERBOSE, $verbose_define, + [Define to 1 if a verbose library is built, or 0 otherwise.]) +]) + + dnl dnl Check for template specializations for the 'long long' type. dnl The result determines only whether 'long long' I/O is enabled; things @@ -2927,6 +3159,8 @@ EOF if AC_TRY_EVAL(ac_compile); then if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then enable_sjlj_exceptions=yes + elif grep _Unwind_SjLj_Register conftest.s >/dev/null 2>&1 ; then + enable_sjlj_exceptions=yes elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then enable_sjlj_exceptions=no elif grep __cxa_end_cleanup conftest.s >/dev/null 2>&1 ; then @@ -3139,7 +3373,7 @@ changequote([,])dnl fi # For libtool versioning info, format is CURRENT:REVISION:AGE -libtool_VERSION=6:17:0 +libtool_VERSION=6:21:0 # Everything parsed; figure out what files and settings to use. case $enable_symvers in @@ -3247,10 +3481,14 @@ dnl having to write complex code (the sed commands to clean the macro dnl namespace are complex and fragile enough as it is). We must also dnl add a relative path so that -I- is supported properly. dnl +dnl Substs: +dnl thread_header +dnl AC_DEFUN([GLIBCXX_ENABLE_THREADS], [ AC_MSG_CHECKING([for thread model used by GCC]) target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'` AC_MSG_RESULT([$target_thread_file]) + GCC_AC_THREAD_HEADER([$target_thread_file]) ]) @@ -3305,25 +3543,7 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [ #ifndef __GTHREADS_CXX0X #error #endif - ], [case $target_os in - # gthreads support breaks symbol versioning on Solaris 9 (PR - # libstdc++/52189). - solaris2.9*) - if test x$enable_symvers = xno; then - ac_has_gthreads=yes - elif test x$enable_libstdcxx_threads = xyes; then - AC_MSG_WARN([You have requested C++11 threads support, but]) - AC_MSG_WARN([this breaks symbol versioning.]) - ac_has_gthreads=yes - else - ac_has_gthreads=no - fi - ;; - *) - ac_has_gthreads=yes - ;; - esac], - [ac_has_gthreads=no]) + ], [ac_has_gthreads=yes], [ac_has_gthreads=no]) else ac_has_gthreads=no fi @@ -3363,7 +3583,7 @@ dnl dnl Check whether rdrand is supported in the assembler. AC_DEFUN([GLIBCXX_CHECK_X86_RDRAND], [ AC_MSG_CHECKING([for rdrand support in assembler]) - AC_CACHE_VAL($ac_cv_x86_rdrand, [ + AC_CACHE_VAL(ac_cv_x86_rdrand, [ ac_cv_x86_rdrand=no case "$target" in i?86-*-* | \ @@ -3553,7 +3773,117 @@ AC_DEFUN([GLIBCXX_ENABLE_WERROR], [ GLIBCXX_CONDITIONAL(ENABLE_WERROR, test $enable_werror = yes) ]) +dnl +dnl Check whether obsolescent tmpnam is available in , +dnl and define _GLIBCXX_USE_TMPNAM. +dnl +AC_DEFUN([GLIBCXX_CHECK_TMPNAM], [dnl +dnl + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -fno-exceptions" +dnl + AC_MSG_CHECKING([for tmpnam]) + AC_CACHE_VAL(glibcxx_cv_TMPNAM, [dnl + GCC_TRY_COMPILE_OR_LINK( + [#include ], + [char *tmp = tmpnam(NULL);], + [glibcxx_cv_TMPNAM=yes], + [glibcxx_cv_TMPNAM=no]) + ]) + if test $glibcxx_cv_TMPNAM = yes; then + AC_DEFINE(_GLIBCXX_USE_TMPNAM, 1, [Define if obsolescent tmpnam is available in .]) + fi + AC_MSG_RESULT($glibcxx_cv_TMPNAM) +dnl + CXXFLAGS="$ac_save_CXXFLAGS" + AC_LANG_RESTORE +]) + +dnl +dnl Check to see if sys/sdt.h exists and that it is suitable for use. +dnl Some versions of sdt.h were not compatible with C++11. +dnl +AC_DEFUN([GLIBCXX_CHECK_SDT_H], [ + AC_MSG_CHECKING([for suitable sys/sdt.h]) + # Note that this test has to be run with the C language. + # Otherwise, sdt.h will try to include some headers from + # libstdc++ itself. + AC_LANG_SAVE + AC_LANG_C + AC_CACHE_VAL(glibcxx_cv_sys_sdt_h, [ + # Because we have to run the test in C, we use grep rather + # than the compiler to check for the bug. The bug is that + # were strings without trailing whitespace, causing g++ + # to look for operator"". The pattern searches for the fixed + # output. + AC_EGREP_CPP([ \",\" ], [ + #include + int f() { STAP_PROBE(hi, bob); } + ], [glibcxx_cv_sys_sdt_h=yes], [glibcxx_cv_sys_sdt_h=no]) + ]) + AC_LANG_RESTORE + if test $glibcxx_cv_sys_sdt_h = yes; then + AC_DEFINE(HAVE_SYS_SDT_H, 1, + [Define to 1 if you have a suitable header file]) + fi + AC_MSG_RESULT($glibcxx_cv_sys_sdt_h) +]) + +dnl +dnl Control whether the library should define symbols for old and new ABIs. +dnl This affects definitions of strings, stringstreams and locale facets. +dnl +dnl --disable-libstdcxx-dual-abi will use old ABI for all types. +dnl +dnl Defines: +dnl _GLIBCXX_USE_DUAL_ABI (always defined, either to 1 or 0) +dnl +AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI], [ + GLIBCXX_ENABLE(libstdcxx-dual-abi,$1,,[support two versions of std::string]) + if test x"$enable_libstdcxx_dual_abi" != xyes; then + AC_MSG_NOTICE([dual ABI is disabled]) + default_libstdcxx_abi="c++98" + fi + GLIBCXX_CONDITIONAL(ENABLE_DUAL_ABI, test $enable_libstdcxx_dual_abi = yes) +]) + +dnl +dnl Check to see which ABI should be enabled by default. +dnl +dnl --with-default-libstdcxx-abi={c++98,c++11} +dnl +dnl Defines: +dnl _GLIBCXX_USE_CXX11_ABI (always defined, either to 1 or 0) +dnl +AC_DEFUN([GLIBCXX_DEFAULT_ABI], [ + if test x$enable_libstdcxx_dual_abi = xyes; then + AC_MSG_CHECKING([for default std::string ABI to use]) + AC_ARG_WITH([default-libstdcxx-abi], + AS_HELP_STRING([--with-default-libstdcxx-abi], + [set the std::string ABI to use by default]), + [case "$withval" in + c++98|gnu++98|c++03|gnu++03) default_libstdcxx_abi="c++98" ;; + c++1?|gnu++1?) default_libstdcxx_abi="c++11" ;; + *) AC_MSG_ERROR([Invalid argument for --with-default-libstdcxx-abi]) ;; + esac], + [default_libstdcxx_abi="c++11"]) + AC_MSG_RESULT(${default_libstdcxx_abi}) + fi + if test $default_libstdcxx_abi = "c++11"; then + glibcxx_cxx11_abi=1 + glibcxx_cxx98_abi=0 + else + glibcxx_cxx11_abi=0 + glibcxx_cxx98_abi=1 + fi + AC_SUBST(glibcxx_cxx98_abi) + GLIBCXX_CONDITIONAL(ENABLE_CXX11_ABI, test $glibcxx_cxx11_abi = 1) +]) + # Macros from the top-level gcc directory. m4_include([../config/gc++filt.m4]) m4_include([../config/tls.m4]) +m4_include([../config/gthr.m4])