head 1.14; access; symbols netbsd-11-0-RC5:1.13 netbsd-11-0-RC4:1.13 netbsd-11-0-RC3:1.13 netbsd-11-0-RC2:1.13 netbsd-11-0-RC1:1.13 gcc-14-3-0:1.1.1.15 perseant-exfatfs-base-20250801:1.13 netbsd-11:1.13.0.2 netbsd-11-base:1.13 gcc-12-5-0:1.1.1.14 netbsd-10-1-RELEASE:1.11 perseant-exfatfs-base-20240630:1.13 gcc-12-4-0:1.1.1.14 perseant-exfatfs:1.12.0.2 perseant-exfatfs-base:1.12 netbsd-8-3-RELEASE:1.3.8.1 netbsd-9-4-RELEASE:1.6.2.2 netbsd-10-0-RELEASE:1.11 netbsd-10-0-RC6:1.11 netbsd-10-0-RC5:1.11 netbsd-10-0-RC4:1.11 netbsd-10-0-RC3:1.11 netbsd-10-0-RC2:1.11 netbsd-10-0-RC1:1.11 gcc-12-3-0:1.1.1.13 gcc-10-5-0:1.1.1.12 netbsd-10:1.11.0.6 netbsd-10-base:1.11 netbsd-9-3-RELEASE:1.6.2.2 gcc-10-4-0:1.1.1.12 cjep_sun2x-base1:1.11 cjep_sun2x:1.11.0.4 cjep_sun2x-base:1.11 cjep_staticlib_x-base1:1.11 netbsd-9-2-RELEASE:1.6.2.2 cjep_staticlib_x:1.11.0.2 cjep_staticlib_x-base:1.11 gcc-10-3-0:1.1.1.12 netbsd-9-1-RELEASE:1.6.2.2 gcc-9-3-0:1.1.1.11 gcc-7-5-0:1.1.1.9 phil-wifi-20200421:1.9 phil-wifi-20200411:1.9 is-mlppp:1.8.0.2 is-mlppp-base:1.8 phil-wifi-20200406:1.9 netbsd-8-2-RELEASE:1.3.8.1 gcc-8-4-0:1.1.1.10 netbsd-9-0-RELEASE:1.6.2.1 netbsd-9-0-RC2:1.6.2.1 netbsd-9-0-RC1:1.6.2.1 phil-wifi-20191119:1.8 gcc-8-3-0:1.1.1.7 netbsd-9:1.6.0.2 netbsd-9-base:1.6 phil-wifi-20190609:1.6 netbsd-8-1-RELEASE:1.3.8.1 netbsd-8-1-RC1:1.3.8.1 pgoyette-compat-merge-20190127:1.5.2.1 pgoyette-compat-20190127:1.6 gcc-7-4-0:1.1.1.6 pgoyette-compat-20190118:1.5 pgoyette-compat-1226:1.5 pgoyette-compat-1126:1.5 gcc-6-5-0:1.1.1.5 pgoyette-compat-1020:1.5 pgoyette-compat-0930:1.5 pgoyette-compat-0906:1.5 netbsd-7-2-RELEASE:1.2 pgoyette-compat-0728:1.5 netbsd-8-0-RELEASE:1.3.8.1 phil-wifi:1.5.0.4 phil-wifi-base:1.5 pgoyette-compat-0625:1.5 netbsd-8-0-RC2:1.3.8.1 pgoyette-compat-0521:1.5 pgoyette-compat-0502:1.5 pgoyette-compat-0422:1.5 netbsd-8-0-RC1:1.3.8.1 pgoyette-compat-0415:1.5 pgoyette-compat-0407:1.5 pgoyette-compat-0330:1.5 pgoyette-compat-0322:1.5 pgoyette-compat-0315:1.5 netbsd-7-1-2-RELEASE:1.2 pgoyette-compat:1.5.0.2 pgoyette-compat-base:1.5 gcc-6-4-0:1.1.1.5 netbsd-7-1-1-RELEASE:1.2 gcc-5-5-0:1.1.1.4 matt-nb8-mediatek:1.3.0.12 matt-nb8-mediatek-base:1.3 perseant-stdc-iso10646:1.3.0.10 perseant-stdc-iso10646-base:1.3 netbsd-8:1.3.0.8 netbsd-8-base:1.3 prg-localcount2-base3:1.3 prg-localcount2-base2:1.3 prg-localcount2-base1:1.3 prg-localcount2:1.3.0.6 prg-localcount2-base:1.3 pgoyette-localcount-20170426:1.3 bouyer-socketcan-base1:1.3 pgoyette-localcount-20170320:1.3 netbsd-7-1:1.2.0.10 netbsd-7-1-RELEASE:1.2 netbsd-7-1-RC2:1.2 netbsd-7-nhusb-base-20170116:1.2 bouyer-socketcan:1.3.0.4 bouyer-socketcan-base:1.3 pgoyette-localcount-20170107:1.3 netbsd-7-1-RC1:1.2 pgoyette-localcount-20161104:1.3 netbsd-7-0-2-RELEASE:1.2 localcount-20160914:1.3 netbsd-7-nhusb:1.2.0.8 netbsd-7-nhusb-base:1.2 pgoyette-localcount-20160806:1.3 pgoyette-localcount-20160726:1.3 pgoyette-localcount:1.3.0.2 pgoyette-localcount-base:1.3 gcc-5-4-0:1.1.1.3 netbsd-7-0-1-RELEASE:1.2 gcc-5-3-0:1.1.1.3 netbsd-7-0:1.2.0.6 netbsd-7-0-RELEASE:1.2 gcc-4-8-5-pre-gcc-old-import:1.2 netbsd-7-0-RC3:1.2 netbsd-7-0-RC2:1.2 post-gcc-4-8-5-merge:1.2 gcc-4-8-5:1.1.1.2 netbsd-7-0-RC1:1.2 gcc-4-8-4:1.1.1.2 gcc-4-8-20141009:1.1.1.2 netbsd-6-0-6-RELEASE:1.1.1.1 netbsd-6-1-5-RELEASE:1.1.1.1 netbsd-7:1.2.0.4 netbsd-7-base:1.2 gcc-4-8-3:1.1.1.2 yamt-pagecache-base9:1.2 yamt-pagecache-tag8:1.1.1.1 netbsd-6-1-4-RELEASE:1.1.1.1 netbsd-6-0-5-RELEASE:1.1.1.1 tls-earlyentropy:1.2.0.2 tls-earlyentropy-base:1.2 riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.2 riastradh-drm2-base3:1.2 gcc-4-8-3-pre-r208254:1.1.1.2 gcc-4-8-3-pre-r206687:1.1.1.2 imported-to-gcc-old-20140227-0107:1.1.1.1 netbsd-6-1-3-RELEASE:1.1.1.1 netbsd-6-0-4-RELEASE:1.1.1.1 netbsd-6-1-2-RELEASE:1.1.1.1 netbsd-6-0-3-RELEASE:1.1.1.1 netbsd-6-1-1-RELEASE:1.1.1.1 riastradh-drm2-base2:1.1.1.1 riastradh-drm2-base1:1.1.1.1 riastradh-drm2:1.1.1.1.0.12 riastradh-drm2-base:1.1.1.1 netbsd-6-1:1.1.1.1.0.16 netbsd-6-0-2-RELEASE:1.1.1.1 netbsd-6-1-RELEASE:1.1.1.1 netbsd-6-1-RC4:1.1.1.1 netbsd-6-1-RC3:1.1.1.1 agc-symver:1.1.1.1.0.14 agc-symver-base:1.1.1.1 netbsd-6-1-RC2:1.1.1.1 netbsd-6-1-RC1:1.1.1.1 yamt-pagecache-base8:1.1.1.1 netbsd-6-0-1-RELEASE:1.1.1.1 yamt-pagecache-base7:1.1.1.1 matt-nb6-plus-nbase:1.1.1.1 yamt-pagecache-base6:1.1.1.1 netbsd-6-0:1.1.1.1.0.10 netbsd-6-0-RELEASE:1.1.1.1 gcc-4-5-4:1.1.1.1 netbsd-6-0-RC2:1.1.1.1 tls-maxphys:1.1.1.1.0.8 tls-maxphys-base:1.2 matt-nb6-plus:1.1.1.1.0.6 matt-nb6-plus-base:1.1.1.1 netbsd-6-0-RC1:1.1.1.1 yamt-pagecache-base5:1.1.1.1 yamt-pagecache-base4:1.1.1.1 netbsd-6:1.1.1.1.0.4 netbsd-6-base:1.1.1.1 yamt-pagecache-base3:1.1.1.1 yamt-pagecache-base2:1.1.1.1 yamt-pagecache:1.1.1.1.0.2 yamt-pagecache-base:1.1.1.1 gcc-4-5-3:1.1.1.1 FSF:1.1.1; locks; strict; comment @# @; 1.14 date 2025.09.14.00.09.00; author mrg; state Exp; branches; next 1.13; commitid x9D5QEnvbeMI4CaG; 1.13 date 2024.06.30.08.38.43; author mrg; state Exp; branches; next 1.12; commitid kExYYE9GeDZb5ZfF; 1.12 date 2023.07.30.05.51.43; author mrg; state Exp; branches 1.12.2.1; next 1.11; commitid Iugici1GtQ2mWMyE; 1.11 date 2021.04.11.00.02.23; author mrg; state Exp; branches; next 1.10; commitid rXajJcXg3xWG0OOC; 1.10 date 2020.09.05.09.12.32; author mrg; state Exp; branches; next 1.9; commitid dS3LXwk3lAvP4QmC; 1.9 date 2020.03.11.08.29.48; author mrg; state Exp; branches; next 1.8; commitid jRMJlCbDUVAWyXZB; 1.8 date 2019.10.01.10.38.23; author mrg; state Exp; branches; next 1.7; commitid r1DeKUVOMBnJt9FB; 1.7 date 2019.07.31.16.39.02; author christos; state Exp; branches; next 1.6; commitid VaIe7nhjPChctdxB; 1.6 date 2019.01.19.12.10.12; author mrg; state Exp; branches 1.6.2.1; next 1.5; commitid k8UsQyKpGt5Abo8B; 1.5 date 2018.02.02.03.41.11; author mrg; state Exp; branches 1.5.2.1 1.5.4.1; next 1.4; commitid YbHkrPGCnw2dEepA; 1.4 date 2017.11.12.00.36.47; author mrg; state Exp; branches; next 1.3; commitid qvf6fubay3FAgGeA; 1.3 date 2016.01.24.09.43.38; author mrg; state Exp; branches 1.3.8.1; next 1.2; commitid dxhNntGC3MSSqaSy; 1.2 date 2014.03.04.09.12.09; author mrg; state Exp; branches; next 1.1; commitid k8bqFq3KqXeVtmrx; 1.1 date 2011.06.21.01.24.03; author mrg; state Exp; branches 1.1.1.1; next ; 1.12.2.1 date 2024.07.01.01.00.57; author perseant; state Exp; branches; next ; commitid NkoYLLCQWWw9v4gF; 1.6.2.1 date 2019.08.04.19.09.26; author martin; state Exp; branches; next 1.6.2.2; commitid bUwSiV4Xfo3LaKxB; 1.6.2.2 date 2020.08.14.10.45.30; author martin; state Exp; branches; next ; commitid N4xCrirfb6ezh1kC; 1.5.2.1 date 2019.01.26.21.59.17; author pgoyette; state Exp; branches; next ; commitid JKpcmvSjdT25dl9B; 1.5.4.1 date 2019.06.10.21.54.30; author christos; state Exp; branches; next 1.5.4.2; commitid jtc8rnCzWiEEHGqB; 1.5.4.2 date 2020.04.08.14.06.37; author martin; state Exp; branches; next 1.5.4.3; commitid Qli2aW9E74UFuA3C; 1.5.4.3 date 2020.04.13.07.58.22; author martin; state Exp; branches; next ; commitid X01YhRUPVUDaec4C; 1.3.8.1 date 2017.11.23.11.01.56; author martin; state Exp; branches; next ; commitid lA6hq5q2Y1dXl9gA; 1.1.1.1 date 2011.06.21.01.24.03; author mrg; state Exp; branches 1.1.1.1.2.1 1.1.1.1.8.1; next 1.1.1.2; 1.1.1.2 date 2014.03.01.08.41.19; author mrg; state Exp; branches; next 1.1.1.3; commitid TtaB91QNTknAoYqx; 1.1.1.3 date 2016.01.24.06.05.42; author mrg; state Exp; branches; next 1.1.1.4; commitid uWWfbLp08zOK79Sy; 1.1.1.4 date 2017.11.11.23.49.27; author mrg; state Exp; branches; next 1.1.1.5; commitid KefS4gJN8ajyYFeA; 1.1.1.5 date 2018.02.02.01.58.48; author mrg; state Exp; branches; next 1.1.1.6; commitid XNKaycqpfhzd5epA; 1.1.1.6 date 2019.01.19.10.14.04; author mrg; state Exp; branches; next 1.1.1.7; commitid VQ8OwWIg5RS9kn8B; 1.1.1.7 date 2019.10.01.09.36.05; author mrg; state Exp; branches; next 1.1.1.8; commitid smvgr2IPAQDr89FB; 1.1.1.8 date 2020.03.11.08.15.47; author mrg; state Exp; branches; next 1.1.1.9; commitid AhKhCnGPUZgytXZB; 1.1.1.9 date 2020.08.11.05.10.32; author mrg; state Exp; branches; next 1.1.1.10; commitid 5dBRDT7i6e65xBjC; 1.1.1.10 date 2020.08.11.05.30.07; author mrg; state Exp; branches; next 1.1.1.11; commitid 7AI4OfpLi4eqEBjC; 1.1.1.11 date 2020.09.05.07.52.07; author mrg; state Exp; branches; next 1.1.1.12; commitid ZRYA7IOuwfMjAPmC; 1.1.1.12 date 2021.04.10.22.10.02; author mrg; state Exp; branches; next 1.1.1.13; commitid eC4g0MRpqTvEkNOC; 1.1.1.13 date 2023.07.30.05.21.19; author mrg; state Exp; branches; next 1.1.1.14; commitid tk6nV4mbc9nVEMyE; 1.1.1.14 date 2024.06.30.07.35.38; author mrg; state Exp; branches; next 1.1.1.15; commitid m7BwZsPdfJvuHYfF; 1.1.1.15 date 2025.09.13.23.45.46; author mrg; state Exp; branches; next ; commitid KwhwN4krNWa6XBaG; 1.1.1.1.2.1 date 2014.05.22.16.37.36; author yamt; state Exp; branches; next ; commitid DX8bafDLmqEbpyBx; 1.1.1.1.8.1 date 2014.08.19.23.54.38; author tls; state Exp; branches; next ; commitid jTnpym9Qu0o4R1Nx; desc @@ 1.14 log @merge GCC 14.3.0. @ text @dnl dnl GLIBCXX_CONDITIONAL (NAME, SHELL-TEST) dnl dnl Exactly like AM_CONDITIONAL, but delays evaluation of the test until the dnl end of configure. This lets tested variables be reassigned, and the dnl conditional will depend on the final state of the variable. For a simple dnl example of why this is needed, see GLIBCXX_ENABLE_HOSTED. dnl m4_define([_m4_divert(glibcxx_diversion)], 8000)dnl AC_DEFUN([GLIBCXX_CONDITIONAL], [dnl m4_divert_text([glibcxx_diversion],dnl AM_CONDITIONAL([$1],[$2]) )dnl ])dnl AC_DEFUN([GLIBCXX_EVALUATE_CONDITIONALS], [m4_undivert([glibcxx_diversion])])dnl dnl dnl Check to see what architecture and operating system we are compiling dnl for. Also, if architecture- or OS-specific flags are required for dnl compilation, pick them up here. dnl AC_DEFUN([GLIBCXX_CHECK_HOST], [ . $glibcxx_srcdir/configure.host AC_MSG_NOTICE([CPU config directory is $cpu_include_dir]) AC_MSG_NOTICE([OS config directory is $os_include_dir]) ]) dnl dnl Initialize the rest of the library configury. At this point we have dnl variables like $host. dnl dnl Sets: dnl SUBDIRS dnl Substs: dnl glibcxx_builddir (absolute path) dnl glibcxx_srcdir (absolute path) dnl toplevel_builddir (absolute path) dnl toplevel_srcdir (absolute path) dnl with_cross_host dnl with_newlib dnl with_target_subdir dnl plus dnl - the variables in GLIBCXX_CHECK_HOST / configure.host dnl - default settings for all AM_CONFITIONAL test variables dnl - lots of tools, like CC and CXX dnl AC_DEFUN([GLIBCXX_CONFIGURE], [ # Keep these sync'd with the list in Makefile.am. The first provides an # expandable list at autoconf time; the second provides an expandable list # (i.e., shell variable) at configure time. m4_define([glibcxx_SUBDIRS],[include libsupc++ src src/c++98 src/c++11 src/c++17 src/c++20 src/c++23 src/c++26 src/filesystem src/libbacktrace src/experimental doc python]) SUBDIRS='glibcxx_SUBDIRS' # These need to be absolute paths, yet at the same time need to # canonicalize only relative paths, because then amd will not unmount # drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd. glibcxx_builddir=`${PWDCMD-pwd}` case $srcdir in [\\/$]* | ?:[\\/]*) glibcxx_srcdir=${srcdir} ;; *) glibcxx_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;; esac toplevel_builddir=${glibcxx_builddir}/.. toplevel_srcdir=${glibcxx_srcdir}/.. AC_SUBST(glibcxx_builddir) AC_SUBST(glibcxx_srcdir) AC_SUBST(toplevel_builddir) AC_SUBST(toplevel_srcdir) # We use these options to decide which functions to include. They are # set from the top level. AC_ARG_WITH([target-subdir], AC_HELP_STRING([--with-target-subdir=SUBDIR], [configuring in a subdirectory])) AC_ARG_WITH([cross-host], AC_HELP_STRING([--with-cross-host=HOST], [configuring with a cross compiler])) AC_ARG_WITH([newlib], AC_HELP_STRING([--with-newlib], [assume newlib as a system C library])) # Will set LN_S to either 'ln -s', 'ln', or 'cp -p' (if linking isn't # available). Uncomment the next line to force a particular method. AC_PROG_LN_S #LN_S='cp -p' AC_CHECK_TOOL(AS, as) AC_CHECK_TOOL(AR, ar) AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error) AM_MAINTAINER_MODE # Set up safe default values for all subsequent AM_CONDITIONAL tests # which are themselves conditionally expanded. ## (Right now, this only matters for enable_wchar_t, but nothing prevents ## other macros from doing the same. This should be automated.) -pme # Check for C library flavor since GNU/Linux platforms use different # configuration directories depending on the C library in use. AC_EGREP_CPP([_using_uclibc], [ #include #if __UCLIBC__ _using_uclibc #endif ], uclibc=yes, uclibc=no) AC_EGREP_CPP([_using_bionic], [ #include #if __BIONIC__ _using_bionic #endif ], bionic=yes, bionic=no) # Find platform-specific directories containing configuration info. # Also possibly modify flags used elsewhere, as needed by the platform. GLIBCXX_CHECK_HOST ]) dnl dnl Tests for newer compiler features, or features that are present in newer dnl compiler versions but not older compiler versions still in use, should dnl be placed here. dnl dnl Defines: dnl WERROR='-Werror' if requested and possible; g++'s that lack the dnl new inlining code or the new system_header pragma will die on -Werror. dnl Leave it out by default and use maint-mode to use it. dnl SECTION_FLAGS='-ffunction-sections -fdata-sections' if dnl compiler supports it and the user has not requested debug mode. dnl AC_DEFUN([GLIBCXX_CHECK_COMPILER_FEATURES], [ # All these tests are for C++; save the language and the compiler flags. # The CXXFLAGS thing is suspicious, but based on similar bits previously # found in GLIBCXX_CONFIGURE. AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_test_CXXFLAGS="${CXXFLAGS+set}" ac_save_CXXFLAGS="$CXXFLAGS" # Check for -ffunction-sections -fdata-sections AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections]) CXXFLAGS='-g -Werror -ffunction-sections -fdata-sections' AC_TRY_COMPILE([int foo; void bar() { };],, [ac_fdsections=yes], [ac_fdsections=no]) if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS="$ac_save_CXXFLAGS" else # this is the suspicious part CXXFLAGS='' fi if test x"$ac_fdsections" = x"yes"; then SECTION_FLAGS='-ffunction-sections -fdata-sections' fi AC_MSG_RESULT($ac_fdsections) AC_LANG_RESTORE AC_SUBST(SECTION_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 dnl safe (like an empty string). dnl dnl Defines: dnl SECTION_LDFLAGS='-Wl,--gc-sections' if possible dnl OPT_LDFLAGS='-Wl,-O1' and '-z,relro' if possible dnl LD (as a side effect of testing) dnl Sets: dnl with_gnu_ld dnl glibcxx_ld_is_gold (set to "no" or "yes") dnl glibcxx_ld_is_mold (set to "no" or "yes") dnl glibcxx_gnu_ld_version (possibly) dnl dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will dnl set glibcxx_gnu_ld_version to 12345. Zeros cause problems. dnl AC_DEFUN([GLIBCXX_CHECK_LINKER_FEATURES], [ # If we're not using GNU ld, then there's no point in even trying these # tests. Check for that first. We should have already tested for gld # by now (in libtool), but require it now just to be safe... test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS='' test -z "$OPT_LDFLAGS" && OPT_LDFLAGS='' AC_REQUIRE([AC_PROG_LD]) AC_REQUIRE([AC_PROG_AWK]) # The name set by libtool depends on the version of libtool. Shame on us # for depending on an impl detail, but c'est la vie. Older versions used # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually # makes sense). We'll test with_gnu_ld everywhere else, so if that isn't # set (hence we're using an older libtool), then set it. if test x${with_gnu_ld+set} != xset; then if test x${ac_cv_prog_gnu_ld+set} != xset; then # We got through "ac_require(ac_prog_ld)" and still not set? Huh? with_gnu_ld=no else with_gnu_ld=$ac_cv_prog_gnu_ld fi fi # Start by getting the version number. I think the libtool test already # does some of this, but throws away the result. glibcxx_ld_is_gold=no glibcxx_ld_is_mold=no if test x"$with_gnu_ld" = x"yes"; then AC_MSG_CHECKING([for ld version]) changequote(,) if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then glibcxx_ld_is_gold=yes elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then glibcxx_ld_is_mold=yes fi ldver=`$LD --version 2>/dev/null | sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'` changequote([,]) glibcxx_gnu_ld_version=`echo $ldver | \ $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'` AC_MSG_RESULT($glibcxx_gnu_ld_version) fi # Set --gc-sections. glibcxx_have_gc_sections=no if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" ; then if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then glibcxx_have_gc_sections=yes fi else glibcxx_gcsections_min_ld=21602 if test x"$with_gnu_ld" = x"yes" && test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then glibcxx_have_gc_sections=yes fi fi if test "$glibcxx_have_gc_sections" = "yes"; then # Sufficiently young GNU ld it is! Joy and bunny rabbits! # NB: This flag only works reliably after 2.16.1. Configure tests # for this are difficult, so hard wire a value that should work. ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS='-Wl,--gc-sections' # Check for -Wl,--gc-sections AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections]) AC_TRY_LINK([ int one(void) { return 1; } int two(void) { return 2; } ], [ two(); ] , [ac_gcsections=yes], [ac_gcsections=no]) if test "$ac_gcsections" = "yes"; then rm -f conftest.c touch conftest.c if $CC -c conftest.c; then if $LD --gc-sections -o conftest conftest.o 2>&1 | \ grep "Warning: gc-sections option ignored" > /dev/null; then ac_gcsections=no fi fi rm -f conftest.c conftest.o conftest fi if test "$ac_gcsections" = "yes"; then SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS" fi AC_MSG_RESULT($ac_gcsections) if test "$ac_test_CFLAGS" = set; then CFLAGS="$ac_save_CFLAGS" else # this is the suspicious part CFLAGS='' fi fi # Set -z,relro. # Note this is only for shared objects. ac_ld_relro=no if test x"$with_gnu_ld" = x"yes"; then # cygwin and mingw uses PE, which has no ELF relro support, # multi target ld may confuse configure machinery case "$host" in *-*-cygwin*) ;; *-*-mingw*) ;; *) AC_MSG_CHECKING([for ld that supports -Wl,-z,relro]) cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"` if test -n "$cxx_z_relo"; then OPT_LDFLAGS="-Wl,-z,relro" ac_ld_relro=yes fi AC_MSG_RESULT($ac_ld_relro) esac fi # Set linker optimization flags. if test x"$with_gnu_ld" = x"yes"; then OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS" fi AC_SUBST(SECTION_LDFLAGS) AC_SUBST(OPT_LDFLAGS) ]) dnl dnl Check for headers for, and arguments to, the setrlimit() function. dnl Used only in testsuite_hooks.h. Called from GLIBCXX_CONFIGURE_TESTSUITE. dnl dnl Defines: dnl _GLIBCXX_RES_LIMITS if we can set artificial resource limits dnl various HAVE_LIMIT_* for individual limit names dnl AC_DEFUN([GLIBCXX_CHECK_SETRLIMIT_ancilliary], [ AC_MSG_CHECKING([for RLIMIT_$1]) AC_TRY_COMPILE( [#include #include #include ], [ int f = RLIMIT_$1 ; ], [glibcxx_mresult=1], [glibcxx_mresult=0]) AC_DEFINE_UNQUOTED(HAVE_LIMIT_$1, $glibcxx_mresult, [Only used in build directory testsuite_hooks.h.]) if test $glibcxx_mresult = 1 ; then res=yes ; else res=no ; fi AC_MSG_RESULT($res) ]) AC_DEFUN([GLIBCXX_CHECK_SETRLIMIT], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS setrlimit_have_headers=yes AC_CHECK_HEADERS(unistd.h sys/time.h sys/resource.h, [], [setrlimit_have_headers=no]) # If don't have the headers, then we can't run the tests now, and we # won't be seeing any of these during testsuite compilation. if test $setrlimit_have_headers = yes; then # Can't do these in a loop, else the resulting syntax is wrong. GLIBCXX_CHECK_SETRLIMIT_ancilliary(DATA) GLIBCXX_CHECK_SETRLIMIT_ancilliary(RSS) GLIBCXX_CHECK_SETRLIMIT_ancilliary(VMEM) GLIBCXX_CHECK_SETRLIMIT_ancilliary(AS) GLIBCXX_CHECK_SETRLIMIT_ancilliary(FSIZE) # Check for rlimit, setrlimit. AC_CACHE_CHECK([for testsuite resource limits support], glibcxx_cv_setrlimit, [ AC_TRY_COMPILE( [#include #include #include ], [struct rlimit r; setrlimit(0, &r);], [glibcxx_cv_setrlimit=yes], [glibcxx_cv_setrlimit=no]) ]) if test $glibcxx_cv_setrlimit = yes; then AC_DEFINE(_GLIBCXX_RES_LIMITS, 1, [Define if using setrlimit to set resource limits during "make check"]) fi fi AC_LANG_RESTORE ]) dnl dnl Check whether S_ISREG (Posix) or S_IFREG is available in . dnl Define HAVE_S_ISREG / HAVE_S_IFREG appropriately. dnl AC_DEFUN([GLIBCXX_CHECK_S_ISREG_OR_S_IFREG], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_CHECKING([for S_ISREG or S_IFREG]) AC_CACHE_VAL(glibcxx_cv_S_ISREG, [ GCC_TRY_COMPILE_OR_LINK( [#include ], [struct stat buffer; fstat(0, &buffer); S_ISREG(buffer.st_mode);], [glibcxx_cv_S_ISREG=yes], [glibcxx_cv_S_ISREG=no]) ]) AC_CACHE_VAL(glibcxx_cv_S_IFREG, [ GCC_TRY_COMPILE_OR_LINK( [#include ], [struct stat buffer; fstat(0, &buffer); S_IFREG & buffer.st_mode;], [glibcxx_cv_S_IFREG=yes], [glibcxx_cv_S_IFREG=no]) ]) res=no if test $glibcxx_cv_S_ISREG = yes; then AC_DEFINE(HAVE_S_ISREG, 1, [Define if S_ISREG is available in .]) res=S_ISREG elif test $glibcxx_cv_S_IFREG = yes; then AC_DEFINE(HAVE_S_IFREG, 1, [Define if S_IFREG is available in .]) res=S_IFREG fi AC_MSG_RESULT($res) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether poll is available in , and define HAVE_POLL. dnl AC_DEFUN([GLIBCXX_CHECK_POLL], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_CACHE_CHECK([for poll], glibcxx_cv_POLL, [ GCC_TRY_COMPILE_OR_LINK( [#include ], [struct pollfd pfd[1]; pfd[0].events = POLLIN; poll(pfd, 1, 0);], [glibcxx_cv_POLL=yes], [glibcxx_cv_POLL=no]) ]) if test $glibcxx_cv_POLL = yes; then AC_DEFINE(HAVE_POLL, 1, [Define if poll is available in .]) fi CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether writev is available in , and define HAVE_WRITEV. dnl AC_DEFUN([GLIBCXX_CHECK_WRITEV], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_CACHE_CHECK([for writev], glibcxx_cv_WRITEV, [ GCC_TRY_COMPILE_OR_LINK( [#include ], [struct iovec iov[2]; writev(0, iov, 0);], [glibcxx_cv_WRITEV=yes], [glibcxx_cv_WRITEV=no]) ]) if test $glibcxx_cv_WRITEV = yes; then AC_DEFINE(HAVE_WRITEV, 1, [Define if writev is available in .]) fi CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether LFS support is available. dnl AC_DEFUN([GLIBCXX_CHECK_LFS], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_CACHE_CHECK([for LFS support], glibcxx_cv_LFS, [ GCC_TRY_COMPILE_OR_LINK( [#include #include #include ], [FILE* fp; fopen64("t", "w"); fseeko64(fp, 0, SEEK_CUR); ftello64(fp); lseek64(1, 0, SEEK_CUR); struct stat64 buf; fstat64(1, &buf);], [glibcxx_cv_LFS=yes], [glibcxx_cv_LFS=no]) ]) if test $glibcxx_cv_LFS = yes; then AC_DEFINE(_GLIBCXX_USE_LFS, 1, [Define if LFS support is available.]) fi AC_CACHE_CHECK([for fseeko and ftello], glibcxx_cv_posix_lfs, [ GCC_TRY_COMPILE_OR_LINK( [#include ], [FILE* fp; fseeko(fp, 0, SEEK_CUR); ftello(fp); ], [glibcxx_cv_posix_lfs=yes], [glibcxx_cv_posix_lfs=no]) ]) if test $glibcxx_cv_posix_lfs = yes; then AC_DEFINE(_GLIBCXX_USE_FSEEKO_FTELLO, 1, [Define if fseeko and ftello are available.]) fi CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether the old Copy-On-Write basic_string should allocate a new dnl empty representation for every default-constructed basic_string. Without dnl this option, COW strings share a single empty rep in static storage, dnl but this only works if the linker can guarantee the static storage has dnl a unique definition in the process. It also doesn't work if basic_string dnl objects are stored in shared memory (see PR libstdc++/16612). dnl When fully dynamic strings are enabled, the static storage is not used dnl and a new empty string with reference-count == 1 is allocated each time. dnl Enabling this changes the libstdc++.so ABI. dnl dnl --enable-fully-dynamic-string defines _GLIBCXX_FULLY_DYNAMIC_STRING to 1 dnl --disable-fully-dynamic-string defines _GLIBCXX_FULLY_DYNAMIC_STRING to 0 dnl otherwise the macro is not defined. dnl + Usage: GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING[(DEFAULT)] dnl Where DEFAULT is either `yes' or `no'. dnl AC_DEFUN([GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING], [ GLIBCXX_ENABLE(fully-dynamic-string,$1,,[do not put empty strings in per-process static memory], [permit yes|no]) if test $enable_fully_dynamic_string = yes; then enable_fully_dynamic_string_def=1 else enable_fully_dynamic_string_def=0 fi AC_DEFINE_UNQUOTED([_GLIBCXX_FULLY_DYNAMIC_STRING], [${enable_fully_dynamic_string_def}], [Define to 1 if a fully dynamic basic_string is wanted, 0 to disable, undefined for platform defaults]) ]) dnl dnl Does any necessary configuration of the testsuite directory. Generates dnl the testsuite_hooks.h header. dnl dnl GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE must be done before this. dnl dnl Sets: dnl enable_abi_check dnl GLIBCXX_TEST_WCHAR_T dnl GLIBCXX_TEST_THREAD dnl Substs: dnl baseline_dir dnl baseline_subdir_switch dnl AC_DEFUN([GLIBCXX_CONFIGURE_TESTSUITE], [ # Do checks for resource limit functions. GLIBCXX_CHECK_SETRLIMIT if $GLIBCXX_IS_NATIVE ; then # Look for setenv, so that extended locale tests can be performed. GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv) fi if $GLIBCXX_IS_NATIVE && test $is_hosted = yes && test $enable_symvers != no; then case "$host" in *-*-cygwin*) enable_abi_check=no ;; *) enable_abi_check=yes ;; esac else # Only build this as native, since automake does not understand # CXX_FOR_BUILD. enable_abi_check=no fi # Export file names for ABI checking. baseline_dir="$glibcxx_srcdir/config/abi/post/${abi_baseline_pair}" AC_SUBST(baseline_dir) baseline_subdir_switch="$abi_baseline_subdir_switch" AC_SUBST(baseline_subdir_switch) ]) dnl dnl Does any necessary configuration for docbook in the docs directory. dnl dnl XSLTPROC must be set before this dnl dnl Sets: dnl glibcxx_stylesheets dnl Substs: dnl XSL_STYLE_DIR dnl AC_DEFUN([GLIBCXX_CONFIGURE_DOCBOOK], [ glibcxx_docbook_url=http://cdn.docbook.org/release/xsl/current/ AC_MSG_CHECKING([for local stylesheet directory]) glibcxx_local_stylesheets=no if test x${XMLCATALOG} = xyes && xsl_style_dir=`xmlcatalog "" $glibcxx_docbook_url 2>/dev/null` then XSL_STYLE_DIR=`echo $xsl_style_dir | sed -n 's;^file://;;p'` glibcxx_local_stylesheets=yes else for dir in \ /usr/share/sgml/docbook/xsl-ns-stylesheets \ /usr/share/xml/docbook/stylesheet/docbook-xsl-ns \ /usr/share/xml/docbook/stylesheet/nwalsh5/current \ /usr/share/xml/docbook/stylesheet/nwalsh/current do if test -d $dir; then glibcxx_local_stylesheets=yes XSL_STYLE_DIR=$dir break fi done fi AC_MSG_RESULT($glibcxx_local_stylesheets) if test x"$glibcxx_local_stylesheets" = x"yes"; then AC_SUBST(XSL_STYLE_DIR) AC_MSG_NOTICE($XSL_STYLE_DIR) AC_MSG_CHECKING([for docbook stylesheets for documentation creation]) glibcxx_stylesheets=no if test x${XMLCATALOG} = xno || xmlcatalog "" $glibcxx_docbook_url/xhtml/docbook.xsl >/dev/null 2>&1; then if test x${XSLTPROC} = xyes && echo '' | xsltproc --noout --nonet --xinclude $glibcxx_docbook_url/xhtml/docbook.xsl - 2>/dev/null; then glibcxx_stylesheets=yes fi fi AC_MSG_RESULT($glibcxx_stylesheets) else glibcxx_stylesheets=no fi # Check for epub3 dependencies. AC_MSG_CHECKING([for epub3 stylesheets for documentation creation]) glibcxx_epub_stylesheets=no if test x"$glibcxx_local_stylesheets" = x"yes"; then if test -f "$XSL_STYLE_DIR/epub3/chunk.xsl"; then glibcxx_epub_stylesheets=yes fi fi AC_MSG_RESULT($glibcxx_epub_stylesheets) AM_CONDITIONAL(BUILD_EPUB, test x"$glibcxx_epub_stylesheets" = x"yes") ]) dnl dnl Set up *_INCLUDES variables for all sundry Makefile.am's. dnl dnl Substs: dnl GLIBCXX_INCLUDES dnl TOPLEVEL_INCLUDES dnl AC_DEFUN([GLIBCXX_EXPORT_INCLUDES], [ # Used for every C++ compile we perform. GLIBCXX_INCLUDES="\ -I$glibcxx_builddir/include/$host_alias \ -I$glibcxx_builddir/include \ -I$glibcxx_srcdir/libsupc++" # For Canadian crosses, pick this up too. if test $CANADIAN = yes; then GLIBCXX_INCLUDES="$GLIBCXX_INCLUDES -I\${includedir}" fi # Stuff in the actual top level. Currently only used by libsupc++ to # get unwind* headers from the libgcc dir. #TOPLEVEL_INCLUDES='-I$(toplevel_srcdir)/libgcc -I$(toplevel_srcdir)/include' TOPLEVEL_INCLUDES='-I$(toplevel_srcdir)/libgcc' # Now, export this to all the little Makefiles.... AC_SUBST(GLIBCXX_INCLUDES) AC_SUBST(TOPLEVEL_INCLUDES) ]) dnl dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's. dnl (SECTION_FLAGS is done under CHECK_COMPILER_FEATURES.) dnl dnl Substs: dnl CPPFLAGS dnl OPTIMIZE_CXXFLAGS dnl WARN_FLAGS dnl AC_DEFUN([GLIBCXX_EXPORT_FLAGS], [ AC_SUBST(CPPFLAGS) # Optimization flags that are probably a good idea for thrill-seekers. Just # uncomment the lines below and make, everything else is ready to go... # Alternatively OPTIMIZE_CXXFLAGS can be set in configure.host. # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc AC_SUBST(OPTIMIZE_CXXFLAGS) WARN_FLAGS="-Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi=2" AC_SUBST(WARN_FLAGS) ]) dnl dnl All installation directory information is determined here. dnl dnl Substs: dnl gxx_install_dir dnl glibcxx_prefixdir dnl glibcxx_toolexecdir dnl glibcxx_toolexeclibdir dnl dnl Assumes cross_compiling bits already done, and with_cross_host in dnl particular. dnl dnl This logic must match gcc/configure.ac's setting of gcc_gxx_include_dir. dnl config/gxx-include-dir.m4 must be kept consistant with this as well. AC_DEFUN([GLIBCXX_EXPORT_INSTALL_INFO], [ glibcxx_toolexecdir=no glibcxx_toolexeclibdir=no glibcxx_prefixdir=$prefix AC_MSG_CHECKING([for gxx-include-dir]) AC_ARG_WITH([gxx-include-dir], AC_HELP_STRING([--with-gxx-include-dir=DIR], [installation directory for include files]), [case "$withval" in yes) AC_MSG_ERROR([Missing directory for --with-gxx-include-dir]) ;; no) gxx_include_dir=no ;; *) gxx_include_dir=$withval ;; esac], [gxx_include_dir=no]) AC_MSG_RESULT($gxx_include_dir) AC_MSG_CHECKING([for --enable-version-specific-runtime-libs]) AC_ARG_ENABLE([version-specific-runtime-libs], AC_HELP_STRING([--enable-version-specific-runtime-libs], [Specify that runtime libraries should be installed in a compiler-specific directory]), [case "$enableval" in yes) version_specific_libs=yes ;; no) version_specific_libs=no ;; *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);; esac], [version_specific_libs=no]) AC_MSG_RESULT($version_specific_libs) GCC_WITH_TOOLEXECLIBDIR # Default case for install directory for include files. if test $version_specific_libs = no && test $gxx_include_dir = no; then gxx_include_dir='include/c++/${gcc_version}' if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then gxx_include_dir='${prefix}/${target_alias}/'"$gxx_include_dir" else gxx_include_dir='${prefix}/'"$gxx_include_dir" fi fi # Version-specific runtime libs processing. if test $version_specific_libs = yes; then # Need the gcc compiler version to know where to install libraries # and header files if --enable-version-specific-runtime-libs option # is selected. FIXME: these variables are misnamed, there are # no executables installed in _toolexecdir or _toolexeclibdir. if test x"$gxx_include_dir" = x"no"; then gxx_include_dir='${libdir}/gcc/${host_alias}/${gcc_version}/include/c++' fi glibcxx_toolexecdir='${libdir}/gcc/${host_alias}' glibcxx_toolexeclibdir='${toolexecdir}/${gcc_version}$(MULTISUBDIR)' fi # Calculate glibcxx_toolexecdir, glibcxx_toolexeclibdir # Install a library built with a cross compiler in tooldir, not libdir. if test x"$glibcxx_toolexecdir" = x"no"; then if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then glibcxx_toolexecdir='${exec_prefix}/${host_alias}' case ${with_toolexeclibdir} in no) glibcxx_toolexeclibdir='${toolexecdir}/lib' ;; *) glibcxx_toolexeclibdir=${with_toolexeclibdir} ;; esac else glibcxx_toolexecdir='${libdir}/gcc/${host_alias}' glibcxx_toolexeclibdir='${libdir}' fi multi_os_directory=`$CXX -print-multi-os-directory` case $multi_os_directory in .) ;; # Avoid trailing /. *) glibcxx_toolexeclibdir=$glibcxx_toolexeclibdir/$multi_os_directory ;; esac fi AC_MSG_CHECKING([for install location]) AC_MSG_RESULT($gxx_include_dir) AC_SUBST(glibcxx_prefixdir) AC_SUBST(gxx_include_dir) AC_SUBST(glibcxx_toolexecdir) AC_SUBST(glibcxx_toolexeclibdir) ]) dnl dnl GLIBCXX_ENABLE 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 manual/appendix_porting.html#appendix.porting.build_hacking for dnl documentation. dnl m4_define([GLIBCXX_ENABLE],[dnl m4_define([_g_switch],[--enable-$1])dnl m4_define([_g_help],[AC_HELP_STRING([_g_switch$3],[$4 @@<:@@default=$2@@:>@@])])dnl AC_ARG_ENABLE([$1],m4_dquote(_g_help), m4_bmatch([$5], [^permit ], [[ case "$enableval" in m4_bpatsubst([$5],[permit ])) ;; *) AC_MSG_ERROR(Unknown argument to enable/disable $1) ;; dnl Idea for future: generate a URL pointing to dnl "onlinedocs/configopts.html#whatever" esac ]], [^$], [[ case "$enableval" in yes|no) ;; *) AC_MSG_ERROR(Argument to enable/disable $1 must be yes or no) ;; esac ]], [[$5]]), [enable_]m4_bpatsubst([$1],-,_)[=][$2]) m4_undefine([_g_switch])dnl m4_undefine([_g_help])dnl ]) dnl dnl Check for ISO/IEC 9899:1999 "C99" support. dnl dnl --enable-c99 defines _GLIBCXX_USE_C99 dnl --disable-c99 leaves _GLIBCXX_USE_C99 undefined dnl + Usage: GLIBCXX_ENABLE_C99[(DEFAULT)] dnl Where DEFAULT is either `yes' or `no'. dnl + If 'C99' stuff is not available, ignores DEFAULT and sets `no'. dnl AC_DEFUN([GLIBCXX_ENABLE_C99], [ GLIBCXX_ENABLE(c99,$1,,[turns on ISO/IEC 9899:1999 support]) if test x"$enable_c99" = x"yes"; then AC_LANG_SAVE AC_LANG_CPLUSPLUS # Use -std=c++98 (instead of -std=gnu++98) because leaving __STRICT_ANSI__ # undefined may cause fake C99 facilities, like pre-standard snprintf, # to be spuriously enabled. ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -std=c++98" ac_save_LIBS="$LIBS" ac_save_gcc_no_link="$gcc_no_link" if test x$gcc_no_link != xyes; then # Use -fno-exceptions to that the C driver can link these tests without # hitting undefined references to personality routines. CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_CHECK_LIB(m, sin, [LIBS="$LIBS -lm"], [ # Use the default compile-only tests in GCC_TRY_COMPILE_OR_LINK gcc_no_link=yes ]) fi # Check for the existence of <math.h> functions used if C99 is enabled. AC_CACHE_CHECK([for ISO C99 support in <math.h> for C++98], glibcxx_cv_c99_math_cxx98, [ GCC_TRY_COMPILE_OR_LINK( [#include <math.h> volatile double d1, d2; volatile int i;], [i = fpclassify(d1); i = isfinite(d1); i = isinf(d1); i = isnan(d1); i = isnormal(d1); i = signbit(d1); i = isgreater(d1, d2); i = isgreaterequal(d1, d2); i = isless(d1, d2); i = islessequal(d1, d2); i = islessgreater(d1, d2); i = islessgreater(d1, d2); i = isunordered(d1, d2); ], [glibcxx_cv_c99_math_cxx98=yes], [glibcxx_cv_c99_math_cxx98=no]) ]) if test x"$glibcxx_cv_c99_math_cxx98" = x"yes"; then AC_DEFINE(_GLIBCXX98_USE_C99_MATH, 1, [Define if C99 functions or macros in <math.h> should be imported in <cmath> in namespace std for C++98.]) fi # Check for the existence of <complex.h> complex math functions. # This is necessary even though libstdc++ uses the builtin versions # of these functions, because if the builtin cannot be used, a reference # to the library function is emitted. AC_CHECK_HEADERS(tgmath.h, ac_has_tgmath_h=yes, ac_has_tgmath_h=no) AC_CHECK_HEADERS(complex.h, ac_has_complex_h=yes, ac_has_complex_h=no) if test x"$ac_has_complex_h" = x"yes"; then AC_CACHE_CHECK([for ISO C99 support in <complex.h> for C++98], glibcxx_cv_c99_complex_cxx98, [ GCC_TRY_COMPILE_OR_LINK( [#include <complex.h> typedef __complex__ float float_type; typedef __complex__ double double_type; typedef __complex__ long double ld_type; volatile float_type tmpf; volatile double_type tmpd; volatile ld_type tmpld; volatile float f; volatile double d; volatile long double ld;], [f = cabsf(tmpf); f = cargf(tmpf); tmpf = ccosf(tmpf); tmpf = ccoshf(tmpf); tmpf = cexpf(tmpf); tmpf = clogf(tmpf); tmpf = csinf(tmpf); tmpf = csinhf(tmpf); tmpf = csqrtf(tmpf); tmpf = ctanf(tmpf); tmpf = ctanhf(tmpf); tmpf = cpowf(tmpf, tmpf); tmpf = cprojf(tmpf); d = cabs(tmpd); d = carg(tmpd); tmpd = ccos(tmpd); tmpd = ccosh(tmpd); tmpd = cexp(tmpd); tmpd = clog(tmpd); tmpd = csin(tmpd); tmpd = csinh(tmpd); tmpd = csqrt(tmpd); tmpd = ctan(tmpd); tmpd = ctanh(tmpd); tmpd = cpow(tmpd, tmpd); tmpd = cproj(tmpd); ld = cabsl(tmpld); ld = cargl(tmpld); tmpld = ccosl(tmpld); tmpld = ccoshl(tmpld); tmpld = cexpl(tmpld); tmpld = clogl(tmpld); tmpld = csinl(tmpld); tmpld = csinhl(tmpld); tmpld = csqrtl(tmpld); tmpld = ctanl(tmpld); tmpld = ctanhl(tmpld); tmpld = cpowl(tmpld, tmpld); tmpld = cprojl(tmpld); ], [glibcxx_cv_c99_complex_cxx98=yes], [glibcxx_cv_c99_complex_cxx98=no]) ]) fi if test x"$glibcxx_cv_c99_complex_cxx98" = x"yes"; then AC_DEFINE(_GLIBCXX98_USE_C99_COMPLEX, 1, [Define if C99 functions in <complex.h> should be used in <complex> for C++98. Using compiler builtins for these functions requires corresponding C99 library functions to be present.]) fi # Check for the existence in <stdio.h> of vscanf, et. al. AC_CACHE_CHECK([for ISO C99 support in <stdio.h> for C++98], glibcxx_cv_c99_stdio_cxx98, [ GCC_TRY_COMPILE_OR_LINK( [#include <stdio.h> #include <stdarg.h> void foo(char* fmt, ...) { va_list args; va_start(args, fmt); vfscanf(stderr, "%i", args); vscanf("%i", args); vsnprintf(fmt, 0, "%i", args); vsscanf(fmt, "%i", args); snprintf(fmt, 0, "%i", 1); }], [], [glibcxx_cv_c99_stdio_cxx98=yes], [glibcxx_cv_c99_stdio_cxx98=no]) ]) if test x"$glibcxx_cv_c99_stdio_cxx98" = x"yes"; then AC_DEFINE(_GLIBCXX98_USE_C99_STDIO, 1, [Define if C99 functions or macros in <stdio.h> should be imported in <cstdio> in namespace std for C++98.]) fi # Check for the existence in <stdlib.h> of lldiv_t, et. al. AC_CACHE_CHECK([for ISO C99 support in <stdlib.h> for C++98], glibcxx_cv_c99_stdlib_cxx98, [ GCC_TRY_COMPILE_OR_LINK( [#include <stdlib.h> volatile float f; volatile long double ld; volatile unsigned long long ll; lldiv_t mydivt;], [char* tmp; f = strtof("gnu", &tmp); ld = strtold("gnu", &tmp); ll = strtoll("gnu", &tmp, 10); ll = strtoull("gnu", &tmp, 10); ll = llabs(10); mydivt = lldiv(10,1); ll = mydivt.quot; ll = mydivt.rem; ll = atoll("10"); _Exit(0); ], [glibcxx_cv_c99_stdlib_cxx98=yes], [glibcxx_cv_c99_stdlib_cxx98=no]) ]) if test x"$glibcxx_cv_c99_stdlib_cxx98" = x"yes"; then AC_DEFINE(_GLIBCXX98_USE_C99_STDLIB, 1, [Define if C99 functions or macros in <stdlib.h> should be imported in <cstdlib> in namespace std for C++98.]) fi # Check for the existence in <wchar.h> of wcstold, etc. if test x"$ac_has_wchar_h" = xyes && test x"$ac_has_wctype_h" = xyes; then AC_CACHE_CHECK([for ISO C99 support in <wchar.h> for C++98], glibcxx_cv_c99_wchar_cxx98, [ AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::wcstold; using ::wcstoll; using ::wcstoull; } ], [], [glibcxx_cv_c99_wchar_cxx98=yes], [glibcxx_cv_c99_wchar_cxx98=no]) ]) # Checks for wide character functions that may not be present. # Injection of these is wrapped with guard macros. # NB: only put functions here, instead of immediately above, if # absolutely necessary. AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::vfwscanf; }], [], [AC_DEFINE(HAVE_VFWSCANF, 1, [Defined if vfwscanf exists.])], []) AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::vswscanf; }], [], [AC_DEFINE(HAVE_VSWSCANF, 1, [Defined if vswscanf exists.])], []) AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::vwscanf; }], [], [AC_DEFINE(HAVE_VWSCANF, 1, [Defined if vwscanf exists.])], []) AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::wcstof; }], [], [AC_DEFINE(HAVE_WCSTOF, 1, [Defined if wcstof exists.])], []) AC_TRY_COMPILE([#include <wctype.h>], [wint_t t; int i = iswblank(t);], [AC_DEFINE(HAVE_ISWBLANK, 1, [Defined if iswblank exists.])], []) if test x"$glibcxx_cv_c99_wchar_cxx98" = x"yes"; then AC_DEFINE(_GLIBCXX98_USE_C99_WCHAR, 1, [Define if C99 functions or macros in <wchar.h> should be imported in <cwchar> in namespace std for C++98.]) fi fi # Option parsed, now set things appropriately. if test x"$glibcxx_cv_c99_math_cxx98" = x"no" || test x"$glibcxx_cv_c99_complex_cxx98" = x"no" || test x"$glibcxx_cv_c99_stdio_cxx98" = x"no" || test x"$glibcxx_cv_c99_stdlib_cxx98" = x"no" || test x"$glibcxx_cv_c99_wchar_cxx98" = x"no"; then enable_c99=no; else AC_DEFINE(_GLIBCXX_USE_C99, 1, [Define if C99 functions or macros from <wchar.h>, <math.h>, <complex.h>, <stdio.h>, and <stdlib.h> can be used or exposed.]) fi gcc_no_link="$ac_save_gcc_no_link" LIBS="$ac_save_LIBS" CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE AC_LANG_SAVE AC_LANG_CPLUSPLUS # Use -std=c++11 and test again for C99 library feature in C++11 mode. # For the reasons given above we use -std=c++11 not -std=gnu++11. ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -std=c++11" ac_save_LIBS="$LIBS" ac_save_gcc_no_link="$gcc_no_link" if test x$gcc_no_link != xyes; then # Use -fno-exceptions to that the C driver can link these tests without # hitting undefined references to personality routines. CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_CHECK_LIB(m, sin, [LIBS="$LIBS -lm"], [ # Use the default compile-only tests in GCC_TRY_COMPILE_OR_LINK gcc_no_link=yes ]) fi # Check for the existence of <stdint.h> types. AC_CACHE_CHECK([for ISO C99 support in <stdint.h> for C++11], glibcxx_cv_c99_stdint, [ AC_TRY_COMPILE([#define __STDC_LIMIT_MACROS #define __STDC_CONSTANT_MACROS #include <stdint.h>], [typedef int8_t my_int8_t; my_int8_t i8 = INT8_MIN; i8 = INT8_MAX; typedef int16_t my_int16_t; my_int16_t i16 = INT16_MIN; i16 = INT16_MAX; typedef int32_t my_int32_t; my_int32_t i32 = INT32_MIN; i32 = INT32_MAX; typedef int64_t my_int64_t; my_int64_t i64 = INT64_MIN; i64 = INT64_MAX; typedef int_fast8_t my_int_fast8_t; my_int_fast8_t if8 = INT_FAST8_MIN; if8 = INT_FAST8_MAX; typedef int_fast16_t my_int_fast16_t; my_int_fast16_t if16 = INT_FAST16_MIN; if16 = INT_FAST16_MAX; typedef int_fast32_t my_int_fast32_t; my_int_fast32_t if32 = INT_FAST32_MIN; if32 = INT_FAST32_MAX; typedef int_fast64_t my_int_fast64_t; my_int_fast64_t if64 = INT_FAST64_MIN; if64 = INT_FAST64_MAX; typedef int_least8_t my_int_least8_t; my_int_least8_t il8 = INT_LEAST8_MIN; il8 = INT_LEAST8_MAX; typedef int_least16_t my_int_least16_t; my_int_least16_t il16 = INT_LEAST16_MIN; il16 = INT_LEAST16_MAX; typedef int_least32_t my_int_least32_t; my_int_least32_t il32 = INT_LEAST32_MIN; il32 = INT_LEAST32_MAX; typedef int_least64_t my_int_least64_t; my_int_least64_t il64 = INT_LEAST64_MIN; il64 = INT_LEAST64_MAX; typedef intmax_t my_intmax_t; my_intmax_t im = INTMAX_MAX; im = INTMAX_MIN; typedef intptr_t my_intptr_t; my_intptr_t ip = INTPTR_MAX; ip = INTPTR_MIN; typedef uint8_t my_uint8_t; my_uint8_t ui8 = UINT8_MAX; ui8 = UINT8_MAX; typedef uint16_t my_uint16_t; my_uint16_t ui16 = UINT16_MAX; ui16 = UINT16_MAX; typedef uint32_t my_uint32_t; my_uint32_t ui32 = UINT32_MAX; ui32 = UINT32_MAX; typedef uint64_t my_uint64_t; my_uint64_t ui64 = UINT64_MAX; ui64 = UINT64_MAX; typedef uint_fast8_t my_uint_fast8_t; my_uint_fast8_t uif8 = UINT_FAST8_MAX; uif8 = UINT_FAST8_MAX; typedef uint_fast16_t my_uint_fast16_t; my_uint_fast16_t uif16 = UINT_FAST16_MAX; uif16 = UINT_FAST16_MAX; typedef uint_fast32_t my_uint_fast32_t; my_uint_fast32_t uif32 = UINT_FAST32_MAX; uif32 = UINT_FAST32_MAX; typedef uint_fast64_t my_uint_fast64_t; my_uint_fast64_t uif64 = UINT_FAST64_MAX; uif64 = UINT_FAST64_MAX; typedef uint_least8_t my_uint_least8_t; my_uint_least8_t uil8 = UINT_LEAST8_MAX; uil8 = UINT_LEAST8_MAX; typedef uint_least16_t my_uint_least16_t; my_uint_least16_t uil16 = UINT_LEAST16_MAX; uil16 = UINT_LEAST16_MAX; typedef uint_least32_t my_uint_least32_t; my_uint_least32_t uil32 = UINT_LEAST32_MAX; uil32 = UINT_LEAST32_MAX; typedef uint_least64_t my_uint_least64_t; my_uint_least64_t uil64 = UINT_LEAST64_MAX; uil64 = UINT_LEAST64_MAX; typedef uintmax_t my_uintmax_t; my_uintmax_t uim = UINTMAX_MAX; uim = UINTMAX_MAX; typedef uintptr_t my_uintptr_t; my_uintptr_t uip = UINTPTR_MAX; uip = UINTPTR_MAX; ],[glibcxx_cv_c99_stdint=yes], [glibcxx_cv_c99_stdint=no]) ]) if test x"$glibcxx_cv_c99_stdint" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_STDINT, 1, [Define if C99 types in <stdint.h> should be imported in <cstdint> in namespace std for C++11.]) fi # Check for the existence of <inttypes.h> functions (NB: doesn't make # sense if the glibcxx_cv_c99_stdint check fails, per C99, 7.8/1). ac_c99_inttypes=no; if test x"$glibcxx_cv_c99_stdint" = x"yes"; then AC_MSG_CHECKING([for ISO C99 support for C++11 in <inttypes.h>]) AC_TRY_COMPILE([#include <inttypes.h>], [intmax_t i, numer, denom, base; const char* s; char** endptr; intmax_t ret = imaxabs(i); imaxdiv_t dret = imaxdiv(numer, denom); ret = strtoimax(s, endptr, base); uintmax_t uret = strtoumax(s, endptr, base); ],[ac_c99_inttypes=yes], [ac_c99_inttypes=no]) AC_MSG_RESULT($ac_c99_inttypes) fi if test x"$ac_c99_inttypes" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_INTTYPES, 1, [Define if C99 functions in <inttypes.h> should be imported in <cinttypes> in namespace std in C++11.]) fi # Check for the existence of wchar_t <inttypes.h> functions (NB: doesn't # make sense if the glibcxx_cv_c99_stdint check fails, per C99, 7.8/1). ac_c99_inttypes_wchar_t=no; if test x"$glibcxx_cv_c99_stdint" = x"yes"; then AC_MSG_CHECKING([for wchar_t ISO C99 support for C++11 in <inttypes.h>]) AC_TRY_COMPILE([#include <inttypes.h>], [intmax_t base; const wchar_t* s; wchar_t** endptr; intmax_t ret = wcstoimax(s, endptr, base); uintmax_t uret = wcstoumax(s, endptr, base); ],[ac_c99_inttypes_wchar_t=yes], [ac_c99_inttypes_wchar_t=no]) AC_MSG_RESULT($ac_c99_inttypes_wchar_t) fi if test x"$ac_c99_inttypes_wchar_t" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_INTTYPES_WCHAR_T, 1, [Define if wchar_t C99 functions in <inttypes.h> should be imported in <cinttypes> in namespace std in C++11.]) fi # Check for the existence of <math.h> generic macros used if C99 is enabled. AC_CACHE_CHECK([for ISO C99 generic macro support in <math.h> for C++11], glibcxx_cv_c99_math_cxx11, [ GCC_TRY_COMPILE_OR_LINK( [#include <math.h> volatile double d1, d2; volatile int i;], [i = fpclassify(d1); i = isfinite(d1); i = isinf(d1); i = isnan(d1); i = isnormal(d1); i = signbit(d1); i = isgreater(d1, d2); i = isgreaterequal(d1, d2); i = isless(d1, d2); i = islessequal(d1, d2); i = islessgreater(d1, d2); i = islessgreater(d1, d2); i = isunordered(d1, d2); ], [glibcxx_cv_c99_math_cxx11=yes], [glibcxx_cv_c99_math_cxx11=no]) ]) if test x"$glibcxx_cv_c99_math_cxx11" = x"yes"; then AC_DEFINE(_GLIBCXX11_USE_C99_MATH, 1, [Define if C99 generic macros in <math.h> should be imported in <cmath> in namespace std for C++11.]) fi # Check for the existence of <math.h> typedefs. AC_CACHE_CHECK([for ISO C99 float types for C++11 in <math.h>], glibcxx_cv_c99_flt_eval_types, [ AC_TRY_COMPILE([#include <math.h>], [// Types typedef double_t my_double_t; typedef float_t my_float_t; ], [glibcxx_cv_c99_flt_eval_types=yes], [glibcxx_cv_c99_flt_eval_types=no]) ]) if test x"$glibcxx_cv_c99_flt_eval_types" = x"yes"; then AC_DEFINE(HAVE_C99_FLT_EVAL_TYPES, 1, [Define if C99 float_t and double_t in <math.h> should be imported in <cmath> in namespace std for C++11.]) fi # Check for the existence of <math.h> functions. AC_CACHE_CHECK([for ISO C99 function support for C++11 in <math.h>], glibcxx_cv_c99_math_funcs, [ AC_TRY_COMPILE([#include <math.h>], [ // Hyperbolic acosh(0.0); acoshf(0.0f); acoshl(0.0l); asinh(0.0); asinhf(0.0f); asinhl(0.0l); atanh(0.0); atanhf(0.0f); atanhl(0.0l); // Exponential and logarithmic exp2(0.0); exp2f(0.0f); exp2l(0.0l); expm1(0.0); expm1f(0.0f); expm1l(0.0l); ilogb(0.0); ilogbf(0.0f); ilogbl(0.0l); log1p(0.0); log1pf(0.0f); log1pl(0.0l); log2(0.0); log2f(0.0f); log2l(0.0l); logb(0.0); logbf(0.0f); logbl(0.0l); scalbln(0.0, 0l); scalblnf(0.0f, 0l); scalblnl(0.0l, 0l); scalbn(0.0, 0); scalbnf(0.0f, 0); scalbnl(0.0l, 0); // Power and absolute-value cbrt(0.0); cbrtf(0.0f); cbrtl(0.0l); hypot(0.0, 0.0); hypotf(0.0f, 0.0f); hypotl(0.0l, 0.0l); // Error and gamma erf(0.0); erff(0.0f); erfl(0.0l); erfc(0.0); erfcf(0.0f); erfcl(0.0l); lgamma(0.0); lgammaf(0.0f); lgammal(0.0l); tgamma(0.0); tgammaf(0.0f); tgammal(0.0l); // Nearest integer nearbyint(0.0); nearbyintf(0.0f); nearbyintl(0.0l); rint(0.0); rintf(0.0f); rintl(0.0l); round(0.0); roundf(0.0f); roundl(0.0l); lrint(0.0); lrintf(0.0f); lrintl(0.0l); lround(0.0); lroundf(0.0f); lroundl(0.0l); #ifndef __APPLE__ /* see below */ llrint(0.0); llrintf(0.0f); llrintl(0.0l); llround(0.0); llroundf(0.0f); llroundl(0.0l); #endif trunc(0.0); truncf(0.0f); truncl(0.0l); // Remainder remainder(0.0, 0.0); remainderf(0.0f, 0.0f); remainderl(0.0l, 0.0l); remquo(0.0, 0.0, 0); remquof(0.0f, 0.0f, 0); remquol(0.0l, 0.0l, 0); // Manipulation copysign(0.0, 0.0); copysignf(0.0f, 0.0f); copysignl(0.0l, 0.0l); nan(""); nanf(""); nanl(""); nextafter(0.0, 0.0); nextafterf(0.0f, 0.0f); nextafterl(0.0l, 0.0l); nexttoward(0.0, 0.0); nexttowardf(0.0f, 0.0f); nexttowardl(0.0l, 0.0l); // Max, min, positive difference fdim(0.0, 0.0); fdimf(0.0f, 0.0f); fdiml(0.0l, 0.0l); fmax(0.0, 0.0); fmaxf(0.0f, 0.0f); fmaxl(0.0l, 0.0l); fmin(0.0, 0.0); fminf(0.0f, 0.0f); fminl(0.0l, 0.0l); // FP Multiply-add fma(0.0, 0.0, 0.0); fmaf(0.0f, 0.0f, 0.0f); fmal(0.0l, 0.0l, 0.0l); ], [glibcxx_cv_c99_math_funcs=yes], [glibcxx_cv_c99_math_funcs=no]) ]) if test x"$glibcxx_cv_c99_math_funcs" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_MATH_FUNCS, 1, [Define if C99 functions in <math.h> should be imported in <cmath> in namespace std for C++11.]) case "${target_os}" in darwin*) AC_CACHE_CHECK([for ISO C99 rounding functions in <math.h>], glibcxx_cv_c99_math_llround, [ AC_TRY_COMPILE([#include <math.h>], [llrint(0.0); llrintf(0.0f); llrintl(0.0l); llround(0.0); llroundf(0.0f); llroundl(0.0l); ], [glibcxx_cv_c99_math_llround=yes], [glibcxx_cv_c99_math_llround=no]) ]) ;; esac if test x"$glibcxx_cv_c99_math_llround" = x"no"; then AC_DEFINE(_GLIBCXX_NO_C99_ROUNDING_FUNCS, 1, [Define if C99 llrint and llround functions are missing from <math.h>.]) fi fi # Check for the existence of <complex.h> complex math functions. # This is necessary even though libstdc++ uses the builtin versions # of these functions, because if the builtin cannot be used, a reference # to the library function is emitted. AC_CHECK_HEADERS(tgmath.h, ac_has_tgmath_h=yes, ac_has_tgmath_h=no) AC_CHECK_HEADERS(complex.h, ac_has_complex_h=yes, ac_has_complex_h=no) if test x"$ac_has_complex_h" = x"yes"; then AC_CACHE_CHECK([for ISO C99 support in <complex.h> for C++11], glibcxx_cv_c99_complex_cxx11, [ GCC_TRY_COMPILE_OR_LINK( [#include <complex.h> typedef __complex__ float float_type; typedef __complex__ double double_type; typedef __complex__ long double ld_type; volatile float_type tmpf; volatile double_type tmpd; volatile ld_type tmpld; volatile float f; volatile double d; volatile long double ld;], [f = cabsf(tmpf); f = cargf(tmpf); tmpf = ccosf(tmpf); tmpf = ccoshf(tmpf); tmpf = cexpf(tmpf); tmpf = clogf(tmpf); tmpf = csinf(tmpf); tmpf = csinhf(tmpf); tmpf = csqrtf(tmpf); tmpf = ctanf(tmpf); tmpf = ctanhf(tmpf); tmpf = cpowf(tmpf, tmpf); tmpf = cprojf(tmpf); d = cabs(tmpd); d = carg(tmpd); tmpd = ccos(tmpd); tmpd = ccosh(tmpd); tmpd = cexp(tmpd); tmpd = clog(tmpd); tmpd = csin(tmpd); tmpd = csinh(tmpd); tmpd = csqrt(tmpd); tmpd = ctan(tmpd); tmpd = ctanh(tmpd); tmpd = cpow(tmpd, tmpd); tmpd = cproj(tmpd); ld = cabsl(tmpld); ld = cargl(tmpld); tmpld = ccosl(tmpld); tmpld = ccoshl(tmpld); tmpld = cexpl(tmpld); tmpld = clogl(tmpld); tmpld = csinl(tmpld); tmpld = csinhl(tmpld); tmpld = csqrtl(tmpld); tmpld = ctanl(tmpld); tmpld = ctanhl(tmpld); tmpld = cpowl(tmpld, tmpld); tmpld = cprojl(tmpld); ], [glibcxx_cv_c99_complex_cxx11=yes], [glibcxx_cv_c99_complex_cxx11=no]) ]) fi if test x"$glibcxx_cv_c99_complex_cxx11" = x"yes"; then AC_DEFINE(_GLIBCXX11_USE_C99_COMPLEX, 1, [Define if C99 functions in <complex.h> should be used in <complex> for C++11. Using compiler builtins for these functions requires corresponding C99 library functions to be present.]) fi # Check for the existence of <complex.h> complex inverse trigonometric # math functions used by <complex> for C++11 and later. ac_c99_complex_arc=no; if test x"$ac_has_complex_h" = x"yes"; then AC_MSG_CHECKING([for ISO C99 support for inverse trig functions in <complex.h>]) AC_TRY_COMPILE([#include <complex.h>], [typedef __complex__ float float_type; float_type tmpf; cacosf(tmpf); casinf(tmpf); catanf(tmpf); cacoshf(tmpf); casinhf(tmpf); catanhf(tmpf); typedef __complex__ double double_type; double_type tmpd; cacos(tmpd); casin(tmpd); catan(tmpd); cacosh(tmpd); casinh(tmpd); catanh(tmpd); typedef __complex__ long double ld_type; ld_type tmpld; cacosl(tmpld); casinl(tmpld); catanl(tmpld); cacoshl(tmpld); casinhl(tmpld); catanhl(tmpld); ],[ac_c99_complex_arc=yes], [ac_c99_complex_arc=no]) fi AC_MSG_RESULT($ac_c99_complex_arc) if test x"$ac_c99_complex_arc" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_COMPLEX_ARC, 1, [Define if C99 inverse trig functions in <complex.h> should be used in <complex>. Using compiler builtins for these functions requires corresponding C99 library functions to be present.]) fi # Check for the existence in <stdio.h> of vscanf, et. al. AC_CACHE_CHECK([for ISO C99 support in <stdio.h> for C++11], glibcxx_cv_c99_stdio_cxx11, [ GCC_TRY_COMPILE_OR_LINK( [#include <stdio.h> #include <stdarg.h> void foo(char* fmt, ...) { va_list args; va_start(args, fmt); vfscanf(stderr, "%i", args); vscanf("%i", args); vsnprintf(fmt, 0, "%i", args); vsscanf(fmt, "%i", args); snprintf(fmt, 0, "%i", 1); }], [], [glibcxx_cv_c99_stdio_cxx11=yes], [glibcxx_cv_c99_stdio_cxx11=no]) ]) if test x"$glibcxx_cv_c99_stdio_cxx11" = x"yes"; then AC_DEFINE(_GLIBCXX11_USE_C99_STDIO, 1, [Define if C99 functions or macros in <stdio.h> should be imported in <cstdio> in namespace std for C++11.]) fi # Check for the existence in <stdlib.h> of lldiv_t, et. al. AC_CACHE_CHECK([for ISO C99 support in <stdlib.h> for C++11], glibcxx_cv_c99_stdlib_cxx11, [ GCC_TRY_COMPILE_OR_LINK( [#include <stdlib.h> volatile float f; volatile long double ld; volatile unsigned long long ll; lldiv_t mydivt;], [char* tmp; f = strtof("gnu", &tmp); ld = strtold("gnu", &tmp); ll = strtoll("gnu", &tmp, 10); ll = strtoull("gnu", &tmp, 10); ll = llabs(10); mydivt = lldiv(10,1); ll = mydivt.quot; ll = mydivt.rem; ll = atoll("10"); _Exit(0); ], [glibcxx_cv_c99_stdlib_cxx11=yes], [glibcxx_cv_c99_stdlib_cxx11=no]) ]) if test x"$glibcxx_cv_c99_stdlib_cxx11" = x"yes"; then AC_DEFINE(_GLIBCXX11_USE_C99_STDLIB, 1, [Define if C99 functions or macros in <stdlib.h> should be imported in <cstdlib> in namespace std for C++11.]) fi # Check for the existence in <wchar.h> of wcstold, etc. if test x"$ac_has_wchar_h" = xyes && test x"$ac_has_wctype_h" = xyes; then AC_CACHE_CHECK([for ISO C99 support in <wchar.h> for C++11], glibcxx_cv_c99_wchar_cxx11, [ AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::wcstold; using ::wcstoll; using ::wcstoull; } ], [], [glibcxx_cv_c99_wchar_cxx11=yes], [glibcxx_cv_c99_wchar_cxx11=no]) ]) # Checks for wide character functions that may not be present. # Injection of these is wrapped with guard macros. # NB: only put functions here, instead of immediately above, if # absolutely necessary. AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::vfwscanf; }], [], [AC_DEFINE(HAVE_VFWSCANF, 1, [Defined if vfwscanf exists.])], []) AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::vswscanf; }], [], [AC_DEFINE(HAVE_VSWSCANF, 1, [Defined if vswscanf exists.])], []) AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::vwscanf; }], [], [AC_DEFINE(HAVE_VWSCANF, 1, [Defined if vwscanf exists.])], []) AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::wcstof; }], [], [AC_DEFINE(HAVE_WCSTOF, 1, [Defined if wcstof exists.])], []) AC_TRY_COMPILE([#include <wctype.h>], [wint_t t; int i = iswblank(t);], [AC_DEFINE(HAVE_ISWBLANK, 1, [Defined if iswblank exists.])], []) if test x"$glibcxx_cv_c99_wchar_cxx11" = x"yes"; then AC_DEFINE(_GLIBCXX11_USE_C99_WCHAR, 1, [Define if C99 functions or macros in <wchar.h> should be imported in <cwchar> in namespace std for C++11.]) fi fi # Check for the existence of <ctype.h> functions. AC_CACHE_CHECK([for ISO C99 support for C++11 in <ctype.h>], glibcxx_cv_c99_ctype, [ AC_TRY_COMPILE([#include <ctype.h>], [int ch; int ret; ret = isblank(ch); ],[glibcxx_cv_c99_ctype=yes], [glibcxx_cv_c99_ctype=no]) ]) if test x"$glibcxx_cv_c99_ctype" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_CTYPE, 1, [Define if C99 functions in <ctype.h> should be imported in <cctype> in namespace std for C++11.]) fi # Check for the existence of <fenv.h> functions. AC_CHECK_HEADERS(fenv.h, ac_has_fenv_h=yes, ac_has_fenv_h=no) ac_c99_fenv=no; if test x"$ac_has_fenv_h" = x"yes"; then AC_MSG_CHECKING([for ISO C99 support for C++11 in <fenv.h>]) AC_TRY_COMPILE([#include <fenv.h>], [int except, mode; fexcept_t* pflag; fenv_t* penv; int ret; ret = feclearexcept(except); ret = fegetexceptflag(pflag, except); ret = feraiseexcept(except); ret = fesetexceptflag(pflag, except); ret = fetestexcept(except); ret = fegetround(); ret = fesetround(mode); ret = fegetenv(penv); ret = feholdexcept(penv); ret = fesetenv(penv); ret = feupdateenv(penv); ],[ac_c99_fenv=yes], [ac_c99_fenv=no]) AC_MSG_RESULT($ac_c99_fenv) fi if test x"$ac_c99_fenv" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_FENV, 1, [Define if C99 functions in <fenv.h> should be imported in <cfenv> in namespace std for C++11.]) fi gcc_no_link="$ac_save_gcc_no_link" LIBS="$ac_save_LIBS" CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE fi AC_MSG_CHECKING([for fully enabled ISO C99 support]) AC_MSG_RESULT($enable_c99) ]) dnl dnl Check for clock_gettime, nanosleep and sched_yield, used in the dnl implementation of 20.11.7 [time.clock], and 30.3.2 [thread.thread.this] dnl in the C++11 standard. dnl dnl --enable-libstdcxx-time dnl --enable-libstdcxx-time=yes dnl checks for the availability of monotonic and realtime clocks, dnl nanosleep and sched_yield in libc. dnl --enable-libstdcxx-time=rt dnl also searches (and, if needed, links) librt. Note that this is 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], [ GLIBCXX_ENABLE(libstdcxx-time,auto,[[[=KIND]]], [use KIND for check type], [permit yes|no|rt]) AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" ac_save_LIBS="$LIBS" ac_has_clock_monotonic=no ac_has_clock_realtime=no 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 ;; mingw*) ac_has_win32_sleep=yes ac_has_sched_yield=yes ;; darwin*) ac_has_nanosleep=yes ac_has_sched_yield=yes ;; # VxWorks has nanosleep as soon as the kernel is configured with # INCLUDE_POSIX_TIMERS, which is normally/most-often the case. vxworks*) ac_has_nanosleep=yes ;; gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu) # Don't use link test for freestanding library, in case gcc_no_link=yes if test x"$is_hosted" = xyes; then # Versions of glibc before 2.17 needed -lrt for clock_gettime. AC_SEARCH_LIBS(clock_gettime, [rt]) if test x"$ac_cv_search_clock_gettime" = x"none required"; then ac_has_clock_monotonic=yes ac_has_clock_realtime=yes fi fi ac_has_nanosleep=yes ac_has_sched_yield=yes ;; freebsd*|netbsd*|dragonfly*|rtems*) 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*) ac_has_clock_monotonic=yes ac_has_clock_realtime=yes ac_has_nanosleep=yes ac_has_sched_yield=yes ;; uclinux*) ac_has_nanosleep=yes ac_has_sched_yield=yes esac elif test x"$enable_libstdcxx_time" != x"no"; then if test x"$enable_libstdcxx_time" = x"rt"; then AC_SEARCH_LIBS(clock_gettime, [rt]) AC_SEARCH_LIBS(nanosleep, [rt]) else AC_CHECK_FUNC(clock_gettime) AC_CHECK_FUNC(nanosleep) fi case "$ac_cv_search_clock_gettime" in -l*) GLIBCXX_LIBS=$ac_cv_search_clock_gettime ;; esac case "$ac_cv_search_nanosleep" in -l*) GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_nanosleep" ;; esac AC_SEARCH_LIBS(sched_yield, [rt]) case "$ac_cv_search_sched_yield" in -lrt*) if test x"$enable_libstdcxx_time" = x"rt"; then GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield" ac_has_sched_yield=yes fi ;; *) ac_has_sched_yield=yes ;; esac AC_CHECK_HEADERS(unistd.h, ac_has_unistd_h=yes, ac_has_unistd_h=no) if test x"$ac_has_unistd_h" = x"yes"; then AC_MSG_CHECKING([for monotonic clock]) AC_TRY_LINK( [#include <unistd.h> #include <time.h> ], [#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK) timespec tp; #endif clock_gettime(CLOCK_MONOTONIC, &tp); ], [ac_has_clock_monotonic=yes], [ac_has_clock_monotonic=no]) AC_MSG_RESULT($ac_has_clock_monotonic) AC_MSG_CHECKING([for realtime clock]) AC_TRY_LINK( [#include <unistd.h> #include <time.h> ], [#if _POSIX_TIMERS > 0 timespec tp; #endif clock_gettime(CLOCK_REALTIME, &tp); ], [ac_has_clock_realtime=yes], [ac_has_clock_realtime=no]) AC_MSG_RESULT($ac_has_clock_realtime) AC_MSG_CHECKING([for nanosleep]) AC_TRY_LINK( [#include <unistd.h> #include <time.h> ], [#if _POSIX_TIMERS > 0 timespec tp; #endif nanosleep(&tp, 0); ], [ac_has_nanosleep=yes], [ac_has_nanosleep=no]) AC_MSG_RESULT($ac_has_nanosleep) fi fi if test x"$ac_has_clock_monotonic" != x"yes"; then case ${target_os} in linux* | uclinux*) AC_MSG_CHECKING([for clock_gettime syscall]) AC_TRY_COMPILE( [#include <unistd.h> #include <time.h> #include <sys/syscall.h> ], [#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_gettime_syscall=yes], [ac_has_clock_gettime_syscall=no]) AC_MSG_RESULT($ac_has_clock_gettime_syscall) if test x"$ac_has_clock_gettime_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 AC_MSG_CHECKING([for struct timespec that matches syscall]) AC_TRY_COMPILE( [#include <time.h> #include <sys/syscall.h> ], [#ifdef SYS_clock_gettime64 #if SYS_clock_gettime64 != SYS_clock_gettime // We need to use SYS_clock_gettime and libc appears to // also know about the SYS_clock_gettime64 syscall. // Check that userspace doesn't use time64 version of timespec. static_assert(sizeof(timespec::tv_sec) == sizeof(long), "struct timespec must be compatible with SYS_clock_gettime"); #endif #endif ], [ac_timespec_matches_syscall=yes], [ac_timespec_matches_syscall=no]) AC_MSG_RESULT($ac_timespec_matches_syscall) if test x"$ac_timespec_matches_syscall" = no; then AC_MSG_ERROR([struct timespec is not compatible with SYS_clock_gettime, please report a bug to http://gcc.gnu.org/bugzilla]) fi 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. ]) fi if test x"$ac_has_clock_realtime" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_CLOCK_REALTIME, 1, [ 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. ]) elif test x"$ac_has_win32_sleep" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_WIN32_SLEEP, 1, [Defined if Sleep exists.]) else AC_MSG_CHECKING([for sleep]) AC_TRY_COMPILE([#include <unistd.h>], [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 <unistd.h>], [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_win32_sleep$ac_has_sleep" = x"nonono"; then AC_DEFINE(_GLIBCXX_NO_SLEEP,1, [Defined if no way to sleep is available.]) fi AC_SUBST(GLIBCXX_LIBS) CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" AC_LANG_RESTORE ]) dnl dnl Check for gettimeofday, used in the implementation of 20.11.7 dnl [time.clock] in the C++11 standard. dnl AC_DEFUN([GLIBCXX_CHECK_GETTIMEOFDAY], [ AC_MSG_CHECKING([for gettimeofday]) AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" ac_has_gettimeofday=no; AC_CHECK_HEADERS(sys/time.h, ac_has_sys_time_h=yes, ac_has_sys_time_h=no) if test x"$ac_has_sys_time_h" = x"yes"; then AC_MSG_CHECKING([for gettimeofday]) GCC_TRY_COMPILE_OR_LINK([#include <sys/time.h>], [timeval tv; gettimeofday(&tv, 0);], [ac_has_gettimeofday=yes], [ac_has_gettimeofday=no]) AC_MSG_RESULT($ac_has_gettimeofday) fi if test x"$ac_has_gettimeofday" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_GETTIMEOFDAY, 1, [ Defined if gettimeofday is available. ]) fi CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check for ISO/IEC 9899:1999 "C99" support to ISO/IEC DTR 19768 "TR1" dnl facilities in Chapter 8, "C compatibility". dnl AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS # Use -std=c++98 because -std=gnu++98 leaves __STRICT_ANSI__ # undefined and fake C99 facilities may be spuriously enabled. ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -std=c++98" # Check for the existence of <complex.h> complex math functions used # by tr1/complex. AC_CHECK_HEADERS(complex.h, ac_has_complex_h=yes, ac_has_complex_h=no) ac_c99_complex_tr1=no; if test x"$ac_has_complex_h" = x"yes"; then AC_MSG_CHECKING([for ISO C99 support to TR1 in <complex.h>]) AC_TRY_COMPILE([#include <complex.h>], [typedef __complex__ float float_type; float_type tmpf; cacosf(tmpf); casinf(tmpf); catanf(tmpf); cacoshf(tmpf); casinhf(tmpf); catanhf(tmpf); typedef __complex__ double double_type; double_type tmpd; cacos(tmpd); casin(tmpd); catan(tmpd); cacosh(tmpd); casinh(tmpd); catanh(tmpd); typedef __complex__ long double ld_type; ld_type tmpld; cacosl(tmpld); casinl(tmpld); catanl(tmpld); cacoshl(tmpld); casinhl(tmpld); catanhl(tmpld); ],[ac_c99_complex_tr1=yes], [ac_c99_complex_tr1=no]) fi AC_MSG_RESULT($ac_c99_complex_tr1) if test x"$ac_c99_complex_tr1" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_COMPLEX_TR1, 1, [Define if C99 functions in <complex.h> should be used in <tr1/complex>. Using compiler builtins for these functions requires corresponding C99 library functions to be present.]) fi # Check for the existence of <ctype.h> functions. AC_CACHE_CHECK([for ISO C99 support to TR1 in <ctype.h>], glibcxx_cv_c99_ctype_tr1, [ AC_TRY_COMPILE([#include <ctype.h>], [int ch; int ret; ret = isblank(ch); ],[glibcxx_cv_c99_ctype_tr1=yes], [glibcxx_cv_c99_ctype_tr1=no]) ]) if test x"$glibcxx_cv_c99_ctype_tr1" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_CTYPE_TR1, 1, [Define if C99 functions in <ctype.h> should be imported in <tr1/cctype> in namespace std::tr1.]) fi # Check for the existence of <fenv.h> functions. AC_CHECK_HEADERS(fenv.h, ac_has_fenv_h=yes, ac_has_fenv_h=no) ac_c99_fenv_tr1=no; if test x"$ac_has_fenv_h" = x"yes"; then AC_MSG_CHECKING([for ISO C99 support to TR1 in <fenv.h>]) AC_TRY_COMPILE([#include <fenv.h>], [int except, mode; fexcept_t* pflag; fenv_t* penv; int ret; ret = feclearexcept(except); ret = fegetexceptflag(pflag, except); ret = feraiseexcept(except); ret = fesetexceptflag(pflag, except); ret = fetestexcept(except); ret = fegetround(); ret = fesetround(mode); ret = fegetenv(penv); ret = feholdexcept(penv); ret = fesetenv(penv); ret = feupdateenv(penv); ],[ac_c99_fenv_tr1=yes], [ac_c99_fenv_tr1=no]) AC_MSG_RESULT($ac_c99_fenv_tr1) fi if test x"$ac_c99_fenv_tr1" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_FENV_TR1, 1, [Define if C99 functions in <fenv.h> should be imported in <tr1/cfenv> in namespace std::tr1.]) fi # Check for the existence of <stdint.h> types. AC_CACHE_CHECK([for ISO C99 support to TR1 in <stdint.h>], glibcxx_cv_c99_stdint_tr1, [ AC_TRY_COMPILE([#define __STDC_LIMIT_MACROS #define __STDC_CONSTANT_MACROS #include <stdint.h>], [typedef int8_t my_int8_t; my_int8_t i8 = INT8_MIN; i8 = INT8_MAX; typedef int16_t my_int16_t; my_int16_t i16 = INT16_MIN; i16 = INT16_MAX; typedef int32_t my_int32_t; my_int32_t i32 = INT32_MIN; i32 = INT32_MAX; typedef int64_t my_int64_t; my_int64_t i64 = INT64_MIN; i64 = INT64_MAX; typedef int_fast8_t my_int_fast8_t; my_int_fast8_t if8 = INT_FAST8_MIN; if8 = INT_FAST8_MAX; typedef int_fast16_t my_int_fast16_t; my_int_fast16_t if16 = INT_FAST16_MIN; if16 = INT_FAST16_MAX; typedef int_fast32_t my_int_fast32_t; my_int_fast32_t if32 = INT_FAST32_MIN; if32 = INT_FAST32_MAX; typedef int_fast64_t my_int_fast64_t; my_int_fast64_t if64 = INT_FAST64_MIN; if64 = INT_FAST64_MAX; typedef int_least8_t my_int_least8_t; my_int_least8_t il8 = INT_LEAST8_MIN; il8 = INT_LEAST8_MAX; typedef int_least16_t my_int_least16_t; my_int_least16_t il16 = INT_LEAST16_MIN; il16 = INT_LEAST16_MAX; typedef int_least32_t my_int_least32_t; my_int_least32_t il32 = INT_LEAST32_MIN; il32 = INT_LEAST32_MAX; typedef int_least64_t my_int_least64_t; my_int_least64_t il64 = INT_LEAST64_MIN; il64 = INT_LEAST64_MAX; typedef intmax_t my_intmax_t; my_intmax_t im = INTMAX_MAX; im = INTMAX_MIN; typedef intptr_t my_intptr_t; my_intptr_t ip = INTPTR_MAX; ip = INTPTR_MIN; typedef uint8_t my_uint8_t; my_uint8_t ui8 = UINT8_MAX; ui8 = UINT8_MAX; typedef uint16_t my_uint16_t; my_uint16_t ui16 = UINT16_MAX; ui16 = UINT16_MAX; typedef uint32_t my_uint32_t; my_uint32_t ui32 = UINT32_MAX; ui32 = UINT32_MAX; typedef uint64_t my_uint64_t; my_uint64_t ui64 = UINT64_MAX; ui64 = UINT64_MAX; typedef uint_fast8_t my_uint_fast8_t; my_uint_fast8_t uif8 = UINT_FAST8_MAX; uif8 = UINT_FAST8_MAX; typedef uint_fast16_t my_uint_fast16_t; my_uint_fast16_t uif16 = UINT_FAST16_MAX; uif16 = UINT_FAST16_MAX; typedef uint_fast32_t my_uint_fast32_t; my_uint_fast32_t uif32 = UINT_FAST32_MAX; uif32 = UINT_FAST32_MAX; typedef uint_fast64_t my_uint_fast64_t; my_uint_fast64_t uif64 = UINT_FAST64_MAX; uif64 = UINT_FAST64_MAX; typedef uint_least8_t my_uint_least8_t; my_uint_least8_t uil8 = UINT_LEAST8_MAX; uil8 = UINT_LEAST8_MAX; typedef uint_least16_t my_uint_least16_t; my_uint_least16_t uil16 = UINT_LEAST16_MAX; uil16 = UINT_LEAST16_MAX; typedef uint_least32_t my_uint_least32_t; my_uint_least32_t uil32 = UINT_LEAST32_MAX; uil32 = UINT_LEAST32_MAX; typedef uint_least64_t my_uint_least64_t; my_uint_least64_t uil64 = UINT_LEAST64_MAX; uil64 = UINT_LEAST64_MAX; typedef uintmax_t my_uintmax_t; my_uintmax_t uim = UINTMAX_MAX; uim = UINTMAX_MAX; typedef uintptr_t my_uintptr_t; my_uintptr_t uip = UINTPTR_MAX; uip = UINTPTR_MAX; ],[glibcxx_cv_c99_stdint_tr1=yes], [glibcxx_cv_c99_stdint_tr1=no]) ]) if test x"$glibcxx_cv_c99_stdint_tr1" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_STDINT_TR1, 1, [Define if C99 types in <stdint.h> should be imported in <tr1/cstdint> in namespace std::tr1.]) fi # Check for the existence of <math.h> functions. AC_CACHE_CHECK([for ISO C99 support to TR1 in <math.h>], glibcxx_cv_c99_math_tr1, [ AC_TRY_COMPILE([#include <math.h>], [typedef double_t my_double_t; typedef float_t my_float_t; acosh(0.0); acoshf(0.0f); acoshl(0.0l); asinh(0.0); asinhf(0.0f); asinhl(0.0l); atanh(0.0); atanhf(0.0f); atanhl(0.0l); cbrt(0.0); cbrtf(0.0f); cbrtl(0.0l); copysign(0.0, 0.0); copysignf(0.0f, 0.0f); copysignl(0.0l, 0.0l); erf(0.0); erff(0.0f); erfl(0.0l); erfc(0.0); erfcf(0.0f); erfcl(0.0l); exp2(0.0); exp2f(0.0f); exp2l(0.0l); expm1(0.0); expm1f(0.0f); expm1l(0.0l); fdim(0.0, 0.0); fdimf(0.0f, 0.0f); fdiml(0.0l, 0.0l); fma(0.0, 0.0, 0.0); fmaf(0.0f, 0.0f, 0.0f); fmal(0.0l, 0.0l, 0.0l); fmax(0.0, 0.0); fmaxf(0.0f, 0.0f); fmaxl(0.0l, 0.0l); fmin(0.0, 0.0); fminf(0.0f, 0.0f); fminl(0.0l, 0.0l); hypot(0.0, 0.0); hypotf(0.0f, 0.0f); hypotl(0.0l, 0.0l); ilogb(0.0); ilogbf(0.0f); ilogbl(0.0l); lgamma(0.0); lgammaf(0.0f); lgammal(0.0l); #ifndef __APPLE__ /* see below */ llrint(0.0); llrintf(0.0f); llrintl(0.0l); llround(0.0); llroundf(0.0f); llroundl(0.0l); #endif log1p(0.0); log1pf(0.0f); log1pl(0.0l); log2(0.0); log2f(0.0f); log2l(0.0l); logb(0.0); logbf(0.0f); logbl(0.0l); lrint(0.0); lrintf(0.0f); lrintl(0.0l); lround(0.0); lroundf(0.0f); lroundl(0.0l); nan(""); nanf(""); nanl(""); nearbyint(0.0); nearbyintf(0.0f); nearbyintl(0.0l); nextafter(0.0, 0.0); nextafterf(0.0f, 0.0f); nextafterl(0.0l, 0.0l); nexttoward(0.0, 0.0); nexttowardf(0.0f, 0.0f); nexttowardl(0.0l, 0.0l); remainder(0.0, 0.0); remainderf(0.0f, 0.0f); remainderl(0.0l, 0.0l); remquo(0.0, 0.0, 0); remquof(0.0f, 0.0f, 0); remquol(0.0l, 0.0l, 0); rint(0.0); rintf(0.0f); rintl(0.0l); round(0.0); roundf(0.0f); roundl(0.0l); scalbln(0.0, 0l); scalblnf(0.0f, 0l); scalblnl(0.0l, 0l); scalbn(0.0, 0); scalbnf(0.0f, 0); scalbnl(0.0l, 0); tgamma(0.0); tgammaf(0.0f); tgammal(0.0l); trunc(0.0); truncf(0.0f); truncl(0.0l); ],[glibcxx_cv_c99_math_tr1=yes], [glibcxx_cv_c99_math_tr1=no]) ]) if test x"$glibcxx_cv_c99_math_tr1" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_MATH_TR1, 1, [Define if C99 functions or macros in <math.h> should be imported in <tr1/cmath> in namespace std::tr1.]) fi # Check for the existence of <inttypes.h> functions (NB: doesn't make # sense if the glibcxx_cv_c99_stdint_tr1 check fails, per C99, 7.8/1). ac_c99_inttypes_tr1=no; if test x"$glibcxx_cv_c99_stdint_tr1" = x"yes"; then AC_MSG_CHECKING([for ISO C99 support to TR1 in <inttypes.h>]) AC_TRY_COMPILE([#include <inttypes.h>], [intmax_t i, numer, denom, base; const char* s; char** endptr; intmax_t ret = imaxabs(i); imaxdiv_t dret = imaxdiv(numer, denom); ret = strtoimax(s, endptr, base); uintmax_t uret = strtoumax(s, endptr, base); ],[ac_c99_inttypes_tr1=yes], [ac_c99_inttypes_tr1=no]) AC_MSG_RESULT($ac_c99_inttypes_tr1) fi if test x"$ac_c99_inttypes_tr1" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_INTTYPES_TR1, 1, [Define if C99 functions in <inttypes.h> should be imported in <tr1/cinttypes> in namespace std::tr1.]) fi # Check for the existence of wchar_t <inttypes.h> 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 AC_MSG_CHECKING([for wchar_t ISO C99 support to TR1 in <inttypes.h>]) AC_TRY_COMPILE([#include <inttypes.h>], [intmax_t base; const wchar_t* s; wchar_t** endptr; intmax_t ret = wcstoimax(s, endptr, base); uintmax_t uret = wcstoumax(s, endptr, base); ],[ac_c99_inttypes_wchar_t_tr1=yes], [ac_c99_inttypes_wchar_t_tr1=no]) AC_MSG_RESULT($ac_c99_inttypes_wchar_t_tr1) fi if test x"$ac_c99_inttypes_wchar_t_tr1" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1, 1, [Define if wchar_t C99 functions in <inttypes.h> should be imported in <tr1/cinttypes> in namespace std::tr1.]) fi # Check for the existence of the <stdbool.h> header. AC_CHECK_HEADERS(stdbool.h) # Check for the existence of the <stdalign.h> header. AC_CHECK_HEADERS(stdalign.h) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check for uchar.h and usability. dnl AC_DEFUN([GLIBCXX_CHECK_UCHAR_H], [ # Test uchar.h. AC_CHECK_HEADERS(uchar.h, ac_has_uchar_h=yes, ac_has_uchar_h=no) AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -std=c++11" if test x"$ac_has_uchar_h" = x"yes"; then AC_MSG_CHECKING([for ISO C11 support for <uchar.h>]) AC_TRY_COMPILE([#include <uchar.h> #ifdef __STDC_UTF_16__ long i = __STDC_UTF_16__; #endif #ifdef __STDC_UTF_32__ long j = __STDC_UTF_32__; #endif namespace test { using ::c16rtomb; using ::c32rtomb; using ::mbrtoc16; using ::mbrtoc32; } ], [], [ac_c11_uchar_cxx11=yes], [ac_c11_uchar_cxx11=no]) AC_MSG_RESULT($ac_c11_uchar_cxx11) else ac_c11_uchar_cxx11=no fi if test x"$ac_c11_uchar_cxx11" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C11_UCHAR_CXX11, 1, [Define if C11 functions in <uchar.h> should be imported into namespace std in <cuchar>.]) fi CXXFLAGS="$CXXFLAGS -fchar8_t" if test x"$ac_has_uchar_h" = x"yes"; then AC_MSG_CHECKING([for c8rtomb and mbrtoc8 in <uchar.h> with -fchar8_t]) AC_TRY_COMPILE([#include <uchar.h> namespace test { using ::c8rtomb; using ::mbrtoc8; } ], [], [ac_uchar_c8rtomb_mbrtoc8_fchar8_t=yes], [ac_uchar_c8rtomb_mbrtoc8_fchar8_t=no]) AC_MSG_RESULT($ac_uchar_c8rtomb_mbrtoc8_fchar8_t) else ac_uchar_c8rtomb_mbrtoc8_fchar8_t=no fi if test x"$ac_uchar_c8rtomb_mbrtoc8_fchar8_t" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_UCHAR_C8RTOMB_MBRTOC8_FCHAR8_T, 1, [Define if c8rtomb and mbrtoc8 functions in <uchar.h> should be imported into namespace std in <cuchar> for -fchar8_t.]) fi CXXFLAGS="$CXXFLAGS -std=c++20" if test x"$ac_has_uchar_h" = x"yes"; then AC_MSG_CHECKING([for c8rtomb and mbrtoc8 in <uchar.h> with -std=c++20]) AC_TRY_COMPILE([#include <uchar.h> namespace test { using ::c8rtomb; using ::mbrtoc8; } ], [], [ac_uchar_c8rtomb_mbrtoc8_cxx20=yes], [ac_uchar_c8rtomb_mbrtoc8_cxx20=no]) AC_MSG_RESULT($ac_uchar_c8rtomb_mbrtoc8_cxx20) else ac_uchar_c8rtomb_mbrtoc8_cxx20=no fi if test x"$ac_uchar_c8rtomb_mbrtoc8_cxx20" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_UCHAR_C8RTOMB_MBRTOC8_CXX20, 1, [Define if c8rtomb and mbrtoc8 functions in <uchar.h> should be imported into namespace std in <cuchar> for C++20.]) fi CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether "/dev/random" and "/dev/urandom" are available for dnl class std::random_device from C++ 2011 [rand.device], and dnl random_device of "TR1" (Chapter 5.1, "Random number generation"). dnl AC_DEFUN([GLIBCXX_CHECK_DEV_RANDOM], [ AC_CACHE_CHECK([for "/dev/random" and "/dev/urandom" for std::random_device], glibcxx_cv_dev_random, [ if test -r /dev/random && test -r /dev/urandom; then ## For MSys environment the test above is detected as false-positive ## on mingw-targets. So disable it explicitly for them. case ${target_os} in *mingw*) glibcxx_cv_dev_random=no ;; *) glibcxx_cv_dev_random=yes ;; esac else glibcxx_cv_dev_random=no; fi ]) if test x"$glibcxx_cv_dev_random" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM, 1, [Define if /dev/random and /dev/urandom are available for std::random_device.]) AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1, 1, [Define if /dev/random and /dev/urandom are available for the random_device of TR1 (Chapter 5.1).]) fi ]) dnl dnl Compute the EOF, SEEK_CUR, and SEEK_END integer constants. dnl AC_DEFUN([GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS], [ if test "$is_hosted" = yes; then AC_CACHE_CHECK([for the value of EOF], glibcxx_cv_stdio_eof, [ AC_COMPUTE_INT([glibcxx_cv_stdio_eof], [[EOF]], [#include <stdio.h>], [AC_MSG_ERROR([computing EOF failed])]) ]) AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_EOF, $glibcxx_cv_stdio_eof, [Define to the value of the EOF integer constant.]) AC_CACHE_CHECK([for the value of SEEK_CUR], glibcxx_cv_stdio_seek_cur, [ AC_COMPUTE_INT([glibcxx_cv_stdio_seek_cur], [[SEEK_CUR]], [#include <stdio.h>], [AC_MSG_ERROR([computing SEEK_CUR failed])]) ]) AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_SEEK_CUR, $glibcxx_cv_stdio_seek_cur, [Define to the value of the SEEK_CUR integer constant.]) AC_CACHE_CHECK([for the value of SEEK_END], glibcxx_cv_stdio_seek_end, [ AC_COMPUTE_INT([glibcxx_cv_stdio_seek_end], [[SEEK_END]], [#include <stdio.h>], [AC_MSG_ERROR([computing SEEK_END failed])]) ]) AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_SEEK_END, $glibcxx_cv_stdio_seek_end, [Define to the value of the SEEK_END integer constant.]) fi ]) dnl dnl Check whether required C++ overloads are present in <stdio.h>. dnl AC_DEFUN([GLIBCXX_CHECK_STDIO_PROTO], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS # Use C++11 because a conforming <stdio.h> won't define gets for C++14, # and we don't need a declaration for C++14 anyway. ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -std=gnu++11" AC_CACHE_CHECK([for gets declaration], glibcxx_cv_gets, [ AC_COMPILE_IFELSE([AC_LANG_SOURCE( [#include <stdio.h> namespace test { using ::gets; } ])], [glibcxx_cv_gets=yes], [glibcxx_cv_gets=no] )]) if test $glibcxx_cv_gets = yes; then AC_DEFINE(HAVE_GETS, 1, [Define if gets is available in <stdio.h> before C++14.]) fi CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether required C++11 overloads for floating point and integral dnl types are present in <math.h>. dnl AC_DEFUN([GLIBCXX_CHECK_MATH11_PROTO], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -std=c++11" case "$host" in *-*-solaris2.*) # Solaris 12 Build 86, Solaris 11.3 SRU 3.6, and Solaris 10 Patch # 11996[67]-02 introduced the C++11 <math.h> floating point overloads. AC_CACHE_CHECK([for C++11 <math.h> floating point overloads], glibcxx_cv_math11_fp_overload, [ AC_COMPILE_IFELSE([AC_LANG_SOURCE( [#include <math.h> #undef isfinite namespace std { inline bool isfinite(float __x) { return __builtin_isfinite(__x); } } ])], [glibcxx_cv_math11_fp_overload=no], [glibcxx_cv_math11_fp_overload=yes] )]) # autoheader cannot handle indented templates. AH_VERBATIM([__CORRECT_ISO_CPP11_MATH_H_PROTO_FP], [/* Define if all C++11 floating point overloads are available in <math.h>. */ #if __cplusplus >= 201103L #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP #endif]) if test $glibcxx_cv_math11_fp_overload = yes; then AC_DEFINE(__CORRECT_ISO_CPP11_MATH_H_PROTO_FP) fi # Solaris 12 Build 90, Solaris 11.3 SRU 5.6, and Solaris 10 Patch # 11996[67]-02 introduced the C++11 <math.h> integral type overloads. AC_CACHE_CHECK([for C++11 <math.h> integral type overloads], glibcxx_cv_math11_int_overload, [ AC_COMPILE_IFELSE([AC_LANG_SOURCE( [#include <math.h> namespace std { template<typename _Tp> struct __is_integer; template<> struct __is_integer<int> { enum { __value = 1 }; }; } namespace __gnu_cxx { template<bool, typename> struct __enable_if; template<typename _Tp> struct __enable_if<true, _Tp> { typedef _Tp __type; }; } namespace std { template<typename _Tp> constexpr typename __gnu_cxx::__enable_if <__is_integer<_Tp>::__value, double>::__type log2(_Tp __x) { return __builtin_log2(__x); } } int main (void) { int i = 1000; return std::log2(i); } ])], [glibcxx_cv_math11_int_overload=no], [glibcxx_cv_math11_int_overload=yes] )]) # autoheader cannot handle indented templates. AH_VERBATIM([__CORRECT_ISO_CPP11_MATH_H_PROTO_INT], [/* Define if all C++11 integral type overloads are available in <math.h>. */ #if __cplusplus >= 201103L #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT #endif]) if test $glibcxx_cv_math11_int_overload = yes; then AC_DEFINE(__CORRECT_ISO_CPP11_MATH_H_PROTO_INT) fi ;; *) # If <math.h> defines the obsolete isinf(double) and isnan(double) # functions (instead of or as well as the C99 generic macros) then we # can't define std::isinf(double) and std::isnan(double) in <cmath> # and must use the ones from <math.h> instead. AC_CACHE_CHECK([for obsolete isinf function in <math.h>], glibcxx_cv_obsolete_isinf, [ AC_COMPILE_IFELSE([AC_LANG_SOURCE( [#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS #include <math.h> #undef isinf namespace std { using ::isinf; bool isinf(float); bool isinf(long double); } using std::isinf; bool b = isinf(0.0); ])], [glibcxx_cv_obsolete_isinf=yes], [glibcxx_cv_obsolete_isinf=no] )]) if test $glibcxx_cv_obsolete_isinf = yes; then AC_DEFINE(HAVE_OBSOLETE_ISINF, 1, [Define if <math.h> defines obsolete isinf function.]) fi AC_CACHE_CHECK([for obsolete isnan function in <math.h>], glibcxx_cv_obsolete_isnan, [ AC_COMPILE_IFELSE([AC_LANG_SOURCE( [#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS #include <math.h> #undef isnan namespace std { using ::isnan; bool isnan(float); bool isnan(long double); } using std::isnan; bool b = isnan(0.0); ])], [glibcxx_cv_obsolete_isnan=yes], [glibcxx_cv_obsolete_isnan=no] )]) if test $glibcxx_cv_obsolete_isnan = yes; then AC_DEFINE(HAVE_OBSOLETE_ISNAN, 1, [Define if <math.h> defines obsolete isnan function.]) fi ;; esac CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check for what type of C headers to use. dnl dnl --enable-cheaders= [does stuff]. dnl --disable-cheaders [does not do anything, really]. dnl + Usage: GLIBCXX_ENABLE_CHEADERS[(DEFAULT)] dnl Where DEFAULT is either 'c' or 'c_global' or 'c_std'. dnl dnl To use the obsolete 'c_std' headers use --enable-cheaders-obsolete as dnl well as --enable-cheaders=c_std, otherwise configure will fail. dnl AC_DEFUN([GLIBCXX_ENABLE_CHEADERS], [ GLIBCXX_ENABLE(cheaders-obsolete,no,, [allow use of obsolete "C" headers for g++]) GLIBCXX_ENABLE(cheaders,$1,[[[=KIND]]], [construct "C" headers for g++], [permit c|c_global|c_std]) AC_MSG_NOTICE("C" header strategy set to $enable_cheaders) if test $enable_cheaders = c_std ; then AC_MSG_WARN([the --enable-cheaders=c_std configuration is obsolete, c_global should be used instead]) AC_MSG_WARN([if you are unable to use c_global please report a bug or inform libstdc++@@gcc.gnu.org]) if test $enable_cheaders_obsolete != yes ; then AC_MSG_ERROR(use --enable-cheaders-obsolete to use c_std "C" headers) fi fi C_INCLUDE_DIR='${glibcxx_srcdir}/include/'$enable_cheaders # Allow overrides to configure.host here. if test $enable_cheaders = c_global; then c_compatibility=yes fi AC_SUBST(C_INCLUDE_DIR) GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_C, test $enable_cheaders = c) GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_C_STD, test $enable_cheaders = c_std) GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_C_GLOBAL, test $enable_cheaders = c_global) GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_COMPATIBILITY, test $c_compatibility = yes) ]) dnl dnl Check for which locale library to use. The choice is mapped to dnl a subdirectory of config/locale. dnl dnl Default is generic. dnl AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [ GLIBCXX_ENABLE(clocale,auto,[[[=MODEL]]], [use MODEL for target locale package], [permit generic|gnu|ieee_1003.1-2001|newlib|yes|no|auto]) # Deal with gettext issues. Default to not using it (=no) until we detect # support for it later. Let the user turn it off via --e/d, but let that # default to on for easier handling. USE_NLS=no AC_ARG_ENABLE(nls, AC_HELP_STRING([--enable-nls],[use Native Language Support (default)]), [], [enable_nls=yes]) # Either a known package, or "auto" if test $enable_clocale = no || test $enable_clocale = yes; then enable_clocale=auto fi enable_clocale_flag=$enable_clocale # Probe for locale model to use if none specified. # Default to "generic". if test $enable_clocale_flag = auto; then case ${target_os} in linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) enable_clocale_flag=gnu ;; darwin*) enable_clocale_flag=darwin ;; vxworks*) enable_clocale_flag=vxworks ;; dragonfly* | freebsd* | netbsd*) enable_clocale_flag=dragonfly ;; openbsd*) enable_clocale_flag=newlib ;; *) if test x"$with_newlib" = x"yes"; then enable_clocale_flag=newlib else enable_clocale_flag=generic fi ;; esac fi # Sanity check model, and test for special functionality. if test $enable_clocale_flag = gnu; then AC_EGREP_CPP([_GLIBCXX_ok], [ #include <features.h> #if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined(__UCLIBC__) _GLIBCXX_ok #endif ], enable_clocale_flag=gnu, enable_clocale_flag=generic) # Set it to scream when it hurts. ac_save_CFLAGS="$CFLAGS" CFLAGS="-Wimplicit-function-declaration -Werror" # Use strxfrm_l if available. AC_TRY_COMPILE([#define _GNU_SOURCE 1 #include <string.h> #include <locale.h>], [char s[128]; __locale_t loc; strxfrm_l(s, "C", 5, loc);], AC_DEFINE(HAVE_STRXFRM_L, 1, [Define if strxfrm_l is available in <string.h>.]),) # Use strerror_l if available. AC_TRY_COMPILE([#define _GNU_SOURCE 1 #include <string.h> #include <locale.h>], [__locale_t loc; strerror_l(5, loc);], AC_DEFINE(HAVE_STRERROR_L, 1, [Define if strerror_l is available in <string.h>.]),) CFLAGS="$ac_save_CFLAGS" fi # Perhaps use strerror_r if available, and strerror_l isn't. ac_save_CFLAGS="$CFLAGS" CFLAGS="-Wimplicit-function-declaration -Werror" AC_TRY_COMPILE([#define _GNU_SOURCE 1 #include <string.h> #include <locale.h>], [char s[128]; strerror_r(5, s, 128);], AC_DEFINE(HAVE_STRERROR_R, 1, [Define if strerror_r is available in <string.h>.]),) CFLAGS="$ac_save_CFLAGS" # Set configure bits for specified locale package AC_MSG_CHECKING([for C locale to use]) case ${enable_clocale_flag} in generic) AC_MSG_RESULT(generic) CLOCALE_H=config/locale/generic/c_locale.h CLOCALE_CC=config/locale/generic/c_locale.cc CCODECVT_CC=config/locale/generic/codecvt_members.cc CCOLLATE_CC=config/locale/generic/collate_members.cc CCTYPE_CC=config/locale/generic/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 ;; darwin) AC_MSG_RESULT(darwin) CLOCALE_H=config/locale/generic/c_locale.h CLOCALE_CC=config/locale/generic/c_locale.cc CCODECVT_CC=config/locale/generic/codecvt_members.cc CCOLLATE_CC=config/locale/generic/collate_members.cc CCTYPE_CC=config/locale/darwin/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 ;; vxworks) AC_MSG_RESULT(vxworks) CLOCALE_H=config/locale/generic/c_locale.h CLOCALE_CC=config/locale/generic/c_locale.cc CCODECVT_CC=config/locale/generic/codecvt_members.cc CCOLLATE_CC=config/locale/generic/collate_members.cc CCTYPE_CC=config/locale/vxworks/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 ;; dragonfly) AC_MSG_RESULT(dragonfly or freebsd or netbsd) CLOCALE_H=config/locale/dragonfly/c_locale.h CLOCALE_CC=config/locale/dragonfly/c_locale.cc CCODECVT_CC=config/locale/dragonfly/codecvt_members.cc CCOLLATE_CC=config/locale/dragonfly/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/dragonfly/monetary_members.cc CNUMERIC_CC=config/locale/dragonfly/numeric_members.cc CTIME_H=config/locale/dragonfly/time_members.h CTIME_CC=config/locale/dragonfly/time_members.cc CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h ;; gnu) AC_MSG_RESULT(gnu) # Declare intention to use gettext, and add support for specific # languages. # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT ALL_LINGUAS="de fr" # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then USE_NLS=yes fi # Export the build objects. for ling in $ALL_LINGUAS; do \ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ done AC_SUBST(glibcxx_MOFILES) AC_SUBST(glibcxx_POFILES) CLOCALE_H=config/locale/gnu/c_locale.h CLOCALE_CC=config/locale/gnu/c_locale.cc CCODECVT_CC=config/locale/gnu/codecvt_members.cc CCOLLATE_CC=config/locale/gnu/collate_members.cc CCTYPE_CC=config/locale/gnu/ctype_members.cc CMESSAGES_H=config/locale/gnu/messages_members.h CMESSAGES_CC=config/locale/gnu/messages_members.cc CMONEY_CC=config/locale/gnu/monetary_members.cc CNUMERIC_CC=config/locale/gnu/numeric_members.cc CTIME_H=config/locale/gnu/time_members.h CTIME_CC=config/locale/gnu/time_members.cc CLOCALE_INTERNAL_H=config/locale/gnu/c++locale_internal.h ;; ieee_1003.1-2001) AC_MSG_RESULT(IEEE 1003.1) CLOCALE_H=config/locale/ieee_1003.1-2001/c_locale.h CLOCALE_CC=config/locale/ieee_1003.1-2001/c_locale.cc CCODECVT_CC=config/locale/generic/codecvt_members.cc CCOLLATE_CC=config/locale/generic/collate_members.cc CCTYPE_CC=config/locale/generic/ctype_members.cc CMESSAGES_H=config/locale/ieee_1003.1-2001/messages_members.h CMESSAGES_CC=config/locale/ieee_1003.1-2001/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 ;; newlib) AC_MSG_RESULT(newlib) CLOCALE_H=config/locale/generic/c_locale.h CLOCALE_CC=config/locale/generic/c_locale.cc CCODECVT_CC=config/locale/generic/codecvt_members.cc CCOLLATE_CC=config/locale/generic/collate_members.cc CCTYPE_CC=config/locale/newlib/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 ;; esac # This is where the testsuite looks for locale catalogs, using the # -DLOCALEDIR define during testsuite compilation. glibcxx_localedir=${glibcxx_builddir}/po/share/locale AC_SUBST(glibcxx_localedir) # A standalone libintl (e.g., GNU libintl) may be in use. if test $USE_NLS = yes; then AC_CHECK_HEADERS([libintl.h], [], USE_NLS=no) AC_SEARCH_LIBS(gettext, intl, [], USE_NLS=no) fi if test $USE_NLS = yes; then AC_DEFINE(_GLIBCXX_USE_NLS, 1, [Define if NLS translations are to be used.]) fi AC_SUBST(USE_NLS) AC_SUBST(CLOCALE_H) AC_SUBST(CMESSAGES_H) AC_SUBST(CCODECVT_CC) AC_SUBST(CCOLLATE_CC) AC_SUBST(CCTYPE_CC) AC_SUBST(CMESSAGES_CC) AC_SUBST(CMONEY_CC) AC_SUBST(CNUMERIC_CC) AC_SUBST(CTIME_H) AC_SUBST(CTIME_CC) AC_SUBST(CLOCALE_CC) AC_SUBST(CLOCALE_INTERNAL_H) ]) dnl dnl Check for which std::allocator base class to use. The choice is dnl mapped from a subdirectory of include/ext. dnl dnl Default is new. dnl AC_DEFUN([GLIBCXX_ENABLE_ALLOCATOR], [ AC_MSG_CHECKING([for std::allocator base class]) GLIBCXX_ENABLE(libstdcxx-allocator,auto,[[[=KIND]]], [use KIND for target std::allocator base], [permit new|malloc|yes|no|auto]) # If they didn't use this option switch, or if they specified --enable # with no specific model, we'll have to look for one. If they # specified --disable (???), do likewise. if test $enable_libstdcxx_allocator = no || test $enable_libstdcxx_allocator = yes; then enable_libstdcxx_allocator=auto fi # Either a known package, or "auto". Auto implies the default choice # for a particular platform. enable_libstdcxx_allocator_flag=$enable_libstdcxx_allocator # Probe for host-specific support if no specific model is specified. # Default to "new". if test $enable_libstdcxx_allocator_flag = auto; then case ${target_os} in linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) enable_libstdcxx_allocator_flag=new ;; *) enable_libstdcxx_allocator_flag=new ;; esac fi AC_MSG_RESULT($enable_libstdcxx_allocator_flag) # Set configure bits for specified locale package case ${enable_libstdcxx_allocator_flag} in malloc) ALLOCATOR_H=config/allocator/malloc_allocator_base.h ALLOCATOR_NAME=__gnu_cxx::malloc_allocator ;; new) ALLOCATOR_H=config/allocator/new_allocator_base.h ALLOCATOR_NAME=__gnu_cxx::new_allocator ;; esac GLIBCXX_CONDITIONAL(ENABLE_ALLOCATOR_NEW, test $enable_libstdcxx_allocator_flag = new) AC_SUBST(ALLOCATOR_H) AC_SUBST(ALLOCATOR_NAME) ]) dnl dnl Check for whether the Boost-derived checks should be turned on. dnl dnl --enable-concept-checks turns them on. dnl --disable-concept-checks leaves them off. dnl + Usage: GLIBCXX_ENABLE_CONCEPT_CHECKS[(DEFAULT)] dnl Where DEFAULT is either `yes' or `no'. dnl AC_DEFUN([GLIBCXX_ENABLE_CONCEPT_CHECKS], [ GLIBCXX_ENABLE(concept-checks,$1,,[use Boost-derived template checks]) if test $enable_concept_checks = yes; then AC_DEFINE(_GLIBCXX_CONCEPT_CHECKS, 1, [Define to use concept checking code from the boost libraries.]) fi ]) dnl dnl Use extern templates. dnl dnl --enable-extern-template defines _GLIBCXX_EXTERN_TEMPLATE to 1 dnl --disable-extern-template defines _GLIBCXX_EXTERN_TEMPLATE to 0 dnl + Usage: GLIBCXX_ENABLE_TEMPLATE[(DEFAULT)] dnl Where DEFAULT is `yes' or `no'. dnl AC_DEFUN([GLIBCXX_ENABLE_EXTERN_TEMPLATE], [ GLIBCXX_ENABLE(extern-template,$1,,[enable extern template]) AC_MSG_CHECKING([for extern template support]) AC_MSG_RESULT([$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]) vtv_cygmin=no if test $enable_vtable_verify = yes; then case ${target_os} in cygwin*|mingw32*) VTV_CXXFLAGS="-fvtable-verify=std -Wl,-lvtv,-u_vtable_map_vars_start,-u_vtable_map_vars_end" VTV_CXXLINKFLAGS="-L${toplevel_builddir}/libvtv/.libs -Wl,--rpath -Wl,${toplevel_builddir}/libvtv/.libs" vtv_cygmin=yes ;; darwin*) VTV_CXXFLAGS="-fvtable-verify=std -Wl,-u,_vtable_map_vars_start -Wl,-u,_vtable_map_vars_end" VTV_CXXLINKFLAGS="-L${toplevel_builddir}/libvtv/.libs -Wl,-rpath,${toplevel_builddir}/libvtv/.libs" ;; solaris2*) VTV_CXXFLAGS="-fvtable-verify=std -Wl,-u_vtable_map_vars_start,-u_vtable_map_vars_end" VTV_CXXLINKFLAGS="-L${toplevel_builddir}/libvtv/.libs -Wl,-R -Wl,${toplevel_builddir}/libvtv/.libs" ;; *) VTV_CXXFLAGS="-fvtable-verify=std -Wl,-u_vtable_map_vars_start,-u_vtable_map_vars_end" VTV_CXXLINKFLAGS="-L${toplevel_builddir}/libvtv/.libs -Wl,--rpath -Wl,${toplevel_builddir}/libvtv/.libs" ;; esac VTV_PCH_CXXFLAGS="-fvtable-verify=std" else VTV_CXXFLAGS= VTV_PCH_CXXFLAGS= VTV_CXXLINKFLAGS= fi AC_SUBST(VTV_CXXFLAGS) AC_SUBST(VTV_PCH_CXXFLAGS) AC_SUBST(VTV_CXXLINKFLAGS) AM_CONDITIONAL(VTV_CYGMIN, test x$vtv_cygmin = xyes) GLIBCXX_CONDITIONAL(ENABLE_VTABLE_VERIFY, test $enable_vtable_verify = yes) ]) dnl dnl Check for parallel mode pre-requisites, including OpenMP support. dnl dnl + Usage: GLIBCXX_ENABLE_PARALLEL dnl AC_DEFUN([GLIBCXX_ENABLE_PARALLEL], [ enable_parallel=no; # See if configured libgomp/omp.h exists. (libgomp may be in # noconfigdirs but not explicitly disabled.) if echo " ${TARGET_CONFIGDIRS} " | grep " libgomp " > /dev/null 2>&1 ; then enable_parallel=yes; else AC_MSG_NOTICE([target-libgomp not built]) fi AC_MSG_CHECKING([for parallel mode support]) AC_MSG_RESULT([$enable_parallel]) ]) dnl dnl Check for which I/O library to use: stdio and POSIX, or pure stdio. dnl dnl Default is stdio_posix. dnl AC_DEFUN([GLIBCXX_ENABLE_CSTDIO], [ AC_MSG_CHECKING([for underlying I/O to use]) GLIBCXX_ENABLE(cstdio,stdio,[[[=PACKAGE]]], [use target-specific I/O package], [permit stdio|stdio_posix|stdio_pure]) # The only available I/O model is based on stdio, via basic_file_stdio. # The default "stdio" is actually "stdio + POSIX" because it uses fdopen(3) # to get a file descriptor and then uses read(3) and write(3) with it. # The "stdio_pure" model doesn't use fdopen and only uses FILE* for I/O. case ${enable_cstdio} in stdio*) CSTDIO_H=config/io/c_io_stdio.h BASIC_FILE_H=config/io/basic_file_stdio.h BASIC_FILE_CC=config/io/basic_file_stdio.cc if test "x$enable_cstdio" = "xstdio_pure" ; then AC_MSG_RESULT([stdio (without POSIX read/write)]) AC_DEFINE(_GLIBCXX_USE_STDIO_PURE, 1, [Define to restrict std::__basic_file<> to stdio APIs.]) else AC_MSG_RESULT([stdio (with POSIX read/write)]) fi ;; esac AC_SUBST(CSTDIO_H) AC_SUBST(BASIC_FILE_H) AC_SUBST(BASIC_FILE_CC) ]) dnl dnl Check for "unusual" flags to pass to the compiler while building. dnl dnl --enable-cxx-flags='-foo -bar -baz' is a general method for passing dnl experimental flags such as -fpch, -fIMI, -Dfloat=char, etc. dnl --disable-cxx-flags passes nothing. dnl + See http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00131.html dnl http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00284.html dnl http://gcc.gnu.org/ml/libstdc++/2000-q1/msg00035.html dnl + Usage: GLIBCXX_ENABLE_CXX_FLAGS(default flags) dnl If "default flags" is an empty string, the effect is the same dnl as --disable or --enable=no. dnl AC_DEFUN([GLIBCXX_ENABLE_CXX_FLAGS], [dnl AC_MSG_CHECKING([for extra compiler flags for building]) GLIBCXX_ENABLE(cxx-flags,$1,[=FLAGS], [pass compiler FLAGS when building library], [case "x$enable_cxx_flags" in xno | x) enable_cxx_flags= ;; x-*) ;; *) AC_MSG_ERROR(_g_switch needs compiler flags as arguments) ;; esac]) # Run through flags (either default or command-line) and set anything # extra (e.g., #defines) that must accompany particular g++ options. if test -n "$enable_cxx_flags"; then for f in $enable_cxx_flags; do case "$f" in -fhonor-std) ;; -*) ;; *) # and we're trying to pass /what/ exactly? AC_MSG_ERROR([compiler flags start with a -]) ;; esac done fi EXTRA_CXX_FLAGS="$enable_cxx_flags" AC_MSG_RESULT($EXTRA_CXX_FLAGS) AC_SUBST(EXTRA_CXX_FLAGS) ]) dnl dnl Check to see if debugging libraries are to be built. dnl dnl --enable-libstdcxx-debug dnl builds a separate set of debugging libraries in addition to the dnl normal (shared, static) libstdc++ binaries. dnl dnl --disable-libstdcxx-debug dnl builds only one (non-debug) version of libstdc++. dnl dnl --enable-libstdcxx-debug-flags=FLAGS dnl iff --enable-debug == yes, then use FLAGS to build the debug library. dnl dnl + Usage: GLIBCXX_ENABLE_DEBUG[(DEFAULT)] dnl Where DEFAULT is either `yes' or `no'. dnl AC_DEFUN([GLIBCXX_ENABLE_DEBUG], [ AC_MSG_CHECKING([for additional debug build]) skip_debug_build= GLIBCXX_ENABLE(libstdcxx-debug,$1,,[build extra debug library]) if test x$enable_libstdcxx_debug = xyes; then if test -f $toplevel_builddir/../stage_final \ && test -f $toplevel_builddir/../stage_current; then stage_final=`cat $toplevel_builddir/../stage_final` stage_current=`cat $toplevel_builddir/../stage_current` if test x$stage_current != x$stage_final ; then skip_debug_build=" (skipped for bootstrap stage $stage_current)" enable_libstdcxx_debug=no fi fi fi AC_MSG_RESULT($enable_libstdcxx_debug$skip_debug_build) GLIBCXX_CONDITIONAL(GLIBCXX_BUILD_DEBUG, test $enable_libstdcxx_debug = yes) ]) dnl dnl Check for explicit debug flags. dnl dnl --enable-libstdcxx-debug-flags='-O1' dnl is a general method for passing flags to be used when dnl building debug libraries with --enable-libstdcxx-debug. dnl dnl --disable-libstdcxx-debug-flags does nothing. dnl + Usage: GLIBCXX_ENABLE_DEBUG_FLAGS(default flags) dnl If "default flags" is an empty string, the effect is the same dnl as --disable or --enable=no. dnl AC_DEFUN([GLIBCXX_ENABLE_DEBUG_FLAGS], [ GLIBCXX_ENABLE(libstdcxx-debug-flags,[$1],[=FLAGS], [pass compiler FLAGS when building debug library], [case "x$enable_libstdcxx_debug_flags" in xno | x) enable_libstdcxx_debug_flags= ;; x-*) ;; *) AC_MSG_ERROR(_g_switch needs compiler flags as arguments) ;; esac]) # Option parsed, now set things appropriately DEBUG_FLAGS="$enable_libstdcxx_debug_flags" AC_SUBST(DEBUG_FLAGS) AC_MSG_NOTICE([Debug build flags set to $DEBUG_FLAGS]) ]) dnl dnl Check if the user only wants a freestanding library implementation. dnl dnl --disable-hosted-libstdcxx will turn off most of the library build, dnl installing only the headers required by [17.4.1.3] and the language dnl support library. More than that will be built (to keep the Makefiles dnl conveniently clean), but not installed. dnl dnl Also define --disable-libstdcxx-hosted as an alias for dnl --disable-hosted-libstdcxx but fail if both are given dnl and their values do not agree. dnl dnl Sets: dnl is_hosted (yes/no) dnl dnl Defines: dnl _GLIBCXX_HOSTED (always defined, either to 1 or 0) dnl AC_DEFUN([GLIBCXX_ENABLE_HOSTED], [ AC_ARG_ENABLE([hosted-libstdcxx], AC_HELP_STRING([--disable-hosted-libstdcxx], [only build freestanding C++ runtime support]), [enable_hosted_libstdcxx_was_given=yes], [case "$host" in arm*-*-symbianelf*) enable_hosted_libstdcxx=no ;; *) case "${with_newlib}-${with_headers}" in no-no) enable_hosted_libstdcxx=no ;; *) enable_hosted_libstdcxx=yes ;; esac ;; esac]) # Because most configure args are --enable-libstdcxx-foo add an alias # of that form for --enable-hosted-libstdcxx. AC_ARG_ENABLE([libstdcxx-hosted], AC_HELP_STRING([--disable-libstdcxx-hosted], [alias for --disable-hosted-libstdcxx]), [if test "$enable_hosted_libstdcxx_was_given" = yes; then if test "$enable_hosted_libstdcxx" != "$enableval"; then AC_MSG_ERROR([--enable-libstdcxx-hosted=$enableval conflicts with --enable-hosted-libstdcxx=$enable_hosted_libstdcxx]) fi else enable_hosted_libstdcxx=${enableval} fi ],) freestanding_flags= if test "$enable_hosted_libstdcxx" = no; then AC_MSG_NOTICE([Only freestanding libraries will be built]) is_hosted=no hosted_define=0 enable_abi_check=no enable_libstdcxx_pch=no if test "x$with_headers" = xno; then freestanding_flags="-ffreestanding" fi else is_hosted=yes hosted_define=__STDC_HOSTED__ fi GLIBCXX_CONDITIONAL(GLIBCXX_HOSTED, test $is_hosted = yes) AC_DEFINE_UNQUOTED(_GLIBCXX_HOSTED, $hosted_define, [Define to 1 if a full hosted library is built, or 0 if freestanding.]) FREESTANDING_FLAGS="$freestanding_flags" AC_SUBST(FREESTANDING_FLAGS) ]) 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 dnl like numeric_limits<> specializations are always available. dnl dnl --enable-long-long defines _GLIBCXX_USE_LONG_LONG dnl --disable-long-long leaves _GLIBCXX_USE_LONG_LONG undefined dnl + Usage: GLIBCXX_ENABLE_LONG_LONG[(DEFAULT)] dnl Where DEFAULT is either `yes' or `no'. dnl AC_DEFUN([GLIBCXX_ENABLE_LONG_LONG], [ GLIBCXX_ENABLE(long-long,$1,,[enable template specializations for 'long long']) if test $enable_long_long = yes; then AC_DEFINE(_GLIBCXX_USE_LONG_LONG, 1, [Define if code specialized for long long should be used.]) fi AC_MSG_CHECKING([for enabled long long specializations]) AC_MSG_RESULT([$enable_long_long]) ]) dnl dnl Check for decimal floating point. dnl See: dnl http://gcc.gnu.org/onlinedocs/gcc/Decimal-Float.html#Decimal-Float dnl dnl This checks to see if the host supports decimal floating point types. dnl dnl Defines: dnl _GLIBCXX_USE_DECIMAL_FLOAT dnl AC_DEFUN([GLIBCXX_ENABLE_DECIMAL_FLOAT], [ # Fake what AC_TRY_COMPILE does, without linking as this is # unnecessary for this test. cat > conftest.$ac_ext << EOF [#]line __oline__ "configure" int main() { _Decimal32 d1; _Decimal64 d2; _Decimal128 d3; return 0; } EOF AC_MSG_CHECKING([for ISO/IEC TR 24733 ]) if AC_TRY_EVAL(ac_compile); then AC_DEFINE(_GLIBCXX_USE_DECIMAL_FLOAT, 1, [Define if ISO/IEC TR 24733 decimal floating point types are supported on this host.]) enable_dfp=yes else enable_dfp=no fi AC_MSG_RESULT($enable_dfp) rm -f conftest* ]) dnl dnl Check for GNU 128-bit floating point type. dnl dnl Note: also checks that the type isn't a standard types. dnl dnl Defines: dnl ENABLE_FLOAT128 dnl AC_DEFUN([GLIBCXX_ENABLE_FLOAT128], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS # Fake what AC_TRY_COMPILE does, without linking as this is # unnecessary for this test. cat > conftest.$ac_ext << EOF [#]line __oline__ "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; template<typename T> struct same<T, T>; int main() { typename same<double, __float128>::type f1; typename same<long double, __float128>::type f2; } EOF AC_MSG_CHECKING([for __float128]) if AC_TRY_EVAL(ac_compile); then enable_float128=yes else enable_float128=no fi AC_MSG_RESULT($enable_float128) GLIBCXX_CONDITIONAL(ENABLE_FLOAT128, test $enable_float128 = yes) rm -f conftest* AC_LANG_RESTORE ]) dnl dnl Check for template specializations for the 'wchar_t' type. dnl dnl --enable-wchar_t defines _GLIBCXX_USE_WCHAR_T dnl --disable-wchar_t leaves _GLIBCXX_USE_WCHAR_T undefined dnl + Usage: GLIBCXX_ENABLE_WCHAR_T[(DEFAULT)] dnl Where DEFAULT is either `yes' or `no'. dnl dnl Necessary support must also be present. dnl AC_DEFUN([GLIBCXX_ENABLE_WCHAR_T], [ GLIBCXX_ENABLE(wchar_t,$1,,[enable template specializations for 'wchar_t']) # Test wchar.h for mbstate_t, which is needed for char_traits and fpos. AC_CHECK_HEADERS(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no) AC_MSG_CHECKING([for mbstate_t]) AC_TRY_COMPILE([#include <wchar.h>], [mbstate_t teststate;], have_mbstate_t=yes, have_mbstate_t=no) AC_MSG_RESULT($have_mbstate_t) if test x"$have_mbstate_t" = xyes; then AC_DEFINE(HAVE_MBSTATE_T,1,[Define if mbstate_t exists in wchar.h.]) fi # Test it always, for use in GLIBCXX_ENABLE_C99, together with # ac_has_wchar_h. AC_CHECK_HEADERS(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no) if test x"$enable_wchar_t" = x"yes"; then AC_LANG_SAVE AC_LANG_CPLUSPLUS if test x"$ac_has_wchar_h" = xyes && test x"$ac_has_wctype_h" = xyes; then AC_TRY_COMPILE([#include <wchar.h> #include <stddef.h> wint_t i; long l = WEOF; long j = WCHAR_MIN; long k = WCHAR_MAX; namespace test { using ::btowc; using ::fgetwc; using ::fgetws; using ::fputwc; using ::fputws; using ::fwide; using ::fwprintf; using ::fwscanf; using ::getwc; using ::getwchar; using ::mbrlen; using ::mbrtowc; using ::mbsinit; using ::mbsrtowcs; using ::putwc; using ::putwchar; using ::swprintf; using ::swscanf; using ::ungetwc; using ::vfwprintf; using ::vswprintf; using ::vwprintf; using ::wcrtomb; using ::wcscat; using ::wcschr; using ::wcscmp; using ::wcscoll; using ::wcscpy; using ::wcscspn; using ::wcsftime; using ::wcslen; using ::wcsncat; using ::wcsncmp; using ::wcsncpy; using ::wcspbrk; using ::wcsrchr; using ::wcsrtombs; using ::wcsspn; using ::wcsstr; using ::wcstod; using ::wcstok; using ::wcstol; using ::wcstoul; using ::wcsxfrm; using ::wctob; using ::wmemchr; using ::wmemcmp; using ::wmemcpy; using ::wmemmove; using ::wmemset; using ::wprintf; using ::wscanf; } ],[],[], [enable_wchar_t=no]) else enable_wchar_t=no fi AC_LANG_RESTORE fi if test x"$enable_wchar_t" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_WCHAR_T, 1, [Define if code specialized for wchar_t should be used.]) fi AC_MSG_CHECKING([for enabled wchar_t specializations]) AC_MSG_RESULT([$enable_wchar_t]) ]) dnl dnl Check to see if building and using a C++ precompiled header can be done. dnl dnl --enable-libstdcxx-pch=yes dnl default, this shows intent to use stdc++.h.gch If it looks like it dnl may work, after some light-hearted attempts to puzzle out compiler dnl support, flip bits on in include/Makefile.am dnl dnl --disable-libstdcxx-pch dnl turns off attempts to use or build stdc++.h.gch. dnl dnl Substs: dnl glibcxx_PCHFLAGS dnl AC_DEFUN([GLIBCXX_ENABLE_PCH], [ GLIBCXX_ENABLE(libstdcxx-pch,$1,,[build pre-compiled libstdc++ headers]) if test $enable_libstdcxx_pch = yes; then AC_CACHE_CHECK([for compiler with PCH support], [glibcxx_cv_prog_CXX_pch], [ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Werror -Winvalid-pch -Wno-deprecated" AC_LANG_SAVE AC_LANG_CPLUSPLUS echo '#include <math.h>' > conftest.h if $CXX $CXXFLAGS $CPPFLAGS -x c++-header conftest.h \ -o conftest.h.gch 1>&5 2>&1 && echo '#error "pch failed"' > conftest.h && echo '#include "conftest.h"' > conftest.cc && $CXX -c $CXXFLAGS $CPPFLAGS conftest.cc 1>&5 2>&1 ; then glibcxx_cv_prog_CXX_pch=yes else glibcxx_cv_prog_CXX_pch=no fi rm -f conftest* CXXFLAGS=$ac_save_CXXFLAGS AC_LANG_RESTORE ]) enable_libstdcxx_pch=$glibcxx_cv_prog_CXX_pch fi AC_MSG_CHECKING([for enabled PCH]) AC_MSG_RESULT([$enable_libstdcxx_pch]) GLIBCXX_CONDITIONAL(GLIBCXX_BUILD_PCH, test $enable_libstdcxx_pch = yes) if test $enable_libstdcxx_pch = yes; then glibcxx_PCHFLAGS="-include bits/stdc++.h" else glibcxx_PCHFLAGS="" fi AC_SUBST(glibcxx_PCHFLAGS) ]) dnl dnl Check for atomic builtins. dnl See: dnl http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html dnl dnl This checks to see if the host supports the compiler-generated dnl builtins for atomic operations for various integral sizes. Note, this dnl is intended to be an all-or-nothing switch, so all the atomic operations dnl that are used should be checked. dnl dnl Note: dnl libgomp and libgfortran use a link test, see CHECK_SYNC_FETCH_AND_ADD. dnl AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS old_CXXFLAGS="$CXXFLAGS" # Do link tests if possible, instead asm tests, limited to some platforms # see discussion in PR target/40134, PR libstdc++/40133 and the thread # starting at http://gcc.gnu.org/ml/gcc-patches/2009-07/msg00322.html atomic_builtins_link_tests=no if test x$gcc_no_link != xyes; then # Can do link tests. Limit to some tested platforms case "$host" in *-*-linux* | *-*-uclinux* | *-*-kfreebsd*-gnu | *-*-gnu*) atomic_builtins_link_tests=yes ;; esac fi if test x$atomic_builtins_link_tests = xyes; then # Do link tests. CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_CACHE_CHECK([for atomic builtins for bool], glibcxx_cv_atomic_bool, [ AC_TRY_LINK( [ ], [typedef bool atomic_type; atomic_type c1; atomic_type c2; atomic_type c3(0); // N.B. __atomic_fetch_add is not supported for bool. __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); ], [glibcxx_cv_atomic_bool=yes], [glibcxx_cv_atomic_bool=no]) ]) AC_CACHE_CHECK([for atomic builtins for short], glibcxx_cv_atomic_short, [ AC_TRY_LINK( [ ], [typedef short atomic_type; atomic_type c1; atomic_type c2; atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); ], [glibcxx_cv_atomic_short=yes], [glibcxx_cv_atomic_short=no]) ]) AC_CACHE_CHECK([for atomic builtins for int], glibcxx_cv_atomic_int, [ AC_TRY_LINK( [ ], [typedef int atomic_type; atomic_type c1; atomic_type c2; atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); ], [glibcxx_cv_atomic_int=yes], [glibcxx_cv_atomic_int=no]) ]) AC_CACHE_CHECK([for atomic builtins for long long], glibcxx_cv_atomic_long_long, [ AC_TRY_LINK( [ ], [typedef long long atomic_type; atomic_type c1; atomic_type c2; atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); ], [glibcxx_cv_atomic_long_long=yes], [glibcxx_cv_atomic_long_long=no]) ]) else # Do asm tests. # Compile unoptimized. CXXFLAGS='-O0 -S' # Fake what AC_TRY_COMPILE does. cat > conftest.$ac_ext << EOF [#]line __oline__ "configure" int main() { typedef bool atomic_type; atomic_type c1; atomic_type c2; atomic_type c3(0); // N.B. __atomic_fetch_add is not supported for bool. __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); return 0; } EOF AC_MSG_CHECKING([for atomic builtins for bool]) if AC_TRY_EVAL(ac_compile); then if grep __atomic_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_bool=no else glibcxx_cv_atomic_bool=yes fi fi AC_MSG_RESULT($glibcxx_cv_atomic_bool) rm -f conftest* cat > conftest.$ac_ext << EOF [#]line __oline__ "configure" int main() { typedef short atomic_type; atomic_type c1; atomic_type c2; atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); return 0; } EOF AC_MSG_CHECKING([for atomic builtins for short]) if AC_TRY_EVAL(ac_compile); then if grep __atomic_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_short=no else glibcxx_cv_atomic_short=yes fi fi AC_MSG_RESULT($glibcxx_cv_atomic_short) rm -f conftest* cat > conftest.$ac_ext << EOF [#]line __oline__ "configure" int main() { // NB: _Atomic_word not necessarily int. typedef int atomic_type; atomic_type c1; atomic_type c2; atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); return 0; } EOF AC_MSG_CHECKING([for atomic builtins for int]) if AC_TRY_EVAL(ac_compile); then if grep __atomic_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_int=no else glibcxx_cv_atomic_int=yes fi fi AC_MSG_RESULT($glibcxx_cv_atomic_int) rm -f conftest* cat > conftest.$ac_ext << EOF [#]line __oline__ "configure" int main() { typedef long long atomic_type; atomic_type c1; atomic_type c2; atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); return 0; } EOF AC_MSG_CHECKING([for atomic builtins for long long]) if AC_TRY_EVAL(ac_compile); then if grep __atomic_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_long_long=no else glibcxx_cv_atomic_long_long=yes fi fi AC_MSG_RESULT($glibcxx_cv_atomic_long_long) rm -f conftest* fi CXXFLAGS="$old_CXXFLAGS" AC_LANG_RESTORE # Set atomicity_dir to builtins if all but the long long test above passes, # or if the builtins were already chosen (e.g. by configure.host). if { test "$glibcxx_cv_atomic_bool" = yes \ && test "$glibcxx_cv_atomic_short" = yes \ && test "$glibcxx_cv_atomic_int" = yes; } \ || test "$atomicity_dir" = "cpu/generic/atomicity_builtins"; then AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS, 1, [Define if the compiler supports C++11 atomics.]) atomicity_dir=cpu/generic/atomicity_builtins fi # If still generic, set to mutex. if test $atomicity_dir = "cpu/generic" ; then atomicity_dir=cpu/generic/atomicity_mutex AC_MSG_WARN([No native atomic operations are provided for this platform.]) if test "x$target_thread_file" = xsingle; then AC_MSG_WARN([They cannot be faked when thread support is disabled.]) AC_MSG_WARN([Thread-safety of certain classes is not guaranteed.]) else AC_MSG_WARN([They will be faked using a mutex.]) AC_MSG_WARN([Performance of certain classes will degrade as a result.]) fi fi ]) dnl dnl Set default lock policy for synchronizing shared_ptr reference counting. dnl dnl --with-libstdcxx-lock-policy=auto dnl Use atomic operations for shared_ptr reference counting only if dnl the default target supports atomic compare-and-swap. dnl --with-libstdcxx-lock-policy=atomic dnl Use atomic operations for shared_ptr reference counting. dnl --with-libstdcxx-lock-policy=mutex dnl Use a mutex to synchronize shared_ptr reference counting. dnl dnl This controls the value of __gnu_cxx::__default_lock_policy, which dnl determines how shared_ptr reference counts are synchronized. dnl The option "atomic" means that atomic operations should be used, dnl "mutex" means that a mutex will be used. The default option, "auto", dnl will check if the target supports the compiler-generated builtins dnl for atomic compare-and-swap operations for 2-byte and 4-byte integers, dnl and will use "atomic" if supported, "mutex" otherwise. dnl This option is ignored if the thread model used by GCC is "single", dnl as no synchronization is used at all in that case. dnl This option affects the library ABI (except in the "single" thread model). dnl dnl Defines _GLIBCXX_HAVE_ATOMIC_LOCK_POLICY to 1 if atomics should be used. dnl AC_DEFUN([GLIBCXX_ENABLE_LOCK_POLICY], [ AC_ARG_WITH([libstdcxx-lock-policy], AC_HELP_STRING([--with-libstdcxx-lock-policy={atomic,mutex,auto}], [synchronization policy for shared_ptr reference counting [default=auto]]), [libstdcxx_atomic_lock_policy=$withval], [libstdcxx_atomic_lock_policy=auto]) case "$libstdcxx_atomic_lock_policy" in atomic|mutex|auto) ;; *) AC_MSG_ERROR([Invalid argument for --with-libstdcxx-lock-policy]) ;; esac AC_MSG_CHECKING([for lock policy for shared_ptr reference counts]) if test x"$libstdcxx_atomic_lock_policy" = x"auto"; then AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" dnl Why do we care about 2-byte CAS on targets with 4-byte _Atomic_word?! dnl Why don't we check 8-byte CAS for sparc64, where _Atomic_word is long?! dnl New targets should only check for CAS for the _Atomic_word type. AC_TRY_COMPILE([ #if defined __riscv # error "Defaulting to mutex-based locks for ABI compatibility" #endif #if ! defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 # error "No 2-byte compare-and-swap" #elif ! defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 # error "No 4-byte compare-and-swap" #endif ],, [libstdcxx_atomic_lock_policy=atomic], [libstdcxx_atomic_lock_policy=mutex]) AC_LANG_RESTORE CXXFLAGS="$ac_save_CXXFLAGS" fi if test x"$libstdcxx_atomic_lock_policy" = x"atomic"; then AC_MSG_RESULT(atomic) AC_DEFINE(HAVE_ATOMIC_LOCK_POLICY,1, [Defined if shared_ptr reference counting should use atomic operations.]) else AC_MSG_RESULT(mutex) fi ]) dnl dnl Allow visibility attributes to be used on namespaces, objects, etc. dnl dnl --enable-libstdcxx-visibility enables attempt to use visibility attributes. dnl --disable-libstdcxx-visibility turns off all use of visibility attributes. dnl + Usage: GLIBCXX_ENABLE_LIBSTDCXX_VISIBILITY[(DEFAULT)] dnl Where DEFAULT is 'yes'. dnl AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_VISIBILITY], [ GLIBCXX_ENABLE(libstdcxx-visibility,$1,,[enables visibility safe usage]) if test x$enable_libstdcxx_visibility = xyes ; then dnl all hail libgfortran dnl Check whether the target supports hidden visibility. AC_CACHE_CHECK([whether the target supports hidden visibility], glibcxx_cv_have_attribute_visibility, [ save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror" AC_TRY_COMPILE([void __attribute__((visibility("hidden"))) foo(void) { }], [], glibcxx_cv_have_attribute_visibility=yes, glibcxx_cv_have_attribute_visibility=no) CFLAGS="$save_CFLAGS"]) if test $glibcxx_cv_have_attribute_visibility = no; then enable_libstdcxx_visibility=no fi fi GLIBCXX_CONDITIONAL(ENABLE_VISIBILITY, test $enable_libstdcxx_visibility = yes) AC_MSG_NOTICE([visibility supported: $enable_libstdcxx_visibility]) ]) dnl dnl Add version tags to symbols in shared library (or not), additionally dnl marking other symbols as private/local (or not). dnl dnl Sets libtool_VERSION, and determines shared library SONAME. dnl dnl This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no. dnl dnl --enable-symvers=style adds a version script to the linker call when dnl creating the shared library. The choice of version script is dnl controlled by 'style'. dnl --disable-symvers does not. dnl dnl + Usage: GLIBCXX_ENABLE_SYMVERS[(DEFAULT)] dnl Where DEFAULT is either 'yes' or 'no'. Passing `yes' tries to dnl choose a default style based on linker characteristics. Passing dnl 'no' disables versioning. dnl AC_DEFUN([GLIBCXX_ENABLE_SYMVERS], [ GLIBCXX_ENABLE(symvers,$1,[[[=STYLE]]], [enables symbol versioning of the shared library], [permit yes|no|gnu|gnu-versioned-namespace|darwin|darwin-export|sun]) # If we never went through the GLIBCXX_CHECK_LINKER_FEATURES macro, then we # don't know enough about $LD to do tricks... AC_REQUIRE([GLIBCXX_CHECK_LINKER_FEATURES]) # Sun style symbol versions needs GNU c++filt for make_sunver.pl to work # with extern "C++" in version scripts. AC_REQUIRE([GCC_PROG_GNU_CXXFILT]) # Turn a 'yes' into a suitable default. if test x$enable_symvers = xyes ; then if test $enable_shared = no || test "x$LD" = x || test x$gcc_no_link = xyes; then enable_symvers=no else if test $with_gnu_ld = yes ; then case ${target_os} in hpux*) enable_symvers=no ;; *) enable_symvers=gnu ;; esac else case ${target_os} in darwin*) enable_symvers=darwin ;; # Sun symbol versioning exists since Solaris 2.5. solaris2.[[5-9]]* | solaris2.1[[0-9]]*) # make_sunver.pl needs GNU c++filt to support extern "C++" in # version scripts, so disable symbol versioning if none can be # found. if test -z "$ac_cv_path_CXXFILT"; then AC_MSG_WARN([=== You have requested Sun symbol versioning, but]) AC_MSG_WARN([=== no GNU c++filt could be found.]) AC_MSG_WARN([=== Symbol versioning will be disabled.]) enable_symvers=no else enable_symvers=sun fi ;; *) enable_symvers=no ;; esac fi fi fi # Check to see if 'darwin' or 'darwin-export' can win. if test x$enable_symvers = xdarwin-export ; then enable_symvers=darwin fi # Check if 'sun' was requested on non-Solaris 2 platforms. if test x$enable_symvers = xsun ; then case ${target_os} in solaris2*) # All fine. ;; *) # Unlikely to work. AC_MSG_WARN([=== You have requested Sun symbol versioning, but]) AC_MSG_WARN([=== you are not targetting Solaris 2.]) AC_MSG_WARN([=== Symbol versioning will be disabled.]) enable_symvers=no ;; esac fi # Check to see if 'gnu' can win. if test $enable_symvers = gnu || test $enable_symvers = gnu-versioned-namespace || test $enable_symvers = sun; then # Check to see if libgcc_s exists, indicating that shared libgcc is possible. AC_MSG_CHECKING([for shared libgcc]) ac_save_CFLAGS="$CFLAGS" CFLAGS=' -lgcc_s' AC_TRY_LINK(, [return 0;], glibcxx_shared_libgcc=yes, glibcxx_shared_libgcc=no) CFLAGS="$ac_save_CFLAGS" if test $glibcxx_shared_libgcc = no; then cat > conftest.c <<EOF int main (void) { return 0; } EOF changequote(,)dnl glibcxx_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \ -shared -shared-libgcc -o conftest.so \ conftest.c -v 2>&1 >/dev/null \ | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'` changequote([,])dnl rm -f conftest.c conftest.so if test x${glibcxx_libgcc_s_suffix+set} = xset; then CFLAGS=" -lgcc_s$glibcxx_libgcc_s_suffix" AC_TRY_LINK(, [return 0;], glibcxx_shared_libgcc=yes) CFLAGS="$ac_save_CFLAGS" fi fi AC_MSG_RESULT($glibcxx_shared_libgcc) # For GNU ld, we need at least this version. The format is described in # GLIBCXX_CHECK_LINKER_FEATURES above. glibcxx_min_gnu_ld_version=21400 # If no shared libgcc, can't win. if test $glibcxx_shared_libgcc != yes; then AC_MSG_WARN([=== You have requested GNU symbol versioning, but]) AC_MSG_WARN([=== you are not building a shared libgcc_s.]) AC_MSG_WARN([=== Symbol versioning will be disabled.]) enable_symvers=no elif test $with_gnu_ld != yes && test $enable_symvers = sun; then : All interesting versions of Sun ld support sun style symbol versioning. elif test $with_gnu_ld != yes ; then # just fail for now AC_MSG_WARN([=== You have requested GNU symbol versioning, but]) AC_MSG_WARN([=== you are not using the GNU linker.]) AC_MSG_WARN([=== Symbol versioning will be disabled.]) enable_symvers=no elif test $glibcxx_ld_is_gold = yes ; then : All versions of gold support symbol versioning. elif test $glibcxx_ld_is_mold = yes ; then : All versions of mold support symbol versioning. elif test $glibcxx_gnu_ld_version -lt $glibcxx_min_gnu_ld_version ; then # The right tools, the right setup, but too old. Fallbacks? AC_MSG_WARN(=== Linker version $glibcxx_gnu_ld_version is too old for) AC_MSG_WARN(=== full symbol versioning support in this release of GCC.) AC_MSG_WARN(=== You would need to upgrade your binutils to version) AC_MSG_WARN(=== $glibcxx_min_gnu_ld_version or later and rebuild GCC.) AC_MSG_WARN([=== Symbol versioning will be disabled.]) enable_symvers=no fi fi # For libtool versioning info, format is CURRENT:REVISION:AGE libtool_VERSION=6:33:0 # Everything parsed; figure out what files and settings to use. case $enable_symvers in no) SYMVER_FILE=config/abi/pre/none.ver ;; gnu) SYMVER_FILE=config/abi/pre/gnu.ver AC_DEFINE(_GLIBCXX_SYMVER_GNU, 1, [Define to use GNU versioning in the shared library.]) ;; gnu-versioned-namespace) libtool_VERSION=8:0:0 SYMVER_FILE=config/abi/pre/gnu-versioned-namespace.ver AC_DEFINE(_GLIBCXX_SYMVER_GNU_NAMESPACE, 1, [Define to use GNU namespace versioning in the shared library.]) ;; darwin) SYMVER_FILE=config/abi/pre/gnu.ver AC_DEFINE(_GLIBCXX_SYMVER_DARWIN, 1, [Define to use darwin versioning in the shared library.]) ;; sun) SYMVER_FILE=config/abi/pre/gnu.ver AC_DEFINE(_GLIBCXX_SYMVER_SUN, 1, [Define to use Sun versioning in the shared library.]) ;; esac if test x$enable_symvers != xno ; then AC_DEFINE(_GLIBCXX_SYMVER, 1, [Define to use symbol versioning in the shared library.]) fi AC_CACHE_CHECK([whether the target supports .symver directive], glibcxx_cv_have_as_symver_directive, [ AC_TRY_COMPILE([void foo (void); __asm (".symver foo, bar@@SYMVER");], [], glibcxx_cv_have_as_symver_directive=yes, glibcxx_cv_have_as_symver_directive=no)]) if test $glibcxx_cv_have_as_symver_directive = yes; then AC_DEFINE(HAVE_AS_SYMVER_DIRECTIVE, 1, [Define to 1 if the target assembler supports .symver directive.]) fi AC_SUBST(SYMVER_FILE) AC_SUBST(port_specific_symbol_files) GLIBCXX_CONDITIONAL(ENABLE_SYMVERS, test $enable_symvers != no) GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_GNU, test $enable_symvers = gnu) GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_GNU_NAMESPACE, test $enable_symvers = gnu-versioned-namespace) GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_DARWIN, test $enable_symvers = darwin) GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_SUN, test $enable_symvers = sun) AC_MSG_NOTICE(versioning on shared library symbols is $enable_symvers) if test $enable_symvers != no ; then case ${target_os} in # The Solaris 2 runtime linker doesn't support the GNU extension of # binding the same symbol to different versions solaris2*) ;; # Other platforms with GNU symbol versioning (GNU/Linux, more?) do. *) AC_DEFINE(HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT, 1, [Define to 1 if the target runtime linker supports binding the same symbol to different versions.]) ;; esac fi # Now, set up compatibility support, if any. # In addition, need this to deal with std::size_t mangling in # src/compatibility.cc. In a perfect world, could use # typeid(std::size_t).name()[0] to do direct substitution. AC_MSG_CHECKING([for size_t as unsigned int]) ac_save_CFLAGS="$CFLAGS" CFLAGS="-Werror" AC_TRY_COMPILE(, [__SIZE_TYPE__* stp; unsigned int* uip; stp = uip;], [glibcxx_size_t_is_i=yes], [glibcxx_size_t_is_i=no]) CFLAGS=$ac_save_CFLAGS if test "$glibcxx_size_t_is_i" = yes; then AC_DEFINE(_GLIBCXX_SIZE_T_IS_UINT, 1, [Define if size_t is unsigned int.]) fi AC_MSG_RESULT([$glibcxx_size_t_is_i]) AC_MSG_CHECKING([for ptrdiff_t as int]) ac_save_CFLAGS="$CFLAGS" CFLAGS="-Werror" AC_TRY_COMPILE(, [__PTRDIFF_TYPE__* ptp; int* ip; ptp = ip;], [glibcxx_ptrdiff_t_is_i=yes], [glibcxx_ptrdiff_t_is_i=no]) CFLAGS=$ac_save_CFLAGS if test "$glibcxx_ptrdiff_t_is_i" = yes; then AC_DEFINE(_GLIBCXX_PTRDIFF_T_IS_INT, 1, [Define if ptrdiff_t is int.]) fi AC_MSG_RESULT([$glibcxx_ptrdiff_t_is_i]) ]) dnl dnl Setup to use the gcc gthr.h thread-specific memory and mutex model. dnl We must stage the required headers so that they will be installed dnl with the library (unlike libgcc, the STL implementation is provided dnl solely within headers). Since we must not inject random user-space dnl macro names into user-provided C++ code, we first stage into <file>-in dnl and process to <file> with an output command. The reason for a two- dnl stage process here is to correctly handle $srcdir!=$objdir without 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]) ]) dnl dnl Check if gthread implementation defines the types and functions dnl required by the c++0x thread library. Conforming gthread dnl implementations can define __GTHREADS_CXX0X to enable use with c++0x. dnl dnl GLIBCXX_ENABLE_SYMVERS must be done before this. dnl AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [ GLIBCXX_ENABLE(libstdcxx-threads,auto,,[enable C++11 threads support]) if test x$enable_libstdcxx_threads = xauto || test x$enable_libstdcxx_threads = xyes; then AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions \ -I${toplevel_srcdir}/libgcc -I${toplevel_builddir}/libgcc" target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'` case $target_thread_file in posix) CXXFLAGS="$CXXFLAGS -DSUPPORTS_WEAK -DGTHREAD_USE_WEAK -D_PTHREADS" ;; win32) CXXFLAGS="$CXXFLAGS -D_WIN32_THREADS" # The support of condition variables is disabled by default in # the Win32 gthreads library, so enable it on explicit request. if test x$enable_libstdcxx_threads = xyes; then CXXFLAGS="$CXXFLAGS -D_WIN32_WINNT=0x0600" fi ;; esac AC_MSG_CHECKING([whether it can be safely assumed that mutex_timedlock is available]) AC_TRY_COMPILE([#include <unistd.h>], [ // In case of POSIX threads check _POSIX_TIMEOUTS. #if (defined(_PTHREADS) \ && (!defined(_POSIX_TIMEOUTS) || _POSIX_TIMEOUTS <= 0)) #error // In case of Win32 threads there is no support. #elif defined(_WIN32_THREADS) #error #endif ], [ac_gthread_use_mutex_timedlock=1], [ac_gthread_use_mutex_timedlock=0]) AC_DEFINE_UNQUOTED(_GTHREAD_USE_MUTEX_TIMEDLOCK, $ac_gthread_use_mutex_timedlock, [Define to 1 if mutex_timedlock is available.]) if test $ac_gthread_use_mutex_timedlock = 1 ; then res_mutex_timedlock=yes ; else res_mutex_timedlock=no ; fi AC_MSG_RESULT([$res_mutex_timedlock]) AC_MSG_CHECKING([for gthreads library]) AC_TRY_COMPILE([#include "gthr.h"], [ #ifndef __GTHREADS_CXX0X #error #endif ], [ac_has_gthreads=yes], [ac_has_gthreads=no]) else ac_has_gthreads=no fi AC_MSG_RESULT([$ac_has_gthreads]) if test x"$ac_has_gthreads" = x"yes"; then AC_DEFINE(_GLIBCXX_HAS_GTHREADS, 1, [Define if gthreads library is available.]) # Also check for pthread_rwlock_t for std::shared_timed_mutex in C++14 # but only do so if we're using pthread in the gthread library. # On VxWorks for example, pthread_rwlock_t is defined in sys/types.h # but the pthread library is not there by default and the gthread library # does not use it. AC_TRY_COMPILE([#include "gthr.h"], [ #if (!defined(_PTHREADS)) #error #endif ], [ac_gthread_use_pthreads=yes], [ac_gthread_use_pthreads=no]) if test x"$ac_gthread_use_pthreads" = x"yes"; then AC_CHECK_TYPE([pthread_rwlock_t], [AC_DEFINE([_GLIBCXX_USE_PTHREAD_RWLOCK_T], 1, [Define if POSIX read/write locks are available in <gthr.h>.])], [], [#include "gthr.h"]) fi # See above for the rationale. if test $target_thread_file = win32; then CPPFLAGS="$CPPFLAGS -D_WIN32_WINNT=0x0600" fi fi AC_CHECK_HEADER(semaphore.h, [ AC_MSG_CHECKING([for POSIX Semaphores and sem_timedwait]) AC_TRY_COMPILE([ #include <unistd.h> #include <semaphore.h> #include <limits.h> ], [ #if !defined _POSIX_TIMEOUTS || _POSIX_TIMEOUTS <= 0 # error "POSIX Timeouts option not supported" #elif !defined _POSIX_SEMAPHORES || _POSIX_SEMAPHORES <= 0 # error "POSIX Semaphores option not supported" #else #if defined SEM_VALUE_MAX constexpr int sem_value_max = SEM_VALUE_MAX; #elif defined _POSIX_SEM_VALUE_MAX constexpr int sem_value_max = _POSIX_SEM_VALUE_MAX; #else # error "SEM_VALUE_MAX not available" #endif sem_t sem; sem_init(&sem, 0, sem_value_max); struct timespec ts = { 0 }; sem_timedwait(&sem, &ts); #endif ], [ac_have_posix_semaphore=yes], [ac_have_posix_semaphore=no])], [ac_have_posix_semaphore=no]) if test $ac_have_posix_semaphore = yes ; then AC_DEFINE(HAVE_POSIX_SEMAPHORE, 1, [Define to 1 if POSIX Semaphores with sem_timedwait are available in <semaphore.h>.]) fi AC_MSG_RESULT([$ac_have_posix_semaphore]) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) # Check whether LC_MESSAGES is available in <locale.h>. # Ulrich Drepper <drepper@@cygnus.com>, 1995. # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # Please note that the actual code is *not* freely available. AC_DEFUN([AC_LC_MESSAGES], [ AC_CHECK_HEADER(locale.h, [ AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES, [AC_TRY_COMPILE([#include <locale.h>], [return LC_MESSAGES], ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)]) if test $ac_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if LC_MESSAGES is available in <locale.h>.]) fi ]) ]) dnl dnl Check whether rdrand is supported in the assembler. AC_DEFUN([GLIBCXX_CHECK_X86_RDRAND], [ AC_CACHE_CHECK([for rdrand support in assembler], ac_cv_x86_rdrand, [ ac_cv_x86_rdrand=no case "$target" in i?86-*-* | \ x86_64-*-*) AC_TRY_COMPILE(, [asm("rdrand %eax");], [ac_cv_x86_rdrand=yes], [ac_cv_x86_rdrand=no]) esac ]) if test $ac_cv_x86_rdrand = yes; then AC_DEFINE(_GLIBCXX_X86_RDRAND, 1, [ Defined if as can handle rdrand. ]) fi ]) dnl dnl Check whether rdseed is supported in the assembler. AC_DEFUN([GLIBCXX_CHECK_X86_RDSEED], [ AC_CACHE_CHECK([for rdseed support in assembler], ac_cv_x86_rdseed, [ ac_cv_x86_rdseed=no case "$target" in i?86-*-* | \ x86_64-*-*) AC_TRY_COMPILE(, [asm("rdseed %eax");], [ac_cv_x86_rdseed=yes], [ac_cv_x86_rdseed=no]) esac ]) if test $ac_cv_x86_rdseed = yes; then AC_DEFINE(_GLIBCXX_X86_RDSEED, 1, [ Defined if as can handle rdseed. ]) fi ]) dnl dnl Check whether get_nprocs is available in <sys/sysinfo.h>, and define _GLIBCXX_USE_GET_NPROCS. dnl AC_DEFUN([GLIBCXX_CHECK_GET_NPROCS], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_CACHE_CHECK([for get_nprocs], glibcxx_cv_GET_NPROCS, [ GCC_TRY_COMPILE_OR_LINK( [#include <sys/sysinfo.h>], [int n = get_nprocs();], [glibcxx_cv_GET_NPROCS=yes], [glibcxx_cv_GET_NPROCS=no]) ]) if test $glibcxx_cv_GET_NPROCS = yes; then AC_DEFINE(_GLIBCXX_USE_GET_NPROCS, 1, [Define if get_nprocs is available in <sys/sysinfo.h>.]) fi CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether sysconf(_SC_NPROCESSORS_ONLN) is available in <unistd.h>, and define _GLIBCXX_USE_SC_NPROCESSORS_ONLN. dnl AC_DEFUN([GLIBCXX_CHECK_SC_NPROCESSORS_ONLN], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_CACHE_CHECK([for _SC_NPROCESSORS_ONLN], glibcxx_cv_SC_NPROCESSORS_ONLN, [ GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [int n = sysconf(_SC_NPROCESSORS_ONLN);], [glibcxx_cv_SC_NPROCESSORS_ONLN=yes], [glibcxx_cv_SC_NPROCESSORS_ONLN=no]) ]) if test $glibcxx_cv_SC_NPROCESSORS_ONLN = yes; then AC_DEFINE(_GLIBCXX_USE_SC_NPROCESSORS_ONLN, 1, [Define if _SC_NPROCESSORS_ONLN is available in <unistd.h>.]) fi CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether sysconf(_SC_NPROC_ONLN) is available in <unistd.h>, and define _GLIBCXX_USE_SC_NPROC_ONLN. dnl AC_DEFUN([GLIBCXX_CHECK_SC_NPROC_ONLN], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_CACHE_CHECK([for _SC_NPROC_ONLN], glibcxx_cv_SC_NPROC_ONLN, [ GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [int n = sysconf(_SC_NPROC_ONLN);], [glibcxx_cv_SC_NPROC_ONLN=yes], [glibcxx_cv_SC_NPROC_ONLN=no]) ]) if test $glibcxx_cv_SC_NPROC_ONLN = yes; then AC_DEFINE(_GLIBCXX_USE_SC_NPROC_ONLN, 1, [Define if _SC_NPROC_ONLN is available in <unistd.h>.]) fi CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether pthread_num_processors_np is available in <pthread.h>, and define _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP. dnl AC_DEFUN([GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_CACHE_CHECK([for pthreads_num_processors_np], glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP, [ GCC_TRY_COMPILE_OR_LINK( [#include <pthread.h>], [int n = pthread_num_processors_np();], [glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP=yes], [glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP=no]) ]) if test $glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP = yes; then AC_DEFINE(_GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP, 1, [Define if pthreads_num_processors_np is available in <pthread.h>.]) fi CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether pthread_cond_clockwait is available in <pthread.h> for std::condition_variable to use, dnl and define _GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT. dnl AC_DEFUN([GLIBCXX_CHECK_PTHREAD_COND_CLOCKWAIT], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" ac_save_LIBS="$LIBS" LIBS="$LIBS -lpthread" AC_CACHE_CHECK([for pthread_cond_clockwait], glibcxx_cv_PTHREAD_COND_CLOCKWAIT, [ GCC_TRY_COMPILE_OR_LINK( [#include <pthread.h>], [pthread_mutex_t mutex; pthread_cond_t cond; struct timespec ts; int n = pthread_cond_clockwait(&cond, &mutex, 0, &ts);], [glibcxx_cv_PTHREAD_COND_CLOCKWAIT=yes], [glibcxx_cv_PTHREAD_COND_CLOCKWAIT=no]) ]) if test $glibcxx_cv_PTHREAD_COND_CLOCKWAIT = yes; then AC_DEFINE(_GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT, 1, [Define if pthread_cond_clockwait is available in <pthread.h>.]) fi CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" AC_LANG_RESTORE ]) dnl dnl Check whether pthread_mutex_clocklock is available in <pthread.h> for std::timed_mutex to use, dnl and define _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK. dnl AC_DEFUN([GLIBCXX_CHECK_PTHREAD_MUTEX_CLOCKLOCK], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" ac_save_LIBS="$LIBS" LIBS="$LIBS -lpthread" AC_CACHE_CHECK([for pthread_mutex_clocklock], glibcxx_cv_PTHREAD_MUTEX_CLOCKLOCK, [ GCC_TRY_COMPILE_OR_LINK( [#include <pthread.h>], [pthread_mutex_t mutex; struct timespec ts; int n = pthread_mutex_clocklock(&mutex, CLOCK_REALTIME, &ts);], [glibcxx_cv_PTHREAD_MUTEX_CLOCKLOCK=yes], [glibcxx_cv_PTHREAD_MUTEX_CLOCKLOCK=no]) ]) if test $glibcxx_cv_PTHREAD_MUTEX_CLOCKLOCK = yes; then AC_DEFINE(_GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK, (_GLIBCXX_TSAN==0), [Define if pthread_mutex_clocklock is available in <pthread.h>.]) fi CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" AC_LANG_RESTORE ]) dnl dnl Check whether pthread_mutex_clocklock is available in <pthread.h> for std::timed_mutex to use, dnl and define _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK. dnl AC_DEFUN([GLIBCXX_CHECK_PTHREAD_RWLOCK_CLOCKLOCK], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" ac_save_LIBS="$LIBS" LIBS="$LIBS -lpthread" AC_CACHE_CHECK([for pthread_rwlock_clockrdlock, pthread_wlock_clockwrlock], glibcxx_cv_PTHREAD_RWLOCK_CLOCKLOCK, [ GCC_TRY_COMPILE_OR_LINK( [#include <pthread.h>], [pthread_rwlock_t rwl; struct timespec ts;] [int n = pthread_rwlock_clockrdlock(&rwl, CLOCK_REALTIME, &ts);] [int m = pthread_rwlock_clockwrlock(&rwl, CLOCK_REALTIME, &ts);], [glibcxx_cv_PTHREAD_RWLOCK_CLOCKLOCK=yes], [glibcxx_cv_PTHREAD_RWLOCK_CLOCKLOCK=no]) ]) if test $glibcxx_cv_PTHREAD_RWLOCK_CLOCKLOCK = yes; then AC_DEFINE(_GLIBCXX_USE_PTHREAD_RWLOCK_CLOCKLOCK, 1, [Define if pthread_rwlock_clockrdlock and pthread_rwlock_clockwrlock are available in <pthread.h>.]) fi CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" AC_LANG_RESTORE ]) dnl dnl Check whether sysctl is available in <pthread.h>, and define _GLIBCXX_USE_SYSCTL_HW_NCPU. dnl AC_DEFUN([GLIBCXX_CHECK_SYSCTL_HW_NCPU], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_CACHE_CHECK([for hw.ncpu sysctl], glibcxx_cv_SYSCTL_HW_NCPU, [ GCC_TRY_COMPILE_OR_LINK( [ #include <stddef.h> #include <sys/sysctl.h> ], [ int count; size_t size = sizeof(count); int mib[] = { CTL_HW, HW_NCPU }; sysctl(mib, 2, &count, &size, NULL, 0); ], [glibcxx_cv_SYSCTL_HW_NCPU=yes], [glibcxx_cv_SYSCTL_HW_NCPU=no]) ]) if test $glibcxx_cv_SYSCTL_HW_NCPU = yes; then AC_DEFINE(_GLIBCXX_USE_SYSCTL_HW_NCPU, 1, [Define if sysctl(), CTL_HW and HW_NCPU are available in <sys/sysctl.h>.]) fi CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check to see if python pretty printing can be activated. dnl dnl --with-python-dir=dir dnl installs directory into $prefix/dir AC_DEFUN([GLIBCXX_ENABLE_PYTHON], [ AC_MSG_CHECKING([for custom python install directory]) AC_ARG_WITH([python-dir], AS_HELP_STRING([--with-python-dir], [the location to install Python modules. This path is relative starting from the prefix.]), [with_python_dir=$withval], [with_python_dir="no"]) AC_MSG_RESULT(${with_python_dir}) # Needed for installing Python modules during make install. python_mod_dir="${with_python_dir}" AC_SUBST(python_mod_dir) GLIBCXX_CONDITIONAL(ENABLE_PYTHONDIR, test $python_mod_dir != no) ]) dnl dnl Check to see if -Werror is disabled. dnl dnl --enable-werror/--disable-werror AC_DEFUN([GLIBCXX_ENABLE_WERROR], [ AC_MSG_CHECKING([for -Werror]) GLIBCXX_ENABLE(werror,$1,,[turns on -Werror]) AC_MSG_RESULT($enable_werror) GLIBCXX_CONDITIONAL(ENABLE_WERROR, test $enable_werror = yes) ]) dnl dnl Check whether obsolescent tmpnam is available in <stdio.h>, 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_CACHE_CHECK([for tmpnam], glibcxx_cv_TMPNAM, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <stdio.h>], [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 <stdio.h>.]) fi 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], [ # 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_CHECK([for suitable sys/sdt.h], 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 <sys/sdt.h> 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 <sys/sdt.h> header file]) fi ]) 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_symvers = xgnu-versioned-namespace; then # gnu-versioned-namespace is incompatible with the dual ABI. enable_libstdcxx_dual_abi="no" fi if test x"$enable_libstdcxx_dual_abi" != xyes; then AC_MSG_NOTICE([dual ABI is disabled]) default_libstdcxx_abi="gcc4-compatible" 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={gcc4-compatible,new} 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 gcc4-compatible) default_libstdcxx_abi="gcc4-compatible" ;; new|cxx11) default_libstdcxx_abi="new" ;; c++*|gnu++*) AC_MSG_ERROR([Supported arguments for --with-default-libstdcxx-abi have changed, use "new" or "gcc4-compatible"]) ;; *) AC_MSG_ERROR([Invalid argument for --with-default-libstdcxx-abi]) ;; esac ], [default_libstdcxx_abi="new"]) AC_MSG_RESULT(${default_libstdcxx_abi}) fi if test $default_libstdcxx_abi = "new"; 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) ]) dnl dnl Check to see whether to build libstdc++fs.a dnl dnl --enable-libstdcxx-filesystem-ts dnl AC_DEFUN([GLIBCXX_ENABLE_FILESYSTEM_TS], [ GLIBCXX_ENABLE(libstdcxx-filesystem-ts,auto,, [turns on ISO/IEC TS 18822 support], [permit yes|no|auto]) AC_MSG_CHECKING([whether to build Filesystem TS support]) if test x"$ac_cv_header_dirent_h" != x"yes"; then enable_libstdcxx_filesystem_ts=no fi if test x"$enable_libstdcxx_filesystem_ts" = x"auto"; then case "${target_os}" in freebsd*|netbsd*|openbsd*|dragonfly*|darwin*) enable_libstdcxx_filesystem_ts=yes ;; gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*) enable_libstdcxx_filesystem_ts=yes ;; rtems*) enable_libstdcxx_filesystem_ts=yes ;; solaris*) enable_libstdcxx_filesystem_ts=yes ;; mingw*) enable_libstdcxx_filesystem_ts=yes ;; *) enable_libstdcxx_filesystem_ts=no ;; esac fi AC_MSG_RESULT($enable_libstdcxx_filesystem_ts) GLIBCXX_CONDITIONAL(ENABLE_FILESYSTEM_TS, test $enable_libstdcxx_filesystem_ts = yes) ]) dnl dnl Check whether the library calls required by the C++17 Filesystem library dnl and the Filesystem TS are present. dnl Defines: dnl HAVE_STRUCT_DIRENT_D_TYPE dnl _GLIBCXX_USE_REALPATH dnl _GLIBCXX_USE_UTIMENSAT dnl _GLIBCXX_USE_ST_MTIM dnl _GLIBCXX_USE_FCHMOD dnl _GLIBCXX_USE_FCHMODAT dnl _GLIBCXX_USE_COPY_FILE_RANGE dnl _GLIBCXX_USE_SENDFILE dnl HAVE_LINK dnl HAVE_LSEEK dnl HAVE_READLINK dnl HAVE_SYMLINK dnl AC_DEFUN([GLIBCXX_CHECK_FILESYSTEM_DEPS], [dnl dnl AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" dnl AC_CACHE_CHECK([for struct dirent.d_type], glibcxx_cv_dirent_d_type, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <dirent.h>], [ struct dirent d; if (sizeof d.d_type) return 0; ], [glibcxx_cv_dirent_d_type=yes], [glibcxx_cv_dirent_d_type=no]) ]) if test $glibcxx_cv_dirent_d_type = yes; then AC_DEFINE(HAVE_STRUCT_DIRENT_D_TYPE, 1, [Define to 1 if `d_type' is a member of `struct dirent'.]) fi dnl AC_CACHE_CHECK([for chmod], glibcxx_cv_chmod, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <sys/stat.h> ], [ int i = chmod("", S_IRUSR); ], [glibcxx_cv_chmod=yes], [glibcxx_cv_chmod=no]) ]) if test $glibcxx_cv_chmod = yes; then AC_DEFINE(_GLIBCXX_USE_CHMOD, 1, [Define if usable chmod is available in <sys/stat.h>.]) fi dnl AC_CACHE_CHECK([for mkdir], glibcxx_cv_mkdir, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <sys/stat.h> ], [ int i = mkdir("", S_IRUSR); ], [glibcxx_cv_mkdir=yes], [glibcxx_cv_mkdir=no]) ]) if test $glibcxx_cv_mkdir = yes; then AC_DEFINE(_GLIBCXX_USE_MKDIR, 1, [Define if usable mkdir is available in <sys/stat.h>.]) fi dnl AC_CACHE_CHECK([for chdir], glibcxx_cv_chdir, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <unistd.h> ], [ int i = chdir(""); ], [glibcxx_cv_chdir=yes], [glibcxx_cv_chdir=no]) ]) if test $glibcxx_cv_chdir = yes; then AC_DEFINE(_GLIBCXX_USE_CHDIR, 1, [Define if usable chdir is available in <unistd.h>.]) fi dnl AC_CACHE_CHECK([for getcwd], glibcxx_cv_getcwd, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <unistd.h> ], [ char* s = getcwd((char*)0, 1); ], [glibcxx_cv_getcwd=yes], [glibcxx_cv_getcwd=no]) ]) if test $glibcxx_cv_getcwd = yes; then AC_DEFINE(_GLIBCXX_USE_GETCWD, 1, [Define if usable getcwd is available in <unistd.h>.]) fi dnl AC_CACHE_CHECK([for realpath], glibcxx_cv_realpath, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <limits.h> #include <stdlib.h> #include <unistd.h> ], [ #if _XOPEN_VERSION < 500 #error #elif _XOPEN_VERSION >= 700 || defined(PATH_MAX) char *tmp = realpath((const char*)NULL, (char*)NULL); #else #error #endif ], [glibcxx_cv_realpath=yes], [glibcxx_cv_realpath=no]) ]) if test $glibcxx_cv_realpath = yes; then AC_DEFINE(_GLIBCXX_USE_REALPATH, 1, [Define if usable realpath is available in <stdlib.h>.]) fi dnl AC_CACHE_CHECK([for utimensat], glibcxx_cv_utimensat, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <fcntl.h> #include <sys/stat.h> ], [ struct timespec ts[2] = { { 0, UTIME_OMIT }, { 1, 1 } }; int i = utimensat(AT_FDCWD, "path", ts, 0); ], [glibcxx_cv_utimensat=yes], [glibcxx_cv_utimensat=no]) ]) if test $glibcxx_cv_utimensat = yes; then AC_DEFINE(_GLIBCXX_USE_UTIMENSAT, 1, [Define if utimensat and UTIME_OMIT are available in <sys/stat.h> and AT_FDCWD in <fcntl.h>.]) fi dnl AC_CACHE_CHECK([for utime], glibcxx_cv_utime, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <utime.h> ], [ struct utimbuf t = { 1, 1 }; int i = utime("path", &t); ], [glibcxx_cv_utime=yes], [glibcxx_cv_utime=no]) ]) if test $glibcxx_cv_utime = yes; then AC_DEFINE(_GLIBCXX_USE_UTIME, 1, [Define if utime is available in <utime.h>.]) fi dnl AC_CACHE_CHECK([for lstat], glibcxx_cv_lstat, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <sys/stat.h> ], [ struct stat st; int i = lstat("path", &st); ], [glibcxx_cv_lstat=yes], [glibcxx_cv_lstat=no]) ]) if test $glibcxx_cv_lstat = yes; then AC_DEFINE(_GLIBCXX_USE_LSTAT, 1, [Define if lstat is available in <sys/stat.h>.]) fi dnl AC_CACHE_CHECK([for struct stat.st_mtim.tv_nsec], glibcxx_cv_st_mtim, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <sys/stat.h> ], [ struct stat st; return st.st_mtim.tv_nsec; ], [glibcxx_cv_st_mtim=yes], [glibcxx_cv_st_mtim=no]) ]) if test $glibcxx_cv_st_mtim = yes; then AC_DEFINE(_GLIBCXX_USE_ST_MTIM, 1, [Define if struct stat has timespec members.]) fi dnl AC_CACHE_CHECK([for fchmod], glibcxx_cv_fchmod, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <sys/stat.h>], [fchmod(1, S_IWUSR);], [glibcxx_cv_fchmod=yes], [glibcxx_cv_fchmod=no]) ]) if test $glibcxx_cv_fchmod = yes; then AC_DEFINE(_GLIBCXX_USE_FCHMOD, 1, [Define if fchmod is available in <sys/stat.h>.]) fi dnl AC_CACHE_CHECK([for fchmodat], glibcxx_cv_fchmodat, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <fcntl.h> #include <sys/stat.h> ], [fchmodat(AT_FDCWD, "", 0, AT_SYMLINK_NOFOLLOW);], [glibcxx_cv_fchmodat=yes], [glibcxx_cv_fchmodat=no]) ]) if test $glibcxx_cv_fchmodat = yes; then AC_DEFINE(_GLIBCXX_USE_FCHMODAT, 1, [Define if fchmodat is available in <sys/stat.h>.]) fi dnl AC_CACHE_CHECK([for link], glibcxx_cv_link, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [link("", "");], [glibcxx_cv_link=yes], [glibcxx_cv_link=no]) ]) if test $glibcxx_cv_link = yes; then AC_DEFINE(HAVE_LINK, 1, [Define if link is available in <unistd.h>.]) fi dnl AC_CACHE_CHECK([for lseek], glibcxx_cv_lseek, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [lseek(1, 0, SEEK_SET);], [glibcxx_cv_lseek=yes], [glibcxx_cv_lseek=no]) ]) if test $glibcxx_cv_lseek = yes; then AC_DEFINE(HAVE_LSEEK, 1, [Define if lseek is available in <unistd.h>.]) fi dnl AC_CACHE_CHECK([for readlink], glibcxx_cv_readlink, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [char buf[32]; readlink("", buf, sizeof(buf));], [glibcxx_cv_readlink=yes], [glibcxx_cv_readlink=no]) ]) if test $glibcxx_cv_readlink = yes; then AC_DEFINE(HAVE_READLINK, 1, [Define if readlink is available in <unistd.h>.]) fi dnl AC_CACHE_CHECK([for symlink], glibcxx_cv_symlink, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [symlink("", "");], [glibcxx_cv_symlink=yes], [glibcxx_cv_symlink=no]) ]) if test $glibcxx_cv_symlink = yes; then AC_DEFINE(HAVE_SYMLINK, 1, [Define if symlink is available in <unistd.h>.]) fi dnl AC_CACHE_CHECK([for truncate], glibcxx_cv_truncate, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [truncate("", 99);], [glibcxx_cv_truncate=yes], [glibcxx_cv_truncate=no]) ]) if test $glibcxx_cv_truncate = yes; then AC_DEFINE(HAVE_TRUNCATE, 1, [Define if truncate is available in <unistd.h>.]) fi dnl AC_CACHE_CHECK([for copy_file_range that can copy files], glibcxx_cv_copy_file_range, [dnl case "${target_os}" in linux*) GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [copy_file_range(1, (loff_t*)nullptr, 2, (loff_t*)nullptr, 1, 0);], [glibcxx_cv_copy_file_range=yes], [glibcxx_cv_copy_file_range=no]) ;; *) glibcxx_cv_copy_file_range=no ;; esac ]) if test $glibcxx_cv_copy_file_range = yes; then AC_DEFINE(_GLIBCXX_USE_COPY_FILE_RANGE, 1, [Define if copy_file_range is available in <unistd.h>.]) fi dnl AC_CACHE_CHECK([for sendfile that can copy files], glibcxx_cv_sendfile, [dnl case "${target_os}" in gnu* | linux* | solaris* | uclinux*) GCC_TRY_COMPILE_OR_LINK( [#include <sys/sendfile.h>], [sendfile(1, 2, (off_t*)0, sizeof 1);], [glibcxx_cv_sendfile=yes], [glibcxx_cv_sendfile=no]) ;; *) glibcxx_cv_sendfile=no ;; esac ]) if test $glibcxx_cv_sendfile = yes && test $glibcxx_cv_lseek = yes; then AC_DEFINE(_GLIBCXX_USE_SENDFILE, 1, [Define if sendfile is available in <sys/sendfile.h>.]) fi dnl AC_CACHE_CHECK([for fdopendir], glibcxx_cv_fdopendir, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <dirent.h>], [::DIR* dir = ::fdopendir(1);], [glibcxx_cv_fdopendir=yes], [glibcxx_cv_fdopendir=no]) ]) if test $glibcxx_cv_fdopendir = yes; then AC_DEFINE(HAVE_FDOPENDIR, 1, [Define if fdopendir is available in <dirent.h>.]) fi dnl AC_CACHE_CHECK([for dirfd], glibcxx_cv_dirfd, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <dirent.h>], [int fd = ::dirfd((::DIR*)0);], [glibcxx_cv_dirfd=yes], [glibcxx_cv_dirfd=no]) ]) if test $glibcxx_cv_dirfd = yes; then AC_DEFINE(HAVE_DIRFD, 1, [Define if dirfd is available in <dirent.h>.]) fi dnl AC_CACHE_CHECK([for openat], glibcxx_cv_openat, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <fcntl.h>], [int fd = ::openat(AT_FDCWD, "", 0);], [glibcxx_cv_openat=yes], [glibcxx_cv_openat=no]) ]) if test $glibcxx_cv_openat = yes; then AC_DEFINE(HAVE_OPENAT, 1, [Define if openat is available in <fcntl.h>.]) fi dnl AC_CACHE_CHECK([for unlinkat], glibcxx_cv_unlinkat, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <fcntl.h> #include <unistd.h>], [::unlinkat(AT_FDCWD, "", AT_REMOVEDIR);], [glibcxx_cv_unlinkat=yes], [glibcxx_cv_unlinkat=no]) ]) if test $glibcxx_cv_unlinkat = yes; then AC_DEFINE(HAVE_UNLINKAT, 1, [Define if unlinkat is available in <fcntl.h>.]) fi dnl CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check how size_t is mangled. Copied from libitm. dnl AC_DEFUN([GLIBCXX_CHECK_SIZE_T_MANGLING], [ AC_CACHE_CHECK([how size_t is mangled], glibcxx_cv_size_t_mangling, [ AC_TRY_COMPILE([], [extern __SIZE_TYPE__ x; extern unsigned long x;], [glibcxx_cv_size_t_mangling=m], [ AC_TRY_COMPILE([], [extern __SIZE_TYPE__ x; extern unsigned int x;], [glibcxx_cv_size_t_mangling=j], [ AC_TRY_COMPILE([], [extern __SIZE_TYPE__ x; extern unsigned long long x;], [glibcxx_cv_size_t_mangling=y], [ AC_TRY_COMPILE([], [extern __SIZE_TYPE__ x; extern unsigned short x;], [glibcxx_cv_size_t_mangling=t], [ AC_TRY_COMPILE([], [extern __SIZE_TYPE__ x; extern __int20 unsigned x;], [glibcxx_cv_size_t_mangling=u6uint20], [glibcxx_cv_size_t_mangling=x]) ]) ]) ]) ]) ]) if test $glibcxx_cv_size_t_mangling = x; then AC_MSG_ERROR([Unknown underlying type for size_t]) fi AC_DEFINE_UNQUOTED(_GLIBCXX_MANGLE_SIZE_T, [$glibcxx_cv_size_t_mangling], [Define to the letter to which size_t is mangled.]) ]) dnl dnl Determine whether std::exception_ptr symbols should be exported with dnl the symbol versions from GCC 4.6.0 or GCC 7.1.0, depending on which dnl release first added support for std::exception_ptr. Originally it was dnl only supported for targets with always-lock-free atomics for int, but dnl since GCC 7.1 it is supported for all targets. dnl AC_DEFUN([GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER], [ if test $enable_symvers != no; then AC_MSG_CHECKING([for first version to support std::exception_ptr]) case ${target} in aarch64-*-* | alpha-*-* | hppa*-*-* | i?86-*-* | x86_64-*-* | \ m68k-*-* | powerpc*-*-* | s390*-*-* | *-*-solaris* ) ac_exception_ptr_since_gcc46=yes ;; *) # If the value of this macro changes then we will need to hardcode # yes/no here for additional targets based on the original value. AC_TRY_COMPILE([], [ #if __GCC_ATOMIC_INT_LOCK_FREE <= 1 # error atomic int not always lock free #endif ], [ac_exception_ptr_since_gcc46=yes], [ac_exception_ptr_since_gcc46=no]) ;; esac if test x"$ac_exception_ptr_since_gcc46" = x"yes" ; then AC_DEFINE(HAVE_EXCEPTION_PTR_SINCE_GCC46, 1, [Define to 1 if GCC 4.6 supported std::exception_ptr for the target]) AC_MSG_RESULT([4.6.0]) else AC_MSG_RESULT([7.1.0]) fi fi ]) dnl dnl Check whether getentropy is present in <unistd.h>. dnl AC_DEFUN([GLIBCXX_CHECK_GETENTROPY], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_CACHE_CHECK([for getentropy], glibcxx_cv_getentropy, [ GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [unsigned i; ::getentropy(&i, sizeof(i));], [glibcxx_cv_getentropy=yes], [glibcxx_cv_getentropy=no]) ]) if test $glibcxx_cv_getentropy = yes; then AC_DEFINE(HAVE_GETENTROPY, 1, [Define if getentropy is available in <unistd.h>.]) fi AC_LANG_RESTORE ]) dnl dnl Check whether arc4random is present in <stdlib.h>. dnl AC_DEFUN([GLIBCXX_CHECK_ARC4RANDOM], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_CACHE_CHECK([for arc4random], glibcxx_cv_arc4random, [ GCC_TRY_COMPILE_OR_LINK( [#include <stdlib.h>], [unsigned i = ::arc4random();], [glibcxx_cv_arc4random=yes], [glibcxx_cv_arc4random=no]) ]) if test $glibcxx_cv_arc4random = yes; then AC_DEFINE(HAVE_ARC4RANDOM, 1, [Define if arc4random is available in <stdlib.h>.]) fi AC_LANG_RESTORE ]) dnl dnl Check to see whether to build libstdc++_libbacktrace.a dnl dnl --enable-libstdcxx-backtrace dnl AC_DEFUN([GLIBCXX_ENABLE_BACKTRACE], [ GLIBCXX_ENABLE(libstdcxx-backtrace,auto,, [turns on libbacktrace support], [permit yes|no|auto]) # Most of this is adapted from libsanitizer/configure.ac BACKTRACE_CPPFLAGS="-D_GNU_SOURCE" # libbacktrace only needs atomics for int, which we've already tested if test "$glibcxx_cv_atomic_int" = "yes"; then BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DHAVE_ATOMIC_FUNCTIONS=1" fi # Test for __sync support. AC_CACHE_CHECK([__sync extensions], [glibcxx_cv_sys_sync], [GCC_TRY_COMPILE_OR_LINK( [int i;], [__sync_bool_compare_and_swap (&i, i, i); __sync_lock_test_and_set (&i, 1); __sync_lock_release (&i);], [glibcxx_cv_sys_sync=yes], [glibcxx_cv_sys_sync=no]) ]) if test "$glibcxx_cv_sys_sync" = "yes"; then BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DHAVE_SYNC_FUNCTIONS=1" fi # Check for dl_iterate_phdr. AC_CHECK_HEADERS(link.h) if test "$ac_cv_header_link_h" = "no"; then have_dl_iterate_phdr=no else # When built as a GCC target library, we can't do a link test. ac_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" AC_EGREP_HEADER([dl_iterate_phdr], [link.h], [have_dl_iterate_phdr=yes], [have_dl_iterate_phdr=no]) CPPFLAGS="$ac_save_CPPFLAGS" fi if test "$have_dl_iterate_phdr" = "yes"; then BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DHAVE_DL_ITERATE_PHDR=1" fi AC_CHECK_HEADERS(windows.h) # Check for the fcntl function. if test -n "${with_target_subdir}"; then case "${host}" in *-*-mingw*) have_fcntl=no ;; *) have_fcntl=yes ;; esac else AC_CHECK_FUNC(fcntl, [have_fcntl=yes], [have_fcntl=no]) fi if test "$have_fcntl" = "yes"; then BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DHAVE_FCNTL=1" fi AC_CHECK_DECLS(strnlen) # Check for getexecname function. if test -n "${with_target_subdir}"; then case "${host}" in *-*-solaris2*) have_getexecname=yes ;; *) have_getexecname=no ;; esac else AC_CHECK_FUNC(getexecname, [have_getexecname=yes], [have_getexecname=no]) fi if test "$have_getexecname" = "yes"; then BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DHAVE_GETEXECNAME=1" fi # The library needs to be able to read the executable itself. Compile # a file to determine the executable format. The awk script # filetype.awk prints out the file type. AC_CACHE_CHECK([output filetype], [glibcxx_cv_sys_filetype], [filetype= AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([int i;], [int j;])], [filetype=`${AWK} -f $srcdir/../libbacktrace/filetype.awk conftest.$ac_objext`], [AC_MSG_FAILURE([compiler failed])]) glibcxx_cv_sys_filetype=$filetype]) # Match the file type to decide what files to compile. FORMAT_FILE= case "$glibcxx_cv_sys_filetype" in elf*) FORMAT_FILE="elf.lo" ;; pecoff*) FORMAT_FILE="pecoff.lo" ;; *) AC_MSG_WARN([could not determine output file type]) FORMAT_FILE="unknown.lo" enable_libstdcxx_backtrace=no ;; esac AC_SUBST(FORMAT_FILE) # ELF defines. elfsize= case "$glibcxx_cv_sys_filetype" in elf32) elfsize=32 ;; elf64) elfsize=64 ;; esac BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DBACKTRACE_ELF_SIZE=$elfsize" AC_MSG_CHECKING([whether to build libbacktrace support]) if test "$enable_libstdcxx_backtrace" = "auto"; then case "$host" in avr-*-*) enable_libstdcxx_backtrace=no ;; *) enable_libstdcxx_backtrace="$is_hosted" ;; esac fi AC_MSG_RESULT($enable_libstdcxx_backtrace) if test "$enable_libstdcxx_backtrace" = "yes"; then BACKTRACE_SUPPORTED=1 AC_CHECK_HEADERS(sys/mman.h) case "${host}" in *-*-msdosdjgpp) # DJGPP has sys/man.h, but no mmap have_mmap=no ;; *-*-*) have_mmap="$ac_cv_header_sys_mman_h" ;; esac if test "$have_mmap" = "no"; then VIEW_FILE=read.lo ALLOC_FILE=alloc.lo else VIEW_FILE=mmapio.lo AC_PREPROC_IFELSE([AC_LANG_SOURCE([ #include <sys/mman.h> #if !defined(MAP_ANONYMOUS) && !defined(MAP_ANON) #error no MAP_ANONYMOUS #endif ])], [ALLOC_FILE=mmap.lo], [ALLOC_FILE=alloc.lo]) fi AC_SUBST(VIEW_FILE) AC_SUBST(ALLOC_FILE) BACKTRACE_USES_MALLOC=0 if test "$ALLOC_FILE" = "alloc.lo"; then BACKTRACE_USES_MALLOC=1 fi if test "$ac_has_gthreads" = "yes"; then BACKTRACE_SUPPORTS_THREADS=1 else BACKTRACE_SUPPORTS_THREADS=0 fi AC_SUBST(BACKTRACE_CPPFLAGS) AC_SUBST(BACKTRACE_SUPPORTED) AC_SUBST(BACKTRACE_USES_MALLOC) AC_SUBST(BACKTRACE_SUPPORTS_THREADS) AC_DEFINE(HAVE_STACKTRACE, 1, [Define if the <stacktrace> header is supported.]) else BACKTRACE_SUPPORTED=0 BACKTRACE_USES_MALLOC=0 BACKTRACE_SUPPORTS_THREADS=0 fi GLIBCXX_CONDITIONAL(ENABLE_BACKTRACE, [test "$enable_libstdcxx_backtrace" = yes]) ]) dnl dnl Allow the emergency EH pool to be configured. dnl dnl --enable-libstdcxx-static-eh-pool will cause a fixed-size static buffer dnl to be used for allocating exceptions after malloc fails. The default is dnl to allocate a buffer using malloc dnl dnl --with-libstdcxx-eh-pool-obj-count=N will set the default size for the dnl buffer. For a static buffer that size is fixed permanently. For a dynamic dnl buffer it's the default, but it can be overridden from the environment. dnl dnl To set the default to approximately the same values as GCC 12, dnl use --with-libstdcxx-eh-pool-obj-count=94 for 32-bit targets, dnl and --with-libstdcxx-eh-pool-obj-count=252 for 64-bit targets. dnl dnl Defines: dnl _GLIBCXX_EH_POOL_STATIC if a fixed-size static buffer should be used dnl instead of allocating a buffer on startup. dnl _GLIBCXX_EH_POOL_NOBJS to override the default EMERGENCY_OBJ_COUNT value. dnl AC_DEFUN([GLIBCXX_EMERGENCY_EH_ALLOC], [ eh_pool_static= eh_pool_nobjs= AC_ARG_ENABLE([libstdcxx-static-eh-pool], AC_HELP_STRING([--enable-libstdcxx-static-eh-pool], [use a fixed-size static buffer for allocating exceptions if malloc fails]), [if test "${enableval}" = yes; then eh_pool_static="-D_GLIBCXX_EH_POOL_STATIC" AC_MSG_NOTICE([EH pool using static buffer]) fi],) AC_ARG_WITH([libstdcxx-eh-pool-obj-count], AC_HELP_STRING([--with-libstdcxx-eh-pool-obj-count], [the number of exceptions that can be allocated from the pool if malloc fails]), [if test "${withval}" -ge 0 2>/dev/null; then eh_pool_obj_count="-D_GLIBCXX_EH_POOL_NOBJS=${withval}" AC_MSG_NOTICE([EH pool object count: ${withval}]) else AC_MSG_ERROR([EH pool obj count must be a non-negative integer: $withval]) fi],) EH_POOL_FLAGS="$eh_pool_static $eh_pool_obj_count" AC_SUBST(EH_POOL_FLAGS) ]) dnl dnl Allow the location of tzdata files to be configured. dnl dnl --with-libstdcxx-zoneinfo=ARG where ARG can be: dnl DIR - use DIR/tzdata.zi and DIR/leapseconds files. dnl static - use static copy of tzdata.zi embedded in the library. dnl DIR,static - use DIR, but use embedded static copy as fallback. dnl yes - equivalent to DIR,static with a system-specific value for DIR. dnl no - disable most tzdb functionality. dnl dnl Defines: dnl _GLIBCXX_ZONEINFO_DIR if std::chrono::tzdb should use the specified dnl directory for the tzdata.zi and leapseconds files. dnl _GLIBCXX_STATIC_TZDATA if std::chrono::tzdb should use an embedded dnl static copy of the tzdata.zi file. dnl AC_DEFUN([GLIBCXX_ZONEINFO_DIR], [ AC_ARG_WITH([libstdcxx-zoneinfo], AC_HELP_STRING([--with-libstdcxx-zoneinfo], [the location to use for tzdata]), [],[with_libstdcxx_zoneinfo=yes]) if test "x${with_libstdcxx_zoneinfo}" = xyes; then # Pick a default when no specific path is set. case "$target_os" in gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu) # Not all distros ship tzdata.zi in this dir. zoneinfo_dir="/usr/share/zoneinfo" ;; aix*) # Binary tzfile files are in /usr/share/lib/zoneinfo # but tzdata.zi is not present there. zoneinfo_dir=none ;; darwin2*) # Binary tzfile files are in /usr/share/lib/zoneinfo.default # but tzdata.zi is not present there. zoneinfo_dir=none ;; *) # Binary tzfile files are commonly found in /usr/share/zoneinfo # but tzdata.zi is not present there. zoneinfo_dir=none ;; esac AC_COMPUTE_INT(glibcxx_cv_at_least_32bit, [__INTPTR_WIDTH__ >= 32]) if test "$glibcxx_cv_at_least_32bit" -ne 0; then # Also embed a copy of the tzdata.zi file as a static string. embed_zoneinfo=yes else # The embedded data is too large for 16-bit targets. embed_zoneinfo=no fi elif test "x${with_libstdcxx_zoneinfo}" = xno; then # Disable tzdb support completely. zoneinfo_dir=none embed_zoneinfo=no else case "${with_libstdcxx_zoneinfo}" in static) # Do not attempt to read from disk, always use embedded data. zoneinfo_dir=none embed_zoneinfo=yes ;; static,* | *,static) # Try to read from disk, use embedded data as fallback. zoneinfo_dir="${with_libstdcxx_zoneinfo#static,}" zoneinfo_dir="${with_libstdcxx_zoneinfo%,static}" embed_zoneinfo=yes ;; *) zoneinfo_dir="${with_libstdcxx_zoneinfo}" embed_zoneinfo=no ;; esac fi AC_MSG_NOTICE([zoneinfo data directory: ${zoneinfo_dir}]) if test "x${zoneinfo_dir}" != xnone; then AC_DEFINE_UNQUOTED(_GLIBCXX_ZONEINFO_DIR, "${zoneinfo_dir}", [Define if a directory should be searched for tzdata files.]) if $GLIBCXX_IS_NATIVE && ! test -f "$zoneinfo_dir/tzdata.zi"; then AC_MSG_WARN("$zoneinfo_dir does not contain tzdata.zi file") fi fi GLIBCXX_CONDITIONAL(USE_STATIC_TZDATA, test "${embed_zoneinfo}" = yes) if test "x${embed_zoneinfo}" = xyes; then AC_MSG_NOTICE([static tzdata.zi file will be compiled into the library]) AC_DEFINE_UNQUOTED(_GLIBCXX_STATIC_TZDATA, 1, [Define if static tzdata should be compiled into the library.]) fi ]) dnl dnl Check whether lock tables can be aligned to avoid false sharing. dnl dnl Defines: dnl _GLIBCXX_CAN_ALIGNAS_DESTRUCTIVE_SIZE if objects with static storage dnl duration can be aligned to std::hardware_destructive_interference_size. dnl AC_DEFUN([GLIBCXX_CHECK_ALIGNAS_CACHELINE], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_MSG_CHECKING([whether static objects can be aligned to the cacheline size]) AC_TRY_COMPILE(, [struct alignas(__GCC_DESTRUCTIVE_SIZE) Aligned { }; alignas(Aligned) static char buf[sizeof(Aligned) * 16]; ], [ac_alignas_cacheline=yes], [ac_alignas_cacheline=no]) if test "$ac_alignas_cacheline" = yes; then AC_DEFINE_UNQUOTED(_GLIBCXX_CAN_ALIGNAS_DESTRUCTIVE_SIZE, 1, [Define if global objects can be aligned to std::hardware_destructive_interference_size.]) fi AC_MSG_RESULT($ac_alignas_cacheline) AC_LANG_RESTORE ]) dnl dnl Check whether iostream initialization should be done in the library, dnl using the init_priority attribute. dnl dnl Defines: dnl _GLIBCXX_USE_INIT_PRIORITY_ATTRIBUTE if GCC supports the init_priority dnl attribute for the target. dnl AC_DEFUN([GLIBCXX_CHECK_INIT_PRIORITY], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_MSG_CHECKING([whether init_priority attribute is supported]) AC_TRY_COMPILE(, [ #if ! __has_attribute(init_priority) #error init_priority not supported #endif ], [ac_init_priority=yes], [ac_init_priority=no]) if test "$ac_init_priority" = yes; then AC_DEFINE_UNQUOTED(_GLIBCXX_USE_INIT_PRIORITY_ATTRIBUTE, 1, [Define if init_priority should be used for iostream initialization.]) fi AC_MSG_RESULT($ac_init_priority) AC_LANG_RESTORE ]) dnl dnl Check whether the Windows CRT function _get_osfhandle is available. dnl dnl Defines: dnl _GLIBCXX_USE__GET_OSFHANDLE if _get_osfhandle is in <io.h> for Windows. dnl AC_DEFUN([GLIBCXX_CHECK_FILEBUF_NATIVE_HANDLES], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_MSG_CHECKING([whether _get_osfhandle is defined in <io.h>]) AC_TRY_COMPILE([ #if defined(_WIN32) && !defined(__CYGWIN__) # include <stdint.h> # include <stdio.h> # include <io.h> #endif ],[ FILE* file = 0; int fd = fileno(file); intptr_t crt_handle = _get_osfhandle(fd); void* win32_handle = reinterpret_cast<void*>(crt_handle); ], [ac_get_osfhandle=yes], [ac_get_osfhandle=no]) if test "$ac_get_osfhandle" = yes; then AC_DEFINE_UNQUOTED(_GLIBCXX_USE__GET_OSFHANDLE, 1, [Define if _get_osfhandle should be used for filebuf::native_handle().]) fi AC_MSG_RESULT($ac_get_osfhandle) AC_LANG_RESTORE ]) dnl dnl Check whether the dependencies for std::text_encoding are available. dnl dnl Defines: dnl _GLIBCXX_USE_NL_LANGINFO_L if nl_langinfo_l is in <langinfo.h>. dnl AC_DEFUN([GLIBCXX_CHECK_TEXT_ENCODING], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_MSG_CHECKING([whether nl_langinfo_l is defined in <langinfo.h>]) AC_TRY_COMPILE([ #include <locale.h> #if __has_include(<xlocale.h>) # include <xlocale.h> #endif #include <langinfo.h> ],[ locale_t loc = newlocale(LC_ALL_MASK, "", (locale_t)0); const char* enc = nl_langinfo_l(CODESET, loc); freelocale(loc); ], [ac_nl_langinfo_l=yes], [ac_nl_langinfo_l=no]) AC_MSG_RESULT($ac_nl_langinfo_l) if test "$ac_nl_langinfo_l" = yes; then AC_DEFINE_UNQUOTED(_GLIBCXX_USE_NL_LANGINFO_L, 1, [Define if nl_langinfo_l should be used for std::text_encoding.]) fi AC_LANG_RESTORE ]) # Macros from the top-level gcc directory. m4_include([../config/gc++filt.m4]) m4_include([../config/tls.m4]) m4_include([../config/gthr.m4]) m4_include([../config/cet.m4]) @ 1.13 log @merge GCC 12.4.0. @ text @d52 1 a52 1 m4_define([glibcxx_SUBDIRS],[include libsupc++ src src/c++98 src/c++11 src/c++17 src/c++20 src/filesystem src/libbacktrace doc python]) d500 16 d607 1 a607 1 glibcxx_docbook_url=http://docbook.sourceforge.net/release/xsl-ns/current/ d697 1 d702 2 d1122 144 a1265 2 # Check for the existence of <math.h> functions used if C99 is enabled. AC_CACHE_CHECK([for ISO C99 support in <math.h> for C++11], d1288 1 a1288 1 [Define if C99 functions or macros in <math.h> should be imported d1292 170 d1531 37 d1665 46 d1769 4 d1958 3 d1981 1 a1981 14 if test x"$ac_has_nanosleep$ac_has_sleep" = x"nono"; then ac_no_sleep=yes AC_MSG_CHECKING([for Sleep]) AC_TRY_COMPILE([#include <windows.h>], [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.]) ac_no_sleep=no fi AC_MSG_RESULT($ac_has_win32_sleep) fi if test x"$ac_no_sleep" = x"yes"; then a2340 22 case "${target_os}" in darwin*) AC_CACHE_CHECK([for ISO C99 rounding functions in <math.h>], glibcxx_cv_c99_math_llround, [ AC_TRY_COMPILE([#include <math.h>], [llrint(0.0); llrintf(0.0f); llrintl(0.0l); llround(0.0); llroundf(0.0f); llroundl(0.0l); ], [glibcxx_cv_c99_math_llround=yes], [glibcxx_cv_c99_math_llround=no]) ]) ;; esac if test x"$glibcxx_cv_c99_math_llround" = x"no"; then AC_DEFINE(_GLIBCXX_NO_C99_ROUNDING_FUNCS, 1, [Define if C99 llrint and llround functions are missing from <math.h>.]) fi d3351 4 d3364 2 a3365 1 [only build freestanding C++ runtime support]),, d3371 4 a3374 1 enable_hosted_libstdcxx=yes d3377 15 d3404 1 a3404 1 hosted_define=1 d4233 1 a4233 1 libtool_VERSION=6:30:0 d4376 9 d4395 3 d4444 5 d4496 1 a4496 1 # This file file be copied and used freely without restrictions. It can d4706 1 a4706 1 AC_DEFINE(_GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK, 1, [Define if pthread_mutex_clocklock is available in <pthread.h>.]) d4973 1 d4976 1 a5172 19 AC_CACHE_CHECK([for sendfile that can copy files], glibcxx_cv_sendfile, [dnl case "${target_os}" in gnu* | linux* | solaris* | uclinux*) GCC_TRY_COMPILE_OR_LINK( [#include <sys/sendfile.h>], [sendfile(1, 2, (off_t*)0, sizeof 1);], [glibcxx_cv_sendfile=yes], [glibcxx_cv_sendfile=no]) ;; *) glibcxx_cv_sendfile=no ;; esac ]) if test $glibcxx_cv_sendfile = yes; then AC_DEFINE(_GLIBCXX_USE_SENDFILE, 1, [Define if sendfile is available in <sys/sendfile.h>.]) fi dnl d5185 12 d5233 38 d5483 1 d5529 1 d5547 4 a5550 1 enable_libstdcxx_backtrace=no d5602 253 @ 1.12 log @initial merge of GCC 12.3.0. this doesn't include any of the changes to the .c -> .cc files renamed, and reverts our local changes to the vax port and libsanitizer subdir. vax GCC was rewritten and our local fixes no longer are relevant, and the new libsanitizer is more updated than our old one, and merging via gcc10->gcc12 is not really possible. unfortunately, our local changes to libsanitizer that aren't related to the general update of those sources (ie, the netbsd code) will need to be re-checked and perhaps re-ported. @ text @d981 1 a981 1 snprintf(fmt, 0, "%i"); d1213 1 a1213 1 snprintf(fmt, 0, "%i"); d1626 1 a1626 1 # Use -std=c++98 because the default (-std=gnu++98) leaves __STRICT_ANSI__ d1891 3 a1893 3 nan(0); nanf(0); nanl(0); d4573 60 d4987 1 a4987 1 BACKTRACE_CPPFLAGS= d5015 2 d5019 1 @ 1.12.2.1 log @Sync with HEAD. @ text @d981 1 a981 1 snprintf(fmt, 0, "%i", 1); d1213 1 a1213 1 snprintf(fmt, 0, "%i", 1); d1626 1 a1626 1 # Use -std=c++98 because -std=gnu++98 leaves __STRICT_ANSI__ d1891 3 a1893 3 nan(""); nanf(""); nanl(""); a4572 60 AC_CACHE_CHECK([for chmod], glibcxx_cv_chmod, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <sys/stat.h> ], [ int i = chmod("", S_IRUSR); ], [glibcxx_cv_chmod=yes], [glibcxx_cv_chmod=no]) ]) if test $glibcxx_cv_chmod = yes; then AC_DEFINE(_GLIBCXX_USE_CHMOD, 1, [Define if usable chmod is available in <sys/stat.h>.]) fi dnl AC_CACHE_CHECK([for mkdir], glibcxx_cv_mkdir, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <sys/stat.h> ], [ int i = mkdir("", S_IRUSR); ], [glibcxx_cv_mkdir=yes], [glibcxx_cv_mkdir=no]) ]) if test $glibcxx_cv_mkdir = yes; then AC_DEFINE(_GLIBCXX_USE_MKDIR, 1, [Define if usable mkdir is available in <sys/stat.h>.]) fi dnl AC_CACHE_CHECK([for chdir], glibcxx_cv_chdir, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <unistd.h> ], [ int i = chdir(""); ], [glibcxx_cv_chdir=yes], [glibcxx_cv_chdir=no]) ]) if test $glibcxx_cv_chdir = yes; then AC_DEFINE(_GLIBCXX_USE_CHDIR, 1, [Define if usable chdir is available in <unistd.h>.]) fi dnl AC_CACHE_CHECK([for getcwd], glibcxx_cv_getcwd, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <unistd.h> ], [ char* s = getcwd((char*)0, 1); ], [glibcxx_cv_getcwd=yes], [glibcxx_cv_getcwd=no]) ]) if test $glibcxx_cv_getcwd = yes; then AC_DEFINE(_GLIBCXX_USE_GETCWD, 1, [Define if usable getcwd is available in <unistd.h>.]) fi dnl d4927 1 a4927 1 BACKTRACE_CPPFLAGS="-D_GNU_SOURCE" a4954 2 ac_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" a4956 1 CPPFLAGS="$ac_save_CPPFLAGS" @ 1.11 log @initial merge of GCC 10.3.0. these three files are not yet finished merging: gcc/config/rs6000/rs6000.c libsanitizer/lsan/lsan_allocator.h libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h our current GCC 9 sanitizers are newer than GCC 10's still, so that may take a little to untease, so it's probable that more than these 2 will need more changes. rs6000.c has some changes related to ABI and supported functionality that need to be merged forward. @ text @d52 1 a52 1 m4_define([glibcxx_SUBDIRS],[include libsupc++ src src/c++98 src/c++11 src/c++17 src/filesystem doc python]) d175 1 d208 1 d214 2 d227 1 a227 1 if test "$glibcxx_ld_is_gold" = "yes"; then d280 16 a295 7 AC_MSG_CHECKING([for ld that supports -Wl,-z,relro]) cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"` if test -n "$cxx_z_relo"; then OPT_LDFLAGS="-Wl,-z,relro" ac_ld_relro=yes fi AC_MSG_RESULT($ac_ld_relro) d349 2 a350 1 AC_CACHE_VAL(glibcxx_cv_setrlimit, [ a359 1 fi d361 5 a365 8 AC_MSG_CHECKING([for testsuite resource limits support]) if test $setrlimit_have_headers = yes && test $glibcxx_cv_setrlimit = yes; then ac_res_limits=yes AC_DEFINE(_GLIBCXX_RES_LIMITS, 1, [Define if using setrlimit to set resource limits during "make check"]) else ac_res_limits=no a367 1 AC_MSG_RESULT($ac_res_limits) d428 1 a428 2 AC_MSG_CHECKING([for poll]) AC_CACHE_VAL(glibcxx_cv_POLL, [ a439 1 AC_MSG_RESULT($glibcxx_cv_POLL) d456 1 a456 2 AC_MSG_CHECKING([for writev]) AC_CACHE_VAL(glibcxx_cv_WRITEV, [ a466 1 AC_MSG_RESULT($glibcxx_cv_WRITEV) a473 57 dnl Check whether int64_t is available in <stdint.h>, and define HAVE_INT64_T. dnl Also check whether int64_t is actually a typedef to long or long long. dnl AC_DEFUN([GLIBCXX_CHECK_INT64_T], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_MSG_CHECKING([for int64_t]) AC_CACHE_VAL(glibcxx_cv_INT64_T, [ AC_TRY_COMPILE( [#include <stdint.h>], [int64_t var;], [glibcxx_cv_INT64_T=yes], [glibcxx_cv_INT64_T=no]) ]) if test $glibcxx_cv_INT64_T = yes; then AC_DEFINE(HAVE_INT64_T, 1, [Define if int64_t is available in <stdint.h>.]) AC_MSG_RESULT($glibcxx_cv_INT64_T) AC_MSG_CHECKING([for int64_t as long]) AC_CACHE_VAL(glibcxx_cv_int64_t_long, [ AC_TRY_COMPILE( [#include <stdint.h> template<typename, typename> struct same { enum { value = -1 }; }; template<typename Tp> struct same<Tp, Tp> { enum { value = 1 }; }; int array[same<int64_t, long>::value];], [], [glibcxx_cv_int64_t_long=yes], [glibcxx_cv_int64_t_long=no]) ]) if test $glibcxx_cv_int64_t_long = yes; then AC_DEFINE(HAVE_INT64_T_LONG, 1, [Define if int64_t is a long.]) AC_MSG_RESULT($glibcxx_cv_int64_t_long) fi AC_MSG_CHECKING([for int64_t as long long]) AC_CACHE_VAL(glibcxx_cv_int64_t_long_long, [ AC_TRY_COMPILE( [#include <stdint.h> template<typename, typename> struct same { enum { value = -1 }; }; template<typename Tp> struct same<Tp, Tp> { enum { value = 1 }; }; int array[same<int64_t, long long>::value];], [], [glibcxx_cv_int64_t_long_long=yes], [glibcxx_cv_int64_t_long_long=no]) ]) if test $glibcxx_cv_int64_t_long_long = yes; then AC_DEFINE(HAVE_INT64_T_LONG_LONG, 1, [Define if int64_t is a long long.]) AC_MSG_RESULT($glibcxx_cv_int64_t_long_long) fi fi AC_LANG_RESTORE ]) dnl d481 1 a481 2 AC_MSG_CHECKING([for LFS support]) AC_CACHE_VAL(glibcxx_cv_LFS, [ a499 1 AC_MSG_RESULT($glibcxx_cv_LFS) d506 9 a514 4 dnl Check for whether a fully dynamic basic_string implementation should dnl be turned on, that does not put empty objects in per-process static dnl memory (mostly useful together with shared memory allocators, see PR dnl libstdc++/16612 for details). d518 1 a518 1 dnl otherwise undefined d523 1 a523 1 GLIBCXX_ENABLE(fully-dynamic-string,$1,,[do not put empty strings in per-process static memory]) d872 2 a873 2 AC_MSG_CHECKING([for ISO C99 support in <math.h> for C++98]) AC_CACHE_VAL(glibcxx_cv_c99_math_cxx98, [ a892 1 AC_MSG_RESULT($glibcxx_cv_c99_math_cxx98) d906 2 a907 2 AC_MSG_CHECKING([for ISO C99 support in <complex.h> for C++98]) AC_CACHE_VAL(glibcxx_cv_c99_complex_cxx98, [ a960 1 AC_MSG_RESULT($glibcxx_cv_c99_complex_cxx98) d969 2 a970 2 AC_MSG_CHECKING([for ISO C99 support in <stdio.h> for C++98]) AC_CACHE_VAL(glibcxx_cv_c99_stdio_cxx98, [ a984 1 AC_MSG_RESULT($glibcxx_cv_c99_stdio_cxx98) d992 2 a993 2 AC_MSG_CHECKING([for ISO C99 support in <stdlib.h> for C++98]) AC_CACHE_VAL(glibcxx_cv_c99_stdlib_cxx98, [ a1012 1 AC_MSG_RESULT($glibcxx_cv_c99_stdlib_cxx98) d1022 2 a1023 2 AC_MSG_CHECKING([for ISO C99 support in <wchar.h> for C++98]) AC_CACHE_VAL(glibcxx_cv_c99_wchar_cxx98, [ a1057 1 AC_MSG_RESULT($glibcxx_cv_c99_wchar_cxx98) d1104 2 a1105 2 AC_MSG_CHECKING([for ISO C99 support in <math.h> for C++11]) AC_CACHE_VAL(glibcxx_cv_c99_math_cxx11, [ a1124 1 AC_MSG_RESULT($glibcxx_cv_c99_math_cxx11) d1138 2 a1139 2 AC_MSG_CHECKING([for ISO C99 support in <complex.h> for C++11]) AC_CACHE_VAL(glibcxx_cv_c99_complex_cxx11, [ a1192 1 AC_MSG_RESULT($glibcxx_cv_c99_complex_cxx11) d1201 2 a1202 2 AC_MSG_CHECKING([for ISO C99 support in <stdio.h> for C++11]) AC_CACHE_VAL(glibcxx_cv_c99_stdio_cxx11, [ a1216 1 AC_MSG_RESULT($glibcxx_cv_c99_stdio_cxx11) d1224 2 a1225 2 AC_MSG_CHECKING([for ISO C99 support in <stdlib.h> for C++11]) AC_CACHE_VAL(glibcxx_cv_c99_stdlib_cxx11, [ a1244 1 AC_MSG_RESULT($glibcxx_cv_c99_stdlib_cxx11) d1254 2 a1255 2 AC_MSG_CHECKING([for ISO C99 support in <wchar.h> for C++11]) AC_CACHE_VAL(glibcxx_cv_c99_wchar_cxx11, [ a1289 1 AC_MSG_RESULT($glibcxx_cv_c99_wchar_cxx11) d1316 1 a1316 2 dnl nanosleep and sched_yield in libc and libposix4 and, if needed, dnl links in the latter. a1388 1 GLIBCXX_LIBS="$GLIBCXX_LIBS -lrt" d1402 2 a1403 2 AC_SEARCH_LIBS(clock_gettime, [rt posix4]) AC_SEARCH_LIBS(nanosleep, [rt posix4]) d1405 2 a1406 2 AC_SEARCH_LIBS(clock_gettime, [posix4]) AC_SEARCH_LIBS(nanosleep, [posix4]) d1418 1 a1418 1 AC_SEARCH_LIBS(sched_yield, [rt posix4]) a1420 4 -lposix4*) GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield" ac_has_sched_yield=yes ;; d1490 3 a1492 3 ], [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 d1494 1 a1494 1 [ Defined if clock_gettime syscall has monotonic and realtime clock support. ]) d1497 21 d1561 1 d1568 1 d1573 4 d1670 2 a1671 2 AC_MSG_CHECKING([for ISO C99 support to TR1 in <ctype.h>]) AC_CACHE_VAL(glibcxx_cv_c99_ctype_tr1, [ a1678 1 AC_MSG_RESULT($glibcxx_cv_c99_ctype_tr1) d1707 1 a1708 1 AC_MSG_RESULT($ac_c99_fenv_tr1) d1716 2 a1717 2 AC_MSG_CHECKING([for ISO C99 support to TR1 in <stdint.h>]) AC_CACHE_VAL(glibcxx_cv_c99_stdint_tr1, [ a1807 1 AC_MSG_RESULT($glibcxx_cv_c99_stdint_tr1) d1815 2 a1816 2 AC_MSG_CHECKING([for ISO C99 support to TR1 in <math.h>]) AC_CACHE_VAL(glibcxx_cv_c99_math_tr1, [ a1928 1 AC_MSG_RESULT($glibcxx_cv_c99_math_tr1) d1936 2 a1937 2 AC_MSG_CHECKING([for ISO C99 rounding functions in <math.h>]) AC_CACHE_VAL(glibcxx_cv_c99_math_llround, [ a1948 1 AC_MSG_RESULT($glibcxx_cv_c99_math_llround) d1971 1 a1972 1 AC_MSG_RESULT($ac_c99_inttypes_tr1) d1992 1 a1993 1 AC_MSG_RESULT($ac_c99_inttypes_wchar_t_tr1) d2041 1 a2044 1 AC_MSG_RESULT($ac_c11_uchar_cxx11) d2051 44 d2107 2 a2108 2 AC_MSG_CHECKING([for "/dev/random" and "/dev/urandom" for std::random_device]) AC_CACHE_VAL(glibcxx_cv_dev_random, [ a2119 1 AC_MSG_RESULT($glibcxx_cv_dev_random) d2137 1 d2161 1 d2176 1 a2176 2 AC_MSG_CHECKING([for gets declaration]) AC_CACHE_VAL(glibcxx_cv_gets, [ a2190 1 AC_MSG_RESULT($glibcxx_cv_gets) d2211 2 a2212 2 AC_MSG_CHECKING([for C++11 <math.h> floating point overloads]) AC_CACHE_VAL(glibcxx_cv_math11_fp_overload, [ a2234 1 AC_MSG_RESULT([$glibcxx_cv_math11_fp_overload]) d2238 2 a2239 2 AC_MSG_CHECKING([for C++11 <math.h> integral type overloads]) AC_CACHE_VAL(glibcxx_cv_math11_int_overload, [ a2285 1 AC_MSG_RESULT([$glibcxx_cv_math11_int_overload]) d2292 2 a2293 2 AC_MSG_CHECKING([for obsolete isinf function in <math.h>]) AC_CACHE_VAL(glibcxx_cv_obsolete_isinf, [ a2308 1 AC_MSG_RESULT([$glibcxx_cv_obsolete_isinf]) d2314 2 a2315 2 AC_MSG_CHECKING([for obsolete isnan function in <math.h>]) AC_CACHE_VAL(glibcxx_cv_obsolete_isnan, [ a2330 1 AC_MSG_RESULT([$glibcxx_cv_obsolete_isnan]) d2348 4 a2351 1 dnl Where DEFAULT is either 'c' or 'c_std' or 'c_global'. d2354 2 d2357 1 a2357 1 [construct "C" headers for g++], [permit c|c_std|c_global]) d2359 7 d2418 3 d2515 2 d2518 13 d2657 1 a2657 1 [permit new|malloc|mt|bitmap|pool|yes|no|auto]) a2688 4 bitmap) ALLOCATOR_H=config/allocator/bitmap_allocator_base.h ALLOCATOR_NAME=__gnu_cxx::bitmap_allocator ;; a2692 4 mt) ALLOCATOR_H=config/allocator/mt_allocator_base.h ALLOCATOR_NAME=__gnu_cxx::__mt_alloc ;; a2696 4 pool) ALLOCATOR_H=config/allocator/pool_allocator_base.h ALLOCATOR_NAME=__gnu_cxx::__pool_alloc ;; d2815 1 a2815 1 dnl Check for which I/O library to use: stdio, or something specific. d2817 1 a2817 1 dnl Default is stdio. d2822 1 a2822 1 [use target-specific I/O package], [permit stdio]) d2824 4 a2827 3 # Now that libio has been removed, you can have any color you want as long # as it's black. This is one big no-op until other packages are added, but # showing the framework never hurts. d2829 1 a2829 1 stdio) d2833 8 a2840 1 AC_MSG_RESULT(stdio) d2983 1 d2990 3 d3000 2 d3090 1 a3090 1 dnl Check for GNU 128-bit integer and floating point types. d3092 1 a3092 1 dnl Note: also checks that the types aren't standard types. a3094 1 dnl _GLIBCXX_USE_INT128 d3097 1 a3097 1 AC_DEFUN([GLIBCXX_ENABLE_INT128_FLOAT128], [ d3105 1 a3105 28 cat > conftest.$ac_ext << EOF [#]line __oline__ "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; template<typename T> struct same<T, T>; int main() { typename same<long, __int128>::type i1; typename same<long long, __int128>::type i2; } EOF AC_MSG_CHECKING([for __int128]) if AC_TRY_EVAL(ac_compile); then AC_DEFINE(_GLIBCXX_USE_INT128, 1, [Define if __int128 is supported on this host.]) enable_int128=yes else enable_int128=no fi AC_MSG_RESULT($enable_int128) rm -f conftest* cat > conftest.$ac_ext << EOF d3339 2 a3340 2 AC_MSG_CHECKING([for atomic builtins for bool]) AC_CACHE_VAL(glibcxx_cv_atomic_bool, [ a3355 1 AC_MSG_RESULT($glibcxx_cv_atomic_bool) d3357 2 a3358 2 AC_MSG_CHECKING([for atomic builtins for short]) AC_CACHE_VAL(glibcxx_cv_atomic_short, [ a3373 1 AC_MSG_RESULT($glibcxx_cv_atomic_short) d3375 2 a3376 2 AC_MSG_CHECKING([for atomic builtins for int]) AC_CACHE_VAL(glibcxx_cv_atomic_int, [ a3391 1 AC_MSG_RESULT($glibcxx_cv_atomic_int) d3393 2 a3394 2 AC_MSG_CHECKING([for atomic builtins for long long]) AC_CACHE_VAL(glibcxx_cv_atomic_long_long, [ a3409 1 AC_MSG_RESULT($glibcxx_cv_atomic_long_long) d3612 2 d3615 3 d3810 2 d3824 1 a3824 1 libtool_VERSION=6:28:0 d4025 37 d4089 2 a4090 2 AC_MSG_CHECKING([for rdrand support in assembler]) AC_CACHE_VAL(ac_cv_x86_rdrand, [ a4102 1 AC_MSG_RESULT($ac_cv_x86_rdrand) d4108 2 a4109 2 AC_MSG_CHECKING([for rdseed support in assembler]) AC_CACHE_VAL(ac_cv_x86_rdseed, [ a4121 1 AC_MSG_RESULT($ac_cv_x86_rdseed) d4134 2 a4135 2 AC_MSG_CHECKING([for get_nprocs]) AC_CACHE_VAL(glibcxx_cv_GET_NPROCS, [ a4144 1 AC_MSG_RESULT($glibcxx_cv_GET_NPROCS) d4160 2 a4161 2 AC_MSG_CHECKING([for _SC_NPROCESSORS_ONLN]) AC_CACHE_VAL(glibcxx_cv_SC_NPROCESSORS_ONLN, [ a4170 1 AC_MSG_RESULT($glibcxx_cv_SC_NPROCESSORS_ONLN) d4186 2 a4187 2 AC_MSG_CHECKING([for _SC_NPROC_ONLN]) AC_CACHE_VAL(glibcxx_cv_SC_NPROC_ONLN, [ a4196 1 AC_MSG_RESULT($glibcxx_cv_SC_NPROC_ONLN) d4212 2 a4213 2 AC_MSG_CHECKING([for pthreads_num_processors_np]) AC_CACHE_VAL(glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP, [ a4222 1 AC_MSG_RESULT($glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP) d4241 2 a4242 2 AC_MSG_CHECKING([for pthread_cond_clockwait]) AC_CACHE_VAL(glibcxx_cv_PTHREAD_COND_CLOCKWAIT, [ a4251 1 AC_MSG_RESULT($glibcxx_cv_PTHREAD_COND_CLOCKWAIT) d4271 2 a4272 2 AC_MSG_CHECKING([for pthread_mutex_clocklock]) AC_CACHE_VAL(glibcxx_cv_PTHREAD_MUTEX_CLOCKLOCK, [ a4281 1 AC_MSG_RESULT($glibcxx_cv_PTHREAD_MUTEX_CLOCKLOCK) d4301 2 a4302 2 AC_MSG_CHECKING([for pthread_rwlock_clockrdlock, pthread_wlock_clockwrlock]) AC_CACHE_VAL(glibcxx_cv_PTHREAD_RWLOCK_CLOCKLOCK, [ a4313 1 AC_MSG_RESULT($glibcxx_cv_PTHREAD_RWLOCK_CLOCKLOCK) d4330 2 a4331 2 AC_MSG_CHECKING([for hw.ncpu sysctl]) AC_CACHE_VAL(glibcxx_cv_SYSCTL_HW_NCPU, [ a4348 1 AC_MSG_RESULT($glibcxx_cv_SYSCTL_HW_NCPU) d4396 1 a4396 2 AC_MSG_CHECKING([for tmpnam]) AC_CACHE_VAL(glibcxx_cv_TMPNAM, [dnl a4405 1 AC_MSG_RESULT($glibcxx_cv_TMPNAM) a4415 1 AC_MSG_CHECKING([for suitable sys/sdt.h]) d4421 2 a4422 1 AC_CACHE_VAL(glibcxx_cv_sys_sdt_h, [ a4437 1 AC_MSG_RESULT($glibcxx_cv_sys_sdt_h) d4559 1 a4559 2 AC_MSG_CHECKING([for struct dirent.d_type]) AC_CACHE_VAL(glibcxx_cv_dirent_d_type, [dnl a4571 1 AC_MSG_RESULT($glibcxx_cv_dirent_d_type) d4573 1 a4573 2 AC_MSG_CHECKING([for realpath]) AC_CACHE_VAL(glibcxx_cv_realpath, [dnl a4594 1 AC_MSG_RESULT($glibcxx_cv_realpath) d4596 1 a4596 2 AC_MSG_CHECKING([for utimensat]) AC_CACHE_VAL(glibcxx_cv_utimensat, [dnl a4611 1 AC_MSG_RESULT($glibcxx_cv_utimensat) d4613 1 a4613 2 AC_MSG_CHECKING([for utime]) AC_CACHE_VAL(glibcxx_cv_utime, [dnl a4627 1 AC_MSG_RESULT($glibcxx_cv_utime) d4629 1 a4629 2 AC_MSG_CHECKING([for lstat]) AC_CACHE_VAL(glibcxx_cv_lstat, [dnl a4641 1 AC_MSG_RESULT($glibcxx_cv_lstat) d4643 2 a4644 2 AC_MSG_CHECKING([for struct stat.st_mtim.tv_nsec]) AC_CACHE_VAL(glibcxx_cv_st_mtim, [dnl a4656 1 AC_MSG_RESULT($glibcxx_cv_st_mtim) d4658 2 a4659 2 AC_MSG_CHECKING([for fchmod]) AC_CACHE_VAL(glibcxx_cv_fchmod, [dnl a4668 1 AC_MSG_RESULT($glibcxx_cv_fchmod) d4670 2 a4671 2 AC_MSG_CHECKING([for fchmodat]) AC_CACHE_VAL(glibcxx_cv_fchmodat, [dnl a4683 1 AC_MSG_RESULT($glibcxx_cv_fchmodat) d4685 2 a4686 2 AC_MSG_CHECKING([for sendfile that can copy files]) AC_CACHE_VAL(glibcxx_cv_sendfile, [dnl a4702 1 AC_MSG_RESULT($glibcxx_cv_sendfile) d4704 2 a4705 2 AC_MSG_CHECKING([for link]) AC_CACHE_VAL(glibcxx_cv_link, [dnl a4714 1 AC_MSG_RESULT($glibcxx_cv_link) d4716 2 a4717 2 AC_MSG_CHECKING([for readlink]) AC_CACHE_VAL(glibcxx_cv_readlink, [dnl a4726 1 AC_MSG_RESULT($glibcxx_cv_readlink) d4728 2 a4729 2 AC_MSG_CHECKING([for symlink]) AC_CACHE_VAL(glibcxx_cv_symlink, [dnl a4738 1 AC_MSG_RESULT($glibcxx_cv_symlink) d4740 2 a4741 2 AC_MSG_CHECKING([for truncate]) AC_CACHE_VAL(glibcxx_cv_truncate, [dnl d4751 49 a4799 1 AC_MSG_RESULT($glibcxx_cv_truncate) d4874 201 @ 1.10 log @merge GCC 9.3.0. @ text @d214 1 a214 1 sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'` d319 2 d357 1 d788 2 d820 8 a827 1 glibcxx_toolexeclibdir='${toolexecdir}/lib' d1419 5 d1455 3 d1543 1 a1543 1 linux*) d2177 1 a2177 1 namespace test a2345 29 dnl Check whether macros, etc are present for <system_error> dnl AC_DEFUN([GLIBCXX_CHECK_SYSTEM_ERROR], [ m4_pushdef([n_syserr], [1])dnl m4_foreach([syserr], [EOWNERDEAD, ENOTRECOVERABLE, ENOLINK, EPROTO, ENODATA, ENOSR, ENOSTR, ETIME, EBADMSG, ECANCELED, EOVERFLOW, ENOTSUP, EIDRM, ETXTBSY, ECHILD, ENOSPC, EPERM, ETIMEDOUT, EWOULDBLOCK], [m4_pushdef([SYSERR], m4_toupper(syserr))dnl AC_MSG_CHECKING([for syserr]) AC_CACHE_VAL([glibcxx_cv_system_error[]n_syserr], [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <errno.h>]], [int i = syserr;])], [glibcxx_cv_system_error[]n_syserr=yes], [glibcxx_cv_system_error[]n_syserr=no]) ]) AC_MSG_RESULT([$glibcxx_cv_system_error[]n_syserr]) if test x"$glibcxx_cv_system_error[]n_syserr" = x"yes"; then AC_DEFINE([HAVE_]SYSERR, 1, [Define if ]syserr[ exists.]) fi m4_define([n_syserr], m4_incr(n_syserr))dnl m4_popdef([SYSERR])dnl ]) m4_popdef([n_syserr])dnl ]) dnl d2765 1 a2765 1 VTV_CXXFLAGS= d2767 1 a2767 1 VTV_CXXLINKFLAGS= d2887 1 d2889 12 a2900 1 AC_MSG_RESULT($enable_libstdcxx_debug) d3949 1 a3949 1 if test x$enable_libstdcxx_threads = xauto || d4002 17 a4018 5 AC_CHECK_TYPE([pthread_rwlock_t], [AC_DEFINE([_GLIBCXX_USE_PTHREAD_RWLOCK_T], 1, [Define if POSIX read/write locks are available in <gthr.h>.])], [], [#include "gthr.h"]) d4066 20 d4194 95 d4488 1 a4488 1 gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu) d4497 3 d4510 2 a4511 1 dnl Check whether the library calls required by the Filesystem TS are present. d4526 4 a4529 5 if test $enable_libstdcxx_filesystem_ts = yes; then AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" d4531 15 a4545 15 AC_MSG_CHECKING([for struct dirent.d_type]) AC_CACHE_VAL(glibcxx_cv_dirent_d_type, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <dirent.h>], [ struct dirent d; if (sizeof d.d_type) return 0; ], [glibcxx_cv_dirent_d_type=yes], [glibcxx_cv_dirent_d_type=no]) ]) if test $glibcxx_cv_dirent_d_type = yes; then AC_DEFINE(HAVE_STRUCT_DIRENT_D_TYPE, 1, [Define to 1 if `d_type' is a member of `struct dirent'.]) fi AC_MSG_RESULT($glibcxx_cv_dirent_d_type) d4547 24 a4570 24 AC_MSG_CHECKING([for realpath]) AC_CACHE_VAL(glibcxx_cv_realpath, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <limits.h> #include <stdlib.h> #include <unistd.h> ], [ #if _XOPEN_VERSION < 500 #error #elif _XOPEN_VERSION >= 700 || defined(PATH_MAX) char *tmp = realpath((const char*)NULL, (char*)NULL); #else #error #endif ], [glibcxx_cv_realpath=yes], [glibcxx_cv_realpath=no]) ]) if test $glibcxx_cv_realpath = yes; then AC_DEFINE(_GLIBCXX_USE_REALPATH, 1, [Define if usable realpath is available in <stdlib.h>.]) fi AC_MSG_RESULT($glibcxx_cv_realpath) d4572 18 a4589 18 AC_MSG_CHECKING([for utimensat]) AC_CACHE_VAL(glibcxx_cv_utimensat, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <fcntl.h> #include <sys/stat.h> ], [ struct timespec ts[2] = { { 0, UTIME_OMIT }, { 1, 1 } }; int i = utimensat(AT_FDCWD, "path", ts, 0); ], [glibcxx_cv_utimensat=yes], [glibcxx_cv_utimensat=no]) ]) if test $glibcxx_cv_utimensat = yes; then AC_DEFINE(_GLIBCXX_USE_UTIMENSAT, 1, [Define if utimensat and UTIME_OMIT are available in <sys/stat.h> and AT_FDCWD in <fcntl.h>.]) fi AC_MSG_RESULT($glibcxx_cv_utimensat) d4591 17 a4607 17 AC_MSG_CHECKING([for utime]) AC_CACHE_VAL(glibcxx_cv_utime, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <utime.h> ], [ struct utimbuf t = { 1, 1 }; int i = utime("path", &t); ], [glibcxx_cv_utime=yes], [glibcxx_cv_utime=no]) ]) if test $glibcxx_cv_utime = yes; then AC_DEFINE(_GLIBCXX_USE_UTIME, 1, [Define if utime is available in <utime.h>.]) fi AC_MSG_RESULT($glibcxx_cv_utime) d4609 15 a4623 15 AC_MSG_CHECKING([for lstat]) AC_CACHE_VAL(glibcxx_cv_lstat, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <sys/stat.h> ], [ struct stat st; int i = lstat("path", &st); ], [glibcxx_cv_lstat=yes], [glibcxx_cv_lstat=no]) ]) if test $glibcxx_cv_lstat = yes; then AC_DEFINE(_GLIBCXX_USE_LSTAT, 1, [Define if lstat is available in <sys/stat.h>.]) fi AC_MSG_RESULT($glibcxx_cv_lstat) d4625 15 a4639 15 AC_MSG_CHECKING([for struct stat.st_mtim.tv_nsec]) AC_CACHE_VAL(glibcxx_cv_st_mtim, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <sys/stat.h> ], [ struct stat st; return st.st_mtim.tv_nsec; ], [glibcxx_cv_st_mtim=yes], [glibcxx_cv_st_mtim=no]) ]) if test $glibcxx_cv_st_mtim = yes; then AC_DEFINE(_GLIBCXX_USE_ST_MTIM, 1, [Define if struct stat has timespec members.]) fi AC_MSG_RESULT($glibcxx_cv_st_mtim) d4641 12 a4652 12 AC_MSG_CHECKING([for fchmod]) AC_CACHE_VAL(glibcxx_cv_fchmod, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <sys/stat.h>], [fchmod(1, S_IWUSR);], [glibcxx_cv_fchmod=yes], [glibcxx_cv_fchmod=no]) ]) if test $glibcxx_cv_fchmod = yes; then AC_DEFINE(_GLIBCXX_USE_FCHMOD, 1, [Define if fchmod is available in <sys/stat.h>.]) fi AC_MSG_RESULT($glibcxx_cv_fchmod) d4654 15 a4668 15 AC_MSG_CHECKING([for fchmodat]) AC_CACHE_VAL(glibcxx_cv_fchmodat, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <fcntl.h> #include <sys/stat.h> ], [fchmodat(AT_FDCWD, "", 0, AT_SYMLINK_NOFOLLOW);], [glibcxx_cv_fchmodat=yes], [glibcxx_cv_fchmodat=no]) ]) if test $glibcxx_cv_fchmodat = yes; then AC_DEFINE(_GLIBCXX_USE_FCHMODAT, 1, [Define if fchmodat is available in <sys/stat.h>.]) fi AC_MSG_RESULT($glibcxx_cv_fchmodat) d4670 19 a4688 19 AC_MSG_CHECKING([for sendfile that can copy files]) AC_CACHE_VAL(glibcxx_cv_sendfile, [dnl case "${target_os}" in gnu* | linux* | solaris*) GCC_TRY_COMPILE_OR_LINK( [#include <sys/sendfile.h>], [sendfile(1, 2, (off_t*)0, sizeof 1);], [glibcxx_cv_sendfile=yes], [glibcxx_cv_sendfile=no]) ;; *) glibcxx_cv_sendfile=no ;; esac ]) if test $glibcxx_cv_sendfile = yes; then AC_DEFINE(_GLIBCXX_USE_SENDFILE, 1, [Define if sendfile is available in <sys/sendfile.h>.]) fi AC_MSG_RESULT($glibcxx_cv_sendfile) d4690 12 a4701 12 AC_MSG_CHECKING([for link]) AC_CACHE_VAL(glibcxx_cv_link, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [link("", "");], [glibcxx_cv_link=yes], [glibcxx_cv_link=no]) ]) if test $glibcxx_cv_link = yes; then AC_DEFINE(HAVE_LINK, 1, [Define if link is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_link) d4703 12 a4714 12 AC_MSG_CHECKING([for readlink]) AC_CACHE_VAL(glibcxx_cv_readlink, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [char buf[32]; readlink("", buf, sizeof(buf));], [glibcxx_cv_readlink=yes], [glibcxx_cv_readlink=no]) ]) if test $glibcxx_cv_readlink = yes; then AC_DEFINE(HAVE_READLINK, 1, [Define if readlink is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_readlink) d4716 12 a4727 12 AC_MSG_CHECKING([for symlink]) AC_CACHE_VAL(glibcxx_cv_symlink, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [symlink("", "");], [glibcxx_cv_symlink=yes], [glibcxx_cv_symlink=no]) ]) if test $glibcxx_cv_symlink = yes; then AC_DEFINE(HAVE_SYMLINK, 1, [Define if symlink is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_symlink) d4729 12 a4740 12 AC_MSG_CHECKING([for truncate]) AC_CACHE_VAL(glibcxx_cv_truncate, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [truncate("", 99);], [glibcxx_cv_truncate=yes], [glibcxx_cv_truncate=no]) ]) if test $glibcxx_cv_truncate = yes; then AC_DEFINE(HAVE_TRUNCATE, 1, [Define if truncate is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_truncate) d4742 2 a4743 3 CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE fi @ 1.9 log @merge GCC 8.4.0. @ text @d52 1 a52 1 m4_define([glibcxx_SUBDIRS],[include libsupc++ src src/c++98 src/c++11 src/filesystem doc python]) a142 7 # Check for maintainer-mode bits. if test x"$USE_MAINTAINER_MODE" = xno; then WERROR='' else WERROR='-Werror' fi a158 1 AC_SUBST(WERROR) d737 1 a737 1 WARN_FLAGS='-Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi' d2079 2 a2080 1 dnl Check whether "/dev/random" and "/dev/urandom" are available for the d2083 1 a2083 1 AC_DEFUN([GLIBCXX_CHECK_RANDOM_TR1], [ d2085 2 a2086 2 AC_MSG_CHECKING([for "/dev/random" and "/dev/urandom" for TR1 random_device]) AC_CACHE_VAL(glibcxx_cv_random_tr1, [ d2088 2 a2089 2 ## For MSys environment the test above is detect as false-positive ## on mingw-targets. So disable it explicit for them. d2091 2 a2092 2 *mingw*) glibcxx_cv_random_tr1=no ;; *) glibcxx_cv_random_tr1=yes ;; d2095 1 a2095 1 glibcxx_cv_random_tr1=no; d2098 1 a2098 1 AC_MSG_RESULT($glibcxx_cv_random_tr1) d2100 4 a2103 1 if test x"$glibcxx_cv_random_tr1" = x"yes"; then d3568 66 d3817 1 a3817 1 libtool_VERSION=6:25:0 d4377 12 a4388 2 dnl Check whether the library calls required by the Filesystem TS are present dnl and define _GLIBCXX_USE_REALPATH and _GLIBCXX_USE_UTIMENSAT. d4392 128 a4519 4 AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" d4521 15 a4535 15 AC_MSG_CHECKING([for struct dirent.d_type]) AC_CACHE_VAL(glibcxx_cv_dirent_d_type, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <dirent.h>], [ struct dirent d; if (sizeof d.d_type) return 0; ], [glibcxx_cv_dirent_d_type=yes], [glibcxx_cv_dirent_d_type=no]) ]) if test $glibcxx_cv_dirent_d_type = yes; then AC_DEFINE(HAVE_STRUCT_DIRENT_D_TYPE, 1, [Define to 1 if `d_type' is a member of `struct dirent'.]) fi AC_MSG_RESULT($glibcxx_cv_dirent_d_type) d4537 19 a4555 24 AC_MSG_CHECKING([for realpath]) AC_CACHE_VAL(glibcxx_cv_realpath, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <limits.h> #include <stdlib.h> #include <unistd.h> ], [ #if _XOPEN_VERSION < 500 #error #elif _XOPEN_VERSION >= 700 || defined(PATH_MAX) char *tmp = realpath((const char*)NULL, (char*)NULL); #else #error #endif ], [glibcxx_cv_realpath=yes], [glibcxx_cv_realpath=no]) ]) if test $glibcxx_cv_realpath = yes; then AC_DEFINE(_GLIBCXX_USE_REALPATH, 1, [Define if usable realpath is available in <stdlib.h>.]) fi AC_MSG_RESULT($glibcxx_cv_realpath) d4557 12 a4568 18 AC_MSG_CHECKING([for utimensat]) AC_CACHE_VAL(glibcxx_cv_utimensat, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <fcntl.h> #include <sys/stat.h> ], [ struct timespec ts[2] = { { 0, UTIME_OMIT }, { 1, 1 } }; int i = utimensat(AT_FDCWD, "path", ts, 0); ], [glibcxx_cv_utimensat=yes], [glibcxx_cv_utimensat=no]) ]) if test $glibcxx_cv_utimensat = yes; then AC_DEFINE(_GLIBCXX_USE_UTIMENSAT, 1, [Define if utimensat and UTIME_OMIT are available in <sys/stat.h> and AT_FDCWD in <fcntl.h>.]) fi AC_MSG_RESULT($glibcxx_cv_utimensat) d4570 12 a4581 15 AC_MSG_CHECKING([for struct stat.st_mtim.tv_nsec]) AC_CACHE_VAL(glibcxx_cv_st_mtim, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <sys/stat.h> ], [ struct stat st; return st.st_mtim.tv_nsec; ], [glibcxx_cv_st_mtim=yes], [glibcxx_cv_st_mtim=no]) ]) if test $glibcxx_cv_st_mtim = yes; then AC_DEFINE(_GLIBCXX_USE_ST_MTIM, 1, [Define if struct stat has timespec members.]) fi AC_MSG_RESULT($glibcxx_cv_st_mtim) d4583 12 a4594 12 AC_MSG_CHECKING([for fchmod]) AC_CACHE_VAL(glibcxx_cv_fchmod, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <sys/stat.h>], [fchmod(1, S_IWUSR);], [glibcxx_cv_fchmod=yes], [glibcxx_cv_fchmod=no]) ]) if test $glibcxx_cv_fchmod = yes; then AC_DEFINE(_GLIBCXX_USE_FCHMOD, 1, [Define if fchmod is available in <sys/stat.h>.]) fi AC_MSG_RESULT($glibcxx_cv_fchmod) d4596 12 a4607 15 AC_MSG_CHECKING([for fchmodat]) AC_CACHE_VAL(glibcxx_cv_fchmodat, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <fcntl.h> #include <sys/stat.h> ], [fchmodat(AT_FDCWD, "", 0, AT_SYMLINK_NOFOLLOW);], [glibcxx_cv_fchmodat=yes], [glibcxx_cv_fchmodat=no]) ]) if test $glibcxx_cv_fchmodat = yes; then AC_DEFINE(_GLIBCXX_USE_FCHMODAT, 1, [Define if fchmodat is available in <sys/stat.h>.]) fi AC_MSG_RESULT($glibcxx_cv_fchmodat) d4609 2 a4610 17 AC_MSG_CHECKING([for sendfile that can copy files]) AC_CACHE_VAL(glibcxx_cv_sendfile, [dnl case "${target_os}" in gnu* | linux* | solaris*) GCC_TRY_COMPILE_OR_LINK( [#include <sys/sendfile.h>], [sendfile(1, 2, (off_t*)0, sizeof 1);], [glibcxx_cv_sendfile=yes], [glibcxx_cv_sendfile=no]) ;; *) glibcxx_cv_sendfile=no ;; esac ]) if test $glibcxx_cv_sendfile = yes; then AC_DEFINE(_GLIBCXX_USE_SENDFILE, 1, [Define if sendfile is available in <sys/sendfile.h>.]) a4611 4 AC_MSG_RESULT($glibcxx_cv_sendfile) dnl CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE @ 1.8 log @merge GCC 8.3.0 pass 1. will not compile yet. thare are still about 25 files with merge issues. @ text @d645 1 a645 6 AC_MSG_CHECKING([for docbook stylesheets for documentation creation]) glibcxx_stylesheets=no if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude http://docbook.sourceforge.net/release/xsl-ns/current/xhtml-1_1/docbook.xsl - 2>/dev/null; then glibcxx_stylesheets=yes fi AC_MSG_RESULT($glibcxx_stylesheets) d649 17 a665 13 if test x"$glibcxx_stylesheets" = x"yes"; then if test -d /usr/share/sgml/docbook/xsl-ns-stylesheets; then glibcxx_local_stylesheets=yes XSL_STYLE_DIR=/usr/share/sgml/docbook/xsl-ns-stylesheets fi if test -d /usr/share/xml/docbook/stylesheet/docbook-xsl-ns; 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 d672 10 d1416 8 a1423 14 AC_MSG_CHECKING([for at least GNU libc 2.17]) AC_TRY_COMPILE( [#include <features.h>], [ #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 @ 1.7 log @Use the dragonfly locale code for NetBSD too. @ text @d1425 1 a1425 1 freebsd*|netbsd*|dragonfly*) d3752 1 a3752 1 libtool_VERSION=6:24:0 d3765 1 a3765 1 libtool_VERSION=7:0:0 d4296 3 d4524 1 @ 1.6 log @first pass at merging GCC 7.4.0. unlikely to compile.. @ text @d2419 1 a2419 1 dragonfly* | freebsd*) d2515 1 a2515 1 AC_MSG_RESULT(dragonfly or freebsd) @ 1.6.2.1 log @Pull up following revision(s) (requested by christos in ticket #9): external/gpl3/gcc/lib/libstdc++-v3/arch/mips64eb/defs.mk: revision 1.12 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6/defs.mk: revision 1.11 external/gpl3/gcc/usr.bin/gcc/arch/earm/tm.h: revision 1.8 external/gpl3/gcc/usr.bin/gcc/arch/earmv7hf/defs.mk: revision 1.13 external/gpl3/gcc/dist/libstdc++-v3/config/locale/generic/time_members.cc: revision 1.2 external/gpl3/gcc/usr.bin/gcc/arch/arm/defs.mk: revision 1.18 external/gpl3/gcc/usr.bin/gcc/arch/earmv6eb/tm.h: revision 1.6 external/gpl3/gcc/usr.bin/gcc/arch/earmv7hfeb/tm.h: revision 1.6 external/gpl3/gcc/lib/libstdc++-v3/arch/vax/defs.mk: revision 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/sparc64/defs.mk: revision 1.12 external/gpl3/gcc/usr.bin/gcc/arch/earmv4/tm.h: revision 1.6 external/gpl3/gcc/usr.bin/gcc/arch/sparc64/tm.h: revision 1.6 external/gpl3/gcc/usr.bin/gcc/arch/earmv7hfeb/auto-host.h: revision 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/hppa/defs.mk: revision 1.11 external/gpl3/gcc/usr.bin/gcc/arch/sparc64/auto-host.h: revision 1.16 external/gpl3/gcc/lib/libstdc++-v3/arch/m68000/defs.mk: revision 1.13 external/gpl3/gcc/usr.bin/gcc/arch/earmv6/auto-host.h: revision 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/mipsel/defs.mk: revision 1.11 external/gpl3/gcc/lib/libstdc++-v3/arch/ia64/c++config.h: revision 1.13 external/gpl3/gcc/usr.bin/gcc/arch/earmv6hf/auto-host.h: revision 1.13 external/gpl3/gcc/usr.bin/gcc/arch/armeb/tm.h: revision 1.10 external/gpl3/gcc/usr.bin/gcc/arch/earmeb/tm.h: revision 1.8 external/gpl3/gcc/usr.bin/gcc/arch/earmhf/defs.mk: revision 1.16 external/gpl3/gcc/usr.bin/gcc/arch/earmv4eb/defs.mk: revision 1.13 external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/defs.mk: revision 1.14 external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/defs.mk: revision 1.16 external/gpl3/gcc/usr.bin/gcc/arch/earmv7/tm.h: revision 1.6 external/gpl3/gcc/usr.bin/gcc/arch/vax/defs.mk: revision 1.17 external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/defs.mk: revision 1.15 external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/tm.h: revision 1.5 external/gpl3/gcc/usr.bin/gcc/arch/earmv7eb/auto-host.h: revision 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/riscv32/symver-config.h: revision 1.3 external/gpl3/gcc/usr.bin/gcc/arch/earmv6eb/defs.mk: revision 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/armeb/defs.mk: revision 1.11 external/gpl3/gcc/lib/libstdc++-v3/arch/sh3eb/defs.mk: revision 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7/defs.mk: revision 1.11 external/gpl3/gcc/usr.bin/gcc/arch/alpha/tm.h: revision 1.5 external/gpl3/gcc/usr.bin/gcc/arch/earmv6hf/tm.h: revision 1.6 external/gpl3/gcc/usr.bin/gcc/arch/earmv7eb/defs.mk: revision 1.13 external/gpl3/gcc/dist/libstdc++-v3/include/bits/locale_facets_nonio.h: revision 1.2 external/gpl3/gcc/usr.bin/gcc/arch/earmv4/defs.mk: revision 1.14 external/gpl3/gcc/usr.bin/gcc/arch/x86_64/auto-host.h: revision 1.18 external/gpl3/gcc/usr.bin/gcc/arch/earmv4eb/auto-host.h: revision 1.13 external/gpl3/gcc/usr.bin/gcc/arch/hppa/tm.h: revision 1.7 external/gpl3/gcc/usr.bin/gcc/arch/powerpc/auto-host.h: revision 1.13 external/gpl3/gcc/usr.bin/gcc/arch/sparc/tm.h: revision 1.5 external/gpl3/gcc/usr.bin/gcc/arch/ia64/defs.mk: revision 1.9 external/gpl3/gcc/lib/libstdc++-v3/arch/mips64el/defs.mk: revision 1.12 external/gpl3/gcc/usr.bin/gcc/arch/sparc/defs.mk: revision 1.16 external/gpl3/gcc/usr.bin/gcc/arch/x86_64/defs.mk: revision 1.19 external/gpl3/gcc/lib/libstdc++-v3/arch/riscv32/defs.mk: revision 1.6 external/gpl3/gcc/usr.bin/gcc/arch/m68000/defs.mk: revision 1.15 external/gpl3/gcc/lib/libstdc++-v3/arch/sparc/defs.mk: revision 1.13 external/gpl3/gcc/usr.bin/gcc/arch/earmeb/auto-host.h: revision 1.14 external/gpl3/gcc/lib/libstdc++-v3/arch/riscv64/defs.mk: revision 1.5 external/gpl3/gcc/usr.bin/gcc/arch/earmeb/defs.mk: revision 1.15 external/gpl3/gcc/usr.bin/gcc/arch/earmv7/auto-host.h: revision 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/earmhf/defs.mk: revision 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hfeb/defs.mk: revision 1.11 external/gpl3/gcc/usr.bin/gcc/arch/earm/defs.mk: revision 1.17 external/gpl3/gcc/usr.bin/gcc/arch/sh3el/tm.h: revision 1.5 external/gpl3/gcc/usr.bin/gcc/arch/sparc64/defs.mk: revision 1.16 external/gpl3/gcc/lib/libstdc++-v3/arch/m68k/defs.mk: revision 1.12 external/gpl3/gcc/usr.bin/gcc/arch/earmv4eb/tm.h: revision 1.6 external/gpl3/gcc/lib/libstdc++-v3/arch/earmhfeb/defs.mk: revision 1.11 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4eb/defs.mk: revision 1.11 external/gpl3/gcc/usr.bin/gcc/arch/arm/tm.h: revision 1.9 external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/tm.h: revision 1.8 external/gpl3/gcc/usr.bin/gcc/arch/mips64el/defs.mk: revision 1.16 external/gpl3/gcc/usr.bin/gcc/arch/mipseb/defs.mk: revision 1.17 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4/defs.mk: revision 1.12 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6eb/defs.mk: revision 1.11 external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/tm.h: revision 1.6 external/gpl3/gcc/usr.bin/gcc/arch/sh3el/defs.mk: revision 1.16 external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc/defs.mk: revision 1.13 external/gpl3/gcc/usr.bin/gcc/arch/earmv4/auto-host.h: revision 1.12 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7eb/defs.mk: revision 1.11 external/gpl3/gcc/lib/libstdc++-v3/arch/sh3el/defs.mk: revision 1.11 external/gpl3/gcc/usr.bin/gcc/arch/sparc/auto-host.h: revision 1.14 external/gpl3/gcc/lib/libstdc++-v3/arch/i386/defs.mk: revision 1.15 external/gpl3/gcc/usr.bin/gcc/arch/earmv6eb/auto-host.h: revision 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/aarch64/gstdint.h: revision 1.5 external/gpl3/gcc/usr.bin/gcc/arch/earmv6hfeb/defs.mk: revision 1.13 external/gpl3/gcc/usr.bin/gcc/arch/powerpc/tm.h: revision 1.8 external/gpl3/gcc/usr.bin/gcc/arch/earmv7eb/tm.h: revision 1.6 external/gpl3/gcc/lib/libstdc++-v3/arch/x86_64/defs.mk: revision 1.15 external/gpl3/gcc/lib/libiberty/defs.mk: revision 1.22 external/gpl3/gcc/lib/libstdc++-v3/arch/ia64/defs.mk: revision 1.11 external/gpl3/gcc/usr.bin/gcc/arch/mipseb/tm.h: revision 1.6 external/gpl3/gcc/lib/libstdc++-v3/arch/earmeb/defs.mk: revision 1.12 external/gpl3/gcc/lib/libstdc++-v3/arch/ia64/symver-config.h: revision 1.2 external/gpl3/gcc/usr.bin/gcc/arch/x86_64/tm.h: revision 1.6 external/gpl3/gcc/lib/libstdc++-v3/Makefile: revision 1.48 external/gpl3/gcc/usr.bin/gcc/arch/aarch64/defs.mk: revision 1.5 external/gpl3/gcc/dist/libstdc++-v3/src/c++11/ctype.cc: revision 1.2 external/gpl3/gcc/lib/libstdc++-v3/arch/earm/defs.mk: revision 1.11 external/gpl3/gcc/usr.bin/gcc/arch/riscv64/multilib.h: revision 1.3 external/gpl3/gcc/usr.bin/gcc/arch/m68k/defs.mk: revision 1.17 external/gpl3/gcc/usr.bin/gcc/arch/earm/auto-host.h: revision 1.16 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hfeb/defs.mk: revision 1.11 external/gpl3/gcc/usr.bin/gcc/arch/i386/tm.h: revision 1.5 external/gpl3/gcc/usr.bin/gcc/arch/armeb/defs.mk: revision 1.18 external/gpl3/gcc/usr.bin/gcc/arch/earmv6/defs.mk: revision 1.13 external/gpl3/gcc/usr.bin/gcc/arch/arm/auto-host.h: revision 1.14 external/gpl3/gcc/usr.bin/gcc/arch/earmv7hf/auto-host.h: revision 1.13 external/gpl3/gcc/usr.bin/gcc/arch/mips64el/tm.h: revision 1.6 external/gpl3/gcc/usr.bin/gcc/arch/m68k/tm.h: revision 1.7 external/gpl3/gcc/lib/libstdc++-v3/arch/mipseb/defs.mk: revision 1.12 external/gpl3/gcc/usr.bin/gcc/arch/i386/defs.mk: revision 1.17 external/gpl3/gcc/usr.bin/gcc/arch/earmv7hf/tm.h: revision 1.6 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hf/defs.mk: revision 1.11 external/gpl3/gcc/usr.bin/gcc/arch/armeb/auto-host.h: revision 1.17 external/gpl3/gcc/usr.bin/gcc/arch/earmhf/tm.h: revision 1.8 external/gpl3/gcc/usr.bin/gcc/arch/earmv6hfeb/tm.h: revision 1.6 external/gpl3/gcc/usr.bin/gcc/arch/earmv6hfeb/auto-host.h: revision 1.13 external/gpl3/gcc/usr.bin/gcc/arch/earmv6/tm.h: revision 1.6 external/gpl3/gcc/usr.bin/gcc/arch/i386/auto-host.h: revision 1.15 external/gpl3/gcc/dist/libstdc++-v3/configure: revision 1.12 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hf/defs.mk: revision 1.11 external/gpl3/gcc/usr.bin/gcc/arch/hppa/defs.mk: revision 1.16 external/gpl3/gcc/usr.bin/gcc/arch/alpha/defs.mk: revision 1.15 external/gpl3/gcc/usr.bin/gcc/arch/aarch64/tm.h: revision 1.3 external/gpl3/gcc/usr.bin/gcc/arch/earmv7hfeb/defs.mk: revision 1.13 external/gpl3/gcc/usr.bin/gcc/arch/mipsel/defs.mk: revision 1.17 external/gpl3/gcc/usr.bin/gcc/arch/mipsel/tm.h: revision 1.6 external/gpl3/gcc/lib/libstdc++-v3/arch/alpha/defs.mk: revision 1.11 external/gpl3/gcc/lib/libstdc++-v3/arch/arm/defs.mk: revision 1.11 external/gpl3/gcc/dist/libstdc++-v3/acinclude.m4: revision 1.7 external/gpl3/gcc/usr.bin/gcc/arch/ia64/tm.h: revision 1.5 external/gpl3/gcc/usr.bin/gcc/arch/vax/tm.h: revision 1.6 external/gpl3/gcc/lib/libstdc++-v3/arch/riscv64/c++config.h: revision 1.8 external/gpl3/gcc/lib/libstdc++-v3/arch/riscv32/c++config.h: revision 1.8 external/gpl3/gcc/usr.bin/gcc/arch/earmhf/auto-host.h: revision 1.15 external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/auto-host.h: revision 1.13 external/gpl3/gcc/usr.bin/gcc/arch/powerpc/defs.mk: revision 1.19 external/gpl3/gcc/usr.bin/gcc/arch/earmv7/defs.mk: revision 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/aarch64/defs.mk: revision 1.8 external/gpl3/gcc/usr.bin/gcc/arch/earmv6hf/defs.mk: revision 1.13 external/gpl3/gcc/usr.bin/gcc/arch/m68000/tm.h: revision 1.6 Arrange so that the Makefile works for both the generic and the dragonfly locale code. There is no specialized constructor for ctype<char> so the destructor ends up trying to free uninitialized memory for _M_c_locale_ctype. Add a forward declaration for the specialized __timepunct<wchar_t> destructor that the dragonfly code needs to avoid "instantiation before specialization", and an empty implementation for the generic code. Use the dragonfly locale code for NetBSD too. Manually patch the locale configuration to use the dragonfly code instead of generic. regen mknative for everyone after: - NETBSD_ENABLE_PTHREADS removed (default always) - HAVE_GNU_INDIRECT_FUNCTION enabled for some platforms - switch to dragondfly bsd locale routines after christos made them work for us @ text @d2419 1 a2419 1 dragonfly* | freebsd* | netbsd*) d2515 1 a2515 1 AC_MSG_RESULT(dragonfly or freebsd or netbsd) @ 1.6.2.2 log @Pull up the following, all via patch, requested by mrg in ticket #1049: external/gpl3/gcc/dist/ChangeLog external/gpl3/gcc/dist/LAST_UPDATED external/gpl3/gcc/dist/MD5SUMS external/gpl3/gcc/dist/NEWS external/gpl3/gcc/dist/config/ChangeLog external/gpl3/gcc/dist/contrib/ChangeLog external/gpl3/gcc/dist/contrib/test_summary external/gpl3/gcc/dist/contrib/header-tools/ChangeLog external/gpl3/gcc/dist/contrib/reghunt/ChangeLog external/gpl3/gcc/dist/contrib/regression/ChangeLog external/gpl3/gcc/dist/fixincludes/ChangeLog external/gpl3/gcc/dist/fixincludes/fixincl.x external/gpl3/gcc/dist/fixincludes/inclhack.def external/gpl3/gcc/dist/fixincludes/tests/base/architecture/ppc/math.h external/gpl3/gcc/dist/fixincludes/tests/base/dispatch/object.h external/gpl3/gcc/dist/fixincludes/tests/base/os/availability.h external/gpl3/gcc/dist/fixincludes/tests/base/os/base.h external/gpl3/gcc/dist/gcc/BASE-VER external/gpl3/gcc/dist/gcc/ChangeLog external/gpl3/gcc/dist/gcc/DATESTAMP external/gpl3/gcc/dist/gcc/builtins.c external/gpl3/gcc/dist/gcc/calls.c external/gpl3/gcc/dist/gcc/cfgcleanup.c external/gpl3/gcc/dist/gcc/cfghooks.c external/gpl3/gcc/dist/gcc/cfghooks.h external/gpl3/gcc/dist/gcc/cfgloop.h external/gpl3/gcc/dist/gcc/cfgloopmanip.c external/gpl3/gcc/dist/gcc/cfgrtl.c external/gpl3/gcc/dist/gcc/combine.c external/gpl3/gcc/dist/gcc/config.gcc external/gpl3/gcc/dist/gcc/convert.c external/gpl3/gcc/dist/gcc/dce.c external/gpl3/gcc/dist/gcc/df-core.c external/gpl3/gcc/dist/gcc/dse.c external/gpl3/gcc/dist/gcc/dwarf2out.c external/gpl3/gcc/dist/gcc/except.c external/gpl3/gcc/dist/gcc/explow.c external/gpl3/gcc/dist/gcc/expmed.c external/gpl3/gcc/dist/gcc/expr.c external/gpl3/gcc/dist/gcc/final.c external/gpl3/gcc/dist/gcc/fold-const.c external/gpl3/gcc/dist/gcc/function.c external/gpl3/gcc/dist/gcc/gcse.c external/gpl3/gcc/dist/gcc/gengtype-lex.c external/gpl3/gcc/dist/gcc/ggc-page.c external/gpl3/gcc/dist/gcc/gimple-fold.c external/gpl3/gcc/dist/gcc/gimple-pretty-print.c external/gpl3/gcc/dist/gcc/gimple-ssa-sprintf.c external/gpl3/gcc/dist/gcc/gimple-ssa-strength-reduction.c external/gpl3/gcc/dist/gcc/gimple.c external/gpl3/gcc/dist/gcc/gimple.h external/gpl3/gcc/dist/gcc/gimplify.c external/gpl3/gcc/dist/gcc/graphite-scop-detection.c external/gpl3/gcc/dist/gcc/input.c external/gpl3/gcc/dist/gcc/internal-fn.c external/gpl3/gcc/dist/gcc/internal-fn.h external/gpl3/gcc/dist/gcc/ipa-cp.c external/gpl3/gcc/dist/gcc/ipa-icf-gimple.c external/gpl3/gcc/dist/gcc/ipa-inline.c external/gpl3/gcc/dist/gcc/ipa-prop.c external/gpl3/gcc/dist/gcc/ipa-pure-const.c external/gpl3/gcc/dist/gcc/ipa-reference.c external/gpl3/gcc/dist/gcc/ipa-utils.c external/gpl3/gcc/dist/gcc/ipa-utils.h external/gpl3/gcc/dist/gcc/ira.c external/gpl3/gcc/dist/gcc/loop-unroll.c external/gpl3/gcc/dist/gcc/lra-constraints.c external/gpl3/gcc/dist/gcc/lra.c external/gpl3/gcc/dist/gcc/lto-streamer-in.c external/gpl3/gcc/dist/gcc/lto-streamer-out.c external/gpl3/gcc/dist/gcc/lto-streamer.h external/gpl3/gcc/dist/gcc/lto-wrapper.c external/gpl3/gcc/dist/gcc/match.pd external/gpl3/gcc/dist/gcc/omp-expand.c external/gpl3/gcc/dist/gcc/omp-low.c external/gpl3/gcc/dist/gcc/omp-simd-clone.c external/gpl3/gcc/dist/gcc/optabs.c external/gpl3/gcc/dist/gcc/optc-save-gen.awk external/gpl3/gcc/dist/gcc/opth-gen.awk external/gpl3/gcc/dist/gcc/opts-common.c external/gpl3/gcc/dist/gcc/opts-global.c external/gpl3/gcc/dist/gcc/opts.c external/gpl3/gcc/dist/gcc/resource.c external/gpl3/gcc/dist/gcc/rtl.h external/gpl3/gcc/dist/gcc/rtlanal.c external/gpl3/gcc/dist/gcc/store-motion.c external/gpl3/gcc/dist/gcc/symtab.c external/gpl3/gcc/dist/gcc/toplev.c external/gpl3/gcc/dist/gcc/tree-cfg.c external/gpl3/gcc/dist/gcc/tree-complex.c external/gpl3/gcc/dist/gcc/tree-core.h external/gpl3/gcc/dist/gcc/tree-data-ref.c external/gpl3/gcc/dist/gcc/tree-data-ref.h external/gpl3/gcc/dist/gcc/tree-inline.c external/gpl3/gcc/dist/gcc/tree-inline.h external/gpl3/gcc/dist/gcc/tree-loop-distribution.c external/gpl3/gcc/dist/gcc/tree-outof-ssa.c external/gpl3/gcc/dist/gcc/tree-scalar-evolution.c external/gpl3/gcc/dist/gcc/tree-sra.c external/gpl3/gcc/dist/gcc/tree-ssa-copy.c external/gpl3/gcc/dist/gcc/tree-ssa-dom.c external/gpl3/gcc/dist/gcc/tree-ssa-forwprop.c external/gpl3/gcc/dist/gcc/tree-ssa-loop-ch.c external/gpl3/gcc/dist/gcc/tree-ssa-loop-ivcanon.c external/gpl3/gcc/dist/gcc/tree-ssa-loop-ivopts.c external/gpl3/gcc/dist/gcc/tree-ssa-loop-split.c external/gpl3/gcc/dist/gcc/tree-ssa-math-opts.c external/gpl3/gcc/dist/gcc/tree-ssa-phiopt.c external/gpl3/gcc/dist/gcc/tree-ssa-phiprop.c external/gpl3/gcc/dist/gcc/tree-ssa-pre.c external/gpl3/gcc/dist/gcc/tree-ssa-reassoc.c external/gpl3/gcc/dist/gcc/tree-ssa-sccvn.c external/gpl3/gcc/dist/gcc/tree-ssa-sccvn.h external/gpl3/gcc/dist/gcc/tree-ssa-sink.c external/gpl3/gcc/dist/gcc/tree-ssa-strlen.c external/gpl3/gcc/dist/gcc/tree-ssa-structalias.c external/gpl3/gcc/dist/gcc/tree-ssanames.c external/gpl3/gcc/dist/gcc/tree-streamer-in.c external/gpl3/gcc/dist/gcc/tree-streamer-out.c external/gpl3/gcc/dist/gcc/tree-vect-data-refs.c external/gpl3/gcc/dist/gcc/tree-vect-slp.c external/gpl3/gcc/dist/gcc/tree-vect-stmts.c external/gpl3/gcc/dist/gcc/tree-vrp.c external/gpl3/gcc/dist/gcc/tree.c external/gpl3/gcc/dist/gcc/tree.h external/gpl3/gcc/dist/gcc/valtrack.c external/gpl3/gcc/dist/gcc/varasm.c external/gpl3/gcc/dist/gcc/xcoffout.c external/gpl3/gcc/dist/gcc/xcoffout.h external/gpl3/gcc/dist/gcc/brig/ChangeLog external/gpl3/gcc/dist/gcc/c/ChangeLog external/gpl3/gcc/dist/gcc/c/c-decl.c external/gpl3/gcc/dist/gcc/c/c-parser.c external/gpl3/gcc/dist/gcc/c/c-tree.h external/gpl3/gcc/dist/gcc/c/c-typeck.c external/gpl3/gcc/dist/gcc/c-family/ChangeLog external/gpl3/gcc/dist/gcc/c-family/c-ada-spec.c external/gpl3/gcc/dist/gcc/c-family/c-common.c external/gpl3/gcc/dist/gcc/c-family/c-lex.c external/gpl3/gcc/dist/gcc/c-family/c-omp.c external/gpl3/gcc/dist/gcc/config/darwin-c.c external/gpl3/gcc/dist/gcc/config/darwin-driver.c external/gpl3/gcc/dist/gcc/config/darwin-protos.h external/gpl3/gcc/dist/gcc/config/darwin.c external/gpl3/gcc/dist/gcc/config/darwin.h external/gpl3/gcc/dist/gcc/config/darwin.opt external/gpl3/gcc/dist/gcc/config/darwin10.h external/gpl3/gcc/dist/gcc/config/darwin9.h external/gpl3/gcc/dist/gcc/config/aarch64/aarch64-c.c external/gpl3/gcc/dist/gcc/config/aarch64/aarch64.md external/gpl3/gcc/dist/gcc/config/aarch64/cortex-a57-fma-steering.c external/gpl3/gcc/dist/gcc/config/aarch64/iterators.md external/gpl3/gcc/dist/gcc/config/alpha/alpha.c external/gpl3/gcc/dist/gcc/config/arm/arm.c external/gpl3/gcc/dist/gcc/config/arm/arm.h external/gpl3/gcc/dist/gcc/config/arm/arm.md external/gpl3/gcc/dist/gcc/config/arm/constraints.md external/gpl3/gcc/dist/gcc/config/arm/neon.md external/gpl3/gcc/dist/gcc/config/arm/t-rtems external/gpl3/gcc/dist/gcc/config/avr/avr.c external/gpl3/gcc/dist/gcc/config/i386/avx2intrin.h external/gpl3/gcc/dist/gcc/config/i386/avxintrin.h external/gpl3/gcc/dist/gcc/config/i386/cpuid.h external/gpl3/gcc/dist/gcc/config/i386/darwin.h external/gpl3/gcc/dist/gcc/config/i386/darwin32-biarch.h external/gpl3/gcc/dist/gcc/config/i386/darwin64-biarch.h external/gpl3/gcc/dist/gcc/config/i386/darwin64.h external/gpl3/gcc/dist/gcc/config/i386/emmintrin.h external/gpl3/gcc/dist/gcc/config/i386/i386-builtin.def external/gpl3/gcc/dist/gcc/config/i386/i386.c external/gpl3/gcc/dist/gcc/config/i386/i386.h external/gpl3/gcc/dist/gcc/config/i386/i386.md external/gpl3/gcc/dist/gcc/config/i386/sse.md external/gpl3/gcc/dist/gcc/config/i386/t-darwin external/gpl3/gcc/dist/gcc/config/i386/t-darwin32-biarch external/gpl3/gcc/dist/gcc/config/i386/t-darwin64 external/gpl3/gcc/dist/gcc/config/i386/t-darwin64-biarch external/gpl3/gcc/dist/gcc/config/nvptx/nvptx.c external/gpl3/gcc/dist/gcc/config/pa/pa.c external/gpl3/gcc/dist/gcc/config/pa/pa.md external/gpl3/gcc/dist/gcc/config/rs6000/altivec.h external/gpl3/gcc/dist/gcc/config/rs6000/altivec.md external/gpl3/gcc/dist/gcc/config/rs6000/crypto.md external/gpl3/gcc/dist/gcc/config/rs6000/darwin.h external/gpl3/gcc/dist/gcc/config/rs6000/darwin.md external/gpl3/gcc/dist/gcc/config/rs6000/darwin32-biarch.h external/gpl3/gcc/dist/gcc/config/rs6000/darwin64-biarch.h external/gpl3/gcc/dist/gcc/config/rs6000/darwin64.h external/gpl3/gcc/dist/gcc/config/rs6000/darwin7.h external/gpl3/gcc/dist/gcc/config/rs6000/rs6000-builtin.def external/gpl3/gcc/dist/gcc/config/rs6000/rs6000-c.c external/gpl3/gcc/dist/gcc/config/rs6000/rs6000.c external/gpl3/gcc/dist/gcc/config/rs6000/rs6000.md external/gpl3/gcc/dist/gcc/config/rs6000/t-darwin32-biarch external/gpl3/gcc/dist/gcc/config/rs6000/t-darwin64 external/gpl3/gcc/dist/gcc/config/rs6000/t-darwin64-biarch external/gpl3/gcc/dist/gcc/config/rs6000/t-darwin8 external/gpl3/gcc/dist/gcc/config/rs6000/t-linux external/gpl3/gcc/dist/gcc/config/rs6000/vsx.md external/gpl3/gcc/dist/gcc/config/s390/s390-builtins.def external/gpl3/gcc/dist/gcc/config/s390/s390.c external/gpl3/gcc/dist/gcc/config/s390/s390.md external/gpl3/gcc/dist/gcc/config/s390/vector.md external/gpl3/gcc/dist/gcc/config/s390/vx-builtins.md external/gpl3/gcc/dist/gcc/config/sh/sh.c external/gpl3/gcc/dist/gcc/config/sh/sh.h external/gpl3/gcc/dist/gcc/config/sh/sh.md external/gpl3/gcc/dist/gcc/config/sparc/sparc.c external/gpl3/gcc/dist/gcc/config/sparc/sparc.md external/gpl3/gcc/dist/gcc/config/xtensa/xtensa.c external/gpl3/gcc/dist/gcc/cp/ChangeLog external/gpl3/gcc/dist/gcc/cp/call.c external/gpl3/gcc/dist/gcc/cp/class.c external/gpl3/gcc/dist/gcc/cp/config-lang.in external/gpl3/gcc/dist/gcc/cp/constexpr.c external/gpl3/gcc/dist/gcc/cp/cp-tree.h external/gpl3/gcc/dist/gcc/cp/decl.c external/gpl3/gcc/dist/gcc/cp/decl2.c external/gpl3/gcc/dist/gcc/cp/init.c external/gpl3/gcc/dist/gcc/cp/lambda.c external/gpl3/gcc/dist/gcc/cp/optimize.c external/gpl3/gcc/dist/gcc/cp/parser.c external/gpl3/gcc/dist/gcc/cp/pt.c external/gpl3/gcc/dist/gcc/cp/semantics.c external/gpl3/gcc/dist/gcc/cp/typeck.c external/gpl3/gcc/dist/gcc/cp/vtable-class-hierarchy.c external/gpl3/gcc/dist/gcc/doc/cpp.1 external/gpl3/gcc/dist/gcc/doc/cpp.info external/gpl3/gcc/dist/gcc/doc/cppinternals.info external/gpl3/gcc/dist/gcc/doc/extend.texi external/gpl3/gcc/dist/gcc/doc/fsf-funding.7 external/gpl3/gcc/dist/gcc/doc/g++.1 external/gpl3/gcc/dist/gcc/doc/gcc.1 external/gpl3/gcc/dist/gcc/doc/gcc.info external/gpl3/gcc/dist/gcc/doc/gccinstall.info external/gpl3/gcc/dist/gcc/doc/gccint.info external/gpl3/gcc/dist/gcc/doc/gcov-dump.1 external/gpl3/gcc/dist/gcc/doc/gcov-tool.1 external/gpl3/gcc/dist/gcc/doc/gcov.1 external/gpl3/gcc/dist/gcc/doc/gfdl.7 external/gpl3/gcc/dist/gcc/doc/gfortran.1 external/gpl3/gcc/dist/gcc/doc/gpl.7 external/gpl3/gcc/dist/gcc/doc/invoke.texi external/gpl3/gcc/dist/gcc/doc/sourcebuild.texi external/gpl3/gcc/dist/gcc/jit/ChangeLog external/gpl3/gcc/dist/gcc/lto/ChangeLog external/gpl3/gcc/dist/gcc/objc/ChangeLog external/gpl3/gcc/dist/gcc/objc/objc-act.c external/gpl3/gcc/dist/gcc/objc/objc-act.h external/gpl3/gcc/dist/gcc/objcp/ChangeLog external/gpl3/gcc/dist/gcc/objcp/config-lang.in external/gpl3/gcc/dist/include/ChangeLog external/gpl3/gcc/dist/intl/ChangeLog external/gpl3/gcc/dist/libbacktrace/ChangeLog external/gpl3/gcc/dist/libcc1/ChangeLog external/gpl3/gcc/dist/libcpp/ChangeLog external/gpl3/gcc/dist/libcpp/line-map.c external/gpl3/gcc/dist/libdecnumber/ChangeLog external/gpl3/gcc/dist/libgcc/ChangeLog external/gpl3/gcc/dist/libgcc/config.host external/gpl3/gcc/dist/libgcc/config/t-darwin external/gpl3/gcc/dist/libgcc/config/libbid/ChangeLog external/gpl3/gcc/dist/libgcc/config/rs6000/darwin-vecsave.S external/gpl3/gcc/dist/libgcc/config/rs6000/t-darwin external/gpl3/gcc/dist/libgcc/config/rs6000/t-darwin64 external/gpl3/gcc/dist/libgomp/ChangeLog external/gpl3/gcc/dist/libgomp/plugin/plugin-hsa.c external/gpl3/gcc/dist/libhsail-rt/ChangeLog external/gpl3/gcc/dist/libiberty/ChangeLog external/gpl3/gcc/dist/libiberty/simple-object-elf.c external/gpl3/gcc/dist/libobjc/ChangeLog external/gpl3/gcc/dist/libsanitizer/ChangeLog external/gpl3/gcc/dist/libssp/ChangeLog external/gpl3/gcc/dist/libstdc++-v3/ChangeLog external/gpl3/gcc/dist/libstdc++-v3/Makefile.in external/gpl3/gcc/dist/libstdc++-v3/acinclude.m4 external/gpl3/gcc/dist/libstdc++-v3/configure external/gpl3/gcc/dist/libstdc++-v3/configure.ac external/gpl3/gcc/dist/libstdc++-v3/configure.host external/gpl3/gcc/dist/libstdc++-v3/doc/Makefile.am external/gpl3/gcc/dist/libstdc++-v3/doc/Makefile.in external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/documentation_hacking.html external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/memory.html external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/status.html external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/allocator.xml external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/documentation_hacking.xml external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/shared_ptr.xml external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/status_cxx2017.xml external/gpl3/gcc/dist/libstdc++-v3/include/Makefile.in external/gpl3/gcc/dist/libstdc++-v3/include/bits/char_traits.h external/gpl3/gcc/dist/libstdc++-v3/include/bits/forward_list.tcc external/gpl3/gcc/dist/libstdc++-v3/include/bits/random.h external/gpl3/gcc/dist/libstdc++-v3/include/bits/stl_uninitialized.h external/gpl3/gcc/dist/libstdc++-v3/include/bits/unique_ptr.h external/gpl3/gcc/dist/libstdc++-v3/include/experimental/any external/gpl3/gcc/dist/libstdc++-v3/include/experimental/type_traits external/gpl3/gcc/dist/libstdc++-v3/include/experimental/bits/fs_path.h external/gpl3/gcc/dist/libstdc++-v3/include/std/any external/gpl3/gcc/dist/libstdc++-v3/include/std/optional external/gpl3/gcc/dist/libstdc++-v3/include/std/variant external/gpl3/gcc/dist/libstdc++-v3/libsupc++/Makefile.in external/gpl3/gcc/dist/libstdc++-v3/libsupc++/cxxabi.h external/gpl3/gcc/dist/libstdc++-v3/libsupc++/guard_error.cc external/gpl3/gcc/dist/libstdc++-v3/libsupc++/hash_bytes.cc external/gpl3/gcc/dist/libstdc++-v3/libsupc++/new_opa.cc external/gpl3/gcc/dist/libstdc++-v3/python/Makefile.in external/gpl3/gcc/dist/libstdc++-v3/python/libstdcxx/v6/xmethods.py external/gpl3/gcc/dist/libstdc++-v3/scripts/make_exports.pl external/gpl3/gcc/dist/libstdc++-v3/src/Makefile.am external/gpl3/gcc/dist/libstdc++-v3/src/Makefile.in external/gpl3/gcc/dist/libstdc++-v3/src/c++11/Makefile.in external/gpl3/gcc/dist/libstdc++-v3/src/c++17/Makefile.in external/gpl3/gcc/dist/libstdc++-v3/src/c++98/Makefile.in external/gpl3/gcc/dist/libstdc++-v3/src/filesystem/Makefile.in external/gpl3/gcc/dist/libstdc++-v3/src/filesystem/path.cc external/gpl3/gcc/dist/lto-plugin/ChangeLog external/gpl3/gcc/dist/maintainer-scripts/ChangeLog external/gpl3/gcc/lib/libgcc/arch/powerpc64/auto-target.h external/gpl3/gcc/lib/libgcc/libgcov/arch/aarch64/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/alpha/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/arm/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/armeb/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/earm/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/earmeb/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/earmhf/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/earmhfeb/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv4/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv4eb/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv6/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv6eb/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv6hf/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv6hfeb/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv7/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv7eb/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv7hf/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv7hfeb/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/hppa/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/i386/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/ia64/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/m68000/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/m68k/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/mips64eb/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/mips64el/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/mipseb/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/mipsel/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/powerpc/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/powerpc64/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/riscv32/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/riscv64/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/sh3eb/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/sh3el/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/sparc/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/sparc64/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/vax/gcov-iov.h external/gpl3/gcc/lib/libgcc/libgcov/arch/x86_64/gcov-iov.h external/gpl3/gcc/lib/libstdc++-v3/arch/aarch64/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/aarch64/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/alpha/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/alpha/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/arm/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/arm/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/armeb/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/armeb/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/earm/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/earm/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmeb/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmeb/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmhf/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmhf/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmhfeb/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmhfeb/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4eb/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4eb/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6eb/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6eb/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hf/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hf/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hfeb/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hfeb/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7eb/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7eb/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hf/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hf/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hfeb/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hfeb/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/hppa/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/hppa/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/i386/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/i386/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/ia64/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/ia64/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/m68000/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/m68000/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/m68k/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/m68k/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/mips64eb/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/mips64eb/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/mips64el/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/mips64el/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/mipseb/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/mipseb/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/mipsel/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/mipsel/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc64/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc64/defs.mk external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc64/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/riscv32/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/riscv32/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/riscv64/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/riscv64/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/sh3eb/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/sh3eb/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/sh3el/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/sh3el/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/sparc/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/sparc/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/sparc64/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/sparc64/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/vax/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/vax/gstdint.h external/gpl3/gcc/lib/libstdc++-v3/arch/x86_64/c++config.h external/gpl3/gcc/lib/libstdc++-v3/arch/x86_64/gstdint.h external/gpl3/gcc/usr.bin/common/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/aarch64/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/aarch64/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/aarch64/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/aarch64/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/aarch64/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/alpha/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/alpha/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/alpha/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/alpha/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/alpha/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/arm/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/arm/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/arm/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/arm/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/arm/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/armeb/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/armeb/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/armeb/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/armeb/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/armeb/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/earm/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/earm/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/earm/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/earm/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/earm/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/earmeb/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/earmeb/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/earmeb/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/earmeb/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/earmeb/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/earmhf/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/earmhf/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/earmhf/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/earmhf/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/earmhf/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/earmv4/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/earmv4/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/earmv4/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/earmv4/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/earmv4/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/earmv4eb/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/earmv4eb/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/earmv4eb/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/earmv4eb/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/earmv4eb/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/earmv6/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/earmv6/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/earmv6/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/earmv6/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/earmv6/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/earmv6eb/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/earmv6eb/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/earmv6eb/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/earmv6eb/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/earmv6eb/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/earmv6hf/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/earmv6hf/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/earmv6hf/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/earmv6hf/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/earmv6hf/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/earmv6hfeb/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/earmv6hfeb/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/earmv6hfeb/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/earmv6hfeb/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/earmv6hfeb/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/earmv7/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/earmv7/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/earmv7/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/earmv7/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/earmv7/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/earmv7eb/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/earmv7eb/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/earmv7eb/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/earmv7eb/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/earmv7eb/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/earmv7hf/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/earmv7hf/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/earmv7hf/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/earmv7hf/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/earmv7hf/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/earmv7hfeb/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/earmv7hfeb/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/earmv7hfeb/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/earmv7hfeb/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/earmv7hfeb/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/hppa/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/hppa/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/hppa/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/hppa/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/hppa/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/i386/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/i386/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/i386/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/i386/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/i386/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/ia64/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/ia64/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/ia64/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/ia64/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/ia64/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/m68000/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/m68000/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/m68000/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/m68000/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/m68000/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/m68k/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/m68k/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/m68k/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/m68k/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/m68k/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/mips64el/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/mips64el/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/mips64el/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/mips64el/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/mips64el/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/mipseb/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/mipseb/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/mipseb/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/mipseb/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/mipseb/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/mipsel/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/mipsel/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/mipsel/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/mipsel/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/mipsel/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/powerpc/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/powerpc/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/powerpc/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/powerpc/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/powerpc/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/powerpc64/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/powerpc64/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/powerpc64/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/powerpc64/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/powerpc64/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/riscv32/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/riscv32/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/riscv32/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/riscv32/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/riscv32/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/riscv64/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/riscv64/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/riscv64/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/riscv64/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/riscv64/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/sh3el/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/sh3el/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/sh3el/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/sh3el/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/sh3el/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/sparc/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/sparc/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/sparc/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/sparc/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/sparc/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/sparc64/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/sparc64/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/sparc64/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/sparc64/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/sparc64/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/vax/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/vax/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/vax/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/vax/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/vax/plugin-version.h external/gpl3/gcc/usr.bin/gcc/arch/x86_64/bversion.h external/gpl3/gcc/usr.bin/gcc/arch/x86_64/configargs.h external/gpl3/gcc/usr.bin/gcc/arch/x86_64/defs.mk external/gpl3/gcc/usr.bin/gcc/arch/x86_64/gtyp-input.list external/gpl3/gcc/usr.bin/gcc/arch/x86_64/plugin-version.h Import GCC 7.5.0. @ text @d645 6 a650 1 glibcxx_docbook_url=http://docbook.sourceforge.net/release/xsl-ns/current/ d654 13 a666 17 if test x${XMLCATALOG} = xyes && xsl_style_dir=`xmlcatalog "" $glibcxx_docbook_url 2>/dev/null` then XSL_STYLE_DIR=`echo $xsl_style_dir | sed -n 's;^file://;;p'` glibcxx_local_stylesheets=yes else for dir in \ /usr/share/sgml/docbook/xsl-ns-stylesheets \ /usr/share/xml/docbook/stylesheet/docbook-xsl-ns \ /usr/share/xml/docbook/stylesheet/nwalsh5/current \ /usr/share/xml/docbook/stylesheet/nwalsh/current do if test -d $dir; then glibcxx_local_stylesheets=yes XSL_STYLE_DIR=$dir break fi done a672 10 AC_MSG_CHECKING([for docbook stylesheets for documentation creation]) glibcxx_stylesheets=no if test x${XMLCATALOG} = xno || xmlcatalog "" $glibcxx_docbook_url/xhtml/docbook.xsl >/dev/null 2>&1; then if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude $glibcxx_docbook_url/xhtml/docbook.xsl - 2>/dev/null; then glibcxx_stylesheets=yes fi fi AC_MSG_RESULT($glibcxx_stylesheets) @ 1.5 log @merge GCC 6.4.0. sanitizer stuff is probably busted, but most other changes merged easily. docs need to be regenerated with modern versions still. @ text @a171 32 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 d400 1 a400 1 [Define if S_IFREG is available in <sys/stat.h>.]) d603 3 a606 3 # Do checks for resource limit functions. GLIBCXX_CHECK_SETRLIMIT d1893 1 d1900 1 d1959 23 d3065 1 a3065 1 dnl _GLIBCXX_USE_FLOAT128 a3119 2 AC_DEFINE(_GLIBCXX_USE_FLOAT128, 1, [Define if __float128 is supported on this host.]) d3125 1 d3752 1 a3752 1 libtool_VERSION=6:22:0 d4480 37 @ 1.5.4.1 log @Sync with HEAD @ text @d172 32 d432 1 a432 1 [Define if S_ISREG is available in <sys/stat.h>.]) d635 3 a637 2 # Do checks for resource limit functions. GLIBCXX_CHECK_SETRLIMIT a638 1 if $GLIBCXX_IS_NATIVE ; then a1924 1 #ifndef __APPLE__ /* see below */ a1930 1 #endif a1988 23 case "${target_os}" in darwin*) AC_MSG_CHECKING([for ISO C99 rounding functions in <math.h>]) AC_CACHE_VAL(glibcxx_cv_c99_math_llround, [ AC_TRY_COMPILE([#include <math.h>], [llrint(0.0); llrintf(0.0f); llrintl(0.0l); llround(0.0); llroundf(0.0f); llroundl(0.0l); ], [glibcxx_cv_c99_math_llround=yes], [glibcxx_cv_c99_math_llround=no]) ]) AC_MSG_RESULT($glibcxx_cv_c99_math_llround) ;; esac if test x"$glibcxx_cv_c99_math_llround" = x"no"; then AC_DEFINE(_GLIBCXX_NO_C99_ROUNDING_FUNCS, 1, [Define if C99 llrint and llround functions are missing from <math.h>.]) fi d3072 1 a3072 1 dnl ENABLE_FLOAT128 d3127 2 a3133 1 GLIBCXX_CONDITIONAL(ENABLE_FLOAT128, test $enable_float128 = yes) d3760 1 a3760 1 libtool_VERSION=6:24:0 a4487 37 dnl dnl Determine whether std::exception_ptr symbols should be exported with dnl the symbol versions from GCC 4.6.0 or GCC 7.1.0, depending on which dnl release first added support for std::exception_ptr. Originally it was dnl only supported for targets with always-lock-free atomics for int, but dnl since GCC 7.1 it is supported for all targets. dnl AC_DEFUN([GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER], [ if test $enable_symvers != no; then AC_MSG_CHECKING([for first version to support std::exception_ptr]) case ${target} in aarch64-*-* | alpha-*-* | hppa*-*-* | i?86-*-* | x86_64-*-* | \ m68k-*-* | powerpc*-*-* | s390*-*-* | *-*-solaris* ) ac_exception_ptr_since_gcc46=yes ;; *) # If the value of this macro changes then we will need to hardcode # yes/no here for additional targets based on the original value. AC_TRY_COMPILE([], [ #if __GCC_ATOMIC_INT_LOCK_FREE <= 1 # error atomic int not always lock free #endif ], [ac_exception_ptr_since_gcc46=yes], [ac_exception_ptr_since_gcc46=no]) ;; esac if test x"$ac_exception_ptr_since_gcc46" = x"yes" ; then AC_DEFINE(HAVE_EXCEPTION_PTR_SINCE_GCC46, 1, [Define to 1 if GCC 4.6 supported std::exception_ptr for the target]) AC_MSG_RESULT([4.6.0]) else AC_MSG_RESULT([7.1.0]) fi fi ]) @ 1.5.4.2 log @Merge changes from current as of 20200406 @ text @d645 6 a650 1 glibcxx_docbook_url=http://docbook.sourceforge.net/release/xsl-ns/current/ d654 13 a666 17 if test x${XMLCATALOG} = xyes && xsl_style_dir=`xmlcatalog "" $glibcxx_docbook_url 2>/dev/null` then XSL_STYLE_DIR=`echo $xsl_style_dir | sed -n 's;^file://;;p'` glibcxx_local_stylesheets=yes else for dir in \ /usr/share/sgml/docbook/xsl-ns-stylesheets \ /usr/share/xml/docbook/stylesheet/docbook-xsl-ns \ /usr/share/xml/docbook/stylesheet/nwalsh5/current \ /usr/share/xml/docbook/stylesheet/nwalsh/current do if test -d $dir; then glibcxx_local_stylesheets=yes XSL_STYLE_DIR=$dir break fi done a672 10 AC_MSG_CHECKING([for docbook stylesheets for documentation creation]) glibcxx_stylesheets=no if test x${XMLCATALOG} = xno || xmlcatalog "" $glibcxx_docbook_url/xhtml/docbook.xsl >/dev/null 2>&1; then if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude $glibcxx_docbook_url/xhtml/docbook.xsl - 2>/dev/null; then glibcxx_stylesheets=yes fi fi AC_MSG_RESULT($glibcxx_stylesheets) d1407 14 a1420 8 # Don't use link test for freestanding library, in case gcc_no_link=yes if test x"$is_hosted" = xyes; then # Versions of glibc before 2.17 needed -lrt for clock_gettime. AC_SEARCH_LIBS(clock_gettime, [rt]) if test x"$ac_cv_search_clock_gettime" = x"none required"; then ac_has_clock_monotonic=yes ac_has_clock_realtime=yes fi @ 1.5.4.3 log @Mostly merge changes from HEAD upto 20200411 @ text @d1428 1 a1428 1 freebsd*|netbsd*|dragonfly*|rtems*) d2422 1 a2422 1 dragonfly* | freebsd* | netbsd*) d2518 1 a2518 1 AC_MSG_RESULT(dragonfly or freebsd or netbsd) d3755 1 a3755 1 libtool_VERSION=6:25:0 d3768 1 a3768 1 libtool_VERSION=8:0:0 a4298 3 rtems*) enable_libstdcxx_filesystem_ts=yes ;; a4523 1 m4_include([../config/cet.m4]) @ 1.5.2.1 log @Sync with HEAD @ text @d172 32 d432 1 a432 1 [Define if S_ISREG is available in <sys/stat.h>.]) d635 3 a637 2 # Do checks for resource limit functions. GLIBCXX_CHECK_SETRLIMIT a638 1 if $GLIBCXX_IS_NATIVE ; then a1924 1 #ifndef __APPLE__ /* see below */ a1930 1 #endif a1988 23 case "${target_os}" in darwin*) AC_MSG_CHECKING([for ISO C99 rounding functions in <math.h>]) AC_CACHE_VAL(glibcxx_cv_c99_math_llround, [ AC_TRY_COMPILE([#include <math.h>], [llrint(0.0); llrintf(0.0f); llrintl(0.0l); llround(0.0); llroundf(0.0f); llroundl(0.0l); ], [glibcxx_cv_c99_math_llround=yes], [glibcxx_cv_c99_math_llround=no]) ]) AC_MSG_RESULT($glibcxx_cv_c99_math_llround) ;; esac if test x"$glibcxx_cv_c99_math_llround" = x"no"; then AC_DEFINE(_GLIBCXX_NO_C99_ROUNDING_FUNCS, 1, [Define if C99 llrint and llround functions are missing from <math.h>.]) fi d3072 1 a3072 1 dnl ENABLE_FLOAT128 d3127 2 a3133 1 GLIBCXX_CONDITIONAL(ENABLE_FLOAT128, test $enable_float128 = yes) d3760 1 a3760 1 libtool_VERSION=6:24:0 a4487 37 dnl dnl Determine whether std::exception_ptr symbols should be exported with dnl the symbol versions from GCC 4.6.0 or GCC 7.1.0, depending on which dnl release first added support for std::exception_ptr. Originally it was dnl only supported for targets with always-lock-free atomics for int, but dnl since GCC 7.1 it is supported for all targets. dnl AC_DEFUN([GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER], [ if test $enable_symvers != no; then AC_MSG_CHECKING([for first version to support std::exception_ptr]) case ${target} in aarch64-*-* | alpha-*-* | hppa*-*-* | i?86-*-* | x86_64-*-* | \ m68k-*-* | powerpc*-*-* | s390*-*-* | *-*-solaris* ) ac_exception_ptr_since_gcc46=yes ;; *) # If the value of this macro changes then we will need to hardcode # yes/no here for additional targets based on the original value. AC_TRY_COMPILE([], [ #if __GCC_ATOMIC_INT_LOCK_FREE <= 1 # error atomic int not always lock free #endif ], [ac_exception_ptr_since_gcc46=yes], [ac_exception_ptr_since_gcc46=no]) ;; esac if test x"$ac_exception_ptr_since_gcc46" = x"yes" ; then AC_DEFINE(HAVE_EXCEPTION_PTR_SINCE_GCC46, 1, [Define to 1 if GCC 4.6 supported std::exception_ptr for the target]) AC_MSG_RESULT([4.6.0]) else AC_MSG_RESULT([7.1.0]) fi fi ]) @ 1.4 log @merge GCC 5.5.0. this does not include updated man/info pages (yet). @ text @d918 240 d1159 115 a1273 2 AC_LANG_SAVE AC_LANG_CPLUSPLUS d1275 23 a1297 9 # 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 explicitly # request C99 facilities to the underlying C headers. ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -std=c++98" ac_save_LIBS="$LIBS" ac_save_gcc_no_link="$gcc_no_link" d1299 21 a1319 9 if test x$gcc_no_link != xyes; then # Use -fno-exceptions to that the C driver can link these tests without # hitting undefined references to personality routines. CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_CHECK_LIB(m, sin, [ LIBS="$LIBS -lm" ], [ # Use the default compile-only tests in GCC_TRY_COMPILE_OR_LINK gcc_no_link=yes d1321 29 a1349 1 fi d1351 3 a1353 28 # Check for the existence of <math.h> functions used if C99 is enabled. AC_MSG_CHECKING([for ISO C99 support in <math.h>]) AC_CACHE_VAL(glibcxx_cv_c99_math, [ GCC_TRY_COMPILE_OR_LINK( [#include <math.h> volatile double d1, d2; volatile int i;], [i = fpclassify(d1); i = isfinite(d1); i = isinf(d1); i = isnan(d1); i = isnormal(d1); i = signbit(d1); i = isgreater(d1, d2); i = isgreaterequal(d1, d2); i = isless(d1, d2); i = islessequal(d1, d2); i = islessgreater(d1, d2); i = islessgreater(d1, d2); i = isunordered(d1, d2); ],[glibcxx_cv_c99_math=yes], [glibcxx_cv_c99_math=no]) ]) AC_MSG_RESULT($glibcxx_cv_c99_math) if test x"$glibcxx_cv_c99_math" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_MATH, 1, [Define if C99 functions or macros in <math.h> should be imported in <cmath> in namespace std.]) fi d1355 3 a1357 68 # Check for the existence of <complex.h> complex math functions. # This is necessary even though libstdc++ uses the builtin versions # of these functions, because if the builtin cannot be used, a reference # to the library function is emitted. AC_CHECK_HEADERS(tgmath.h, ac_has_tgmath_h=yes, ac_has_tgmath_h=no) AC_CHECK_HEADERS(complex.h, ac_has_complex_h=yes, ac_has_complex_h=no) glibcxx_cv_c99_complex=no; if test x"$ac_has_complex_h" = x"yes"; then AC_MSG_CHECKING([for ISO C99 support in <complex.h>]) GCC_TRY_COMPILE_OR_LINK( [#include <complex.h> typedef __complex__ float float_type; typedef __complex__ double double_type; typedef __complex__ long double ld_type; volatile float_type tmpf; volatile double_type tmpd; volatile ld_type tmpld; volatile float f; volatile double d; volatile long double ld;], [f = cabsf(tmpf); f = cargf(tmpf); tmpf = ccosf(tmpf); tmpf = ccoshf(tmpf); tmpf = cexpf(tmpf); tmpf = clogf(tmpf); tmpf = csinf(tmpf); tmpf = csinhf(tmpf); tmpf = csqrtf(tmpf); tmpf = ctanf(tmpf); tmpf = ctanhf(tmpf); tmpf = cpowf(tmpf, tmpf); tmpf = cprojf(tmpf); d = cabs(tmpd); d = carg(tmpd); tmpd = ccos(tmpd); tmpd = ccosh(tmpd); tmpd = cexp(tmpd); tmpd = clog(tmpd); tmpd = csin(tmpd); tmpd = csinh(tmpd); tmpd = csqrt(tmpd); tmpd = ctan(tmpd); tmpd = ctanh(tmpd); tmpd = cpow(tmpd, tmpd); tmpd = cproj(tmpd); ld = cabsl(tmpld); ld = cargl(tmpld); tmpld = ccosl(tmpld); tmpld = ccoshl(tmpld); tmpld = cexpl(tmpld); tmpld = clogl(tmpld); tmpld = csinl(tmpld); tmpld = csinhl(tmpld); tmpld = csqrtl(tmpld); tmpld = ctanl(tmpld); tmpld = ctanhl(tmpld); tmpld = cpowl(tmpld, tmpld); tmpld = cprojl(tmpld); ],[glibcxx_cv_c99_complex=yes], [glibcxx_cv_c99_complex=no]) fi AC_MSG_RESULT($glibcxx_cv_c99_complex) if test x"$glibcxx_cv_c99_complex" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_COMPLEX, 1, [Define if C99 functions in <complex.h> should be used in <complex>. Using compiler builtins for these functions requires corresponding C99 library functions to be present.]) fi d1359 3 a1361 56 # Check for the existence in <stdio.h> of vscanf, et. al. AC_MSG_CHECKING([for ISO C99 support in <stdio.h>]) AC_CACHE_VAL(glibcxx_cv_c99_stdio, [ GCC_TRY_COMPILE_OR_LINK( [#include <stdio.h> #include <stdarg.h> void foo(char* fmt, ...) { va_list args; va_start(args, fmt); vfscanf(stderr, "%i", args); vscanf("%i", args); vsnprintf(fmt, 0, "%i", args); vsscanf(fmt, "%i", args); snprintf(fmt, 0, "%i"); }], [], [glibcxx_cv_c99_stdio=yes], [glibcxx_cv_c99_stdio=no]) ]) AC_MSG_RESULT($glibcxx_cv_c99_stdio) # Check for the existence in <stdlib.h> of lldiv_t, et. al. AC_MSG_CHECKING([for ISO C99 support in <stdlib.h>]) AC_CACHE_VAL(glibcxx_cv_c99_stdlib, [ GCC_TRY_COMPILE_OR_LINK( [#include <stdlib.h> volatile float f; volatile long double ld; volatile unsigned long long ll; lldiv_t mydivt;], [char* tmp; f = strtof("gnu", &tmp); ld = strtold("gnu", &tmp); ll = strtoll("gnu", &tmp, 10); ll = strtoull("gnu", &tmp, 10); ll = llabs(10); mydivt = lldiv(10,1); ll = mydivt.quot; ll = mydivt.rem; ll = atoll("10"); _Exit(0); ],[glibcxx_cv_c99_stdlib=yes], [glibcxx_cv_c99_stdlib=no]) ]) AC_MSG_RESULT($glibcxx_cv_c99_stdlib) # Check for the existence in <wchar.h> of wcstold, etc. glibcxx_cv_c99_wchar=no; if test x"$ac_has_wchar_h" = xyes && test x"$ac_has_wctype_h" = xyes; then AC_MSG_CHECKING([for ISO C99 support in <wchar.h>]) AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::wcstold; using ::wcstoll; using ::wcstoull; } ],[],[glibcxx_cv_c99_wchar=yes], [glibcxx_cv_c99_wchar=no]) d1363 11 a1373 42 # Checks for wide character functions that may not be present. # Injection of these is wrapped with guard macros. # NB: only put functions here, instead of immediately above, if # absolutely necessary. AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::vfwscanf; } ], [], [AC_DEFINE(HAVE_VFWSCANF,1, [Defined if vfwscanf exists.])],[]) AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::vswscanf; } ], [], [AC_DEFINE(HAVE_VSWSCANF,1, [Defined if vswscanf exists.])],[]) AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::vwscanf; } ], [], [AC_DEFINE(HAVE_VWSCANF,1,[Defined if vwscanf exists.])],[]) AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::wcstof; } ], [], [AC_DEFINE(HAVE_WCSTOF,1,[Defined if wcstof exists.])],[]) AC_TRY_COMPILE([#include <wctype.h>], [ wint_t t; int i = iswblank(t);], [AC_DEFINE(HAVE_ISWBLANK,1, [Defined if iswblank exists.])],[]) AC_MSG_RESULT($glibcxx_cv_c99_wchar) fi # Option parsed, now set things appropriately. if test x"$glibcxx_cv_c99_math" = x"no" || test x"$glibcxx_cv_c99_complex" = x"no" || test x"$glibcxx_cv_c99_stdio" = x"no" || test x"$glibcxx_cv_c99_stdlib" = x"no" || test x"$glibcxx_cv_c99_wchar" = x"no"; then enable_c99=no; else AC_DEFINE(_GLIBCXX_USE_C99, 1, [Define if C99 functions or macros from <wchar.h>, <math.h>, <complex.h>, <stdio.h>, and <stdlib.h> can be used or exposed.]) fi d1375 4 a1378 4 gcc_no_link="$ac_save_gcc_no_link" LIBS="$ac_save_LIBS" CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE d2045 46 d2156 4 d2175 1 a2175 1 AC_DEFINE(HAVE_GETS, 1, [Define if gets is available in <stdio.h>.]) d2179 1 d2276 51 d2423 1 a2423 1 darwin* | freebsd*) d2426 1 a2426 1 dragonfly*) d2505 1 a2505 1 AC_MSG_RESULT(darwin or freebsd) d2522 1 a2522 1 AC_MSG_RESULT(dragonfly) d2524 1 a2524 1 CLOCALE_H=config/locale/generic/c_locale.h d2526 2 a2527 2 CCODECVT_CC=config/locale/generic/codecvt_members.cc CCOLLATE_CC=config/locale/generic/collate_members.cc d2531 4 a2534 4 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 d2701 2 d2764 1 d2767 8 d2777 1 a2780 1 VTV_CXXLINKFLAGS="-L${toplevel_builddir}/libvtv/.libs -Wl,--rpath -Wl,${toplevel_builddir}/libvtv/.libs" d2915 1 a2915 1 dnl building debug libraries with --enable-debug. d3352 1 a3352 1 __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); d3437 1 a3437 1 __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); d3551 6 a3556 4 # Set atomicity_dir to builtins if all but the long long test above passes. if test $glibcxx_cv_atomic_bool = yes \ && test $glibcxx_cv_atomic_short = yes \ && test $glibcxx_cv_atomic_int = yes; then a3578 73 dnl Check for exception handling support. If an explicit enable/disable dnl sjlj exceptions is given, we don't have to detect. Otherwise the dnl target may or may not support call frame exceptions. dnl dnl --enable-sjlj-exceptions forces the use of builtin setjmp. dnl --disable-sjlj-exceptions forces the use of call frame unwinding. dnl Neither one forces an attempt at detection. dnl dnl Defines: dnl _GLIBCXX_SJLJ_EXCEPTIONS if the compiler is configured for it dnl AC_DEFUN([GLIBCXX_ENABLE_SJLJ_EXCEPTIONS], [ AC_MSG_CHECKING([for exception model to use]) AC_LANG_SAVE AC_LANG_CPLUSPLUS GLIBCXX_ENABLE(sjlj-exceptions,auto,, [force use of builtin_setjmp for exceptions], [permit yes|no|auto]) if test $enable_sjlj_exceptions = auto; then # Botheration. Now we've got to detect the exception model. Link tests # against libgcc.a are problematic since we've not been given proper -L # bits for single-tree newlib and libgloss. # # Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style. cat > conftest.$ac_ext << EOF [#]line __oline__ "configure" struct S { ~S(); }; void bar(); void foo() { S s; bar(); } EOF old_CXXFLAGS="$CXXFLAGS" CXXFLAGS=-S 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 enable_sjlj_exceptions=no fi fi CXXFLAGS="$old_CXXFLAGS" rm -f conftest* fi # This is a tad weird, for hysterical raisins. We have to map # enable/disable to two different models. case $enable_sjlj_exceptions in yes) AC_DEFINE(_GLIBCXX_SJLJ_EXCEPTIONS, 1, [Define if the compiler is configured for setjmp/longjmp exceptions.]) ac_exception_model_name=sjlj ;; no) ac_exception_model_name="call frame" ;; *) AC_MSG_ERROR([unable to detect exception model]) ;; esac AC_LANG_RESTORE AC_MSG_RESULT($ac_exception_model_name) ]) dnl d3760 1 a3760 1 libtool_VERSION=6:21:0 d4456 32 @ 1.3 log @merge GCC 5.3. round 1. this probably won't work :-) libsanitizer likely needs to be re-ported, though i've done most of the updating we'll need i think already. @ text @d1900 2 a1901 1 dnl Check whether required C++11 overloads are present in <math.h>. d1912 4 a1915 4 # Solaris 12 introduced the C++11 <math.h> overloads. A backport to # a Solaris 11.3 SRU is likely, maybe even a Solaris 10 patch. AC_MSG_CHECKING([for C++11 <math.h> overloads]) AC_CACHE_VAL(glibcxx_cv_math11_overload, [ d1924 2 a1925 2 [glibcxx_cv_math11_overload=no], [glibcxx_cv_math11_overload=yes] d1929 2 a1930 2 AH_VERBATIM([__CORRECT_ISO_CPP11_MATH_H_PROTO], [/* Define if all C++11 overloads are available in <math.h>. */ d1932 1 a1932 1 #undef __CORRECT_ISO_CPP11_MATH_H_PROTO d1935 2 a1936 2 if test $glibcxx_cv_math11_overload = yes; then AC_DEFINE(__CORRECT_ISO_CPP11_MATH_H_PROTO) d1938 53 a1990 1 AC_MSG_RESULT([$glibcxx_cv_math11_overload]) d4072 1 d4163 1 a4163 1 [sendfile(1, 2, (off_t*)NULL, sizeof 1);], d4173 1 a4173 1 AC_DEFINE(_GLIBCXX_USE_SENDFILE, 1, [Define if sendfile is available in <sys/stat.h>.]) @ 1.3.8.1 log @Pull up the gcc 5.5 import and assorted fixes, requested by mrg in ticket #381: external/gpl3/gcc/dist/fixincludes/tests/base/iso/stdlib_c99.h up to 1.1.1.1 external/gpl3/gcc/dist/gcc/config/arm/t-phoenix up to 1.1.1.1 external/gpl3/gcc/dist/gcc/config/phoenix.h up to 1.1.1.1 external/gpl3/gcc/dist/gcc/config/aarch64/aarch64-freebsd.h up to 1.1.1.1 external/gpl3/gcc/dist/gcc/config/aarch64/t-aarch64-freebsd up to 1.1.1.1 external/gpl3/gcc/dist/gcc/doc/gcov-dump.1 up to 1.1.1.1 external/gpl3/gcc/dist/gcc/doc/gcov-dump.texi up to 1.1.1.1 external/gpl3/gcc/dist/libstdc++-v3/include/experimental/lfts_config.h up to 1.1.1.1 external/gpl3/gcc/dist/gcc/config/i386/pcommitintrin.h delete external/gpl3/gcc/dist/gcc/config/i386/stringop.opt delete external/gpl3/gcc/lib/libgcc/Makefile.wrapper delete external/gpl3/gcc/dist/ChangeLog up to 1.1.1.10 external/gpl3/gcc/dist/LAST_UPDATED up to 1.9 external/gpl3/gcc/dist/MD5SUMS up to 1.9 external/gpl3/gcc/dist/NEWS up to 1.7 external/gpl3/gcc/dist/config.sub up to 1.11 external/gpl3/gcc/dist/configure up to 1.11 external/gpl3/gcc/dist/configure.ac up to 1.10 external/gpl3/gcc/dist/INSTALL/binaries.html up to 1.5 external/gpl3/gcc/dist/INSTALL/build.html up to 1.6 external/gpl3/gcc/dist/INSTALL/configure.html up to 1.6 external/gpl3/gcc/dist/INSTALL/download.html up to 1.5 external/gpl3/gcc/dist/INSTALL/finalinstall.html up to 1.5 external/gpl3/gcc/dist/INSTALL/gfdl.html up to 1.5 external/gpl3/gcc/dist/INSTALL/index.html up to 1.5 external/gpl3/gcc/dist/INSTALL/old.html up to 1.5 external/gpl3/gcc/dist/INSTALL/prerequisites.html up to 1.6 external/gpl3/gcc/dist/INSTALL/specific.html up to 1.6 external/gpl3/gcc/dist/INSTALL/test.html up to 1.5 external/gpl3/gcc/dist/config/ChangeLog up to 1.1.1.10 external/gpl3/gcc/dist/contrib/ChangeLog up to 1.1.1.10 external/gpl3/gcc/dist/contrib/gcc_update up to 1.1.1.4 external/gpl3/gcc/dist/contrib/reghunt/ChangeLog up to 1.1.1.9 external/gpl3/gcc/dist/contrib/regression/ChangeLog up to 1.1.1.9 external/gpl3/gcc/dist/fixincludes/ChangeLog up to 1.1.1.9 external/gpl3/gcc/dist/fixincludes/fixincl.x up to 1.1.1.6 external/gpl3/gcc/dist/fixincludes/inclhack.def up to 1.1.1.6 external/gpl3/gcc/dist/fixincludes/tests/base/math.h up to 1.1.1.3 external/gpl3/gcc/dist/fixincludes/tests/base/stdio.h up to 1.1.1.5 external/gpl3/gcc/dist/fixincludes/tests/base/stdlib.h up to 1.1.1.3 external/gpl3/gcc/dist/fixincludes/tests/base/iso/stdio_iso.h up to 1.1.1.2 external/gpl3/gcc/dist/gcc/BASE-VER up to 1.1.1.8 external/gpl3/gcc/dist/gcc/ChangeLog up to 1.15 external/gpl3/gcc/dist/gcc/DATESTAMP up to 1.1.1.11 external/gpl3/gcc/dist/gcc/Makefile.in up to 1.14 external/gpl3/gcc/dist/gcc/asan.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/auto-profile.c up to 1.3 external/gpl3/gcc/dist/gcc/bb-reorder.c up to 1.1.1.6 external/gpl3/gcc/dist/gcc/builtins.c up to 1.10 external/gpl3/gcc/dist/gcc/calls.c up to 1.1.1.6 external/gpl3/gcc/dist/gcc/cgraph.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/cgraph.h up to 1.1.1.5 external/gpl3/gcc/dist/gcc/cgraphclones.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/cgraphunit.c up to 1.1.1.6 external/gpl3/gcc/dist/gcc/combine.c up to 1.1.1.8 external/gpl3/gcc/dist/gcc/common.opt up to 1.6 external/gpl3/gcc/dist/gcc/config.gcc up to 1.37 external/gpl3/gcc/dist/gcc/coverage.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/coverage.h up to 1.1.1.4 external/gpl3/gcc/dist/gcc/cselib.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/data-streamer-in.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/data-streamer-out.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/diagnostic.c up to 1.4 external/gpl3/gcc/dist/gcc/dwarf2out.c up to 1.8 external/gpl3/gcc/dist/gcc/explow.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/expmed.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/expr.c up to 1.10 external/gpl3/gcc/dist/gcc/fold-const.c up to 1.1.1.11 external/gpl3/gcc/dist/gcc/function.c up to 1.1.1.7 external/gpl3/gcc/dist/gcc/function.h up to 1.1.1.4 external/gpl3/gcc/dist/gcc/fwprop.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/gcc.c up to 1.15 external/gpl3/gcc/dist/gcc/gcov-dump.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/gcov-io.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/gcov-tool.c up to 1.1.1.2 external/gpl3/gcc/dist/gcc/gcov.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/gcse.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/gengtype-lex.c up to 1.7 external/gpl3/gcc/dist/gcc/genmatch.c up to 1.1.1.2 external/gpl3/gcc/dist/gcc/gimple-fold.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/gimple-ssa-strength-reduction.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/gimplify.c up to 1.1.1.7 external/gpl3/gcc/dist/gcc/graphite-isl-ast-to-gimple.c up to 1.3 external/gpl3/gcc/dist/gcc/incpath.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/internal-fn.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/ipa-comdats.c up to 1.1.1.2 external/gpl3/gcc/dist/gcc/ipa-cp.c up to 1.1.1.8 external/gpl3/gcc/dist/gcc/ipa-devirt.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/ipa-icf-gimple.c up to 1.1.1.2 external/gpl3/gcc/dist/gcc/ipa-icf-gimple.h up to 1.1.1.2 external/gpl3/gcc/dist/gcc/ipa-icf.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/ipa-icf.h up to 1.1.1.2 external/gpl3/gcc/dist/gcc/ipa-inline-transform.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/ipa-polymorphic-call.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/ipa-prop.c up to 1.1.1.7 external/gpl3/gcc/dist/gcc/ipa-pure-const.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/ipa-split.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/ipa-visibility.c up to 1.1.1.2 external/gpl3/gcc/dist/gcc/ira-build.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/ira-costs.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/ira-int.h up to 1.1.1.4 external/gpl3/gcc/dist/gcc/ira-lives.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/loop-doloop.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/loop-invariant.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/lra-constraints.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/lra-remat.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/lto-cgraph.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/lto-streamer.h up to 1.1.1.5 external/gpl3/gcc/dist/gcc/match.pd up to 1.1.1.3 external/gpl3/gcc/dist/gcc/omp-low.c up to 1.1.1.8 external/gpl3/gcc/dist/gcc/params.def up to 1.1.1.5 external/gpl3/gcc/dist/gcc/postreload.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/pretty-print.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/real.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/ree.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/rtl.h up to 1.1.1.6 external/gpl3/gcc/dist/gcc/sel-sched.c up to 1.1.1.6 external/gpl3/gcc/dist/gcc/simplify-rtx.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/system.h up to 1.6 external/gpl3/gcc/dist/gcc/toplev.c up to 1.2 external/gpl3/gcc/dist/gcc/tree-call-cdce.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/tree-cfg.c up to 1.8 external/gpl3/gcc/dist/gcc/tree-chkp-opt.c up to 1.1.1.2 external/gpl3/gcc/dist/gcc/tree-chkp.c up to 1.1.1.2 external/gpl3/gcc/dist/gcc/tree-chrec.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/tree-data-ref.c up to 1.1.1.7 external/gpl3/gcc/dist/gcc/tree-eh.c up to 1.1.1.7 external/gpl3/gcc/dist/gcc/tree-inline.c up to 1.1.1.7 external/gpl3/gcc/dist/gcc/tree-inline.h up to 1.1.1.4 external/gpl3/gcc/dist/gcc/tree-loop-distribution.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/tree-nested.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/tree-predcom.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/tree-profile.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/tree-ssa-ccp.c up to 1.8 external/gpl3/gcc/dist/gcc/tree-ssa-loop-im.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/tree-ssa-loop-ivopts.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/tree-ssa-loop-prefetch.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/tree-ssa-math-opts.c up to 1.1.1.7 external/gpl3/gcc/dist/gcc/tree-ssa-pre.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/tree-ssa-reassoc.c up to 1.1.1.7 external/gpl3/gcc/dist/gcc/tree-ssa-sccvn.c up to 1.1.1.7 external/gpl3/gcc/dist/gcc/tree-ssa-strlen.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/tree-ssa-structalias.c up to 1.1.1.6 external/gpl3/gcc/dist/gcc/tree-ssa-tail-merge.c up to 1.1.1.6 external/gpl3/gcc/dist/gcc/tree-ssa-threadedge.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/tree-ssa-uninit.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/tree-ssa.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/tree-vect-data-refs.c up to 1.1.1.9 external/gpl3/gcc/dist/gcc/tree-vect-loop-manip.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/tree-vrp.c up to 1.1.1.7 external/gpl3/gcc/dist/gcc/tsan.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/ubsan.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/value-prof.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/c/ChangeLog up to 1.1.1.8 external/gpl3/gcc/dist/gcc/c/c-decl.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/c/c-objc-common.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/c/c-parser.c up to 1.1.1.5 external/gpl3/gcc/dist/gcc/c/c-typeck.c up to 1.1.1.7 external/gpl3/gcc/dist/gcc/c-family/ChangeLog up to 1.1.1.7 external/gpl3/gcc/dist/gcc/c-family/c-ada-spec.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/c-family/c-common.c up to 1.1.1.6 external/gpl3/gcc/dist/gcc/c-family/c-cppbuiltin.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/c-family/c-gimplify.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/c-family/c-omp.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/c-family/c-opts.c up to 1.5 external/gpl3/gcc/dist/gcc/common/config/i386/i386-common.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/config/aarch64/aarch64-simd.md up to 1.1.1.4 external/gpl3/gcc/dist/gcc/config/aarch64/aarch64.c up to 1.1.1.8 external/gpl3/gcc/dist/gcc/config/aarch64/aarch64.md up to 1.1.1.6 external/gpl3/gcc/dist/gcc/config/arm/arm-builtins.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/config/arm/arm-protos.h up to 1.1.1.5 external/gpl3/gcc/dist/gcc/config/arm/arm.c up to 1.4 external/gpl3/gcc/dist/gcc/config/arm/arm.h up to 1.15 external/gpl3/gcc/dist/gcc/config/arm/arm.md up to 1.12 external/gpl3/gcc/dist/gcc/config/arm/freebsd.h up to 1.4 external/gpl3/gcc/dist/gcc/config/arm/neon.md up to 1.1.1.5 external/gpl3/gcc/dist/gcc/config/avr/avr.c up to 1.1.1.7 external/gpl3/gcc/dist/gcc/config/avr/avr.md up to 1.1.1.7 external/gpl3/gcc/dist/gcc/config/avr/avr.opt up to 1.1.1.4 external/gpl3/gcc/dist/gcc/config/avr/gen-avr-mmcu-specs.c up to 1.1.1.2 external/gpl3/gcc/dist/gcc/config/avr/gen-avr-mmcu-texi.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/config/i386/avx2intrin.h up to 1.1.1.4 external/gpl3/gcc/dist/gcc/config/i386/avx512bwintrin.h up to 1.1.1.2 external/gpl3/gcc/dist/gcc/config/i386/avx512dqintrin.h up to 1.1.1.2 external/gpl3/gcc/dist/gcc/config/i386/avx512fintrin.h up to 1.1.1.2 external/gpl3/gcc/dist/gcc/config/i386/avx512ifmaintrin.h up to 1.1.1.2 external/gpl3/gcc/dist/gcc/config/i386/avx512ifmavlintrin.h up to 1.1.1.2 external/gpl3/gcc/dist/gcc/config/i386/avx512pfintrin.h up to 1.1.1.2 external/gpl3/gcc/dist/gcc/config/i386/avx512vbmiintrin.h up to 1.1.1.2 external/gpl3/gcc/dist/gcc/config/i386/avx512vbmivlintrin.h up to 1.1.1.2 external/gpl3/gcc/dist/gcc/config/i386/avx512vlbwintrin.h up to 1.1.1.2 external/gpl3/gcc/dist/gcc/config/i386/avx512vldqintrin.h up to 1.1.1.2 external/gpl3/gcc/dist/gcc/config/i386/avx512vlintrin.h up to 1.1.1.2 external/gpl3/gcc/dist/gcc/config/i386/cpuid.h up to 1.4 external/gpl3/gcc/dist/gcc/config/i386/driver-i386.c up to 1.7 external/gpl3/gcc/dist/gcc/config/i386/gmm_malloc.h up to 1.1.1.4 external/gpl3/gcc/dist/gcc/config/i386/i386-builtin-types.def up to 1.1.1.4 external/gpl3/gcc/dist/gcc/config/i386/i386-c.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/config/i386/i386.c up to 1.14 external/gpl3/gcc/dist/gcc/config/i386/i386.h up to 1.6 external/gpl3/gcc/dist/gcc/config/i386/i386.md up to 1.1.1.9 external/gpl3/gcc/dist/gcc/config/i386/i386.opt up to 1.1.1.4 external/gpl3/gcc/dist/gcc/config/i386/ia32intrin.h up to 1.1.1.4 external/gpl3/gcc/dist/gcc/config/i386/lwpintrin.h up to 1.1.1.4 external/gpl3/gcc/dist/gcc/config/i386/mmx.md up to 1.1.1.5 external/gpl3/gcc/dist/gcc/config/i386/pmm_malloc.h up to 1.4 external/gpl3/gcc/dist/gcc/config/i386/rdseedintrin.h up to 1.1.1.3 external/gpl3/gcc/dist/gcc/config/i386/rtmintrin.h up to 1.1.1.3 external/gpl3/gcc/dist/gcc/config/i386/sse.md up to 1.1.1.8 external/gpl3/gcc/dist/gcc/config/i386/x86-64.h up to 1.1.1.4 external/gpl3/gcc/dist/gcc/config/i386/x86intrin.h up to 1.1.1.4 external/gpl3/gcc/dist/gcc/config/nds32/nds32.md up to 1.1.1.2 external/gpl3/gcc/dist/gcc/config/pa/pa-64.h up to 1.1.1.4 external/gpl3/gcc/dist/gcc/config/pa/pa.h up to 1.7 external/gpl3/gcc/dist/gcc/config/rl78/rl78-expand.md up to 1.1.1.3 external/gpl3/gcc/dist/gcc/config/rl78/rl78-real.md up to 1.1.1.3 external/gpl3/gcc/dist/gcc/config/rl78/rl78-virt.md up to 1.1.1.3 external/gpl3/gcc/dist/gcc/config/rs6000/altivec.md up to 1.1.1.9 external/gpl3/gcc/dist/gcc/config/rs6000/dfp.md up to 1.1.1.5 external/gpl3/gcc/dist/gcc/config/rs6000/predicates.md up to 1.1.1.7 external/gpl3/gcc/dist/gcc/config/rs6000/rs6000-c.c up to 1.1.1.8 external/gpl3/gcc/dist/gcc/config/rs6000/rs6000.c up to 1.17 external/gpl3/gcc/dist/gcc/config/rs6000/rs6000.md up to 1.1.1.9 external/gpl3/gcc/dist/gcc/config/rs6000/rs6000.opt up to 1.1.1.6 external/gpl3/gcc/dist/gcc/config/rs6000/vector.md up to 1.1.1.6 external/gpl3/gcc/dist/gcc/config/rs6000/vsx.md up to 1.1.1.10 external/gpl3/gcc/dist/gcc/config/s390/s390-modes.def up to 1.1.1.4 external/gpl3/gcc/dist/gcc/config/s390/s390.c up to 1.1.1.8 external/gpl3/gcc/dist/gcc/config/s390/s390.md up to 1.1.1.6 external/gpl3/gcc/dist/gcc/config/s390/vx-builtins.md up to 1.1.1.3 external/gpl3/gcc/dist/gcc/config/sh/sh-mem.cc up to 1.1.1.2 external/gpl3/gcc/dist/gcc/config/sh/sh.c up to 1.9 external/gpl3/gcc/dist/gcc/config/sh/sh_treg_combine.cc up to 1.1.1.2 external/gpl3/gcc/dist/gcc/config/sparc/sparc.c up to 1.1.1.8 external/gpl3/gcc/dist/gcc/config/sparc/sparc.md up to 1.7 external/gpl3/gcc/dist/gcc/config/xtensa/xtensa.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/config/xtensa/xtensa.h up to 1.1.1.4 external/gpl3/gcc/dist/gcc/config/xtensa/xtensa.md up to 1.1.1.4 external/gpl3/gcc/dist/gcc/cp/ChangeLog up to 1.1.1.11 external/gpl3/gcc/dist/gcc/cp/call.c up to 1.1.1.8 external/gpl3/gcc/dist/gcc/cp/class.c up to 1.1.1.6 external/gpl3/gcc/dist/gcc/cp/constexpr.c up to 1.1.1.3 external/gpl3/gcc/dist/gcc/cp/cp-gimplify.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/cp/decl.c up to 1.1.1.8 external/gpl3/gcc/dist/gcc/cp/error.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/cp/init.c up to 1.1.1.6 external/gpl3/gcc/dist/gcc/cp/mangle.c up to 1.1.1.7 external/gpl3/gcc/dist/gcc/cp/name-lookup.c up to 1.1.1.6 external/gpl3/gcc/dist/gcc/cp/parser.c up to 1.1.1.10 external/gpl3/gcc/dist/gcc/cp/pt.c up to 1.1.1.8 external/gpl3/gcc/dist/gcc/cp/semantics.c up to 1.1.1.9 external/gpl3/gcc/dist/gcc/cp/tree.c up to 1.1.1.7 external/gpl3/gcc/dist/gcc/cp/typeck.c up to 1.1.1.9 external/gpl3/gcc/dist/gcc/doc/aot-compile.1 up to 1.7 external/gpl3/gcc/dist/gcc/doc/cppinternals.info up to 1.7 external/gpl3/gcc/dist/gcc/doc/extend.texi up to 1.1.1.8 external/gpl3/gcc/dist/gcc/doc/fsf-funding.7 up to 1.7 external/gpl3/gcc/dist/gcc/doc/gc-analyze.1 up to 1.7 external/gpl3/gcc/dist/gcc/doc/gcc.texi up to 1.1.1.5 external/gpl3/gcc/dist/gcc/doc/gccinstall.info up to 1.7 external/gpl3/gcc/dist/gcc/doc/gccint.info up to 1.7 external/gpl3/gcc/dist/gcc/doc/gcj-dbtool.1 up to 1.7 external/gpl3/gcc/dist/gcc/doc/gcj.1 up to 1.7 external/gpl3/gcc/dist/gcc/doc/gcj.info up to 1.7 external/gpl3/gcc/dist/gcc/doc/gcov-tool.1 up to 1.1.1.3 external/gpl3/gcc/dist/gcc/doc/gcov-tool.texi up to 1.1.1.2 external/gpl3/gcc/dist/gcc/doc/gcov.texi up to 1.6 external/gpl3/gcc/dist/gcc/doc/generic.texi up to 1.1.1.4 external/gpl3/gcc/dist/gcc/doc/gfdl.7 up to 1.7 external/gpl3/gcc/dist/gcc/doc/gfortran.1 up to 1.7 external/gpl3/gcc/dist/gcc/doc/gij.1 up to 1.7 external/gpl3/gcc/dist/gcc/doc/gpl.7 up to 1.7 external/gpl3/gcc/dist/gcc/doc/grmic.1 up to 1.7 external/gpl3/gcc/dist/gcc/doc/install.texi up to 1.1.1.8 external/gpl3/gcc/dist/gcc/doc/invoke.texi up to 1.12 external/gpl3/gcc/dist/gcc/doc/jcf-dump.1 up to 1.7 external/gpl3/gcc/dist/gcc/doc/jv-convert.1 up to 1.7 external/gpl3/gcc/dist/gcc/doc/lto.texi up to 1.1.1.3 external/gpl3/gcc/dist/gcc/doc/passes.texi up to 1.1.1.4 external/gpl3/gcc/dist/gcc/doc/rebuild-gcj-db.1 up to 1.7 external/gpl3/gcc/dist/gcc/doc/rtl.texi up to 1.1.1.4 external/gpl3/gcc/dist/gcc/jit/ChangeLog up to 1.1.1.3 external/gpl3/gcc/dist/gcc/lto/ChangeLog up to 1.1.1.9 external/gpl3/gcc/dist/gcc/lto/lto-lang.c up to 1.1.1.4 external/gpl3/gcc/dist/gcc/objc/ChangeLog up to 1.1.1.9 external/gpl3/gcc/dist/gcc/objcp/ChangeLog up to 1.1.1.9 external/gpl3/gcc/dist/gnattools/ChangeLog up to 1.1.1.7 external/gpl3/gcc/dist/gotools/ChangeLog up to 1.1.1.3 external/gpl3/gcc/dist/include/ChangeLog up to 1.1.1.9 external/gpl3/gcc/dist/intl/ChangeLog up to 1.1.1.9 external/gpl3/gcc/dist/libbacktrace/ChangeLog up to 1.1.1.8 external/gpl3/gcc/dist/libcc1/ChangeLog up to 1.1.1.3 external/gpl3/gcc/dist/libcpp/ChangeLog up to 1.1.1.9 external/gpl3/gcc/dist/libcpp/line-map.c up to 1.1.1.6 external/gpl3/gcc/dist/libdecnumber/ChangeLog up to 1.1.1.9 external/gpl3/gcc/dist/libgcc/ChangeLog up to 1.1.1.11 external/gpl3/gcc/dist/libgcc/config.host up to 1.16 external/gpl3/gcc/dist/libgcc/libgcc2.c up to 1.1.1.4 external/gpl3/gcc/dist/libgcc/libgcov-driver.c up to 1.1.1.2 external/gpl3/gcc/dist/libgcc/unwind-c.c up to 1.1.1.3 external/gpl3/gcc/dist/libgcc/config/aarch64/linux-unwind.h up to 1.1.1.3 external/gpl3/gcc/dist/libgcc/config/alpha/linux-unwind.h up to 1.1.1.3 external/gpl3/gcc/dist/libgcc/config/arm/unwind-arm.c up to 1.1.1.3 external/gpl3/gcc/dist/libgcc/config/arm/unwind-arm.h up to 1.1.1.3 external/gpl3/gcc/dist/libgcc/config/bfin/linux-unwind.h up to 1.1.1.3 external/gpl3/gcc/dist/libgcc/config/i386/linux-unwind.h up to 1.1.1.3 external/gpl3/gcc/dist/libgcc/config/libbid/ChangeLog up to 1.1.1.9 external/gpl3/gcc/dist/libgcc/config/m68k/linux-unwind.h up to 1.1.1.3 external/gpl3/gcc/dist/libgcc/config/nios2/linux-unwind.h up to 1.1.1.2 external/gpl3/gcc/dist/libgcc/config/pa/linux-unwind.h up to 1.1.1.4 external/gpl3/gcc/dist/libgcc/config/rs6000/t-crtstuff up to 1.1.1.2 external/gpl3/gcc/dist/libgcc/config/sh/linux-unwind.h up to 1.1.1.3 external/gpl3/gcc/dist/libgcc/config/sparc/lb1spc.S up to 1.1.1.2 external/gpl3/gcc/dist/libgcc/config/tilepro/linux-unwind.h up to 1.1.1.3 external/gpl3/gcc/dist/libgcc/config/xtensa/ieee754-df.S up to 1.1.1.3 external/gpl3/gcc/dist/libgcc/config/xtensa/ieee754-sf.S up to 1.1.1.3 external/gpl3/gcc/dist/libgcc/config/xtensa/linux-unwind.h up to 1.1.1.3 external/gpl3/gcc/dist/libgcc/config/xtensa/t-elf up to 1.1.1.2 external/gpl3/gcc/dist/libgcc/config/xtensa/t-linux up to 1.1.1.2 external/gpl3/gcc/dist/libgcc/config/xtensa/t-windowed up to 1.1.1.2 external/gpl3/gcc/dist/libgcc/config/xtensa/unwind-dw2-xtensa.c up to 1.4 external/gpl3/gcc/dist/libgomp/ChangeLog up to 1.1.1.9 external/gpl3/gcc/dist/libgomp/env.c up to 1.1.1.4 external/gpl3/gcc/dist/libgomp/hashtab.h up to 1.1.1.2 external/gpl3/gcc/dist/libgomp/libgomp.info up to 1.7 external/gpl3/gcc/dist/libiberty/ChangeLog up to 1.1.1.9 external/gpl3/gcc/dist/libiberty/cp-demangle.c up to 1.1.1.5 external/gpl3/gcc/dist/libiberty/vprintf-support.c up to 1.2 external/gpl3/gcc/dist/libitm/ChangeLog up to 1.1.1.7 external/gpl3/gcc/dist/libitm/libitm.info up to 1.1.1.6 external/gpl3/gcc/dist/libobjc/ChangeLog up to 1.1.1.10 external/gpl3/gcc/dist/libsanitizer/ChangeLog up to 1.1.1.7 external/gpl3/gcc/dist/libsanitizer/asan/asan_globals.cc up to 1.1.1.3 external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc up to 1.5 external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc up to 1.9 external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.h up to 1.3 external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc up to 1.6 external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h up to 1.10 external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_procmaps_netbsd.cc up to 1.3 external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc up to 1.1.1.2 external/gpl3/gcc/dist/libsanitizer/tsan/tsan_platform_linux.cc up to 1.3 external/gpl3/gcc/dist/libsanitizer/tsan/tsan_rtl.cc up to 1.1.1.3 external/gpl3/gcc/dist/libssp/ChangeLog up to 1.1.1.9 external/gpl3/gcc/dist/libstdc++-v3/ChangeLog up to 1.1.1.11 external/gpl3/gcc/dist/libstdc++-v3/acinclude.m4 up to 1.4 external/gpl3/gcc/dist/libstdc++-v3/config.h.in up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/configure up to 1.8 external/gpl3/gcc/dist/libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/config/io/basic_file_stdio.cc up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/config/os/mingw32-w64/error_constants.h up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/doc/doxygen/mainpage.html up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/doc/html/api.html up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/doc/html/faq.html up to 1.1.1.5 external/gpl3/gcc/dist/libstdc++-v3/doc/html/ext/lwg-active.html up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/doc/html/ext/lwg-closed.html up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/doc/html/ext/lwg-defects.html up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/abi.html up to 1.1.1.6 external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/bugs.html up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/ext_demangling.html up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/memory.html up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/mt_allocator_impl.html up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/source_code_style.html up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/source_organization.html up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/doc/html/manual/status.html up to 1.1.1.6 external/gpl3/gcc/dist/libstdc++-v3/doc/xml/api.xml up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/doc/xml/faq.xml up to 1.1.1.5 external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/abi.xml up to 1.1.1.5 external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/allocator.xml up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/appendix_contributing.xml up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/extensions.xml up to 1.1.1.5 external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/intro.xml up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/mt_allocator.xml up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/status_cxx2011.xml up to 1.1.1.5 external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/status_cxx2014.xml up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/include/Makefile.am up to 1.1.1.5 external/gpl3/gcc/dist/libstdc++-v3/include/Makefile.in up to 1.1.1.5 external/gpl3/gcc/dist/libstdc++-v3/include/bits/allocator.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/basic_ios.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/basic_string.h up to 1.1.1.5 external/gpl3/gcc/dist/libstdc++-v3/include/bits/basic_string.tcc up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/c++config up to 1.1.1.5 external/gpl3/gcc/dist/libstdc++-v3/include/bits/hashtable.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/ios_base.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/istream.tcc up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/list.tcc up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/locale_classes.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/locale_conv.h up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/include/bits/mask_array.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/predefined_ops.h up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/include/bits/regex.h up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/include/bits/regex.tcc up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/include/bits/regex_compiler.h up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/include/bits/shared_ptr_base.h up to 1.1.1.6 external/gpl3/gcc/dist/libstdc++-v3/include/bits/slice_array.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/sstream.tcc up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/stl_iterator.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/stl_map.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/stl_multimap.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/stl_multiset.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/stl_set.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/stl_stack.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/bits/stl_tree.h up to 1.1.1.5 external/gpl3/gcc/dist/libstdc++-v3/include/bits/uniform_int_dist.h up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/include/bits/unique_ptr.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/c_global/cmath up to 1.1.1.5 external/gpl3/gcc/dist/libstdc++-v3/include/debug/safe_iterator.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/debug/string up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/experimental/algorithm up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/include/experimental/any up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/include/experimental/chrono up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/include/experimental/fs_dir.h up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/include/experimental/fs_fwd.h up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/include/experimental/fs_ops.h up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/include/experimental/fs_path.h up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/include/experimental/functional up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/include/experimental/optional up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/include/experimental/ratio up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/include/experimental/string_view up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/include/experimental/string_view.tcc up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/include/experimental/system_error up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/include/experimental/tuple up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/include/experimental/type_traits up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/include/ext/new_allocator.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/ext/pointer.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/std/atomic up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/std/chrono up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/std/complex up to 1.5 external/gpl3/gcc/dist/libstdc++-v3/include/std/functional up to 1.1.1.7 external/gpl3/gcc/dist/libstdc++-v3/include/std/istream up to 1.1.1.5 external/gpl3/gcc/dist/libstdc++-v3/include/std/scoped_allocator up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/std/sstream up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/std/thread up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/std/tuple up to 1.1.1.6 external/gpl3/gcc/dist/libstdc++-v3/include/std/utility up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/include/tr1/cmath up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/libsupc++/cxxabi.h up to 1.1.1.4 external/gpl3/gcc/dist/libstdc++-v3/python/libstdcxx/v6/printers.py up to 1.1.1.5 external/gpl3/gcc/dist/libstdc++-v3/python/libstdcxx/v6/xmethods.py up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/src/c++11/codecvt.cc up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/src/c++11/cxx11-shim_facets.cc up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/src/c++11/shared_ptr.cc up to 1.1.1.3 external/gpl3/gcc/dist/libstdc++-v3/src/filesystem/Makefile.in up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/src/filesystem/dir.cc up to 1.1.1.2 external/gpl3/gcc/dist/libstdc++-v3/src/filesystem/ops.cc up to 1.1.1.3 external/gpl3/gcc/dist/lto-plugin/ChangeLog up to 1.1.1.9 external/gpl3/gcc/dist/lto-plugin/lto-plugin.c up to 1.1.1.4 external/gpl3/gcc/dist/maintainer-scripts/ChangeLog up to 1.1.1.10 external/gpl3/gcc/lib/libasan/Makefile up to 1.18 external/gpl3/gcc/lib/libgcc/arch/i386/defs.mk up to 1.5 external/gpl3/gcc/lib/libgcc/arch/m68000/defs.mk up to 1.7 external/gpl3/gcc/lib/libgcc/arch/x86_64/defs.mk up to 1.4 external/gpl3/gcc/lib/libgcc/libgcc/Makefile up to 1.28 external/gpl3/gcc/lib/libgcc/libgcov/arch/alpha/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/arm/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/armeb/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/earm/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/earmeb/gcov-iov.h up to 1.9 external/gpl3/gcc/lib/libgcc/libgcov/arch/earmhf/gcov-iov.h up to 1.9 external/gpl3/gcc/lib/libgcc/libgcov/arch/earmhfeb/gcov-iov.h up to 1.9 external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv4/gcov-iov.h up to 1.9 external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv4eb/gcov-iov.h up to 1.9 external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv6/gcov-iov.h up to 1.9 external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv6eb/gcov-iov.h up to 1.9 external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv6hf/gcov-iov.h up to 1.9 external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv6hfeb/gcov-iov.h up to 1.9 external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv7/gcov-iov.h up to 1.9 external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv7eb/gcov-iov.h up to 1.9 external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv7hf/gcov-iov.h up to 1.9 external/gpl3/gcc/lib/libgcc/libgcov/arch/earmv7hfeb/gcov-iov.h up to 1.9 external/gpl3/gcc/lib/libgcc/libgcov/arch/hppa/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/i386/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/ia64/gcov-iov.h up to 1.5 external/gpl3/gcc/lib/libgcc/libgcov/arch/m68000/gcov-iov.h up to 1.9 external/gpl3/gcc/lib/libgcc/libgcov/arch/m68k/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/mips64eb/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/mips64el/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/mipseb/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/mipsel/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/powerpc/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/powerpc64/gcov-iov.h up to 1.6 external/gpl3/gcc/lib/libgcc/libgcov/arch/sh3eb/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/sh3el/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/sparc/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/sparc64/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/vax/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libgcc/libgcov/arch/x86_64/gcov-iov.h up to 1.10 external/gpl3/gcc/lib/libiberty/defs.mk up to 1.14 external/gpl3/gcc/lib/libiberty/arch/ia64/config.h up to 1.6 external/gpl3/gcc/lib/liblto_plugin/Makefile up to 1.9 external/gpl3/gcc/lib/libstdc++-v3/Makefile up to 1.28 external/gpl3/gcc/lib/libstdc++-v3/arch/alpha/c++config.h up to 1.21 external/gpl3/gcc/lib/libstdc++-v3/arch/alpha/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/alpha/gstdint.h up to 1.14 external/gpl3/gcc/lib/libstdc++-v3/arch/arm/c++config.h up to 1.23 external/gpl3/gcc/lib/libstdc++-v3/arch/arm/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/arm/gstdint.h up to 1.14 external/gpl3/gcc/lib/libstdc++-v3/arch/armeb/c++config.h up to 1.23 external/gpl3/gcc/lib/libstdc++-v3/arch/armeb/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/armeb/gstdint.h up to 1.15 external/gpl3/gcc/lib/libstdc++-v3/arch/coldfire/defs.mk up to 1.6 external/gpl3/gcc/lib/libstdc++-v3/arch/earm/c++config.h up to 1.21 external/gpl3/gcc/lib/libstdc++-v3/arch/earm/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/earm/gstdint.h up to 1.15 external/gpl3/gcc/lib/libstdc++-v3/arch/earmeb/c++config.h up to 1.19 external/gpl3/gcc/lib/libstdc++-v3/arch/earmeb/defs.mk up to 1.6 external/gpl3/gcc/lib/libstdc++-v3/arch/earmeb/gstdint.h up to 1.14 external/gpl3/gcc/lib/libstdc++-v3/arch/earmhf/c++config.h up to 1.19 external/gpl3/gcc/lib/libstdc++-v3/arch/earmhf/defs.mk up to 1.7 external/gpl3/gcc/lib/libstdc++-v3/arch/earmhf/gstdint.h up to 1.14 external/gpl3/gcc/lib/libstdc++-v3/arch/earmhfeb/c++config.h up to 1.17 external/gpl3/gcc/lib/libstdc++-v3/arch/earmhfeb/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/earmhfeb/gstdint.h up to 1.14 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4/c++config.h up to 1.16 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4/gstdint.h up to 1.14 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4eb/c++config.h up to 1.16 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4eb/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv4eb/gstdint.h up to 1.14 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6/c++config.h up to 1.16 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6/gstdint.h up to 1.14 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6eb/c++config.h up to 1.16 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6eb/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6eb/gstdint.h up to 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hf/c++config.h up to 1.16 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hf/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hf/gstdint.h up to 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hfeb/c++config.h up to 1.16 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hfeb/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv6hfeb/gstdint.h up to 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7/c++config.h up to 1.16 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7/gstdint.h up to 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7eb/c++config.h up to 1.16 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7eb/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7eb/gstdint.h up to 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hf/c++config.h up to 1.16 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hf/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hf/gstdint.h up to 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hfeb/c++config.h up to 1.16 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hfeb/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/earmv7hfeb/gstdint.h up to 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/hppa/c++config.h up to 1.21 external/gpl3/gcc/lib/libstdc++-v3/arch/hppa/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/hppa/gstdint.h up to 1.14 external/gpl3/gcc/lib/libstdc++-v3/arch/i386/c++config.h up to 1.22 external/gpl3/gcc/lib/libstdc++-v3/arch/i386/defs.mk up to 1.7 external/gpl3/gcc/lib/libstdc++-v3/arch/i386/gstdint.h up to 1.14 external/gpl3/gcc/lib/libstdc++-v3/arch/ia64/c++config.h up to 1.7 external/gpl3/gcc/lib/libstdc++-v3/arch/ia64/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/ia64/gstdint.h up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/m68000/c++config.h up to 1.16 external/gpl3/gcc/lib/libstdc++-v3/arch/m68000/defs.mk up to 1.7 external/gpl3/gcc/lib/libstdc++-v3/arch/m68000/gstdint.h up to 1.9 external/gpl3/gcc/lib/libstdc++-v3/arch/m68k/c++config.h up to 1.21 external/gpl3/gcc/lib/libstdc++-v3/arch/m68k/defs.mk up to 1.6 external/gpl3/gcc/lib/libstdc++-v3/arch/m68k/gstdint.h up to 1.12 external/gpl3/gcc/lib/libstdc++-v3/arch/mips64eb/c++config.h up to 1.21 external/gpl3/gcc/lib/libstdc++-v3/arch/mips64eb/defs.mk up to 1.6 external/gpl3/gcc/lib/libstdc++-v3/arch/mips64eb/gstdint.h up to 1.12 external/gpl3/gcc/lib/libstdc++-v3/arch/mips64el/c++config.h up to 1.20 external/gpl3/gcc/lib/libstdc++-v3/arch/mips64el/defs.mk up to 1.6 external/gpl3/gcc/lib/libstdc++-v3/arch/mips64el/gstdint.h up to 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/mipseb/c++config.h up to 1.23 external/gpl3/gcc/lib/libstdc++-v3/arch/mipseb/defs.mk up to 1.6 external/gpl3/gcc/lib/libstdc++-v3/arch/mipseb/gstdint.h up to 1.12 external/gpl3/gcc/lib/libstdc++-v3/arch/mipsel/c++config.h up to 1.21 external/gpl3/gcc/lib/libstdc++-v3/arch/mipsel/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/mipsel/gstdint.h up to 1.12 external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc/c++config.h up to 1.22 external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc/gstdint.h up to 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc64/c++config.h up to 1.10 external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc64/defs.mk up to 1.6 external/gpl3/gcc/lib/libstdc++-v3/arch/powerpc64/gstdint.h up to 1.7 external/gpl3/gcc/lib/libstdc++-v3/arch/sh3eb/c++config.h up to 1.21 external/gpl3/gcc/lib/libstdc++-v3/arch/sh3eb/defs.mk up to 1.7 external/gpl3/gcc/lib/libstdc++-v3/arch/sh3eb/gstdint.h up to 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/sh3el/c++config.h up to 1.23 external/gpl3/gcc/lib/libstdc++-v3/arch/sh3el/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/sh3el/gstdint.h up to 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/sparc/c++config.h up to 1.22 external/gpl3/gcc/lib/libstdc++-v3/arch/sparc/defs.mk up to 1.5 external/gpl3/gcc/lib/libstdc++-v3/arch/sparc/gstdint.h up to 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/sparc64/c++config.h up to 1.21 external/gpl3/gcc/lib/libstdc++-v3/arch/sparc64/defs.mk up to 1.6 external/gpl3/gcc/lib/libstdc++-v3/arch/sparc64/gstdint.h up to 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/vax/c++config.h up to 1.23 external/gpl3/gcc/lib/libstdc++-v3/arch/vax/defs.mk up to 1.7 external/gpl3/gcc/lib/libstdc++-v3/arch/vax/gstdint.h up to 1.13 external/gpl3/gcc/lib/libstdc++-v3/arch/x86_64/c++config.h up to 1.25 external/gpl3/gcc/lib/libstdc++-v3/arch/x86_64/defs.mk up to 1.7 external/gpl3/gcc/lib/libstdc++-v3/arch/x86_64/gstdint.h up to 1.15 external/gpl3/gcc/lib/libstdc++-v3/include/bits/Makefile up to 1.19 external/gpl3/gcc/lib/libubsan/Makefile up to 1.3 external/gpl3/gcc/usr.bin/Makefile.backend up to 1.6 external/gpl3/gcc/usr.bin/Makefile.inc up to 1.29 external/gpl3/gcc/usr.bin/backend/Makefile up to 1.39 external/gpl3/gcc/usr.bin/common/Makefile up to 1.5 external/gpl3/gcc/usr.bin/frontend/Makefile up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/alpha/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/alpha/configargs.h up to 1.23 external/gpl3/gcc/usr.bin/gcc/arch/alpha/defs.mk up to 1.10 external/gpl3/gcc/usr.bin/gcc/arch/alpha/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/arm/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/arm/configargs.h up to 1.26 external/gpl3/gcc/usr.bin/gcc/arch/arm/defs.mk up to 1.12 external/gpl3/gcc/usr.bin/gcc/arch/arm/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/armeb/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/armeb/configargs.h up to 1.27 external/gpl3/gcc/usr.bin/gcc/arch/armeb/defs.mk up to 1.12 external/gpl3/gcc/usr.bin/gcc/arch/armeb/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/earm/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/earm/configargs.h up to 1.24 external/gpl3/gcc/usr.bin/gcc/arch/earm/defs.mk up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/earm/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/earmeb/bversion.h up to 1.7 external/gpl3/gcc/usr.bin/gcc/arch/earmeb/configargs.h up to 1.20 external/gpl3/gcc/usr.bin/gcc/arch/earmeb/defs.mk up to 1.10 external/gpl3/gcc/usr.bin/gcc/arch/earmeb/plugin-version.h up to 1.10 external/gpl3/gcc/usr.bin/gcc/arch/earmhf/bversion.h up to 1.7 external/gpl3/gcc/usr.bin/gcc/arch/earmhf/configargs.h up to 1.21 external/gpl3/gcc/usr.bin/gcc/arch/earmhf/defs.mk up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/earmhf/plugin-version.h up to 1.10 external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/bversion.h up to 1.7 external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/configargs.h up to 1.19 external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/defs.mk up to 1.9 external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/plugin-version.h up to 1.10 external/gpl3/gcc/usr.bin/gcc/arch/earmv4/bversion.h up to 1.7 external/gpl3/gcc/usr.bin/gcc/arch/earmv4/configargs.h up to 1.18 external/gpl3/gcc/usr.bin/gcc/arch/earmv4/defs.mk up to 1.9 external/gpl3/gcc/usr.bin/gcc/arch/earmv4/plugin-version.h up to 1.10 external/gpl3/gcc/usr.bin/gcc/arch/earmv4eb/bversion.h up to 1.7 external/gpl3/gcc/usr.bin/gcc/arch/earmv4eb/configargs.h up to 1.18 external/gpl3/gcc/usr.bin/gcc/arch/earmv4eb/defs.mk up to 1.9 external/gpl3/gcc/usr.bin/gcc/arch/earmv4eb/plugin-version.h up to 1.10 external/gpl3/gcc/usr.bin/gcc/arch/earmv6/bversion.h up to 1.7 external/gpl3/gcc/usr.bin/gcc/arch/earmv6/configargs.h up to 1.18 external/gpl3/gcc/usr.bin/gcc/arch/earmv6/defs.mk up to 1.9 external/gpl3/gcc/usr.bin/gcc/arch/earmv6/plugin-version.h up to 1.10 external/gpl3/gcc/usr.bin/gcc/arch/earmv6eb/bversion.h up to 1.7 external/gpl3/gcc/usr.bin/gcc/arch/earmv6eb/configargs.h up to 1.18 external/gpl3/gcc/usr.bin/gcc/arch/earmv6eb/defs.mk up to 1.9 external/gpl3/gcc/usr.bin/gcc/arch/earmv6eb/plugin-version.h up to 1.10 external/gpl3/gcc/usr.bin/gcc/arch/earmv6hf/bversion.h up to 1.7 external/gpl3/gcc/usr.bin/gcc/arch/earmv6hf/configargs.h up to 1.18 external/gpl3/gcc/usr.bin/gcc/arch/earmv6hf/defs.mk up to 1.9 external/gpl3/gcc/usr.bin/gcc/arch/earmv6hf/plugin-version.h up to 1.10 external/gpl3/gcc/usr.bin/gcc/arch/earmv6hfeb/bversion.h up to 1.7 external/gpl3/gcc/usr.bin/gcc/arch/earmv6hfeb/configargs.h up to 1.18 external/gpl3/gcc/usr.bin/gcc/arch/earmv6hfeb/defs.mk up to 1.9 external/gpl3/gcc/usr.bin/gcc/arch/earmv6hfeb/plugin-version.h up to 1.10 external/gpl3/gcc/usr.bin/gcc/arch/earmv7/bversion.h up to 1.7 external/gpl3/gcc/usr.bin/gcc/arch/earmv7/configargs.h up to 1.18 external/gpl3/gcc/usr.bin/gcc/arch/earmv7/defs.mk up to 1.9 external/gpl3/gcc/usr.bin/gcc/arch/earmv7/plugin-version.h up to 1.10 external/gpl3/gcc/usr.bin/gcc/arch/earmv7eb/bversion.h up to 1.7 external/gpl3/gcc/usr.bin/gcc/arch/earmv7eb/configargs.h up to 1.18 external/gpl3/gcc/usr.bin/gcc/arch/earmv7eb/defs.mk up to 1.9 external/gpl3/gcc/usr.bin/gcc/arch/earmv7eb/plugin-version.h up to 1.10 external/gpl3/gcc/usr.bin/gcc/arch/earmv7hf/bversion.h up to 1.7 external/gpl3/gcc/usr.bin/gcc/arch/earmv7hf/configargs.h up to 1.18 external/gpl3/gcc/usr.bin/gcc/arch/earmv7hf/defs.mk up to 1.9 external/gpl3/gcc/usr.bin/gcc/arch/earmv7hf/plugin-version.h up to 1.10 external/gpl3/gcc/usr.bin/gcc/arch/earmv7hfeb/bversion.h up to 1.7 external/gpl3/gcc/usr.bin/gcc/arch/earmv7hfeb/configargs.h up to 1.18 external/gpl3/gcc/usr.bin/gcc/arch/earmv7hfeb/defs.mk up to 1.9 external/gpl3/gcc/usr.bin/gcc/arch/earmv7hfeb/plugin-version.h up to 1.10 external/gpl3/gcc/usr.bin/gcc/arch/hppa/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/hppa/configargs.h up to 1.24 external/gpl3/gcc/usr.bin/gcc/arch/hppa/defs.mk up to 1.12 external/gpl3/gcc/usr.bin/gcc/arch/hppa/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/i386/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/i386/configargs.h up to 1.31 external/gpl3/gcc/usr.bin/gcc/arch/i386/defs.mk up to 1.12 external/gpl3/gcc/usr.bin/gcc/arch/i386/i386-builtin-types.inc up to 1.4 external/gpl3/gcc/usr.bin/gcc/arch/i386/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/ia64/auto-host.h up to 1.5 external/gpl3/gcc/usr.bin/gcc/arch/ia64/bversion.h up to 1.5 external/gpl3/gcc/usr.bin/gcc/arch/ia64/configargs.h up to 1.6 external/gpl3/gcc/usr.bin/gcc/arch/ia64/defs.mk up to 1.5 external/gpl3/gcc/usr.bin/gcc/arch/ia64/plugin-version.h up to 1.5 external/gpl3/gcc/usr.bin/gcc/arch/m68000/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/m68000/configargs.h up to 1.18 external/gpl3/gcc/usr.bin/gcc/arch/m68000/defs.mk up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/m68000/plugin-version.h up to 1.9 external/gpl3/gcc/usr.bin/gcc/arch/m68k/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/m68k/configargs.h up to 1.21 external/gpl3/gcc/usr.bin/gcc/arch/m68k/defs.mk up to 1.12 external/gpl3/gcc/usr.bin/gcc/arch/m68k/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/configargs.h up to 1.22 external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/defs.mk up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/mips64eb/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/mips64el/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/mips64el/configargs.h up to 1.23 external/gpl3/gcc/usr.bin/gcc/arch/mips64el/defs.mk up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/mips64el/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/mipseb/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/mipseb/configargs.h up to 1.22 external/gpl3/gcc/usr.bin/gcc/arch/mipseb/defs.mk up to 1.12 external/gpl3/gcc/usr.bin/gcc/arch/mipseb/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/mipsel/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/mipsel/configargs.h up to 1.23 external/gpl3/gcc/usr.bin/gcc/arch/mipsel/defs.mk up to 1.12 external/gpl3/gcc/usr.bin/gcc/arch/mipsel/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/powerpc/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/powerpc/configargs.h up to 1.28 external/gpl3/gcc/usr.bin/gcc/arch/powerpc/defs.mk up to 1.13 external/gpl3/gcc/usr.bin/gcc/arch/powerpc/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/powerpc64/bversion.h up to 1.5 external/gpl3/gcc/usr.bin/gcc/arch/powerpc64/configargs.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/powerpc64/defs.mk up to 1.6 external/gpl3/gcc/usr.bin/gcc/arch/powerpc64/plugin-version.h up to 1.5 external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/configargs.h up to 1.24 external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/defs.mk up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/sh3eb/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/sh3el/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/sh3el/configargs.h up to 1.26 external/gpl3/gcc/usr.bin/gcc/arch/sh3el/defs.mk up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/sh3el/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/sparc/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/sparc/configargs.h up to 1.26 external/gpl3/gcc/usr.bin/gcc/arch/sparc/defs.mk up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/sparc/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/sparc64/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/sparc64/configargs.h up to 1.26 external/gpl3/gcc/usr.bin/gcc/arch/sparc64/defs.mk up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/sparc64/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/vax/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/vax/configargs.h up to 1.24 external/gpl3/gcc/usr.bin/gcc/arch/vax/defs.mk up to 1.12 external/gpl3/gcc/usr.bin/gcc/arch/vax/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/gcc/arch/x86_64/bversion.h up to 1.8 external/gpl3/gcc/usr.bin/gcc/arch/x86_64/configargs.h up to 1.33 external/gpl3/gcc/usr.bin/gcc/arch/x86_64/defs.mk up to 1.13 external/gpl3/gcc/usr.bin/gcc/arch/x86_64/i386-builtin-types.inc up to 1.4 external/gpl3/gcc/usr.bin/gcc/arch/x86_64/plugin-version.h up to 1.11 external/gpl3/gcc/usr.bin/include/arch/i386.mk up to 1.3 external/gpl3/gcc/usr.bin/include/arch/x86_64.mk up to 1.3 external/gpl3/gcc/usr.bin/libcpp/arch/ia64/config.h up to 1.4 distrib/sets/lists/comp/md.amd64 1.252 distrib/sets/lists/comp/md.i386 1.175 distrib/sets/lists/comp/shl.mi 1.309 distrib/sets/lists/debug/shl.mi 1.187 external/gpl3/gcc/lib/liblto_plugin/Makefile 1.6 lib/libc/stdlib/jemalloc.c 1.43 Update gcc to gcc 5.5. Bump lib minor for liblto_plugin.so link with -liberty. The HPPA architectures (1.1 and 2.0) both define quadruple-word (128-bit) floating point types. Adjust alignment to match. @ text @d1900 1 a1900 2 dnl Check whether required C++11 overloads for floating point and integral dnl types are present in <math.h>. d1911 4 a1914 4 # Solaris 12 Build 86, Solaris 11.3 SRU 3.6, and Solaris 10 Patch # 11996[67]-02 introduced the C++11 <math.h> floating point overloads. AC_MSG_CHECKING([for C++11 <math.h> floating point overloads]) AC_CACHE_VAL(glibcxx_cv_math11_fp_overload, [ d1923 2 a1924 2 [glibcxx_cv_math11_fp_overload=no], [glibcxx_cv_math11_fp_overload=yes] d1928 2 a1929 2 AH_VERBATIM([__CORRECT_ISO_CPP11_MATH_H_PROTO_FP], [/* Define if all C++11 floating point overloads are available in <math.h>. */ d1931 1 a1931 1 #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP d1934 2 a1935 2 if test $glibcxx_cv_math11_fp_overload = yes; then AC_DEFINE(__CORRECT_ISO_CPP11_MATH_H_PROTO_FP) d1937 1 a1937 53 AC_MSG_RESULT([$glibcxx_cv_math11_fp_overload]) # Solaris 12 Build 90, Solaris 11.3 SRU 5.6, and Solaris 10 Patch # 11996[67]-02 introduced the C++11 <math.h> integral type overloads. AC_MSG_CHECKING([for C++11 <math.h> integral type overloads]) AC_CACHE_VAL(glibcxx_cv_math11_int_overload, [ AC_COMPILE_IFELSE([AC_LANG_SOURCE( [#include <math.h> namespace std { template<typename _Tp> struct __is_integer; template<> struct __is_integer<int> { enum { __value = 1 }; }; } namespace __gnu_cxx { template<bool, typename> struct __enable_if; template<typename _Tp> struct __enable_if<true, _Tp> { typedef _Tp __type; }; } namespace std { template<typename _Tp> constexpr typename __gnu_cxx::__enable_if <__is_integer<_Tp>::__value, double>::__type log2(_Tp __x) { return __builtin_log2(__x); } } int main (void) { int i = 1000; return std::log2(i); } ])], [glibcxx_cv_math11_int_overload=no], [glibcxx_cv_math11_int_overload=yes] )]) # autoheader cannot handle indented templates. AH_VERBATIM([__CORRECT_ISO_CPP11_MATH_H_PROTO_INT], [/* Define if all C++11 integral type overloads are available in <math.h>. */ #if __cplusplus >= 201103L #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT #endif]) if test $glibcxx_cv_math11_int_overload = yes; then AC_DEFINE(__CORRECT_ISO_CPP11_MATH_H_PROTO_INT) fi AC_MSG_RESULT([$glibcxx_cv_math11_int_overload]) a4018 1 #include <limits.h> d4109 1 a4109 1 [sendfile(1, 2, (off_t*)0, sizeof 1);], d4119 1 a4119 1 AC_DEFINE(_GLIBCXX_USE_SENDFILE, 1, [Define if sendfile is available in <sys/sendfile.h>.]) @ 1.2 log @don't look for po/Makefile. @ text @d52 1 a52 1 m4_define([glibcxx_SUBDIRS],[include libsupc++ python src src/c++98 src/c++11 doc testsuite]) d874 2 a875 1 dnl See docs/html/17_intro/configury.html#enable for documentation. d925 1 a925 1 # Long term, -std=c++0x could be even better, could manage to explicitely d1055 2 a1056 2 }], [snprintf("12", 0, "%i");], d1165 3 a1167 2 dnl not always desirable because, in glibc, for example, in turn it dnl triggers the linking of libpthread too, which activates locking, d1180 1 a1180 2 AC_MSG_CHECKING([for clock_gettime, nanosleep and sched_yield]) GLIBCXX_ENABLE(libstdcxx-time,$1,[[[=KIND]]], d1192 2 a1193 1 AC_MSG_RESULT($enable_libstdcxx_time) d1195 50 a1244 1 if test x"$enable_libstdcxx_time" != x"no"; then d1268 1 a1268 2 AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1, [ Defined if sched_yield is available. ]) d1273 1 a1273 2 AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1, [ Defined if sched_yield is available. ]) d1277 1 a1277 2 AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1, [ Defined if sched_yield is available. ]) d1360 5 d1780 1 a1780 1 # Check for the existence of whcar_t <inttypes.h> functions (NB: doesn't d1900 46 d2038 3 d2133 17 d2354 42 d3218 2 d3432 1 a3432 1 libtool_VERSION=6:19:0 d3602 1 a3602 19 ], [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]) d3612 7 d3839 27 d3872 1 a3872 1 AC_MSG_RESULT([for suitable sys/sdt.h]) d3897 230 @ 1.1 log @Initial revision @ text @a0 1 d38 1 d52 1 a52 1 m4_define([glibcxx_SUBDIRS],[include libsupc++ python src doc po testsuite]) d63 1 d67 1 d74 1 a74 1 [configuring in a subdirectory])) d78 1 a78 1 [configuring with a cross compiler])) d82 1 a82 1 [assume newlib as a system C library])) d100 2 a101 2 # Check for uClibc since Linux platforms use different configuration # directories depending on the C library in use. d109 7 d172 32 d257 1 a257 1 $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'` d269 1 a269 1 if test x"$with_gnu_ld" = x"yes" && d340 1 a340 1 dnl _GLIBCXX_RES_LIMITS if we can set artificial resource limits d353 1 a353 1 [Only used in build directory testsuite_hooks.h.]) d361 2 a362 2 [], [setrlimit_have_headers=no]) d376 7 a382 7 [#include <unistd.h> #include <sys/time.h> #include <sys/resource.h> ], [struct rlimit r; setrlimit(0, &r);], [glibcxx_cv_setrlimit=yes], [glibcxx_cv_setrlimit=no]) d390 2 a391 2 [Define if using setrlimit to set resource limits during "make check"]) d431 2 a432 2 AC_DEFINE(HAVE_S_ISREG, 1, [Define if S_IFREG is available in <sys/stat.h>.]) d436 1 a436 1 [Define if S_IFREG is available in <sys/stat.h>.]) d530 4 a533 4 [#include <stdint.h> template<typename, typename> struct same { enum { value = -1 }; }; template<typename Tp> struct same<Tp, Tp> { enum { value = 1 }; }; int array[same<int64_t, long>::value];], [], d545 4 a548 4 [#include <stdint.h> template<typename, typename> struct same { enum { value = -1 }; }; template<typename Tp> struct same<Tp, Tp> { enum { value = 1 }; }; int array[same<int64_t, long long>::value];], [], d569 1 a569 1 CXXFLAGS="$CXXFLAGS -fno-exceptions" d602 3 a604 2 dnl --enable-fully-dynamic-string defines _GLIBCXX_FULLY_DYNAMIC_STRING dnl --disable-fully-dynamic-string leaves _GLIBCXX_FULLY_DYNAMIC_STRING undefined d611 3 a613 2 AC_DEFINE(_GLIBCXX_FULLY_DYNAMIC_STRING, 1, [Define if a fully dynamic basic_string is wanted.]) d615 2 d627 1 a627 1 dnl enable_abi_check d632 1 d647 1 a647 1 enable_abi_check=no ;; d649 1 a649 1 enable_abi_check=yes ;; d656 1 a656 1 d660 60 d743 3 a745 3 # get unwind* headers from the gcc dir. #TOPLEVEL_INCLUDES='-I$(toplevel_srcdir)/gcc -I$(toplevel_srcdir)/include' TOPLEVEL_INCLUDES='-I$(toplevel_srcdir)/gcc' d768 1 a768 1 WARN_FLAGS='-Wall -Wextra -Wwrite-strings -Wcast-qual' d795 1 a795 1 [installation directory for include files]), d807 1 a807 1 [Specify that runtime libraries should be installed in a compiler-specific directory]), d819 2 a820 2 if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then d878 2 a879 2 m4_define([_g_help],[AC_HELP_STRING(_g_switch$3,[$4 @@<:@@default=$2@@:>@@])])dnl AC_ARG_ENABLE($1,_g_help, d886 2 a887 2 dnl Idea for future: generate a URL pointing to dnl "onlinedocs/configopts.html#whatever" d968 2 a969 2 [Define if C99 functions or macros in <math.h> should be imported in <cmath> in namespace std.]) d1036 3 a1038 3 [Define if C99 functions in <complex.h> should be used in <complex>. Using compiler builtins for these functions requires corresponding C99 library functions to be present.]) d1050 1 a1050 1 vfscanf(stderr, "%i", args); d1088 1 a1088 1 AC_MSG_CHECKING([for ISO C99 support in <wchar.h>]) d1090 2 a1091 2 namespace test { d1103 1 a1103 1 namespace test { using ::vfwscanf; } ], [], d1108 1 a1108 1 namespace test { using ::vswscanf; } ], [], d1113 1 a1113 1 namespace test { using ::vwscanf; } ], [], d1117 1 a1117 1 namespace test { using ::wcstof; } ], [], d1121 1 a1121 1 [ wint_t t; int i = iswblank(t);], d1145 1 a1145 1 fi d1154 2 a1155 2 dnl implementation of 20.8.5 [time.clock], and 30.2.2 [thread.thread.this] dnl in the current C++0x working draft. d1160 2 a1161 2 dnl nanosleep and sched_yield in libc and libposix4 and, in case, links dnl the latter d1163 1 a1163 1 dnl also searches (and, in case, links) librt. Note that this is d1171 5 d1179 1 a1179 1 GLIBCXX_ENABLE(libstdcxx-time,$1,[=KIND], d1218 1 a1218 1 [ Defined if sched_yield is available. ]) d1222 3 a1224 3 GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield" AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1, [ Defined if sched_yield is available. ]) d1229 1 a1229 1 [ Defined if sched_yield is available. ]) d1238 10 a1247 8 [#include <unistd.h> #include <time.h> ], [#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK) timespec tp; #endif clock_gettime(CLOCK_MONOTONIC, &tp); ], [ac_has_clock_monotonic=yes], [ac_has_clock_monotonic=no]) a1248 2 AC_MSG_RESULT($ac_has_clock_monotonic) d1251 8 a1258 8 [#include <unistd.h> #include <time.h> ], [#if _POSIX_TIMERS > 0 timespec tp; #endif clock_gettime(CLOCK_REALTIME, &tp); ], [ac_has_clock_realtime=yes], [ac_has_clock_realtime=no]) d1264 8 a1271 8 [#include <unistd.h> #include <time.h> ], [#if _POSIX_TIMERS > 0 timespec tp; #endif nanosleep(&tp, 0); ], [ac_has_nanosleep=yes], [ac_has_nanosleep=no]) d1277 25 d1315 29 d1354 2 a1355 2 dnl Check for gettimeofday, used in the implementation of 20.8.5 dnl [time.clock] in the current C++0x working draft. d1358 1 a1358 1 d1365 1 a1365 1 d1373 1 a1373 1 d1376 1 a1376 1 d1381 1 a1381 1 d1407 7 a1413 7 [typedef __complex__ float float_type; float_type tmpf; cacosf(tmpf); casinf(tmpf); catanf(tmpf); cacoshf(tmpf); casinhf(tmpf); catanhf(tmpf); d1415 6 a1420 6 cacos(tmpd); casin(tmpd); catan(tmpd); cacosh(tmpd); casinh(tmpd); catanh(tmpd); d1422 6 a1427 6 cacosl(tmpld); casinl(tmpld); catanl(tmpld); cacoshl(tmpld); casinhl(tmpld); catanhl(tmpld); d1433 2 a1434 2 [Define if C99 functions in <complex.h> should be used in <tr1/complex>. Using compiler builtins for these functions d1442 3 a1444 3 [int ch; int ret; ret = isblank(ch); d1451 1 a1451 1 [Define if C99 functions in <ctype.h> should be imported in d1461 15 a1475 15 [int except, mode; fexcept_t* pflag; fenv_t* penv; int ret; ret = feclearexcept(except); ret = fegetexceptflag(pflag, except); ret = feraiseexcept(except); ret = fesetexceptflag(pflag, except); ret = fetestexcept(except); ret = fegetround(); ret = fesetround(mode); ret = fegetenv(penv); ret = feholdexcept(penv); ret = fesetenv(penv); ret = feupdateenv(penv); d1481 1 a1481 1 [Define if C99 functions in <fenv.h> should be imported in d1489 3 a1491 3 #define __STDC_CONSTANT_MACROS #include <stdint.h>], [typedef int8_t my_int8_t; d1494 1 a1494 1 typedef int16_t my_int16_t; d1497 1 a1497 1 typedef int32_t my_int32_t; d1500 1 a1500 1 typedef int64_t my_int64_t; d1503 1 a1503 1 typedef int_fast8_t my_int_fast8_t; d1506 1 a1506 1 typedef int_fast16_t my_int_fast16_t; d1509 1 a1509 1 typedef int_fast32_t my_int_fast32_t; d1512 1 a1512 1 typedef int_fast64_t my_int_fast64_t; d1515 1 a1515 1 typedef int_least8_t my_int_least8_t; d1518 1 a1518 1 typedef int_least16_t my_int_least16_t; d1521 1 a1521 1 typedef int_least32_t my_int_least32_t; d1524 1 a1524 1 typedef int_least64_t my_int_least64_t; d1533 1 a1533 1 typedef uint8_t my_uint8_t; d1536 1 a1536 1 typedef uint16_t my_uint16_t; d1539 1 a1539 1 typedef uint32_t my_uint32_t; d1542 1 a1542 1 typedef uint64_t my_uint64_t; d1545 1 a1545 1 typedef uint_fast8_t my_uint_fast8_t; d1548 1 a1548 1 typedef uint_fast16_t my_uint_fast16_t; d1551 1 a1551 1 typedef uint_fast32_t my_uint_fast32_t; d1554 1 a1554 1 typedef uint_fast64_t my_uint_fast64_t; d1557 1 a1557 1 typedef uint_least8_t my_uint_least8_t; d1560 1 a1560 1 typedef uint_least16_t my_uint_least16_t; d1563 1 a1563 1 typedef uint_least32_t my_uint_least32_t; d1566 1 a1566 1 typedef uint_least64_t my_uint_least64_t; d1581 1 a1581 1 [Define if C99 types in <stdint.h> should be imported in d1589 107 a1695 107 [typedef double_t my_double_t; typedef float_t my_float_t; acosh(0.0); acoshf(0.0f); acoshl(0.0l); asinh(0.0); asinhf(0.0f); asinhl(0.0l); atanh(0.0); atanhf(0.0f); atanhl(0.0l); cbrt(0.0); cbrtf(0.0f); cbrtl(0.0l); copysign(0.0, 0.0); copysignf(0.0f, 0.0f); copysignl(0.0l, 0.0l); erf(0.0); erff(0.0f); erfl(0.0l); erfc(0.0); erfcf(0.0f); erfcl(0.0l); exp2(0.0); exp2f(0.0f); exp2l(0.0l); expm1(0.0); expm1f(0.0f); expm1l(0.0l); fdim(0.0, 0.0); fdimf(0.0f, 0.0f); fdiml(0.0l, 0.0l); fma(0.0, 0.0, 0.0); fmaf(0.0f, 0.0f, 0.0f); fmal(0.0l, 0.0l, 0.0l); fmax(0.0, 0.0); fmaxf(0.0f, 0.0f); fmaxl(0.0l, 0.0l); fmin(0.0, 0.0); fminf(0.0f, 0.0f); fminl(0.0l, 0.0l); hypot(0.0, 0.0); hypotf(0.0f, 0.0f); hypotl(0.0l, 0.0l); ilogb(0.0); ilogbf(0.0f); ilogbl(0.0l); lgamma(0.0); lgammaf(0.0f); lgammal(0.0l); llrint(0.0); llrintf(0.0f); llrintl(0.0l); llround(0.0); llroundf(0.0f); llroundl(0.0l); log1p(0.0); log1pf(0.0f); log1pl(0.0l); log2(0.0); log2f(0.0f); log2l(0.0l); logb(0.0); logbf(0.0f); logbl(0.0l); lrint(0.0); lrintf(0.0f); lrintl(0.0l); lround(0.0); lroundf(0.0f); lroundl(0.0l); nan(0); nanf(0); nanl(0); nearbyint(0.0); nearbyintf(0.0f); nearbyintl(0.0l); nextafter(0.0, 0.0); nextafterf(0.0f, 0.0f); nextafterl(0.0l, 0.0l); nexttoward(0.0, 0.0); nexttowardf(0.0f, 0.0f); nexttowardl(0.0l, 0.0l); remainder(0.0, 0.0); remainderf(0.0f, 0.0f); remainderl(0.0l, 0.0l); remquo(0.0, 0.0, 0); remquof(0.0f, 0.0f, 0); remquol(0.0l, 0.0l, 0); rint(0.0); rintf(0.0f); rintl(0.0l); round(0.0); roundf(0.0f); roundl(0.0l); scalbln(0.0, 0l); scalblnf(0.0f, 0l); scalblnl(0.0l, 0l); scalbn(0.0, 0); scalbnf(0.0f, 0); scalbnl(0.0l, 0); tgamma(0.0); tgammaf(0.0f); tgammal(0.0l); trunc(0.0); truncf(0.0f); truncl(0.0l); d1701 2 a1702 2 [Define if C99 functions or macros in <math.h> should be imported in <tr1/cmath> in namespace std::tr1.]) d1711 8 a1718 8 [intmax_t i, numer, denom, base; const char* s; char** endptr; intmax_t ret = imaxabs(i); imaxdiv_t dret = imaxdiv(numer, denom); ret = strtoimax(s, endptr, base); uintmax_t uret = strtoumax(s, endptr, base); ],[ac_c99_inttypes_tr1=yes], [ac_c99_inttypes_tr1=no]) d1723 2 a1724 2 [Define if C99 functions in <inttypes.h> should be imported in <tr1/cinttypes> in namespace std::tr1.]) d1733 1 a1733 1 [intmax_t base; d1735 4 a1738 4 wchar_t** endptr; intmax_t ret = wcstoimax(s, endptr, base); uintmax_t uret = wcstoumax(s, endptr, base); ],[ac_c99_inttypes_wchar_t_tr1=yes], d1744 1 a1744 1 [Define if wchar_t C99 functions in <inttypes.h> should be d1748 1 a1748 1 # Check for the existence of the <stdbool.h> header. d1751 3 d1767 6 a1772 1 glibcxx_cv_random_tr1=yes; d1781 1 a1781 1 [Define if /dev/random and /dev/urandom are available for d1788 1 a1788 2 dnl Check whether EOF, SEEK_CUR, and SEEK_END have the most common values: dnl in that case including <cstdio> in some C++ headers can be avoided. d1790 1 a1790 1 AC_DEFUN([GLIBCXX_CHECK_STDIO_MACROS], [ d1792 48 a1839 13 AC_MSG_CHECKING([for EOF == -1, SEEK_CUR == 1, SEEK_END == 2]) AC_CACHE_VAL(glibcxx_cv_stdio_macros, [ AC_TRY_COMPILE([#include <stdio.h>], [#if ((EOF != -1) || (SEEK_CUR != 1) || (SEEK_END != 2)) unusual values... #endif ], [glibcxx_cv_stdio_macros=yes], [glibcxx_cv_stdio_macros=no]) ]) AC_MSG_RESULT($glibcxx_cv_stdio_macros) if test x"$glibcxx_cv_stdio_macros" = x"yes"; then AC_DEFINE(_GLIBCXX_STDIO_MACROS, 1, [Define if EOF == -1, SEEK_CUR == 1, SEEK_END == 2.]) d1841 1 d1843 1 d1854 3 a1856 1 EOVERFLOW, ENOTSUP, EIDRM, ETXTBSY], d1884 1 a1884 1 GLIBCXX_ENABLE(cheaders,$1,[=KIND], a1894 4 if test $enable_cheaders = c_global || test $enable_cheaders = c_std; then c_extra=yes fi a1899 1 GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_EXTRA, test $c_extra = yes) d1910 1 a1910 1 GLIBCXX_ENABLE(clocale,auto,[@@<:@@=MODEL@@:>@@], d1912 1 a1912 1 [permit generic|gnu|ieee_1003.1-2001|yes|no|auto]) d1922 2 a1923 2 # Either a known packaage, or "auto" d1934 2 a1935 2 enable_clocale_flag=gnu ;; d1937 4 a1940 1 enable_clocale_flag=darwin d1943 6 a1948 2 enable_clocale_flag=generic ;; d1956 1 a1956 1 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) a1960 30 if test $enable_clocale = auto; then # Test for bugs early in glibc-2.2.x series AC_TRY_RUN([ #define _GNU_SOURCE 1 #include <locale.h> #include <string.h> #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) extern __typeof(newlocale) __newlocale; extern __typeof(duplocale) __duplocale; extern __typeof(strcoll_l) __strcoll_l; #endif int main() { const char __one[] = "Äuglein Augmen"; const char __two[] = "Äuglein"; int i; int j; __locale_t loc; __locale_t loc_dup; loc = __newlocale(1 << LC_ALL, "de_DE", 0); loc_dup = __duplocale(loc); i = __strcoll_l(__one, __two, loc); j = __strcoll_l(__one, __two, loc_dup); return 0; } ], [enable_clocale_flag=gnu],[enable_clocale_flag=generic], [enable_clocale_flag=generic]) fi d1962 1 a1962 1 ac_save_CFLAGS="$CFLAGS" d1969 4 a1972 4 [char s[128]; __locale_t loc; strxfrm_l(s, "C", 5, loc);], AC_DEFINE(HAVE_STRXFRM_L, 1, [Define if strxfrm_l is available in <string.h>.]),) d1977 3 a1979 3 [__locale_t loc; strerror_l(5, loc);], AC_DEFINE(HAVE_STRERROR_L, 1, [Define if strerror_l is available in <string.h>.]),) d1985 1 a1985 1 ac_save_CFLAGS="$CFLAGS" d1990 3 a1992 3 [char s[128]; strerror_r(5, s, 128);], AC_DEFINE(HAVE_STRERROR_R, 1, [Define if strerror_r is available in <string.h>.]),) d2030 1 a2030 1 d2042 1 a2042 1 USE_NLS=yes d2046 2 a2047 2 glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ d2081 16 d2110 2 a2111 2 AC_DEFINE(_GLIBCXX_USE_NLS, 1, [Define if NLS translations are to be used.]) d2138 1 a2138 1 GLIBCXX_ENABLE(libstdcxx-allocator,auto,[=KIND], d2160 2 a2161 2 enable_libstdcxx_allocator_flag=new ;; d2163 2 a2164 2 enable_libstdcxx_allocator_flag=new ;; d2168 1 a2168 1 d2191 1 a2191 1 ;; d2211 1 a2211 1 [Define to use concept checking code from the boost libraries.]) d2216 19 a2252 1 GLIBCXX_CONDITIONAL(ENABLE_PARALLEL, test $enable_parallel = yes) d2263 1 a2263 1 GLIBCXX_ENABLE(cstdio,stdio,[=PACKAGE], d2312 4 a2315 4 -fhonor-std) ;; -*) ;; *) # and we're trying to pass /what/ exactly? AC_MSG_ERROR([compiler flags start with a -]) ;; d2396 1 a2396 1 [only build freestanding C++ runtime support]),, d2398 1 a2398 1 arm*-*-symbianelf*) d2401 1 a2401 1 *) d2422 25 d2459 2 a2460 2 AC_DEFINE(_GLIBCXX_USE_LONG_LONG, 1, [Define if code specialized for long long should be used.]) d2506 74 d2606 1 a2606 1 d2611 1 a2611 1 d2615 2 a2616 2 #include <stddef.h> wint_t i; d2620 2 a2621 2 namespace test { d2628 1 a2628 1 using ::fwprintf; d2632 4 a2635 4 using ::mbrlen; using ::mbrtowc; using ::mbsinit; using ::mbsrtowcs; d2638 2 a2639 2 using ::swprintf; using ::swscanf; d2641 11 a2651 11 using ::vfwprintf; using ::vswprintf; using ::vwprintf; using ::wcrtomb; using ::wcscat; using ::wcschr; using ::wcscmp; using ::wcscoll; using ::wcscpy; using ::wcscspn; using ::wcsftime; d2653 3 a2655 3 using ::wcsncat; using ::wcsncmp; using ::wcsncpy; d2657 3 a2659 3 using ::wcsrchr; using ::wcsrtombs; using ::wcsspn; d2661 2 a2662 2 using ::wcstod; using ::wcstok; d2664 3 a2666 3 using ::wcstoul; using ::wcsxfrm; using ::wctob; d2672 2 a2673 2 using ::wprintf; using ::wscanf; d2685 1 a2685 1 [Define if code specialized for wchar_t should be used.]) d2718 3 a2720 3 -o conftest.h.gch 1>&5 2>&1 && echo '#error "pch failed"' > conftest.h && echo '#include "conftest.h"' > conftest.cc && d2723 1 a2723 1 glibcxx_cv_prog_CXX_pch=yes d2725 1 a2725 1 glibcxx_cv_prog_CXX_pch=no d2750 1 a2750 1 dnl http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html#Atomic-Builtins d2753 1 a2753 1 dnl builtins for atomic operations for various integral sizes. Note, this a2759 6 dnl Defines: dnl _GLIBCXX_ATOMIC_BUILTINS_1 dnl _GLIBCXX_ATOMIC_BUILTINS_2 dnl _GLIBCXX_ATOMIC_BUILTINS_4 dnl _GLIBCXX_ATOMIC_BUILTINS_8 dnl d2774 1 a2774 1 ;; d2791 7 a2797 6 const atomic_type c3(0); __sync_fetch_and_add(&c1, c2); __sync_val_compare_and_swap(&c1, c3, c2); __sync_lock_test_and_set(&c1, c3); __sync_lock_release(&c1); __sync_synchronize();], d2800 1 a2800 5 ]) if test $glibcxx_cv_atomic_bool = yes; then AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_1, 1, [Define if builtin atomic operations for bool are supported on this host.]) fi d2810 7 a2816 6 const atomic_type c3(0); __sync_fetch_and_add(&c1, c2); __sync_val_compare_and_swap(&c1, c3, c2); __sync_lock_test_and_set(&c1, c3); __sync_lock_release(&c1); __sync_synchronize();], d2819 1 a2819 5 ]) if test $glibcxx_cv_atomic_short = yes; then AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_2, 1, [Define if builtin atomic operations for short are supported on this host.]) fi d2829 7 a2835 6 const atomic_type c3(0); __sync_fetch_and_add(&c1, c2); __sync_val_compare_and_swap(&c1, c3, c2); __sync_lock_test_and_set(&c1, c3); __sync_lock_release(&c1); __sync_synchronize();], d2838 1 a2838 5 ]) if test $glibcxx_cv_atomic_int = yes; then AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_4, 1, [Define if builtin atomic operations for int are supported on this host.]) fi d2848 7 a2854 6 const atomic_type c3(0); __sync_fetch_and_add(&c1, c2); __sync_val_compare_and_swap(&c1, c3, c2); __sync_lock_test_and_set(&c1, c3); __sync_lock_release(&c1); __sync_synchronize();], d2857 1 a2857 5 ]) if test $glibcxx_cv_atomic_long_long = yes; then AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_8, 1, [Define if builtin atomic operations for long long are supported on this host.]) fi d2876 7 a2882 6 const atomic_type c3(0); __sync_fetch_and_add(&c1, c2); __sync_val_compare_and_swap(&c1, c3, c2); __sync_lock_test_and_set(&c1, c3); __sync_lock_release(&c1); __sync_synchronize(); d2889 2 a2890 2 if grep __sync_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_bool=no d2892 1 a2892 3 AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_1, 1, [Define if builtin atomic operations for bool are supported on this host.]) glibcxx_cv_atomic_bool=yes d2905 7 a2911 6 const atomic_type c3(0); __sync_fetch_and_add(&c1, c2); __sync_val_compare_and_swap(&c1, c3, c2); __sync_lock_test_and_set(&c1, c3); __sync_lock_release(&c1); __sync_synchronize(); d2918 2 a2919 2 if grep __sync_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_short=no d2921 1 a2921 3 AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_2, 1, [Define if builtin atomic operations for short are supported on this host.]) glibcxx_cv_atomic_short=yes d2931 1 a2931 1 // NB: _Atomic_word not necessarily int. d2935 7 a2941 6 const atomic_type c3(0); __sync_fetch_and_add(&c1, c2); __sync_val_compare_and_swap(&c1, c3, c2); __sync_lock_test_and_set(&c1, c3); __sync_lock_release(&c1); __sync_synchronize(); d2948 2 a2949 2 if grep __sync_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_int=no d2951 1 a2951 3 AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_4, 1, [Define if builtin atomic operations for int are supported on this host.]) glibcxx_cv_atomic_int=yes d2964 7 a2970 6 const atomic_type c3(0); __sync_fetch_and_add(&c1, c2); __sync_val_compare_and_swap(&c1, c3, c2); __sync_lock_test_and_set(&c1, c3); __sync_lock_release(&c1); __sync_synchronize(); d2977 2 a2978 2 if grep __sync_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_long_long=no d2980 1 a2980 3 AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_8, 1, [Define if builtin atomic operations for long long are supported on this host.]) glibcxx_cv_atomic_long_long=yes d2991 6 a2996 2 # Set atomicity_dir to builtins if either of above tests pass. if test $glibcxx_cv_atomic_int = yes || test $glibcxx_cv_atomic_bool = yes ; then d3005 2 a3006 2 AC_MSG_WARN([They cannot be faked when thread support is disabled.]) AC_MSG_WARN([Thread-safety of certain classes is not guaranteed.]) d3008 2 a3009 2 AC_MSG_WARN([They will be faked using a mutex.]) AC_MSG_WARN([Performance of certain classes will degrade as a result.]) d3056 1 a3056 1 enable_sjlj_exceptions=yes d3058 1 a3058 1 enable_sjlj_exceptions=no d3060 1 a3060 1 enable_sjlj_exceptions=no d3072 1 a3072 1 [Define if the compiler is configured for setjmp/longjmp exceptions.]) d3090 3 a3092 3 dnl --enable-visibility enables attempt to use visibility attributes. dnl --disable-visibility turns off all use of visibility attributes. dnl + Usage: GLIBCXX_ENABLE_VISIBILITY[(DEFAULT)] d3095 2 a3096 2 AC_DEFUN([GLIBCXX_ENABLE_VISIBILITY], [ GLIBCXX_ENABLE(visibility,$1,,[enables visibility safe usage]) d3098 1 a3098 1 if test x$enable_visibility = xyes ; then d3110 1 a3110 1 enable_visibility=no d3114 2 a3115 2 GLIBCXX_CONDITIONAL(ENABLE_VISIBILITY, test $enable_visibility = yes) AC_MSG_NOTICE([visibility supported: $enable_visibility]) d3123 4 d3131 1 d3139 1 a3139 1 GLIBCXX_ENABLE(symvers,$1,[=STYLE], d3141 1 a3141 1 [permit yes|no|gnu|gnu-versioned-namespace|darwin|darwin-export]) d3146 3 d3157 4 a3160 4 hpux*) enable_symvers=no ;; *) enable_symvers=gnu ;; d3164 1 a3164 1 darwin*) d3166 16 a3181 2 *) enable_symvers=no ;; d3192 16 d3209 3 a3211 1 if test $enable_symvers = gnu || test $enable_symvers = gnu-versioned-namespace; then d3247 2 d3268 4 a3271 1 # Everything parsed; figure out what file to use. d3278 2 a3279 2 AC_DEFINE(_GLIBCXX_SYMVER_GNU, 1, [Define to use GNU versioning in the shared library.]) d3282 1 d3284 2 a3285 2 AC_DEFINE(_GLIBCXX_SYMVER_GNU_NAMESPACE, 1, [Define to use GNU namespace versioning in the shared library.]) d3289 7 a3295 2 AC_DEFINE(_GLIBCXX_SYMVER_DARWIN, 1, [Define to use darwin versioning in the shared library.]) d3320 1 d3323 14 d3344 2 a3345 2 AC_TRY_COMPILE(, [__SIZE_TYPE__* stp; unsigned int* uip; stp = uip;], [glibcxx_size_t_is_i=yes], [glibcxx_size_t_is_i=no]) d3355 2 a3356 2 AC_TRY_COMPILE(, [__PTRDIFF_TYPE__* ptp; int* ip; ptp = ip;], [glibcxx_ptrdiff_t_is_i=yes], [glibcxx_ptrdiff_t_is_i=no]) d3378 1 a3378 4 dnl glibcxx_thread_h dnl dnl Defines: dnl HAVE_GTHR_DEFAULT d3384 1 a3384 18 if test $target_thread_file != single; then AC_DEFINE(HAVE_GTHR_DEFAULT, 1, [Define if gthr-default.h exists (meaning that threading support is enabled).]) fi glibcxx_thread_h=gthr-$target_thread_file.h dnl Check for __GTHREADS define. gthread_file=${toplevel_srcdir}/gcc/${glibcxx_thread_h} if grep __GTHREADS $gthread_file >/dev/null 2>&1 ; then enable_thread=yes else enable_thread=no fi AC_SUBST(glibcxx_thread_h) d3393 2 d3396 5 d3405 2 a3406 1 CXXFLAGS="$CXXFLAGS -fno-exceptions -I${toplevel_srcdir}/gcc" d3414 18 d3439 22 a3460 7 // In case of POSIX threads check _POSIX_TIMEOUTS too. #if (defined(_PTHREADS) \ && (!defined(_POSIX_TIMEOUTS) || _POSIX_TIMEOUTS <= 0)) #error #endif ], [ac_has_gthreads=yes], [ac_has_gthreads=no]) d3466 1 a3466 1 [Define if gthreads library is available.]) d3487 2 a3488 2 AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if LC_MESSAGES is available in <locale.h>.]) d3493 225 d3719 1 d3721 1 a3721 1 @ 1.1.1.1 log @initial import of GCC 4.5.3 sources. changes since 4.1 are way too numerous to review, please see http://gcc.gnu.org/gcc-4.5/changes.html (and the 4.2, 4.3 and 4.4 versions, too.) this includes the core, c++, objc and the non java/ada/fortran parts of the testsuite. @ text @@ 1.1.1.1.8.1 log @Rebase to HEAD as of a few days ago. @ text @d1 1 a38 1 dnl toplevel_builddir (absolute path) d52 1 a52 1 m4_define([glibcxx_SUBDIRS],[include libsupc++ python src src/c++98 src/c++11 doc testsuite]) a62 1 toplevel_builddir=${glibcxx_builddir}/.. a65 1 AC_SUBST(toplevel_builddir) d72 1 a72 1 [configuring in a subdirectory])) d76 1 a76 1 [configuring with a cross compiler])) d80 1 a80 1 [assume newlib as a system C library])) d98 2 a99 2 # Check for C library flavor since GNU/Linux platforms use different # configuration directories depending on the C library in use. a106 7 AC_EGREP_CPP([_using_bionic], [ #include <stdio.h> #if __BIONIC__ _using_bionic #endif ], bionic=yes, bionic=no) a162 32 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 d216 1 a216 1 $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'` d228 1 a228 1 if test x"$with_gnu_ld" = x"yes" && d299 1 a299 1 dnl _GLIBCXX_RES_LIMITS if we can set artificial resource limits d312 1 a312 1 [Only used in build directory testsuite_hooks.h.]) d320 2 a321 2 [], [setrlimit_have_headers=no]) d335 7 a341 7 [#include <unistd.h> #include <sys/time.h> #include <sys/resource.h> ], [struct rlimit r; setrlimit(0, &r);], [glibcxx_cv_setrlimit=yes], [glibcxx_cv_setrlimit=no]) d349 2 a350 2 [Define if using setrlimit to set resource limits during "make check"]) d390 2 a391 2 AC_DEFINE(HAVE_S_ISREG, 1, [Define if S_IFREG is available in <sys/stat.h>.]) d395 1 a395 1 [Define if S_IFREG is available in <sys/stat.h>.]) d489 4 a492 4 [#include <stdint.h> template<typename, typename> struct same { enum { value = -1 }; }; template<typename Tp> struct same<Tp, Tp> { enum { value = 1 }; }; int array[same<int64_t, long>::value];], [], d504 4 a507 4 [#include <stdint.h> template<typename, typename> struct same { enum { value = -1 }; }; template<typename Tp> struct same<Tp, Tp> { enum { value = 1 }; }; int array[same<int64_t, long long>::value];], [], d528 1 a528 1 CXXFLAGS="$CXXFLAGS -fno-exceptions" d561 2 a562 3 dnl --enable-fully-dynamic-string defines _GLIBCXX_FULLY_DYNAMIC_STRING to 1 dnl --disable-fully-dynamic-string defines _GLIBCXX_FULLY_DYNAMIC_STRING to 0 dnl otherwise undefined d569 2 a570 3 enable_fully_dynamic_string_def=1 else enable_fully_dynamic_string_def=0 a571 2 AC_DEFINE_UNQUOTED([_GLIBCXX_FULLY_DYNAMIC_STRING], [${enable_fully_dynamic_string_def}], [Define to 1 if a fully dynamic basic_string is wanted, 0 to disable, undefined for platform defaults]) d582 1 a582 1 dnl enable_abi_check a586 1 dnl baseline_subdir_switch d601 1 a601 1 enable_abi_check=no ;; d603 1 a603 1 enable_abi_check=yes ;; d610 1 a610 1 a613 60 baseline_subdir_switch="$abi_baseline_subdir_switch" AC_SUBST(baseline_subdir_switch) ]) dnl dnl Does any necessary configuration for docbook in the docs directory. dnl dnl XSLTPROC must be set before this dnl dnl Sets: dnl glibcxx_stylesheets dnl Substs: dnl XSL_STYLE_DIR dnl AC_DEFUN([GLIBCXX_CONFIGURE_DOCBOOK], [ AC_MSG_CHECKING([for docbook stylesheets for documentation creation]) glibcxx_stylesheets=no if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude http://docbook.sourceforge.net/release/xsl-ns/current/xhtml-1_1/docbook.xsl - 2>/dev/null; then glibcxx_stylesheets=yes fi AC_MSG_RESULT($glibcxx_stylesheets) AC_MSG_CHECKING([for local stylesheet directory]) glibcxx_local_stylesheets=no if test x"$glibcxx_stylesheets" = x"yes"; then if test -d /usr/share/sgml/docbook/xsl-ns-stylesheets; then glibcxx_local_stylesheets=yes XSL_STYLE_DIR=/usr/share/sgml/docbook/xsl-ns-stylesheets fi if test -d /usr/share/xml/docbook/stylesheet/docbook-xsl-ns; 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) if test x"$glibcxx_local_stylesheets" = x"yes"; then AC_SUBST(XSL_STYLE_DIR) AC_MSG_NOTICE($XSL_STYLE_DIR) else glibcxx_stylesheets=no fi # Check for epub3 dependencies. AC_MSG_CHECKING([for epub3 stylesheets for documentation creation]) glibcxx_epub_stylesheets=no if test x"$glibcxx_local_stylesheets" = x"yes"; then if test -f "$XSL_STYLE_DIR/epub3/chunk.xsl"; then glibcxx_epub_stylesheets=yes fi fi AC_MSG_RESULT($glibcxx_epub_stylesheets) AM_CONDITIONAL(BUILD_EPUB, test x"$glibcxx_epub_stylesheets" = x"yes") d637 3 a639 3 # get unwind* headers from the libgcc dir. #TOPLEVEL_INCLUDES='-I$(toplevel_srcdir)/libgcc -I$(toplevel_srcdir)/include' TOPLEVEL_INCLUDES='-I$(toplevel_srcdir)/libgcc' d662 1 a662 1 WARN_FLAGS='-Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi' d689 1 a689 1 [installation directory for include files]), d701 1 a701 1 [Specify that runtime libraries should be installed in a compiler-specific directory]), d713 2 a714 2 if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then d772 2 a773 2 m4_define([_g_help],[AC_HELP_STRING([_g_switch$3],[$4 @@<:@@default=$2@@:>@@])])dnl AC_ARG_ENABLE([$1],m4_dquote(_g_help), d780 2 a781 2 dnl Idea for future: generate a URL pointing to dnl "onlinedocs/configopts.html#whatever" d862 2 a863 2 [Define if C99 functions or macros in <math.h> should be imported in <cmath> in namespace std.]) d930 3 a932 3 [Define if C99 functions in <complex.h> should be used in <complex>. Using compiler builtins for these functions requires corresponding C99 library functions to be present.]) d944 1 a944 1 vfscanf(stderr, "%i", args); d982 1 a982 1 AC_MSG_CHECKING([for ISO C99 support in <wchar.h>]) d984 2 a985 2 namespace test { d997 1 a997 1 namespace test { using ::vfwscanf; } ], [], d1002 1 a1002 1 namespace test { using ::vswscanf; } ], [], d1007 1 a1007 1 namespace test { using ::vwscanf; } ], [], d1011 1 a1011 1 namespace test { using ::wcstof; } ], [], d1015 1 a1015 1 [ wint_t t; int i = iswblank(t);], d1039 1 a1039 1 fi d1048 2 a1049 2 dnl implementation of 20.11.7 [time.clock], and 30.3.2 [thread.thread.this] dnl in the C++11 standard. d1054 2 a1055 2 dnl nanosleep and sched_yield in libc and libposix4 and, if needed, dnl links in the latter. d1057 1 a1057 1 dnl also searches (and, if needed, links) librt. Note that this is a1064 5 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 d1068 1 a1068 1 GLIBCXX_ENABLE(libstdcxx-time,$1,[[[=KIND]]], d1107 1 a1107 1 [ Defined if sched_yield is available. ]) d1111 3 a1113 3 GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield" AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1, [ Defined if sched_yield is available. ]) d1118 1 a1118 1 [ Defined if sched_yield is available. ]) d1127 8 a1134 10 [#include <unistd.h> #include <time.h> ], [#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK) timespec tp; #endif clock_gettime(CLOCK_MONOTONIC, &tp); ], [ac_has_clock_monotonic=yes], [ac_has_clock_monotonic=no]) AC_MSG_RESULT($ac_has_clock_monotonic) d1136 2 d1140 8 a1147 8 [#include <unistd.h> #include <time.h> ], [#if _POSIX_TIMERS > 0 timespec tp; #endif clock_gettime(CLOCK_REALTIME, &tp); ], [ac_has_clock_realtime=yes], [ac_has_clock_realtime=no]) d1153 8 a1160 8 [#include <unistd.h> #include <time.h> ], [#if _POSIX_TIMERS > 0 timespec tp; #endif nanosleep(&tp, 0); ], [ac_has_nanosleep=yes], [ac_has_nanosleep=no]) a1165 25 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 <unistd.h> #include <time.h> #include <sys/syscall.h> ], [#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 a1178 29 else AC_MSG_CHECKING([for sleep]) AC_TRY_COMPILE([#include <unistd.h>], [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 <unistd.h>], [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 <windows.h>], [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) d1189 2 a1190 2 dnl Check for gettimeofday, used in the implementation of 20.11.7 dnl [time.clock] in the C++11 standard. d1193 1 a1193 1 d1200 1 a1200 1 d1208 1 a1208 1 d1211 1 a1211 1 d1216 1 a1216 1 d1242 7 a1248 7 [typedef __complex__ float float_type; float_type tmpf; cacosf(tmpf); casinf(tmpf); catanf(tmpf); cacoshf(tmpf); casinhf(tmpf); catanhf(tmpf); d1250 6 a1255 6 cacos(tmpd); casin(tmpd); catan(tmpd); cacosh(tmpd); casinh(tmpd); catanh(tmpd); d1257 6 a1262 6 cacosl(tmpld); casinl(tmpld); catanl(tmpld); cacoshl(tmpld); casinhl(tmpld); catanhl(tmpld); d1268 2 a1269 2 [Define if C99 functions in <complex.h> should be used in <tr1/complex>. Using compiler builtins for these functions d1277 3 a1279 3 [int ch; int ret; ret = isblank(ch); d1286 1 a1286 1 [Define if C99 functions in <ctype.h> should be imported in d1296 15 a1310 15 [int except, mode; fexcept_t* pflag; fenv_t* penv; int ret; ret = feclearexcept(except); ret = fegetexceptflag(pflag, except); ret = feraiseexcept(except); ret = fesetexceptflag(pflag, except); ret = fetestexcept(except); ret = fegetround(); ret = fesetround(mode); ret = fegetenv(penv); ret = feholdexcept(penv); ret = fesetenv(penv); ret = feupdateenv(penv); d1316 1 a1316 1 [Define if C99 functions in <fenv.h> should be imported in d1324 3 a1326 3 #define __STDC_CONSTANT_MACROS #include <stdint.h>], [typedef int8_t my_int8_t; d1329 1 a1329 1 typedef int16_t my_int16_t; d1332 1 a1332 1 typedef int32_t my_int32_t; d1335 1 a1335 1 typedef int64_t my_int64_t; d1338 1 a1338 1 typedef int_fast8_t my_int_fast8_t; d1341 1 a1341 1 typedef int_fast16_t my_int_fast16_t; d1344 1 a1344 1 typedef int_fast32_t my_int_fast32_t; d1347 1 a1347 1 typedef int_fast64_t my_int_fast64_t; d1350 1 a1350 1 typedef int_least8_t my_int_least8_t; d1353 1 a1353 1 typedef int_least16_t my_int_least16_t; d1356 1 a1356 1 typedef int_least32_t my_int_least32_t; d1359 1 a1359 1 typedef int_least64_t my_int_least64_t; d1368 1 a1368 1 typedef uint8_t my_uint8_t; d1371 1 a1371 1 typedef uint16_t my_uint16_t; d1374 1 a1374 1 typedef uint32_t my_uint32_t; d1377 1 a1377 1 typedef uint64_t my_uint64_t; d1380 1 a1380 1 typedef uint_fast8_t my_uint_fast8_t; d1383 1 a1383 1 typedef uint_fast16_t my_uint_fast16_t; d1386 1 a1386 1 typedef uint_fast32_t my_uint_fast32_t; d1389 1 a1389 1 typedef uint_fast64_t my_uint_fast64_t; d1392 1 a1392 1 typedef uint_least8_t my_uint_least8_t; d1395 1 a1395 1 typedef uint_least16_t my_uint_least16_t; d1398 1 a1398 1 typedef uint_least32_t my_uint_least32_t; d1401 1 a1401 1 typedef uint_least64_t my_uint_least64_t; d1416 1 a1416 1 [Define if C99 types in <stdint.h> should be imported in d1424 107 a1530 107 [typedef double_t my_double_t; typedef float_t my_float_t; acosh(0.0); acoshf(0.0f); acoshl(0.0l); asinh(0.0); asinhf(0.0f); asinhl(0.0l); atanh(0.0); atanhf(0.0f); atanhl(0.0l); cbrt(0.0); cbrtf(0.0f); cbrtl(0.0l); copysign(0.0, 0.0); copysignf(0.0f, 0.0f); copysignl(0.0l, 0.0l); erf(0.0); erff(0.0f); erfl(0.0l); erfc(0.0); erfcf(0.0f); erfcl(0.0l); exp2(0.0); exp2f(0.0f); exp2l(0.0l); expm1(0.0); expm1f(0.0f); expm1l(0.0l); fdim(0.0, 0.0); fdimf(0.0f, 0.0f); fdiml(0.0l, 0.0l); fma(0.0, 0.0, 0.0); fmaf(0.0f, 0.0f, 0.0f); fmal(0.0l, 0.0l, 0.0l); fmax(0.0, 0.0); fmaxf(0.0f, 0.0f); fmaxl(0.0l, 0.0l); fmin(0.0, 0.0); fminf(0.0f, 0.0f); fminl(0.0l, 0.0l); hypot(0.0, 0.0); hypotf(0.0f, 0.0f); hypotl(0.0l, 0.0l); ilogb(0.0); ilogbf(0.0f); ilogbl(0.0l); lgamma(0.0); lgammaf(0.0f); lgammal(0.0l); llrint(0.0); llrintf(0.0f); llrintl(0.0l); llround(0.0); llroundf(0.0f); llroundl(0.0l); log1p(0.0); log1pf(0.0f); log1pl(0.0l); log2(0.0); log2f(0.0f); log2l(0.0l); logb(0.0); logbf(0.0f); logbl(0.0l); lrint(0.0); lrintf(0.0f); lrintl(0.0l); lround(0.0); lroundf(0.0f); lroundl(0.0l); nan(0); nanf(0); nanl(0); nearbyint(0.0); nearbyintf(0.0f); nearbyintl(0.0l); nextafter(0.0, 0.0); nextafterf(0.0f, 0.0f); nextafterl(0.0l, 0.0l); nexttoward(0.0, 0.0); nexttowardf(0.0f, 0.0f); nexttowardl(0.0l, 0.0l); remainder(0.0, 0.0); remainderf(0.0f, 0.0f); remainderl(0.0l, 0.0l); remquo(0.0, 0.0, 0); remquof(0.0f, 0.0f, 0); remquol(0.0l, 0.0l, 0); rint(0.0); rintf(0.0f); rintl(0.0l); round(0.0); roundf(0.0f); roundl(0.0l); scalbln(0.0, 0l); scalblnf(0.0f, 0l); scalblnl(0.0l, 0l); scalbn(0.0, 0); scalbnf(0.0f, 0); scalbnl(0.0l, 0); tgamma(0.0); tgammaf(0.0f); tgammal(0.0l); trunc(0.0); truncf(0.0f); truncl(0.0l); d1536 2 a1537 2 [Define if C99 functions or macros in <math.h> should be imported in <tr1/cmath> in namespace std::tr1.]) d1546 8 a1553 8 [intmax_t i, numer, denom, base; const char* s; char** endptr; intmax_t ret = imaxabs(i); imaxdiv_t dret = imaxdiv(numer, denom); ret = strtoimax(s, endptr, base); uintmax_t uret = strtoumax(s, endptr, base); ],[ac_c99_inttypes_tr1=yes], [ac_c99_inttypes_tr1=no]) d1558 2 a1559 2 [Define if C99 functions in <inttypes.h> should be imported in <tr1/cinttypes> in namespace std::tr1.]) d1568 1 a1568 1 [intmax_t base; d1570 4 a1573 4 wchar_t** endptr; intmax_t ret = wcstoimax(s, endptr, base); uintmax_t uret = wcstoumax(s, endptr, base); ],[ac_c99_inttypes_wchar_t_tr1=yes], d1579 1 a1579 1 [Define if wchar_t C99 functions in <inttypes.h> should be d1583 1 a1583 1 # Check for the existence of the <stdbool.h> header. a1585 3 # Check for the existence of the <stdalign.h> header. AC_CHECK_HEADERS(stdalign.h) d1599 1 a1599 6 ## 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 d1608 1 a1608 1 [Define if /dev/random and /dev/urandom are available for d1615 2 a1616 1 dnl Compute the EOF, SEEK_CUR, and SEEK_END integer constants. d1618 1 a1618 1 AC_DEFUN([GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS], [ d1620 13 a1632 48 AC_CACHE_CHECK([for the value of EOF], glibcxx_cv_stdio_eof, [ AC_COMPUTE_INT([glibcxx_cv_stdio_eof], [[EOF]], [#include <stdio.h>], [AC_MSG_ERROR([computing EOF failed])]) ]) AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_EOF, $glibcxx_cv_stdio_eof, [Define to the value of the EOF integer constant.]) AC_CACHE_CHECK([for the value of SEEK_CUR], glibcxx_cv_stdio_seek_cur, [ AC_COMPUTE_INT([glibcxx_cv_stdio_seek_cur], [[SEEK_CUR]], [#include <stdio.h>], [AC_MSG_ERROR([computing SEEK_CUR failed])]) ]) AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_SEEK_CUR, $glibcxx_cv_stdio_seek_cur, [Define to the value of the SEEK_CUR integer constant.]) AC_CACHE_CHECK([for the value of SEEK_END], glibcxx_cv_stdio_seek_end, [ AC_COMPUTE_INT([glibcxx_cv_stdio_seek_end], [[SEEK_END]], [#include <stdio.h>], [AC_MSG_ERROR([computing SEEK_END failed])]) ]) AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_SEEK_END, $glibcxx_cv_stdio_seek_end, [Define to the value of the SEEK_END integer constant.]) ]) dnl dnl Check whether required C++ overloads are present in <stdio.h>. dnl AC_DEFUN([GLIBCXX_CHECK_STDIO_PROTO], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_MSG_CHECKING([for gets declaration]) AC_CACHE_VAL(glibcxx_cv_gets, [ AC_COMPILE_IFELSE([AC_LANG_SOURCE( [#include <stdio.h> namespace test { using ::gets; } ])], [glibcxx_cv_gets=yes], [glibcxx_cv_gets=no] )]) if test $glibcxx_cv_gets = yes; then AC_DEFINE(HAVE_GETS, 1, [Define if gets is available in <stdio.h>.]) a1633 1 AC_MSG_RESULT($glibcxx_cv_gets) a1634 1 AC_LANG_RESTORE d1645 1 a1645 3 EOVERFLOW, ENOTSUP, EIDRM, ETXTBSY, ECHILD, ENOSPC, EPERM, ETIMEDOUT, EWOULDBLOCK], d1673 1 a1673 1 GLIBCXX_ENABLE(cheaders,$1,[[[=KIND]]], d1684 4 d1693 1 d1704 1 a1704 1 GLIBCXX_ENABLE(clocale,auto,[[[=MODEL]]], d1706 1 a1706 1 [permit generic|gnu|ieee_1003.1-2001|newlib|yes|no|auto]) d1716 2 a1717 2 # Either a known package, or "auto" d1728 2 a1729 2 enable_clocale_flag=gnu ;; d1731 1 a1731 4 enable_clocale_flag=darwin ;; openbsd*) enable_clocale_flag=newlib d1734 2 a1735 6 if test x"$with_newlib" = x"yes"; then enable_clocale_flag=newlib else enable_clocale_flag=generic fi ;; d1743 1 a1743 1 #if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined(__UCLIBC__) d1748 30 d1779 1 a1779 1 ac_save_CFLAGS="$CFLAGS" d1786 4 a1789 4 [char s[128]; __locale_t loc; strxfrm_l(s, "C", 5, loc);], AC_DEFINE(HAVE_STRXFRM_L, 1, [Define if strxfrm_l is available in <string.h>.]),) d1794 3 a1796 3 [__locale_t loc; strerror_l(5, loc);], AC_DEFINE(HAVE_STRERROR_L, 1, [Define if strerror_l is available in <string.h>.]),) d1802 1 a1802 1 ac_save_CFLAGS="$CFLAGS" d1807 3 a1809 3 [char s[128]; strerror_r(5, s, 128);], AC_DEFINE(HAVE_STRERROR_R, 1, [Define if strerror_r is available in <string.h>.]),) d1847 1 a1847 1 d1859 1 a1859 1 USE_NLS=yes d1863 2 a1864 2 glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ a1897 16 newlib) AC_MSG_RESULT(newlib) CLOCALE_H=config/locale/generic/c_locale.h CLOCALE_CC=config/locale/generic/c_locale.cc CCODECVT_CC=config/locale/generic/codecvt_members.cc CCOLLATE_CC=config/locale/generic/collate_members.cc CCTYPE_CC=config/locale/newlib/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 ;; d1911 2 a1912 2 AC_DEFINE(_GLIBCXX_USE_NLS, 1, [Define if NLS translations are to be used.]) d1939 1 a1939 1 GLIBCXX_ENABLE(libstdcxx-allocator,auto,[[[=KIND]]], d1961 2 a1962 2 enable_libstdcxx_allocator_flag=new ;; d1964 2 a1965 2 enable_libstdcxx_allocator_flag=new ;; d1969 1 a1969 1 d1992 1 a1992 1 ;; d2012 1 a2012 1 [Define to use concept checking code from the boost libraries.]) a2016 19 dnl Use extern templates. dnl dnl --enable-extern-template defines _GLIBCXX_EXTERN_TEMPLATE to 1 dnl --disable-extern-template defines _GLIBCXX_EXTERN_TEMPLATE to 0 dnl + Usage: GLIBCXX_ENABLE_TEMPLATE[(DEFAULT)] dnl Where DEFAULT is `yes' or `no'. dnl AC_DEFUN([GLIBCXX_ENABLE_EXTERN_TEMPLATE], [ GLIBCXX_ENABLE(extern-template,$1,,[enable extern template]) AC_MSG_CHECKING([for extern template support]) AC_MSG_RESULT([$enable_extern_template]) GLIBCXX_CONDITIONAL(ENABLE_EXTERN_TEMPLATE, test $enable_extern_template = yes) ]) dnl d2035 1 d2046 1 a2046 1 GLIBCXX_ENABLE(cstdio,stdio,[[[=PACKAGE]]], d2095 4 a2098 4 -fhonor-std) ;; -*) ;; *) # and we're trying to pass /what/ exactly? AC_MSG_ERROR([compiler flags start with a -]) ;; d2179 1 a2179 1 [only build freestanding C++ runtime support]),, d2181 1 a2181 1 arm*-*-symbianelf*) d2184 1 a2184 1 *) a2204 25 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 d2217 2 a2218 2 AC_DEFINE(_GLIBCXX_USE_LONG_LONG, 1, [Define if code specialized for long long should be used.]) a2263 74 dnl Check for GNU 128-bit integer and floating point types. dnl dnl Note: also checks that the types aren't standard types. dnl dnl Defines: dnl _GLIBCXX_USE_INT128 dnl _GLIBCXX_USE_FLOAT128 dnl AC_DEFUN([GLIBCXX_ENABLE_INT128_FLOAT128], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS # Fake what AC_TRY_COMPILE does, without linking as this is # unnecessary for this test. cat > conftest.$ac_ext << EOF [#]line __oline__ "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; template<typename T> struct same<T, T>; int main() { typename same<long, __int128>::type i1; typename same<long long, __int128>::type i2; } EOF AC_MSG_CHECKING([for __int128]) if AC_TRY_EVAL(ac_compile); then AC_DEFINE(_GLIBCXX_USE_INT128, 1, [Define if __int128 is supported on this host.]) enable_int128=yes else enable_int128=no fi AC_MSG_RESULT($enable_int128) rm -f conftest* cat > conftest.$ac_ext << EOF [#]line __oline__ "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; template<typename T> struct same<T, T>; int main() { typename same<double, __float128>::type f1; typename same<long double, __float128>::type f2; } EOF AC_MSG_CHECKING([for __float128]) if AC_TRY_EVAL(ac_compile); then AC_DEFINE(_GLIBCXX_USE_FLOAT128, 1, [Define if __float128 is supported on this host.]) enable_float128=yes else enable_float128=no fi AC_MSG_RESULT($enable_float128) rm -f conftest* AC_LANG_RESTORE ]) dnl d2290 1 a2290 1 d2295 1 a2295 1 d2299 2 a2300 2 #include <stddef.h> wint_t i; d2304 2 a2305 2 namespace test { d2312 1 a2312 1 using ::fwprintf; d2316 4 a2319 4 using ::mbrlen; using ::mbrtowc; using ::mbsinit; using ::mbsrtowcs; d2322 2 a2323 2 using ::swprintf; using ::swscanf; d2325 11 a2335 11 using ::vfwprintf; using ::vswprintf; using ::vwprintf; using ::wcrtomb; using ::wcscat; using ::wcschr; using ::wcscmp; using ::wcscoll; using ::wcscpy; using ::wcscspn; using ::wcsftime; d2337 3 a2339 3 using ::wcsncat; using ::wcsncmp; using ::wcsncpy; d2341 3 a2343 3 using ::wcsrchr; using ::wcsrtombs; using ::wcsspn; d2345 2 a2346 2 using ::wcstod; using ::wcstok; d2348 3 a2350 3 using ::wcstoul; using ::wcsxfrm; using ::wctob; d2356 2 a2357 2 using ::wprintf; using ::wscanf; d2369 1 a2369 1 [Define if code specialized for wchar_t should be used.]) d2402 3 a2404 3 -o conftest.h.gch 1>&5 2>&1 && echo '#error "pch failed"' > conftest.h && echo '#include "conftest.h"' > conftest.cc && d2407 1 a2407 1 glibcxx_cv_prog_CXX_pch=yes d2409 1 a2409 1 glibcxx_cv_prog_CXX_pch=no d2434 1 a2434 1 dnl http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html d2437 1 a2437 1 dnl builtins for atomic operations for various integral sizes. Note, this d2444 6 d2464 1 a2464 1 ;; d2481 6 a2486 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); ], d2489 5 a2493 1 ]) d2503 6 a2508 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); ], d2511 5 a2515 1 ]) d2525 6 a2530 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); ], d2533 5 a2537 1 ]) d2547 6 a2552 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); ], d2555 5 a2559 1 ]) d2578 6 a2583 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); d2590 2 a2591 2 if grep __atomic_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_bool=no d2593 3 a2595 1 glibcxx_cv_atomic_bool=yes d2608 6 a2613 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); d2620 2 a2621 2 if grep __atomic_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_short=no d2623 3 a2625 1 glibcxx_cv_atomic_short=yes d2635 1 a2635 1 // NB: _Atomic_word not necessarily int. d2639 6 a2644 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); d2651 2 a2652 2 if grep __atomic_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_int=no d2654 3 a2656 1 glibcxx_cv_atomic_int=yes d2669 6 a2674 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); d2681 2 a2682 2 if grep __atomic_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_long_long=no d2684 3 a2686 1 glibcxx_cv_atomic_long_long=yes d2697 2 a2698 6 # Set atomicity_dir to builtins if all but the long long test above passes. if test $glibcxx_cv_atomic_bool = yes \ && test $glibcxx_cv_atomic_short = yes \ && test $glibcxx_cv_atomic_int = yes; then AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS, 1, [Define if the compiler supports C++11 atomics.]) d2707 2 a2708 2 AC_MSG_WARN([They cannot be faked when thread support is disabled.]) AC_MSG_WARN([Thread-safety of certain classes is not guaranteed.]) d2710 2 a2711 2 AC_MSG_WARN([They will be faked using a mutex.]) AC_MSG_WARN([Performance of certain classes will degrade as a result.]) d2758 1 a2758 1 enable_sjlj_exceptions=yes d2760 1 a2760 1 enable_sjlj_exceptions=no d2762 1 a2762 1 enable_sjlj_exceptions=no d2774 1 a2774 1 [Define if the compiler is configured for setjmp/longjmp exceptions.]) d2792 3 a2794 3 dnl --enable-libstdcxx-visibility enables attempt to use visibility attributes. dnl --disable-libstdcxx-visibility turns off all use of visibility attributes. dnl + Usage: GLIBCXX_ENABLE_LIBSTDCXX_VISIBILITY[(DEFAULT)] d2797 2 a2798 2 AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_VISIBILITY], [ GLIBCXX_ENABLE(libstdcxx-visibility,$1,,[enables visibility safe usage]) d2800 1 a2800 1 if test x$enable_libstdcxx_visibility = xyes ; then d2812 1 a2812 1 enable_libstdcxx_visibility=no d2816 2 a2817 2 GLIBCXX_CONDITIONAL(ENABLE_VISIBILITY, test $enable_libstdcxx_visibility = yes) AC_MSG_NOTICE([visibility supported: $enable_libstdcxx_visibility]) a2824 4 dnl Sets libtool_VERSION, and determines shared library SONAME. dnl dnl This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no. dnl a2828 1 dnl d2836 1 a2836 1 GLIBCXX_ENABLE(symvers,$1,[[[=STYLE]]], d2838 1 a2838 1 [permit yes|no|gnu|gnu-versioned-namespace|darwin|darwin-export|sun]) a2842 3 # Sun style symbol versions needs GNU c++filt for make_sunver.pl to work # with extern "C++" in version scripts. AC_REQUIRE([GCC_PROG_GNU_CXXFILT]) d2851 4 a2854 4 hpux*) enable_symvers=no ;; *) enable_symvers=gnu ;; d2858 1 a2858 1 darwin*) d2860 2 a2861 16 # Sun symbol versioning exists since Solaris 2.5. solaris2.[[5-9]]* | solaris2.1[[0-9]]*) # make_sunver.pl needs GNU c++filt to support extern "C++" in # version scripts, so disable symbol versioning if none can be # found. if test -z "$ac_cv_path_CXXFILT"; then AC_MSG_WARN([=== You have requested Sun symbol versioning, but]) AC_MSG_WARN([=== no GNU c++filt could be found.]) AC_MSG_WARN([=== Symbol versioning will be disabled.]) enable_symvers=no else enable_symvers=sun fi ;; *) enable_symvers=no ;; a2871 16 # Check if 'sun' was requested on non-Solaris 2 platforms. if test x$enable_symvers = xsun ; then case ${target_os} in solaris2*) # All fine. ;; *) # Unlikely to work. AC_MSG_WARN([=== You have requested Sun symbol versioning, but]) AC_MSG_WARN([=== you are not targetting Solaris 2.]) AC_MSG_WARN([=== Symbol versioning will be disabled.]) enable_symvers=no ;; esac fi d2873 1 a2873 3 if test $enable_symvers = gnu || test $enable_symvers = gnu-versioned-namespace || test $enable_symvers = sun; then a2908 2 elif test $with_gnu_ld != yes && test $enable_symvers = sun; then : All interesting versions of Sun ld support sun style symbol versioning. d2928 1 a2928 4 # For libtool versioning info, format is CURRENT:REVISION:AGE libtool_VERSION=6:19:0 # Everything parsed; figure out what files and settings to use. d2935 2 a2936 2 AC_DEFINE(_GLIBCXX_SYMVER_GNU, 1, [Define to use GNU versioning in the shared library.]) a2938 1 libtool_VERSION=7:0:0 d2940 2 a2941 2 AC_DEFINE(_GLIBCXX_SYMVER_GNU_NAMESPACE, 1, [Define to use GNU namespace versioning in the shared library.]) d2945 2 a2946 7 AC_DEFINE(_GLIBCXX_SYMVER_DARWIN, 1, [Define to use darwin versioning in the shared library.]) ;; sun) SYMVER_FILE=config/abi/pre/gnu.ver AC_DEFINE(_GLIBCXX_SYMVER_SUN, 1, [Define to use Sun versioning in the shared library.]) a2970 1 GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_SUN, test $enable_symvers = sun) a2972 14 if test $enable_symvers != no ; then case ${target_os} in # The Solaris 2 runtime linker doesn't support the GNU extension of # binding the same symbol to different versions solaris2*) ;; # Other platforms with GNU symbol versioning (GNU/Linux, more?) do. *) AC_DEFINE(HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT, 1, [Define to 1 if the target runtime linker supports binding the same symbol to different versions.]) ;; esac fi d2980 2 a2981 2 AC_TRY_COMPILE(, [__SIZE_TYPE__* stp; unsigned int* uip; stp = uip;], [glibcxx_size_t_is_i=yes], [glibcxx_size_t_is_i=no]) d2991 2 a2992 2 AC_TRY_COMPILE(, [__PTRDIFF_TYPE__* ptp; int* ip; ptp = ip;], [glibcxx_ptrdiff_t_is_i=yes], [glibcxx_ptrdiff_t_is_i=no]) d3014 4 a3017 1 dnl thread_header d3023 18 a3040 1 GCC_AC_THREAD_HEADER([$target_thread_file]) a3048 2 dnl GLIBCXX_ENABLE_SYMVERS must be done before this. dnl a3049 5 GLIBCXX_ENABLE(libstdcxx-threads,auto,,[enable C++11 threads support]) if test x$enable_libstdcxx_threads = xauto || test x$enable_libstdcxx_threads = xyes; then d3054 1 a3054 2 CXXFLAGS="$CXXFLAGS -fno-exceptions \ -I${toplevel_srcdir}/libgcc -I${toplevel_builddir}/libgcc" d3062 1 a3062 1 AC_MSG_CHECKING([whether it can be safely assumed that mutex_timedlock is available]) d3064 1 a3064 1 AC_TRY_COMPILE([#include <unistd.h>], d3066 1 a3066 3 // In case of POSIX threads check _POSIX_TIMEOUTS. #if (defined(_PTHREADS) \ && (!defined(_POSIX_TIMEOUTS) || _POSIX_TIMEOUTS <= 0)) a3068 1 ], [ac_gthread_use_mutex_timedlock=1], [ac_gthread_use_mutex_timedlock=0]) d3070 3 a3072 12 AC_DEFINE_UNQUOTED(_GTHREAD_USE_MUTEX_TIMEDLOCK, $ac_gthread_use_mutex_timedlock, [Define to 1 if mutex_timedlock is available.]) if test $ac_gthread_use_mutex_timedlock = 1 ; then res_mutex_timedlock=yes ; else res_mutex_timedlock=no ; fi AC_MSG_RESULT([$res_mutex_timedlock]) AC_MSG_CHECKING([for gthreads library]) AC_TRY_COMPILE([#include "gthr.h"], [ #ifndef __GTHREADS_CXX0X d3075 1 a3075 22 ], [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]) else ac_has_gthreads=no fi d3081 1 a3081 1 [Define if gthreads library is available.]) d3102 2 a3103 2 AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if LC_MESSAGES is available in <locale.h>.]) a3107 225 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_cv_x86_rdrand=no case "$target" in i?86-*-* | \ x86_64-*-*) AC_TRY_COMPILE(, [asm("rdrand %eax");], [ac_cv_x86_rdrand=yes], [ac_cv_x86_rdrand=no]) esac ]) if test $ac_cv_x86_rdrand = yes; then AC_DEFINE(_GLIBCXX_X86_RDRAND, 1, [ Defined if as can handle rdrand. ]) fi AC_MSG_RESULT($ac_cv_x86_rdrand) ]) dnl dnl Check whether get_nprocs is available in <sys/sysinfo.h>, and define _GLIBCXX_USE_GET_NPROCS. dnl AC_DEFUN([GLIBCXX_CHECK_GET_NPROCS], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_CHECKING([for get_nprocs]) AC_CACHE_VAL(glibcxx_cv_GET_NPROCS, [ GCC_TRY_COMPILE_OR_LINK( [#include <sys/sysinfo.h>], [int n = get_nprocs();], [glibcxx_cv_GET_NPROCS=yes], [glibcxx_cv_GET_NPROCS=no]) ]) if test $glibcxx_cv_GET_NPROCS = yes; then AC_DEFINE(_GLIBCXX_USE_GET_NPROCS, 1, [Define if get_nprocs is available in <sys/sysinfo.h>.]) fi AC_MSG_RESULT($glibcxx_cv_GET_NPROCS) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether sysconf(_SC_NPROCESSORS_ONLN) is available in <unistd.h>, and define _GLIBCXX_USE_SC_NPROCESSORS_ONLN. dnl AC_DEFUN([GLIBCXX_CHECK_SC_NPROCESSORS_ONLN], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_CHECKING([for _SC_NPROCESSORS_ONLN]) AC_CACHE_VAL(glibcxx_cv_SC_NPROCESSORS_ONLN, [ GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [int n = sysconf(_SC_NPROCESSORS_ONLN);], [glibcxx_cv_SC_NPROCESSORS_ONLN=yes], [glibcxx_cv_SC_NPROCESSORS_ONLN=no]) ]) if test $glibcxx_cv_SC_NPROCESSORS_ONLN = yes; then AC_DEFINE(_GLIBCXX_USE_SC_NPROCESSORS_ONLN, 1, [Define if _SC_NPROCESSORS_ONLN is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_SC_NPROCESSORS_ONLN) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether sysconf(_SC_NPROC_ONLN) is available in <unistd.h>, and define _GLIBCXX_USE_SC_NPROC_ONLN. dnl AC_DEFUN([GLIBCXX_CHECK_SC_NPROC_ONLN], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_CHECKING([for _SC_NPROC_ONLN]) AC_CACHE_VAL(glibcxx_cv_SC_NPROC_ONLN, [ GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [int n = sysconf(_SC_NPROC_ONLN);], [glibcxx_cv_SC_NPROC_ONLN=yes], [glibcxx_cv_SC_NPROC_ONLN=no]) ]) if test $glibcxx_cv_SC_NPROC_ONLN = yes; then AC_DEFINE(_GLIBCXX_USE_SC_NPROC_ONLN, 1, [Define if _SC_NPROC_ONLN is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_SC_NPROC_ONLN) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether pthread_num_processors_np is available in <pthread.h>, and define _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP. dnl AC_DEFUN([GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_CHECKING([for pthreads_num_processors_np]) AC_CACHE_VAL(glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP, [ GCC_TRY_COMPILE_OR_LINK( [#include <pthread.h>], [int n = pthread_num_processors_np();], [glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP=yes], [glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP=no]) ]) if test $glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP = yes; then AC_DEFINE(_GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP, 1, [Define if pthreads_num_processors_np is available in <pthread.h>.]) fi AC_MSG_RESULT($glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether sysctl is available in <pthread.h>, and define _GLIBCXX_USE_SYSCTL_HW_NCPU. dnl AC_DEFUN([GLIBCXX_CHECK_SYSCTL_HW_NCPU], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_CHECKING([for hw.ncpu sysctl]) AC_CACHE_VAL(glibcxx_cv_SYSCTL_HW_NCPU, [ GCC_TRY_COMPILE_OR_LINK( [ #include <stddef.h> #include <sys/sysctl.h> ], [ int count; size_t size = sizeof(count); int mib[] = { CTL_HW, HW_NCPU }; sysctl(mib, 2, &count, &size, NULL, 0); ], [glibcxx_cv_SYSCTL_HW_NCPU=yes], [glibcxx_cv_SYSCTL_HW_NCPU=no]) ]) if test $glibcxx_cv_SYSCTL_HW_NCPU = yes; then AC_DEFINE(_GLIBCXX_USE_SYSCTL_HW_NCPU, 1, [Define if sysctl(), CTL_HW and HW_NCPU are available in <sys/sysctl.h>.]) fi AC_MSG_RESULT($glibcxx_cv_SYSCTL_HW_NCPU) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check to see if python pretty printing can be activated. dnl dnl --with-python-dir=dir dnl installs directory into $prefix/dir AC_DEFUN([GLIBCXX_ENABLE_PYTHON], [ AC_MSG_CHECKING([for custom python install directory]) AC_ARG_WITH([python-dir], AS_HELP_STRING([--with-python-dir], [the location to install Python modules. This path is relative starting from the prefix.]), [with_python_dir=$withval], [with_python_dir="no"]) AC_MSG_RESULT(${with_python_dir}) # Needed for installing Python modules during make install. python_mod_dir="${with_python_dir}" AC_SUBST(python_mod_dir) GLIBCXX_CONDITIONAL(ENABLE_PYTHONDIR, test $python_mod_dir != no) ]) dnl dnl Check to see if -Werror is disabled. dnl dnl --enable-werror/--disable-werror AC_DEFUN([GLIBCXX_ENABLE_WERROR], [ AC_MSG_CHECKING([for -Werror]) GLIBCXX_ENABLE(werror,$1,,[turns on -Werror]) AC_MSG_RESULT($enable_werror) GLIBCXX_CONDITIONAL(ENABLE_WERROR, test $enable_werror = yes) ]) 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_RESULT([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 <sys/sdt.h> 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 <sys/sdt.h> header file]) fi AC_MSG_RESULT($glibcxx_cv_sys_sdt_h) ]) a3108 1 m4_include([../config/gc++filt.m4]) d3110 1 a3110 1 m4_include([../config/gthr.m4]) @ 1.1.1.1.2.1 log @sync with head. for a reference, the tree before this commit was tagged as yamt-pagecache-tag8. this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments") @ text @d1 1 a38 1 dnl toplevel_builddir (absolute path) d52 1 a52 1 m4_define([glibcxx_SUBDIRS],[include libsupc++ python src src/c++98 src/c++11 doc testsuite]) a62 1 toplevel_builddir=${glibcxx_builddir}/.. a65 1 AC_SUBST(toplevel_builddir) d72 1 a72 1 [configuring in a subdirectory])) d76 1 a76 1 [configuring with a cross compiler])) d80 1 a80 1 [assume newlib as a system C library])) d98 2 a99 2 # Check for C library flavor since GNU/Linux platforms use different # configuration directories depending on the C library in use. a106 7 AC_EGREP_CPP([_using_bionic], [ #include <stdio.h> #if __BIONIC__ _using_bionic #endif ], bionic=yes, bionic=no) a162 32 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 d216 1 a216 1 $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'` d228 1 a228 1 if test x"$with_gnu_ld" = x"yes" && d299 1 a299 1 dnl _GLIBCXX_RES_LIMITS if we can set artificial resource limits d312 1 a312 1 [Only used in build directory testsuite_hooks.h.]) d320 2 a321 2 [], [setrlimit_have_headers=no]) d335 7 a341 7 [#include <unistd.h> #include <sys/time.h> #include <sys/resource.h> ], [struct rlimit r; setrlimit(0, &r);], [glibcxx_cv_setrlimit=yes], [glibcxx_cv_setrlimit=no]) d349 2 a350 2 [Define if using setrlimit to set resource limits during "make check"]) d390 2 a391 2 AC_DEFINE(HAVE_S_ISREG, 1, [Define if S_IFREG is available in <sys/stat.h>.]) d395 1 a395 1 [Define if S_IFREG is available in <sys/stat.h>.]) d489 4 a492 4 [#include <stdint.h> template<typename, typename> struct same { enum { value = -1 }; }; template<typename Tp> struct same<Tp, Tp> { enum { value = 1 }; }; int array[same<int64_t, long>::value];], [], d504 4 a507 4 [#include <stdint.h> template<typename, typename> struct same { enum { value = -1 }; }; template<typename Tp> struct same<Tp, Tp> { enum { value = 1 }; }; int array[same<int64_t, long long>::value];], [], d528 1 a528 1 CXXFLAGS="$CXXFLAGS -fno-exceptions" d561 2 a562 3 dnl --enable-fully-dynamic-string defines _GLIBCXX_FULLY_DYNAMIC_STRING to 1 dnl --disable-fully-dynamic-string defines _GLIBCXX_FULLY_DYNAMIC_STRING to 0 dnl otherwise undefined d569 2 a570 3 enable_fully_dynamic_string_def=1 else enable_fully_dynamic_string_def=0 a571 2 AC_DEFINE_UNQUOTED([_GLIBCXX_FULLY_DYNAMIC_STRING], [${enable_fully_dynamic_string_def}], [Define to 1 if a fully dynamic basic_string is wanted, 0 to disable, undefined for platform defaults]) d582 1 a582 1 dnl enable_abi_check a586 1 dnl baseline_subdir_switch d601 1 a601 1 enable_abi_check=no ;; d603 1 a603 1 enable_abi_check=yes ;; d610 1 a610 1 a613 60 baseline_subdir_switch="$abi_baseline_subdir_switch" AC_SUBST(baseline_subdir_switch) ]) dnl dnl Does any necessary configuration for docbook in the docs directory. dnl dnl XSLTPROC must be set before this dnl dnl Sets: dnl glibcxx_stylesheets dnl Substs: dnl XSL_STYLE_DIR dnl AC_DEFUN([GLIBCXX_CONFIGURE_DOCBOOK], [ AC_MSG_CHECKING([for docbook stylesheets for documentation creation]) glibcxx_stylesheets=no if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude http://docbook.sourceforge.net/release/xsl-ns/current/xhtml-1_1/docbook.xsl - 2>/dev/null; then glibcxx_stylesheets=yes fi AC_MSG_RESULT($glibcxx_stylesheets) AC_MSG_CHECKING([for local stylesheet directory]) glibcxx_local_stylesheets=no if test x"$glibcxx_stylesheets" = x"yes"; then if test -d /usr/share/sgml/docbook/xsl-ns-stylesheets; then glibcxx_local_stylesheets=yes XSL_STYLE_DIR=/usr/share/sgml/docbook/xsl-ns-stylesheets fi if test -d /usr/share/xml/docbook/stylesheet/docbook-xsl-ns; 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) if test x"$glibcxx_local_stylesheets" = x"yes"; then AC_SUBST(XSL_STYLE_DIR) AC_MSG_NOTICE($XSL_STYLE_DIR) else glibcxx_stylesheets=no fi # Check for epub3 dependencies. AC_MSG_CHECKING([for epub3 stylesheets for documentation creation]) glibcxx_epub_stylesheets=no if test x"$glibcxx_local_stylesheets" = x"yes"; then if test -f "$XSL_STYLE_DIR/epub3/chunk.xsl"; then glibcxx_epub_stylesheets=yes fi fi AC_MSG_RESULT($glibcxx_epub_stylesheets) AM_CONDITIONAL(BUILD_EPUB, test x"$glibcxx_epub_stylesheets" = x"yes") d637 3 a639 3 # get unwind* headers from the libgcc dir. #TOPLEVEL_INCLUDES='-I$(toplevel_srcdir)/libgcc -I$(toplevel_srcdir)/include' TOPLEVEL_INCLUDES='-I$(toplevel_srcdir)/libgcc' d662 1 a662 1 WARN_FLAGS='-Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi' d689 1 a689 1 [installation directory for include files]), d701 1 a701 1 [Specify that runtime libraries should be installed in a compiler-specific directory]), d713 2 a714 2 if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then d772 2 a773 2 m4_define([_g_help],[AC_HELP_STRING([_g_switch$3],[$4 @@<:@@default=$2@@:>@@])])dnl AC_ARG_ENABLE([$1],m4_dquote(_g_help), d780 2 a781 2 dnl Idea for future: generate a URL pointing to dnl "onlinedocs/configopts.html#whatever" d862 2 a863 2 [Define if C99 functions or macros in <math.h> should be imported in <cmath> in namespace std.]) d930 3 a932 3 [Define if C99 functions in <complex.h> should be used in <complex>. Using compiler builtins for these functions requires corresponding C99 library functions to be present.]) d944 1 a944 1 vfscanf(stderr, "%i", args); d982 1 a982 1 AC_MSG_CHECKING([for ISO C99 support in <wchar.h>]) d984 2 a985 2 namespace test { d997 1 a997 1 namespace test { using ::vfwscanf; } ], [], d1002 1 a1002 1 namespace test { using ::vswscanf; } ], [], d1007 1 a1007 1 namespace test { using ::vwscanf; } ], [], d1011 1 a1011 1 namespace test { using ::wcstof; } ], [], d1015 1 a1015 1 [ wint_t t; int i = iswblank(t);], d1039 1 a1039 1 fi d1048 2 a1049 2 dnl implementation of 20.11.7 [time.clock], and 30.3.2 [thread.thread.this] dnl in the C++11 standard. d1054 2 a1055 2 dnl nanosleep and sched_yield in libc and libposix4 and, if needed, dnl links in the latter. d1057 1 a1057 1 dnl also searches (and, if needed, links) librt. Note that this is a1064 5 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 d1068 1 a1068 1 GLIBCXX_ENABLE(libstdcxx-time,$1,[[[=KIND]]], d1107 1 a1107 1 [ Defined if sched_yield is available. ]) d1111 3 a1113 3 GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield" AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1, [ Defined if sched_yield is available. ]) d1118 1 a1118 1 [ Defined if sched_yield is available. ]) d1127 8 a1134 10 [#include <unistd.h> #include <time.h> ], [#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK) timespec tp; #endif clock_gettime(CLOCK_MONOTONIC, &tp); ], [ac_has_clock_monotonic=yes], [ac_has_clock_monotonic=no]) AC_MSG_RESULT($ac_has_clock_monotonic) d1136 2 d1140 8 a1147 8 [#include <unistd.h> #include <time.h> ], [#if _POSIX_TIMERS > 0 timespec tp; #endif clock_gettime(CLOCK_REALTIME, &tp); ], [ac_has_clock_realtime=yes], [ac_has_clock_realtime=no]) d1153 8 a1160 8 [#include <unistd.h> #include <time.h> ], [#if _POSIX_TIMERS > 0 timespec tp; #endif nanosleep(&tp, 0); ], [ac_has_nanosleep=yes], [ac_has_nanosleep=no]) a1165 25 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 <unistd.h> #include <time.h> #include <sys/syscall.h> ], [#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 a1178 29 else AC_MSG_CHECKING([for sleep]) AC_TRY_COMPILE([#include <unistd.h>], [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 <unistd.h>], [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 <windows.h>], [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) d1189 2 a1190 2 dnl Check for gettimeofday, used in the implementation of 20.11.7 dnl [time.clock] in the C++11 standard. d1193 1 a1193 1 d1200 1 a1200 1 d1208 1 a1208 1 d1211 1 a1211 1 d1216 1 a1216 1 d1242 7 a1248 7 [typedef __complex__ float float_type; float_type tmpf; cacosf(tmpf); casinf(tmpf); catanf(tmpf); cacoshf(tmpf); casinhf(tmpf); catanhf(tmpf); d1250 6 a1255 6 cacos(tmpd); casin(tmpd); catan(tmpd); cacosh(tmpd); casinh(tmpd); catanh(tmpd); d1257 6 a1262 6 cacosl(tmpld); casinl(tmpld); catanl(tmpld); cacoshl(tmpld); casinhl(tmpld); catanhl(tmpld); d1268 2 a1269 2 [Define if C99 functions in <complex.h> should be used in <tr1/complex>. Using compiler builtins for these functions d1277 3 a1279 3 [int ch; int ret; ret = isblank(ch); d1286 1 a1286 1 [Define if C99 functions in <ctype.h> should be imported in d1296 15 a1310 15 [int except, mode; fexcept_t* pflag; fenv_t* penv; int ret; ret = feclearexcept(except); ret = fegetexceptflag(pflag, except); ret = feraiseexcept(except); ret = fesetexceptflag(pflag, except); ret = fetestexcept(except); ret = fegetround(); ret = fesetround(mode); ret = fegetenv(penv); ret = feholdexcept(penv); ret = fesetenv(penv); ret = feupdateenv(penv); d1316 1 a1316 1 [Define if C99 functions in <fenv.h> should be imported in d1324 3 a1326 3 #define __STDC_CONSTANT_MACROS #include <stdint.h>], [typedef int8_t my_int8_t; d1329 1 a1329 1 typedef int16_t my_int16_t; d1332 1 a1332 1 typedef int32_t my_int32_t; d1335 1 a1335 1 typedef int64_t my_int64_t; d1338 1 a1338 1 typedef int_fast8_t my_int_fast8_t; d1341 1 a1341 1 typedef int_fast16_t my_int_fast16_t; d1344 1 a1344 1 typedef int_fast32_t my_int_fast32_t; d1347 1 a1347 1 typedef int_fast64_t my_int_fast64_t; d1350 1 a1350 1 typedef int_least8_t my_int_least8_t; d1353 1 a1353 1 typedef int_least16_t my_int_least16_t; d1356 1 a1356 1 typedef int_least32_t my_int_least32_t; d1359 1 a1359 1 typedef int_least64_t my_int_least64_t; d1368 1 a1368 1 typedef uint8_t my_uint8_t; d1371 1 a1371 1 typedef uint16_t my_uint16_t; d1374 1 a1374 1 typedef uint32_t my_uint32_t; d1377 1 a1377 1 typedef uint64_t my_uint64_t; d1380 1 a1380 1 typedef uint_fast8_t my_uint_fast8_t; d1383 1 a1383 1 typedef uint_fast16_t my_uint_fast16_t; d1386 1 a1386 1 typedef uint_fast32_t my_uint_fast32_t; d1389 1 a1389 1 typedef uint_fast64_t my_uint_fast64_t; d1392 1 a1392 1 typedef uint_least8_t my_uint_least8_t; d1395 1 a1395 1 typedef uint_least16_t my_uint_least16_t; d1398 1 a1398 1 typedef uint_least32_t my_uint_least32_t; d1401 1 a1401 1 typedef uint_least64_t my_uint_least64_t; d1416 1 a1416 1 [Define if C99 types in <stdint.h> should be imported in d1424 107 a1530 107 [typedef double_t my_double_t; typedef float_t my_float_t; acosh(0.0); acoshf(0.0f); acoshl(0.0l); asinh(0.0); asinhf(0.0f); asinhl(0.0l); atanh(0.0); atanhf(0.0f); atanhl(0.0l); cbrt(0.0); cbrtf(0.0f); cbrtl(0.0l); copysign(0.0, 0.0); copysignf(0.0f, 0.0f); copysignl(0.0l, 0.0l); erf(0.0); erff(0.0f); erfl(0.0l); erfc(0.0); erfcf(0.0f); erfcl(0.0l); exp2(0.0); exp2f(0.0f); exp2l(0.0l); expm1(0.0); expm1f(0.0f); expm1l(0.0l); fdim(0.0, 0.0); fdimf(0.0f, 0.0f); fdiml(0.0l, 0.0l); fma(0.0, 0.0, 0.0); fmaf(0.0f, 0.0f, 0.0f); fmal(0.0l, 0.0l, 0.0l); fmax(0.0, 0.0); fmaxf(0.0f, 0.0f); fmaxl(0.0l, 0.0l); fmin(0.0, 0.0); fminf(0.0f, 0.0f); fminl(0.0l, 0.0l); hypot(0.0, 0.0); hypotf(0.0f, 0.0f); hypotl(0.0l, 0.0l); ilogb(0.0); ilogbf(0.0f); ilogbl(0.0l); lgamma(0.0); lgammaf(0.0f); lgammal(0.0l); llrint(0.0); llrintf(0.0f); llrintl(0.0l); llround(0.0); llroundf(0.0f); llroundl(0.0l); log1p(0.0); log1pf(0.0f); log1pl(0.0l); log2(0.0); log2f(0.0f); log2l(0.0l); logb(0.0); logbf(0.0f); logbl(0.0l); lrint(0.0); lrintf(0.0f); lrintl(0.0l); lround(0.0); lroundf(0.0f); lroundl(0.0l); nan(0); nanf(0); nanl(0); nearbyint(0.0); nearbyintf(0.0f); nearbyintl(0.0l); nextafter(0.0, 0.0); nextafterf(0.0f, 0.0f); nextafterl(0.0l, 0.0l); nexttoward(0.0, 0.0); nexttowardf(0.0f, 0.0f); nexttowardl(0.0l, 0.0l); remainder(0.0, 0.0); remainderf(0.0f, 0.0f); remainderl(0.0l, 0.0l); remquo(0.0, 0.0, 0); remquof(0.0f, 0.0f, 0); remquol(0.0l, 0.0l, 0); rint(0.0); rintf(0.0f); rintl(0.0l); round(0.0); roundf(0.0f); roundl(0.0l); scalbln(0.0, 0l); scalblnf(0.0f, 0l); scalblnl(0.0l, 0l); scalbn(0.0, 0); scalbnf(0.0f, 0); scalbnl(0.0l, 0); tgamma(0.0); tgammaf(0.0f); tgammal(0.0l); trunc(0.0); truncf(0.0f); truncl(0.0l); d1536 2 a1537 2 [Define if C99 functions or macros in <math.h> should be imported in <tr1/cmath> in namespace std::tr1.]) d1546 8 a1553 8 [intmax_t i, numer, denom, base; const char* s; char** endptr; intmax_t ret = imaxabs(i); imaxdiv_t dret = imaxdiv(numer, denom); ret = strtoimax(s, endptr, base); uintmax_t uret = strtoumax(s, endptr, base); ],[ac_c99_inttypes_tr1=yes], [ac_c99_inttypes_tr1=no]) d1558 2 a1559 2 [Define if C99 functions in <inttypes.h> should be imported in <tr1/cinttypes> in namespace std::tr1.]) d1568 1 a1568 1 [intmax_t base; d1570 4 a1573 4 wchar_t** endptr; intmax_t ret = wcstoimax(s, endptr, base); uintmax_t uret = wcstoumax(s, endptr, base); ],[ac_c99_inttypes_wchar_t_tr1=yes], d1579 1 a1579 1 [Define if wchar_t C99 functions in <inttypes.h> should be d1583 1 a1583 1 # Check for the existence of the <stdbool.h> header. a1585 3 # Check for the existence of the <stdalign.h> header. AC_CHECK_HEADERS(stdalign.h) d1599 1 a1599 6 ## 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 d1608 1 a1608 1 [Define if /dev/random and /dev/urandom are available for d1615 2 a1616 1 dnl Compute the EOF, SEEK_CUR, and SEEK_END integer constants. d1618 1 a1618 1 AC_DEFUN([GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS], [ d1620 13 a1632 48 AC_CACHE_CHECK([for the value of EOF], glibcxx_cv_stdio_eof, [ AC_COMPUTE_INT([glibcxx_cv_stdio_eof], [[EOF]], [#include <stdio.h>], [AC_MSG_ERROR([computing EOF failed])]) ]) AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_EOF, $glibcxx_cv_stdio_eof, [Define to the value of the EOF integer constant.]) AC_CACHE_CHECK([for the value of SEEK_CUR], glibcxx_cv_stdio_seek_cur, [ AC_COMPUTE_INT([glibcxx_cv_stdio_seek_cur], [[SEEK_CUR]], [#include <stdio.h>], [AC_MSG_ERROR([computing SEEK_CUR failed])]) ]) AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_SEEK_CUR, $glibcxx_cv_stdio_seek_cur, [Define to the value of the SEEK_CUR integer constant.]) AC_CACHE_CHECK([for the value of SEEK_END], glibcxx_cv_stdio_seek_end, [ AC_COMPUTE_INT([glibcxx_cv_stdio_seek_end], [[SEEK_END]], [#include <stdio.h>], [AC_MSG_ERROR([computing SEEK_END failed])]) ]) AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_SEEK_END, $glibcxx_cv_stdio_seek_end, [Define to the value of the SEEK_END integer constant.]) ]) dnl dnl Check whether required C++ overloads are present in <stdio.h>. dnl AC_DEFUN([GLIBCXX_CHECK_STDIO_PROTO], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_MSG_CHECKING([for gets declaration]) AC_CACHE_VAL(glibcxx_cv_gets, [ AC_COMPILE_IFELSE([AC_LANG_SOURCE( [#include <stdio.h> namespace test { using ::gets; } ])], [glibcxx_cv_gets=yes], [glibcxx_cv_gets=no] )]) if test $glibcxx_cv_gets = yes; then AC_DEFINE(HAVE_GETS, 1, [Define if gets is available in <stdio.h>.]) a1633 1 AC_MSG_RESULT($glibcxx_cv_gets) a1634 1 AC_LANG_RESTORE d1645 1 a1645 3 EOVERFLOW, ENOTSUP, EIDRM, ETXTBSY, ECHILD, ENOSPC, EPERM, ETIMEDOUT, EWOULDBLOCK], d1673 1 a1673 1 GLIBCXX_ENABLE(cheaders,$1,[[[=KIND]]], d1684 4 d1693 1 d1704 1 a1704 1 GLIBCXX_ENABLE(clocale,auto,[[[=MODEL]]], d1706 1 a1706 1 [permit generic|gnu|ieee_1003.1-2001|newlib|yes|no|auto]) d1716 2 a1717 2 # Either a known package, or "auto" d1728 2 a1729 2 enable_clocale_flag=gnu ;; d1731 1 a1731 4 enable_clocale_flag=darwin ;; openbsd*) enable_clocale_flag=newlib d1734 2 a1735 6 if test x"$with_newlib" = x"yes"; then enable_clocale_flag=newlib else enable_clocale_flag=generic fi ;; d1743 1 a1743 1 #if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined(__UCLIBC__) d1748 30 d1779 1 a1779 1 ac_save_CFLAGS="$CFLAGS" d1786 4 a1789 4 [char s[128]; __locale_t loc; strxfrm_l(s, "C", 5, loc);], AC_DEFINE(HAVE_STRXFRM_L, 1, [Define if strxfrm_l is available in <string.h>.]),) d1794 3 a1796 3 [__locale_t loc; strerror_l(5, loc);], AC_DEFINE(HAVE_STRERROR_L, 1, [Define if strerror_l is available in <string.h>.]),) d1802 1 a1802 1 ac_save_CFLAGS="$CFLAGS" d1807 3 a1809 3 [char s[128]; strerror_r(5, s, 128);], AC_DEFINE(HAVE_STRERROR_R, 1, [Define if strerror_r is available in <string.h>.]),) d1847 1 a1847 1 d1859 1 a1859 1 USE_NLS=yes d1863 2 a1864 2 glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ a1897 16 newlib) AC_MSG_RESULT(newlib) CLOCALE_H=config/locale/generic/c_locale.h CLOCALE_CC=config/locale/generic/c_locale.cc CCODECVT_CC=config/locale/generic/codecvt_members.cc CCOLLATE_CC=config/locale/generic/collate_members.cc CCTYPE_CC=config/locale/newlib/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 ;; d1911 2 a1912 2 AC_DEFINE(_GLIBCXX_USE_NLS, 1, [Define if NLS translations are to be used.]) d1939 1 a1939 1 GLIBCXX_ENABLE(libstdcxx-allocator,auto,[[[=KIND]]], d1961 2 a1962 2 enable_libstdcxx_allocator_flag=new ;; d1964 2 a1965 2 enable_libstdcxx_allocator_flag=new ;; d1969 1 a1969 1 d1992 1 a1992 1 ;; d2012 1 a2012 1 [Define to use concept checking code from the boost libraries.]) a2016 19 dnl Use extern templates. dnl dnl --enable-extern-template defines _GLIBCXX_EXTERN_TEMPLATE to 1 dnl --disable-extern-template defines _GLIBCXX_EXTERN_TEMPLATE to 0 dnl + Usage: GLIBCXX_ENABLE_TEMPLATE[(DEFAULT)] dnl Where DEFAULT is `yes' or `no'. dnl AC_DEFUN([GLIBCXX_ENABLE_EXTERN_TEMPLATE], [ GLIBCXX_ENABLE(extern-template,$1,,[enable extern template]) AC_MSG_CHECKING([for extern template support]) AC_MSG_RESULT([$enable_extern_template]) GLIBCXX_CONDITIONAL(ENABLE_EXTERN_TEMPLATE, test $enable_extern_template = yes) ]) dnl d2035 1 d2046 1 a2046 1 GLIBCXX_ENABLE(cstdio,stdio,[[[=PACKAGE]]], d2095 4 a2098 4 -fhonor-std) ;; -*) ;; *) # and we're trying to pass /what/ exactly? AC_MSG_ERROR([compiler flags start with a -]) ;; d2179 1 a2179 1 [only build freestanding C++ runtime support]),, d2181 1 a2181 1 arm*-*-symbianelf*) d2184 1 a2184 1 *) a2204 25 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 d2217 2 a2218 2 AC_DEFINE(_GLIBCXX_USE_LONG_LONG, 1, [Define if code specialized for long long should be used.]) a2263 74 dnl Check for GNU 128-bit integer and floating point types. dnl dnl Note: also checks that the types aren't standard types. dnl dnl Defines: dnl _GLIBCXX_USE_INT128 dnl _GLIBCXX_USE_FLOAT128 dnl AC_DEFUN([GLIBCXX_ENABLE_INT128_FLOAT128], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS # Fake what AC_TRY_COMPILE does, without linking as this is # unnecessary for this test. cat > conftest.$ac_ext << EOF [#]line __oline__ "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; template<typename T> struct same<T, T>; int main() { typename same<long, __int128>::type i1; typename same<long long, __int128>::type i2; } EOF AC_MSG_CHECKING([for __int128]) if AC_TRY_EVAL(ac_compile); then AC_DEFINE(_GLIBCXX_USE_INT128, 1, [Define if __int128 is supported on this host.]) enable_int128=yes else enable_int128=no fi AC_MSG_RESULT($enable_int128) rm -f conftest* cat > conftest.$ac_ext << EOF [#]line __oline__ "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; template<typename T> struct same<T, T>; int main() { typename same<double, __float128>::type f1; typename same<long double, __float128>::type f2; } EOF AC_MSG_CHECKING([for __float128]) if AC_TRY_EVAL(ac_compile); then AC_DEFINE(_GLIBCXX_USE_FLOAT128, 1, [Define if __float128 is supported on this host.]) enable_float128=yes else enable_float128=no fi AC_MSG_RESULT($enable_float128) rm -f conftest* AC_LANG_RESTORE ]) dnl d2290 1 a2290 1 d2295 1 a2295 1 d2299 2 a2300 2 #include <stddef.h> wint_t i; d2304 2 a2305 2 namespace test { d2312 1 a2312 1 using ::fwprintf; d2316 4 a2319 4 using ::mbrlen; using ::mbrtowc; using ::mbsinit; using ::mbsrtowcs; d2322 2 a2323 2 using ::swprintf; using ::swscanf; d2325 11 a2335 11 using ::vfwprintf; using ::vswprintf; using ::vwprintf; using ::wcrtomb; using ::wcscat; using ::wcschr; using ::wcscmp; using ::wcscoll; using ::wcscpy; using ::wcscspn; using ::wcsftime; d2337 3 a2339 3 using ::wcsncat; using ::wcsncmp; using ::wcsncpy; d2341 3 a2343 3 using ::wcsrchr; using ::wcsrtombs; using ::wcsspn; d2345 2 a2346 2 using ::wcstod; using ::wcstok; d2348 3 a2350 3 using ::wcstoul; using ::wcsxfrm; using ::wctob; d2356 2 a2357 2 using ::wprintf; using ::wscanf; d2369 1 a2369 1 [Define if code specialized for wchar_t should be used.]) d2402 3 a2404 3 -o conftest.h.gch 1>&5 2>&1 && echo '#error "pch failed"' > conftest.h && echo '#include "conftest.h"' > conftest.cc && d2407 1 a2407 1 glibcxx_cv_prog_CXX_pch=yes d2409 1 a2409 1 glibcxx_cv_prog_CXX_pch=no d2434 1 a2434 1 dnl http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html d2437 1 a2437 1 dnl builtins for atomic operations for various integral sizes. Note, this d2444 6 d2464 1 a2464 1 ;; d2481 6 a2486 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); ], d2489 5 a2493 1 ]) d2503 6 a2508 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); ], d2511 5 a2515 1 ]) d2525 6 a2530 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); ], d2533 5 a2537 1 ]) d2547 6 a2552 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); ], d2555 5 a2559 1 ]) d2578 6 a2583 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); d2590 2 a2591 2 if grep __atomic_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_bool=no d2593 3 a2595 1 glibcxx_cv_atomic_bool=yes d2608 6 a2613 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); d2620 2 a2621 2 if grep __atomic_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_short=no d2623 3 a2625 1 glibcxx_cv_atomic_short=yes d2635 1 a2635 1 // NB: _Atomic_word not necessarily int. d2639 6 a2644 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); d2651 2 a2652 2 if grep __atomic_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_int=no d2654 3 a2656 1 glibcxx_cv_atomic_int=yes d2669 6 a2674 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); d2681 2 a2682 2 if grep __atomic_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_long_long=no d2684 3 a2686 1 glibcxx_cv_atomic_long_long=yes d2697 2 a2698 6 # Set atomicity_dir to builtins if all but the long long test above passes. if test $glibcxx_cv_atomic_bool = yes \ && test $glibcxx_cv_atomic_short = yes \ && test $glibcxx_cv_atomic_int = yes; then AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS, 1, [Define if the compiler supports C++11 atomics.]) d2707 2 a2708 2 AC_MSG_WARN([They cannot be faked when thread support is disabled.]) AC_MSG_WARN([Thread-safety of certain classes is not guaranteed.]) d2710 2 a2711 2 AC_MSG_WARN([They will be faked using a mutex.]) AC_MSG_WARN([Performance of certain classes will degrade as a result.]) d2758 1 a2758 1 enable_sjlj_exceptions=yes d2760 1 a2760 1 enable_sjlj_exceptions=no d2762 1 a2762 1 enable_sjlj_exceptions=no d2774 1 a2774 1 [Define if the compiler is configured for setjmp/longjmp exceptions.]) d2792 3 a2794 3 dnl --enable-libstdcxx-visibility enables attempt to use visibility attributes. dnl --disable-libstdcxx-visibility turns off all use of visibility attributes. dnl + Usage: GLIBCXX_ENABLE_LIBSTDCXX_VISIBILITY[(DEFAULT)] d2797 2 a2798 2 AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_VISIBILITY], [ GLIBCXX_ENABLE(libstdcxx-visibility,$1,,[enables visibility safe usage]) d2800 1 a2800 1 if test x$enable_libstdcxx_visibility = xyes ; then d2812 1 a2812 1 enable_libstdcxx_visibility=no d2816 2 a2817 2 GLIBCXX_CONDITIONAL(ENABLE_VISIBILITY, test $enable_libstdcxx_visibility = yes) AC_MSG_NOTICE([visibility supported: $enable_libstdcxx_visibility]) a2824 4 dnl Sets libtool_VERSION, and determines shared library SONAME. dnl dnl This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no. dnl a2828 1 dnl d2836 1 a2836 1 GLIBCXX_ENABLE(symvers,$1,[[[=STYLE]]], d2838 1 a2838 1 [permit yes|no|gnu|gnu-versioned-namespace|darwin|darwin-export|sun]) a2842 3 # Sun style symbol versions needs GNU c++filt for make_sunver.pl to work # with extern "C++" in version scripts. AC_REQUIRE([GCC_PROG_GNU_CXXFILT]) d2851 4 a2854 4 hpux*) enable_symvers=no ;; *) enable_symvers=gnu ;; d2858 1 a2858 1 darwin*) d2860 2 a2861 16 # Sun symbol versioning exists since Solaris 2.5. solaris2.[[5-9]]* | solaris2.1[[0-9]]*) # make_sunver.pl needs GNU c++filt to support extern "C++" in # version scripts, so disable symbol versioning if none can be # found. if test -z "$ac_cv_path_CXXFILT"; then AC_MSG_WARN([=== You have requested Sun symbol versioning, but]) AC_MSG_WARN([=== no GNU c++filt could be found.]) AC_MSG_WARN([=== Symbol versioning will be disabled.]) enable_symvers=no else enable_symvers=sun fi ;; *) enable_symvers=no ;; a2871 16 # Check if 'sun' was requested on non-Solaris 2 platforms. if test x$enable_symvers = xsun ; then case ${target_os} in solaris2*) # All fine. ;; *) # Unlikely to work. AC_MSG_WARN([=== You have requested Sun symbol versioning, but]) AC_MSG_WARN([=== you are not targetting Solaris 2.]) AC_MSG_WARN([=== Symbol versioning will be disabled.]) enable_symvers=no ;; esac fi d2873 1 a2873 3 if test $enable_symvers = gnu || test $enable_symvers = gnu-versioned-namespace || test $enable_symvers = sun; then a2908 2 elif test $with_gnu_ld != yes && test $enable_symvers = sun; then : All interesting versions of Sun ld support sun style symbol versioning. d2928 1 a2928 4 # For libtool versioning info, format is CURRENT:REVISION:AGE libtool_VERSION=6:19:0 # Everything parsed; figure out what files and settings to use. d2935 2 a2936 2 AC_DEFINE(_GLIBCXX_SYMVER_GNU, 1, [Define to use GNU versioning in the shared library.]) a2938 1 libtool_VERSION=7:0:0 d2940 2 a2941 2 AC_DEFINE(_GLIBCXX_SYMVER_GNU_NAMESPACE, 1, [Define to use GNU namespace versioning in the shared library.]) d2945 2 a2946 7 AC_DEFINE(_GLIBCXX_SYMVER_DARWIN, 1, [Define to use darwin versioning in the shared library.]) ;; sun) SYMVER_FILE=config/abi/pre/gnu.ver AC_DEFINE(_GLIBCXX_SYMVER_SUN, 1, [Define to use Sun versioning in the shared library.]) a2970 1 GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_SUN, test $enable_symvers = sun) a2972 14 if test $enable_symvers != no ; then case ${target_os} in # The Solaris 2 runtime linker doesn't support the GNU extension of # binding the same symbol to different versions solaris2*) ;; # Other platforms with GNU symbol versioning (GNU/Linux, more?) do. *) AC_DEFINE(HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT, 1, [Define to 1 if the target runtime linker supports binding the same symbol to different versions.]) ;; esac fi d2980 2 a2981 2 AC_TRY_COMPILE(, [__SIZE_TYPE__* stp; unsigned int* uip; stp = uip;], [glibcxx_size_t_is_i=yes], [glibcxx_size_t_is_i=no]) d2991 2 a2992 2 AC_TRY_COMPILE(, [__PTRDIFF_TYPE__* ptp; int* ip; ptp = ip;], [glibcxx_ptrdiff_t_is_i=yes], [glibcxx_ptrdiff_t_is_i=no]) d3014 4 a3017 1 dnl thread_header d3023 18 a3040 1 GCC_AC_THREAD_HEADER([$target_thread_file]) a3048 2 dnl GLIBCXX_ENABLE_SYMVERS must be done before this. dnl a3049 5 GLIBCXX_ENABLE(libstdcxx-threads,auto,,[enable C++11 threads support]) if test x$enable_libstdcxx_threads = xauto || test x$enable_libstdcxx_threads = xyes; then d3054 1 a3054 2 CXXFLAGS="$CXXFLAGS -fno-exceptions \ -I${toplevel_srcdir}/libgcc -I${toplevel_builddir}/libgcc" d3062 1 a3062 1 AC_MSG_CHECKING([whether it can be safely assumed that mutex_timedlock is available]) d3064 1 a3064 1 AC_TRY_COMPILE([#include <unistd.h>], d3066 1 a3066 3 // In case of POSIX threads check _POSIX_TIMEOUTS. #if (defined(_PTHREADS) \ && (!defined(_POSIX_TIMEOUTS) || _POSIX_TIMEOUTS <= 0)) a3068 1 ], [ac_gthread_use_mutex_timedlock=1], [ac_gthread_use_mutex_timedlock=0]) d3070 3 a3072 12 AC_DEFINE_UNQUOTED(_GTHREAD_USE_MUTEX_TIMEDLOCK, $ac_gthread_use_mutex_timedlock, [Define to 1 if mutex_timedlock is available.]) if test $ac_gthread_use_mutex_timedlock = 1 ; then res_mutex_timedlock=yes ; else res_mutex_timedlock=no ; fi AC_MSG_RESULT([$res_mutex_timedlock]) AC_MSG_CHECKING([for gthreads library]) AC_TRY_COMPILE([#include "gthr.h"], [ #ifndef __GTHREADS_CXX0X d3075 1 a3075 22 ], [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]) else ac_has_gthreads=no fi d3081 1 a3081 1 [Define if gthreads library is available.]) d3102 2 a3103 2 AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if LC_MESSAGES is available in <locale.h>.]) a3107 225 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_cv_x86_rdrand=no case "$target" in i?86-*-* | \ x86_64-*-*) AC_TRY_COMPILE(, [asm("rdrand %eax");], [ac_cv_x86_rdrand=yes], [ac_cv_x86_rdrand=no]) esac ]) if test $ac_cv_x86_rdrand = yes; then AC_DEFINE(_GLIBCXX_X86_RDRAND, 1, [ Defined if as can handle rdrand. ]) fi AC_MSG_RESULT($ac_cv_x86_rdrand) ]) dnl dnl Check whether get_nprocs is available in <sys/sysinfo.h>, and define _GLIBCXX_USE_GET_NPROCS. dnl AC_DEFUN([GLIBCXX_CHECK_GET_NPROCS], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_CHECKING([for get_nprocs]) AC_CACHE_VAL(glibcxx_cv_GET_NPROCS, [ GCC_TRY_COMPILE_OR_LINK( [#include <sys/sysinfo.h>], [int n = get_nprocs();], [glibcxx_cv_GET_NPROCS=yes], [glibcxx_cv_GET_NPROCS=no]) ]) if test $glibcxx_cv_GET_NPROCS = yes; then AC_DEFINE(_GLIBCXX_USE_GET_NPROCS, 1, [Define if get_nprocs is available in <sys/sysinfo.h>.]) fi AC_MSG_RESULT($glibcxx_cv_GET_NPROCS) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether sysconf(_SC_NPROCESSORS_ONLN) is available in <unistd.h>, and define _GLIBCXX_USE_SC_NPROCESSORS_ONLN. dnl AC_DEFUN([GLIBCXX_CHECK_SC_NPROCESSORS_ONLN], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_CHECKING([for _SC_NPROCESSORS_ONLN]) AC_CACHE_VAL(glibcxx_cv_SC_NPROCESSORS_ONLN, [ GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [int n = sysconf(_SC_NPROCESSORS_ONLN);], [glibcxx_cv_SC_NPROCESSORS_ONLN=yes], [glibcxx_cv_SC_NPROCESSORS_ONLN=no]) ]) if test $glibcxx_cv_SC_NPROCESSORS_ONLN = yes; then AC_DEFINE(_GLIBCXX_USE_SC_NPROCESSORS_ONLN, 1, [Define if _SC_NPROCESSORS_ONLN is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_SC_NPROCESSORS_ONLN) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether sysconf(_SC_NPROC_ONLN) is available in <unistd.h>, and define _GLIBCXX_USE_SC_NPROC_ONLN. dnl AC_DEFUN([GLIBCXX_CHECK_SC_NPROC_ONLN], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_CHECKING([for _SC_NPROC_ONLN]) AC_CACHE_VAL(glibcxx_cv_SC_NPROC_ONLN, [ GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [int n = sysconf(_SC_NPROC_ONLN);], [glibcxx_cv_SC_NPROC_ONLN=yes], [glibcxx_cv_SC_NPROC_ONLN=no]) ]) if test $glibcxx_cv_SC_NPROC_ONLN = yes; then AC_DEFINE(_GLIBCXX_USE_SC_NPROC_ONLN, 1, [Define if _SC_NPROC_ONLN is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_SC_NPROC_ONLN) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether pthread_num_processors_np is available in <pthread.h>, and define _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP. dnl AC_DEFUN([GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_CHECKING([for pthreads_num_processors_np]) AC_CACHE_VAL(glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP, [ GCC_TRY_COMPILE_OR_LINK( [#include <pthread.h>], [int n = pthread_num_processors_np();], [glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP=yes], [glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP=no]) ]) if test $glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP = yes; then AC_DEFINE(_GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP, 1, [Define if pthreads_num_processors_np is available in <pthread.h>.]) fi AC_MSG_RESULT($glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether sysctl is available in <pthread.h>, and define _GLIBCXX_USE_SYSCTL_HW_NCPU. dnl AC_DEFUN([GLIBCXX_CHECK_SYSCTL_HW_NCPU], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_CHECKING([for hw.ncpu sysctl]) AC_CACHE_VAL(glibcxx_cv_SYSCTL_HW_NCPU, [ GCC_TRY_COMPILE_OR_LINK( [ #include <stddef.h> #include <sys/sysctl.h> ], [ int count; size_t size = sizeof(count); int mib[] = { CTL_HW, HW_NCPU }; sysctl(mib, 2, &count, &size, NULL, 0); ], [glibcxx_cv_SYSCTL_HW_NCPU=yes], [glibcxx_cv_SYSCTL_HW_NCPU=no]) ]) if test $glibcxx_cv_SYSCTL_HW_NCPU = yes; then AC_DEFINE(_GLIBCXX_USE_SYSCTL_HW_NCPU, 1, [Define if sysctl(), CTL_HW and HW_NCPU are available in <sys/sysctl.h>.]) fi AC_MSG_RESULT($glibcxx_cv_SYSCTL_HW_NCPU) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check to see if python pretty printing can be activated. dnl dnl --with-python-dir=dir dnl installs directory into $prefix/dir AC_DEFUN([GLIBCXX_ENABLE_PYTHON], [ AC_MSG_CHECKING([for custom python install directory]) AC_ARG_WITH([python-dir], AS_HELP_STRING([--with-python-dir], [the location to install Python modules. This path is relative starting from the prefix.]), [with_python_dir=$withval], [with_python_dir="no"]) AC_MSG_RESULT(${with_python_dir}) # Needed for installing Python modules during make install. python_mod_dir="${with_python_dir}" AC_SUBST(python_mod_dir) GLIBCXX_CONDITIONAL(ENABLE_PYTHONDIR, test $python_mod_dir != no) ]) dnl dnl Check to see if -Werror is disabled. dnl dnl --enable-werror/--disable-werror AC_DEFUN([GLIBCXX_ENABLE_WERROR], [ AC_MSG_CHECKING([for -Werror]) GLIBCXX_ENABLE(werror,$1,,[turns on -Werror]) AC_MSG_RESULT($enable_werror) GLIBCXX_CONDITIONAL(ENABLE_WERROR, test $enable_werror = yes) ]) 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_RESULT([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 <sys/sdt.h> 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 <sys/sdt.h> header file]) fi AC_MSG_RESULT($glibcxx_cv_sys_sdt_h) ]) a3108 1 m4_include([../config/gc++filt.m4]) d3110 1 a3110 1 m4_include([../config/gthr.m4]) @ 1.1.1.2 log @import GCC 4.8 branch at r206687. highlights from: http://gcc.gnu.org/gcc-4.6/changes.html GCC now has stricter checks for invalid command-line options New -Wunused-but-set-variable and -Wunused-but-set-parameter warnings Many platforms have been obsoleted Link-time optimization improvements A new switch -fstack-usage has been added A new function attribute leaf was introduced A new warning, enabled by -Wdouble-promotion Support for selectively enabling and disabling warnings via #pragma GCC diagnostic has been added There is now experimental support for some features from the upcoming C1X revision of the ISO C standard Improved experimental support for the upcoming C++0x ISO C++ standard G++ now issues clearer diagnostics in several cases Updates for ARM, x86, MIPS, PPC/PPC64, SPARC Darwin, FreeBSD, Solaris 2, MinGW and Cygwin now all support __float128 on 32-bit and 64-bit x86 targets. [*1] highlights from: http://gcc.gnu.org/gcc-4.7/changes.html The -fconserve-space flag has been deprecated Support for a new parameter --param case-values-threshold=n was added Interprocedural and Link-time optimization improvements A new built-in, __builtin_assume_aligned, has been added A new warning option -Wunused-local-typedefs was added A new experimental command-line option -ftrack-macro-expansion was added Support for atomic operations specifying the C++11/C11 memory model has been added There is support for some more features from the C11 revision of the ISO C standard Improved experimental support for the new ISO C++ standard, C++11 Updates for ARM, x86, MIPS, PPC/PPC64, SH, SPARC, TILE* A new option (-grecord-gcc-switches) was added highlights from: http://gcc.gnu.org/gcc-4.8/changes.html GCC now uses C++ as its implementation language. This means that to build GCC from sources, you will need a C++ compiler that understands C++ 2003 DWARF4 is now the default when generating DWARF debug information A new general optimization level, -Og, has been introduced A new option -ftree-partial-pre was added The option -fconserve-space has been removed The command-line options -fipa-struct-reorg and -fipa-matrix-reorg have been removed Interprocedural and Link-time optimization improvements AddressSanitizer, a fast memory error detector, has been added [*2] A new -Wsizeof-pointer-memaccess warning has been added G++ now supports a -std=c++1y option for experimentation with features proposed for the next revision of the standard, expected around 2014 Improved experimental support for the new ISO C++ standard, C++11 A new port has been added to support AArch64 Updates for ARM, x86, MIPS, PPC/PPC64, SH, SPARC, TILE* [*1] we should support this too! [*2] we should look into this. https://code.google.com/p/address-sanitizer/ @ text @d1 1 a38 1 dnl toplevel_builddir (absolute path) d52 1 a52 1 m4_define([glibcxx_SUBDIRS],[include libsupc++ python src src/c++98 src/c++11 doc po testsuite]) a62 1 toplevel_builddir=${glibcxx_builddir}/.. a65 1 AC_SUBST(toplevel_builddir) d72 1 a72 1 [configuring in a subdirectory])) d76 1 a76 1 [configuring with a cross compiler])) d80 1 a80 1 [assume newlib as a system C library])) d98 2 a99 2 # Check for C library flavor since GNU/Linux platforms use different # configuration directories depending on the C library in use. a106 7 AC_EGREP_CPP([_using_bionic], [ #include <stdio.h> #if __BIONIC__ _using_bionic #endif ], bionic=yes, bionic=no) a162 32 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 d216 1 a216 1 $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'` d228 1 a228 1 if test x"$with_gnu_ld" = x"yes" && d299 1 a299 1 dnl _GLIBCXX_RES_LIMITS if we can set artificial resource limits d312 1 a312 1 [Only used in build directory testsuite_hooks.h.]) d320 2 a321 2 [], [setrlimit_have_headers=no]) d335 7 a341 7 [#include <unistd.h> #include <sys/time.h> #include <sys/resource.h> ], [struct rlimit r; setrlimit(0, &r);], [glibcxx_cv_setrlimit=yes], [glibcxx_cv_setrlimit=no]) d349 2 a350 2 [Define if using setrlimit to set resource limits during "make check"]) d390 2 a391 2 AC_DEFINE(HAVE_S_ISREG, 1, [Define if S_IFREG is available in <sys/stat.h>.]) d395 1 a395 1 [Define if S_IFREG is available in <sys/stat.h>.]) d489 4 a492 4 [#include <stdint.h> template<typename, typename> struct same { enum { value = -1 }; }; template<typename Tp> struct same<Tp, Tp> { enum { value = 1 }; }; int array[same<int64_t, long>::value];], [], d504 4 a507 4 [#include <stdint.h> template<typename, typename> struct same { enum { value = -1 }; }; template<typename Tp> struct same<Tp, Tp> { enum { value = 1 }; }; int array[same<int64_t, long long>::value];], [], d528 1 a528 1 CXXFLAGS="$CXXFLAGS -fno-exceptions" d561 2 a562 3 dnl --enable-fully-dynamic-string defines _GLIBCXX_FULLY_DYNAMIC_STRING to 1 dnl --disable-fully-dynamic-string defines _GLIBCXX_FULLY_DYNAMIC_STRING to 0 dnl otherwise undefined d569 2 a570 3 enable_fully_dynamic_string_def=1 else enable_fully_dynamic_string_def=0 a571 2 AC_DEFINE_UNQUOTED([_GLIBCXX_FULLY_DYNAMIC_STRING], [${enable_fully_dynamic_string_def}], [Define to 1 if a fully dynamic basic_string is wanted, 0 to disable, undefined for platform defaults]) d582 1 a582 1 dnl enable_abi_check a586 1 dnl baseline_subdir_switch d601 1 a601 1 enable_abi_check=no ;; d603 1 a603 1 enable_abi_check=yes ;; d610 1 a610 1 a613 60 baseline_subdir_switch="$abi_baseline_subdir_switch" AC_SUBST(baseline_subdir_switch) ]) dnl dnl Does any necessary configuration for docbook in the docs directory. dnl dnl XSLTPROC must be set before this dnl dnl Sets: dnl glibcxx_stylesheets dnl Substs: dnl XSL_STYLE_DIR dnl AC_DEFUN([GLIBCXX_CONFIGURE_DOCBOOK], [ AC_MSG_CHECKING([for docbook stylesheets for documentation creation]) glibcxx_stylesheets=no if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude http://docbook.sourceforge.net/release/xsl-ns/current/xhtml-1_1/docbook.xsl - 2>/dev/null; then glibcxx_stylesheets=yes fi AC_MSG_RESULT($glibcxx_stylesheets) AC_MSG_CHECKING([for local stylesheet directory]) glibcxx_local_stylesheets=no if test x"$glibcxx_stylesheets" = x"yes"; then if test -d /usr/share/sgml/docbook/xsl-ns-stylesheets; then glibcxx_local_stylesheets=yes XSL_STYLE_DIR=/usr/share/sgml/docbook/xsl-ns-stylesheets fi if test -d /usr/share/xml/docbook/stylesheet/docbook-xsl-ns; 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) if test x"$glibcxx_local_stylesheets" = x"yes"; then AC_SUBST(XSL_STYLE_DIR) AC_MSG_NOTICE($XSL_STYLE_DIR) else glibcxx_stylesheets=no fi # Check for epub3 dependencies. AC_MSG_CHECKING([for epub3 stylesheets for documentation creation]) glibcxx_epub_stylesheets=no if test x"$glibcxx_local_stylesheets" = x"yes"; then if test -f "$XSL_STYLE_DIR/epub3/chunk.xsl"; then glibcxx_epub_stylesheets=yes fi fi AC_MSG_RESULT($glibcxx_epub_stylesheets) AM_CONDITIONAL(BUILD_EPUB, test x"$glibcxx_epub_stylesheets" = x"yes") d637 3 a639 3 # get unwind* headers from the libgcc dir. #TOPLEVEL_INCLUDES='-I$(toplevel_srcdir)/libgcc -I$(toplevel_srcdir)/include' TOPLEVEL_INCLUDES='-I$(toplevel_srcdir)/libgcc' d662 1 a662 1 WARN_FLAGS='-Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi' d689 1 a689 1 [installation directory for include files]), d701 1 a701 1 [Specify that runtime libraries should be installed in a compiler-specific directory]), d713 2 a714 2 if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then d772 2 a773 2 m4_define([_g_help],[AC_HELP_STRING([_g_switch$3],[$4 @@<:@@default=$2@@:>@@])])dnl AC_ARG_ENABLE([$1],m4_dquote(_g_help), d780 2 a781 2 dnl Idea for future: generate a URL pointing to dnl "onlinedocs/configopts.html#whatever" d862 2 a863 2 [Define if C99 functions or macros in <math.h> should be imported in <cmath> in namespace std.]) d930 3 a932 3 [Define if C99 functions in <complex.h> should be used in <complex>. Using compiler builtins for these functions requires corresponding C99 library functions to be present.]) d944 1 a944 1 vfscanf(stderr, "%i", args); d982 1 a982 1 AC_MSG_CHECKING([for ISO C99 support in <wchar.h>]) d984 2 a985 2 namespace test { d997 1 a997 1 namespace test { using ::vfwscanf; } ], [], d1002 1 a1002 1 namespace test { using ::vswscanf; } ], [], d1007 1 a1007 1 namespace test { using ::vwscanf; } ], [], d1011 1 a1011 1 namespace test { using ::wcstof; } ], [], d1015 1 a1015 1 [ wint_t t; int i = iswblank(t);], d1039 1 a1039 1 fi d1048 2 a1049 2 dnl implementation of 20.11.7 [time.clock], and 30.3.2 [thread.thread.this] dnl in the C++11 standard. d1054 2 a1055 2 dnl nanosleep and sched_yield in libc and libposix4 and, if needed, dnl links in the latter. d1057 1 a1057 1 dnl also searches (and, if needed, links) librt. Note that this is a1064 5 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 d1068 1 a1068 1 GLIBCXX_ENABLE(libstdcxx-time,$1,[[[=KIND]]], d1107 1 a1107 1 [ Defined if sched_yield is available. ]) d1111 3 a1113 3 GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield" AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1, [ Defined if sched_yield is available. ]) d1118 1 a1118 1 [ Defined if sched_yield is available. ]) d1127 8 a1134 10 [#include <unistd.h> #include <time.h> ], [#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK) timespec tp; #endif clock_gettime(CLOCK_MONOTONIC, &tp); ], [ac_has_clock_monotonic=yes], [ac_has_clock_monotonic=no]) AC_MSG_RESULT($ac_has_clock_monotonic) d1136 2 d1140 8 a1147 8 [#include <unistd.h> #include <time.h> ], [#if _POSIX_TIMERS > 0 timespec tp; #endif clock_gettime(CLOCK_REALTIME, &tp); ], [ac_has_clock_realtime=yes], [ac_has_clock_realtime=no]) d1153 8 a1160 8 [#include <unistd.h> #include <time.h> ], [#if _POSIX_TIMERS > 0 timespec tp; #endif nanosleep(&tp, 0); ], [ac_has_nanosleep=yes], [ac_has_nanosleep=no]) a1165 25 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 <unistd.h> #include <time.h> #include <sys/syscall.h> ], [#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 a1178 29 else AC_MSG_CHECKING([for sleep]) AC_TRY_COMPILE([#include <unistd.h>], [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 <unistd.h>], [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 <windows.h>], [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) d1189 2 a1190 2 dnl Check for gettimeofday, used in the implementation of 20.11.7 dnl [time.clock] in the C++11 standard. d1193 1 a1193 1 d1200 1 a1200 1 d1208 1 a1208 1 d1211 1 a1211 1 d1216 1 a1216 1 d1242 7 a1248 7 [typedef __complex__ float float_type; float_type tmpf; cacosf(tmpf); casinf(tmpf); catanf(tmpf); cacoshf(tmpf); casinhf(tmpf); catanhf(tmpf); d1250 6 a1255 6 cacos(tmpd); casin(tmpd); catan(tmpd); cacosh(tmpd); casinh(tmpd); catanh(tmpd); d1257 6 a1262 6 cacosl(tmpld); casinl(tmpld); catanl(tmpld); cacoshl(tmpld); casinhl(tmpld); catanhl(tmpld); d1268 2 a1269 2 [Define if C99 functions in <complex.h> should be used in <tr1/complex>. Using compiler builtins for these functions d1277 3 a1279 3 [int ch; int ret; ret = isblank(ch); d1286 1 a1286 1 [Define if C99 functions in <ctype.h> should be imported in d1296 15 a1310 15 [int except, mode; fexcept_t* pflag; fenv_t* penv; int ret; ret = feclearexcept(except); ret = fegetexceptflag(pflag, except); ret = feraiseexcept(except); ret = fesetexceptflag(pflag, except); ret = fetestexcept(except); ret = fegetround(); ret = fesetround(mode); ret = fegetenv(penv); ret = feholdexcept(penv); ret = fesetenv(penv); ret = feupdateenv(penv); d1316 1 a1316 1 [Define if C99 functions in <fenv.h> should be imported in d1324 3 a1326 3 #define __STDC_CONSTANT_MACROS #include <stdint.h>], [typedef int8_t my_int8_t; d1329 1 a1329 1 typedef int16_t my_int16_t; d1332 1 a1332 1 typedef int32_t my_int32_t; d1335 1 a1335 1 typedef int64_t my_int64_t; d1338 1 a1338 1 typedef int_fast8_t my_int_fast8_t; d1341 1 a1341 1 typedef int_fast16_t my_int_fast16_t; d1344 1 a1344 1 typedef int_fast32_t my_int_fast32_t; d1347 1 a1347 1 typedef int_fast64_t my_int_fast64_t; d1350 1 a1350 1 typedef int_least8_t my_int_least8_t; d1353 1 a1353 1 typedef int_least16_t my_int_least16_t; d1356 1 a1356 1 typedef int_least32_t my_int_least32_t; d1359 1 a1359 1 typedef int_least64_t my_int_least64_t; d1368 1 a1368 1 typedef uint8_t my_uint8_t; d1371 1 a1371 1 typedef uint16_t my_uint16_t; d1374 1 a1374 1 typedef uint32_t my_uint32_t; d1377 1 a1377 1 typedef uint64_t my_uint64_t; d1380 1 a1380 1 typedef uint_fast8_t my_uint_fast8_t; d1383 1 a1383 1 typedef uint_fast16_t my_uint_fast16_t; d1386 1 a1386 1 typedef uint_fast32_t my_uint_fast32_t; d1389 1 a1389 1 typedef uint_fast64_t my_uint_fast64_t; d1392 1 a1392 1 typedef uint_least8_t my_uint_least8_t; d1395 1 a1395 1 typedef uint_least16_t my_uint_least16_t; d1398 1 a1398 1 typedef uint_least32_t my_uint_least32_t; d1401 1 a1401 1 typedef uint_least64_t my_uint_least64_t; d1416 1 a1416 1 [Define if C99 types in <stdint.h> should be imported in d1424 107 a1530 107 [typedef double_t my_double_t; typedef float_t my_float_t; acosh(0.0); acoshf(0.0f); acoshl(0.0l); asinh(0.0); asinhf(0.0f); asinhl(0.0l); atanh(0.0); atanhf(0.0f); atanhl(0.0l); cbrt(0.0); cbrtf(0.0f); cbrtl(0.0l); copysign(0.0, 0.0); copysignf(0.0f, 0.0f); copysignl(0.0l, 0.0l); erf(0.0); erff(0.0f); erfl(0.0l); erfc(0.0); erfcf(0.0f); erfcl(0.0l); exp2(0.0); exp2f(0.0f); exp2l(0.0l); expm1(0.0); expm1f(0.0f); expm1l(0.0l); fdim(0.0, 0.0); fdimf(0.0f, 0.0f); fdiml(0.0l, 0.0l); fma(0.0, 0.0, 0.0); fmaf(0.0f, 0.0f, 0.0f); fmal(0.0l, 0.0l, 0.0l); fmax(0.0, 0.0); fmaxf(0.0f, 0.0f); fmaxl(0.0l, 0.0l); fmin(0.0, 0.0); fminf(0.0f, 0.0f); fminl(0.0l, 0.0l); hypot(0.0, 0.0); hypotf(0.0f, 0.0f); hypotl(0.0l, 0.0l); ilogb(0.0); ilogbf(0.0f); ilogbl(0.0l); lgamma(0.0); lgammaf(0.0f); lgammal(0.0l); llrint(0.0); llrintf(0.0f); llrintl(0.0l); llround(0.0); llroundf(0.0f); llroundl(0.0l); log1p(0.0); log1pf(0.0f); log1pl(0.0l); log2(0.0); log2f(0.0f); log2l(0.0l); logb(0.0); logbf(0.0f); logbl(0.0l); lrint(0.0); lrintf(0.0f); lrintl(0.0l); lround(0.0); lroundf(0.0f); lroundl(0.0l); nan(0); nanf(0); nanl(0); nearbyint(0.0); nearbyintf(0.0f); nearbyintl(0.0l); nextafter(0.0, 0.0); nextafterf(0.0f, 0.0f); nextafterl(0.0l, 0.0l); nexttoward(0.0, 0.0); nexttowardf(0.0f, 0.0f); nexttowardl(0.0l, 0.0l); remainder(0.0, 0.0); remainderf(0.0f, 0.0f); remainderl(0.0l, 0.0l); remquo(0.0, 0.0, 0); remquof(0.0f, 0.0f, 0); remquol(0.0l, 0.0l, 0); rint(0.0); rintf(0.0f); rintl(0.0l); round(0.0); roundf(0.0f); roundl(0.0l); scalbln(0.0, 0l); scalblnf(0.0f, 0l); scalblnl(0.0l, 0l); scalbn(0.0, 0); scalbnf(0.0f, 0); scalbnl(0.0l, 0); tgamma(0.0); tgammaf(0.0f); tgammal(0.0l); trunc(0.0); truncf(0.0f); truncl(0.0l); d1536 2 a1537 2 [Define if C99 functions or macros in <math.h> should be imported in <tr1/cmath> in namespace std::tr1.]) d1546 8 a1553 8 [intmax_t i, numer, denom, base; const char* s; char** endptr; intmax_t ret = imaxabs(i); imaxdiv_t dret = imaxdiv(numer, denom); ret = strtoimax(s, endptr, base); uintmax_t uret = strtoumax(s, endptr, base); ],[ac_c99_inttypes_tr1=yes], [ac_c99_inttypes_tr1=no]) d1558 2 a1559 2 [Define if C99 functions in <inttypes.h> should be imported in <tr1/cinttypes> in namespace std::tr1.]) d1568 1 a1568 1 [intmax_t base; d1570 4 a1573 4 wchar_t** endptr; intmax_t ret = wcstoimax(s, endptr, base); uintmax_t uret = wcstoumax(s, endptr, base); ],[ac_c99_inttypes_wchar_t_tr1=yes], d1579 1 a1579 1 [Define if wchar_t C99 functions in <inttypes.h> should be d1583 1 a1583 1 # Check for the existence of the <stdbool.h> header. a1585 3 # Check for the existence of the <stdalign.h> header. AC_CHECK_HEADERS(stdalign.h) d1599 1 a1599 6 ## 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 d1608 1 a1608 1 [Define if /dev/random and /dev/urandom are available for d1615 2 a1616 1 dnl Compute the EOF, SEEK_CUR, and SEEK_END integer constants. d1618 1 a1618 1 AC_DEFUN([GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS], [ d1620 13 a1632 48 AC_CACHE_CHECK([for the value of EOF], glibcxx_cv_stdio_eof, [ AC_COMPUTE_INT([glibcxx_cv_stdio_eof], [[EOF]], [#include <stdio.h>], [AC_MSG_ERROR([computing EOF failed])]) ]) AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_EOF, $glibcxx_cv_stdio_eof, [Define to the value of the EOF integer constant.]) AC_CACHE_CHECK([for the value of SEEK_CUR], glibcxx_cv_stdio_seek_cur, [ AC_COMPUTE_INT([glibcxx_cv_stdio_seek_cur], [[SEEK_CUR]], [#include <stdio.h>], [AC_MSG_ERROR([computing SEEK_CUR failed])]) ]) AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_SEEK_CUR, $glibcxx_cv_stdio_seek_cur, [Define to the value of the SEEK_CUR integer constant.]) AC_CACHE_CHECK([for the value of SEEK_END], glibcxx_cv_stdio_seek_end, [ AC_COMPUTE_INT([glibcxx_cv_stdio_seek_end], [[SEEK_END]], [#include <stdio.h>], [AC_MSG_ERROR([computing SEEK_END failed])]) ]) AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_SEEK_END, $glibcxx_cv_stdio_seek_end, [Define to the value of the SEEK_END integer constant.]) ]) dnl dnl Check whether required C++ overloads are present in <stdio.h>. dnl AC_DEFUN([GLIBCXX_CHECK_STDIO_PROTO], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_MSG_CHECKING([for gets declaration]) AC_CACHE_VAL(glibcxx_cv_gets, [ AC_COMPILE_IFELSE([AC_LANG_SOURCE( [#include <stdio.h> namespace test { using ::gets; } ])], [glibcxx_cv_gets=yes], [glibcxx_cv_gets=no] )]) if test $glibcxx_cv_gets = yes; then AC_DEFINE(HAVE_GETS, 1, [Define if gets is available in <stdio.h>.]) a1633 1 AC_MSG_RESULT($glibcxx_cv_gets) a1634 1 AC_LANG_RESTORE d1645 1 a1645 3 EOVERFLOW, ENOTSUP, EIDRM, ETXTBSY, ECHILD, ENOSPC, EPERM, ETIMEDOUT, EWOULDBLOCK], d1673 1 a1673 1 GLIBCXX_ENABLE(cheaders,$1,[[[=KIND]]], d1684 4 d1693 1 d1704 1 a1704 1 GLIBCXX_ENABLE(clocale,auto,[[[=MODEL]]], d1706 1 a1706 1 [permit generic|gnu|ieee_1003.1-2001|newlib|yes|no|auto]) d1716 2 a1717 2 # Either a known package, or "auto" d1728 2 a1729 2 enable_clocale_flag=gnu ;; d1731 1 a1731 4 enable_clocale_flag=darwin ;; openbsd*) enable_clocale_flag=newlib d1734 2 a1735 6 if test x"$with_newlib" = x"yes"; then enable_clocale_flag=newlib else enable_clocale_flag=generic fi ;; d1743 1 a1743 1 #if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined(__UCLIBC__) d1748 30 d1779 1 a1779 1 ac_save_CFLAGS="$CFLAGS" d1786 4 a1789 4 [char s[128]; __locale_t loc; strxfrm_l(s, "C", 5, loc);], AC_DEFINE(HAVE_STRXFRM_L, 1, [Define if strxfrm_l is available in <string.h>.]),) d1794 3 a1796 3 [__locale_t loc; strerror_l(5, loc);], AC_DEFINE(HAVE_STRERROR_L, 1, [Define if strerror_l is available in <string.h>.]),) d1802 1 a1802 1 ac_save_CFLAGS="$CFLAGS" d1807 3 a1809 3 [char s[128]; strerror_r(5, s, 128);], AC_DEFINE(HAVE_STRERROR_R, 1, [Define if strerror_r is available in <string.h>.]),) d1847 1 a1847 1 d1859 1 a1859 1 USE_NLS=yes d1863 2 a1864 2 glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ a1897 16 newlib) AC_MSG_RESULT(newlib) CLOCALE_H=config/locale/generic/c_locale.h CLOCALE_CC=config/locale/generic/c_locale.cc CCODECVT_CC=config/locale/generic/codecvt_members.cc CCOLLATE_CC=config/locale/generic/collate_members.cc CCTYPE_CC=config/locale/newlib/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 ;; d1911 2 a1912 2 AC_DEFINE(_GLIBCXX_USE_NLS, 1, [Define if NLS translations are to be used.]) d1939 1 a1939 1 GLIBCXX_ENABLE(libstdcxx-allocator,auto,[[[=KIND]]], d1961 2 a1962 2 enable_libstdcxx_allocator_flag=new ;; d1964 2 a1965 2 enable_libstdcxx_allocator_flag=new ;; d1969 1 a1969 1 d1992 1 a1992 1 ;; d2012 1 a2012 1 [Define to use concept checking code from the boost libraries.]) a2016 19 dnl Use extern templates. dnl dnl --enable-extern-template defines _GLIBCXX_EXTERN_TEMPLATE to 1 dnl --disable-extern-template defines _GLIBCXX_EXTERN_TEMPLATE to 0 dnl + Usage: GLIBCXX_ENABLE_TEMPLATE[(DEFAULT)] dnl Where DEFAULT is `yes' or `no'. dnl AC_DEFUN([GLIBCXX_ENABLE_EXTERN_TEMPLATE], [ GLIBCXX_ENABLE(extern-template,$1,,[enable extern template]) AC_MSG_CHECKING([for extern template support]) AC_MSG_RESULT([$enable_extern_template]) GLIBCXX_CONDITIONAL(ENABLE_EXTERN_TEMPLATE, test $enable_extern_template = yes) ]) dnl d2035 1 d2046 1 a2046 1 GLIBCXX_ENABLE(cstdio,stdio,[[[=PACKAGE]]], d2095 4 a2098 4 -fhonor-std) ;; -*) ;; *) # and we're trying to pass /what/ exactly? AC_MSG_ERROR([compiler flags start with a -]) ;; d2179 1 a2179 1 [only build freestanding C++ runtime support]),, d2181 1 a2181 1 arm*-*-symbianelf*) d2184 1 a2184 1 *) a2204 25 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 d2217 2 a2218 2 AC_DEFINE(_GLIBCXX_USE_LONG_LONG, 1, [Define if code specialized for long long should be used.]) a2263 74 dnl Check for GNU 128-bit integer and floating point types. dnl dnl Note: also checks that the types aren't standard types. dnl dnl Defines: dnl _GLIBCXX_USE_INT128 dnl _GLIBCXX_USE_FLOAT128 dnl AC_DEFUN([GLIBCXX_ENABLE_INT128_FLOAT128], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS # Fake what AC_TRY_COMPILE does, without linking as this is # unnecessary for this test. cat > conftest.$ac_ext << EOF [#]line __oline__ "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; template<typename T> struct same<T, T>; int main() { typename same<long, __int128>::type i1; typename same<long long, __int128>::type i2; } EOF AC_MSG_CHECKING([for __int128]) if AC_TRY_EVAL(ac_compile); then AC_DEFINE(_GLIBCXX_USE_INT128, 1, [Define if __int128 is supported on this host.]) enable_int128=yes else enable_int128=no fi AC_MSG_RESULT($enable_int128) rm -f conftest* cat > conftest.$ac_ext << EOF [#]line __oline__ "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; template<typename T> struct same<T, T>; int main() { typename same<double, __float128>::type f1; typename same<long double, __float128>::type f2; } EOF AC_MSG_CHECKING([for __float128]) if AC_TRY_EVAL(ac_compile); then AC_DEFINE(_GLIBCXX_USE_FLOAT128, 1, [Define if __float128 is supported on this host.]) enable_float128=yes else enable_float128=no fi AC_MSG_RESULT($enable_float128) rm -f conftest* AC_LANG_RESTORE ]) dnl d2290 1 a2290 1 d2295 1 a2295 1 d2299 2 a2300 2 #include <stddef.h> wint_t i; d2304 2 a2305 2 namespace test { d2312 1 a2312 1 using ::fwprintf; d2316 4 a2319 4 using ::mbrlen; using ::mbrtowc; using ::mbsinit; using ::mbsrtowcs; d2322 2 a2323 2 using ::swprintf; using ::swscanf; d2325 11 a2335 11 using ::vfwprintf; using ::vswprintf; using ::vwprintf; using ::wcrtomb; using ::wcscat; using ::wcschr; using ::wcscmp; using ::wcscoll; using ::wcscpy; using ::wcscspn; using ::wcsftime; d2337 3 a2339 3 using ::wcsncat; using ::wcsncmp; using ::wcsncpy; d2341 3 a2343 3 using ::wcsrchr; using ::wcsrtombs; using ::wcsspn; d2345 2 a2346 2 using ::wcstod; using ::wcstok; d2348 3 a2350 3 using ::wcstoul; using ::wcsxfrm; using ::wctob; d2356 2 a2357 2 using ::wprintf; using ::wscanf; d2369 1 a2369 1 [Define if code specialized for wchar_t should be used.]) d2402 3 a2404 3 -o conftest.h.gch 1>&5 2>&1 && echo '#error "pch failed"' > conftest.h && echo '#include "conftest.h"' > conftest.cc && d2407 1 a2407 1 glibcxx_cv_prog_CXX_pch=yes d2409 1 a2409 1 glibcxx_cv_prog_CXX_pch=no d2434 1 a2434 1 dnl http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html d2437 1 a2437 1 dnl builtins for atomic operations for various integral sizes. Note, this d2444 6 d2464 1 a2464 1 ;; d2481 6 a2486 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); ], d2489 5 a2493 1 ]) d2503 6 a2508 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); ], d2511 5 a2515 1 ]) d2525 6 a2530 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); ], d2533 5 a2537 1 ]) d2547 6 a2552 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); ], d2555 5 a2559 1 ]) d2578 6 a2583 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); d2590 2 a2591 2 if grep __atomic_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_bool=no d2593 3 a2595 1 glibcxx_cv_atomic_bool=yes d2608 6 a2613 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); d2620 2 a2621 2 if grep __atomic_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_short=no d2623 3 a2625 1 glibcxx_cv_atomic_short=yes d2635 1 a2635 1 // NB: _Atomic_word not necessarily int. d2639 6 a2644 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); d2651 2 a2652 2 if grep __atomic_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_int=no d2654 3 a2656 1 glibcxx_cv_atomic_int=yes d2669 6 a2674 7 atomic_type c3(0); __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); __atomic_load_n(&c1, __ATOMIC_RELAXED); d2681 2 a2682 2 if grep __atomic_ conftest.s >/dev/null 2>&1 ; then glibcxx_cv_atomic_long_long=no d2684 3 a2686 1 glibcxx_cv_atomic_long_long=yes d2697 2 a2698 6 # Set atomicity_dir to builtins if all but the long long test above passes. if test $glibcxx_cv_atomic_bool = yes \ && test $glibcxx_cv_atomic_short = yes \ && test $glibcxx_cv_atomic_int = yes; then AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS, 1, [Define if the compiler supports C++11 atomics.]) d2707 2 a2708 2 AC_MSG_WARN([They cannot be faked when thread support is disabled.]) AC_MSG_WARN([Thread-safety of certain classes is not guaranteed.]) d2710 2 a2711 2 AC_MSG_WARN([They will be faked using a mutex.]) AC_MSG_WARN([Performance of certain classes will degrade as a result.]) d2758 1 a2758 1 enable_sjlj_exceptions=yes d2760 1 a2760 1 enable_sjlj_exceptions=no d2762 1 a2762 1 enable_sjlj_exceptions=no d2774 1 a2774 1 [Define if the compiler is configured for setjmp/longjmp exceptions.]) d2792 3 a2794 3 dnl --enable-libstdcxx-visibility enables attempt to use visibility attributes. dnl --disable-libstdcxx-visibility turns off all use of visibility attributes. dnl + Usage: GLIBCXX_ENABLE_LIBSTDCXX_VISIBILITY[(DEFAULT)] d2797 2 a2798 2 AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_VISIBILITY], [ GLIBCXX_ENABLE(libstdcxx-visibility,$1,,[enables visibility safe usage]) d2800 1 a2800 1 if test x$enable_libstdcxx_visibility = xyes ; then d2812 1 a2812 1 enable_libstdcxx_visibility=no d2816 2 a2817 2 GLIBCXX_CONDITIONAL(ENABLE_VISIBILITY, test $enable_libstdcxx_visibility = yes) AC_MSG_NOTICE([visibility supported: $enable_libstdcxx_visibility]) a2824 4 dnl Sets libtool_VERSION, and determines shared library SONAME. dnl dnl This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no. dnl a2828 1 dnl d2836 1 a2836 1 GLIBCXX_ENABLE(symvers,$1,[[[=STYLE]]], d2838 1 a2838 1 [permit yes|no|gnu|gnu-versioned-namespace|darwin|darwin-export|sun]) a2842 3 # Sun style symbol versions needs GNU c++filt for make_sunver.pl to work # with extern "C++" in version scripts. AC_REQUIRE([GCC_PROG_GNU_CXXFILT]) d2851 4 a2854 4 hpux*) enable_symvers=no ;; *) enable_symvers=gnu ;; d2858 1 a2858 1 darwin*) d2860 2 a2861 16 # Sun symbol versioning exists since Solaris 2.5. solaris2.[[5-9]]* | solaris2.1[[0-9]]*) # make_sunver.pl needs GNU c++filt to support extern "C++" in # version scripts, so disable symbol versioning if none can be # found. if test -z "$ac_cv_path_CXXFILT"; then AC_MSG_WARN([=== You have requested Sun symbol versioning, but]) AC_MSG_WARN([=== no GNU c++filt could be found.]) AC_MSG_WARN([=== Symbol versioning will be disabled.]) enable_symvers=no else enable_symvers=sun fi ;; *) enable_symvers=no ;; a2871 16 # Check if 'sun' was requested on non-Solaris 2 platforms. if test x$enable_symvers = xsun ; then case ${target_os} in solaris2*) # All fine. ;; *) # Unlikely to work. AC_MSG_WARN([=== You have requested Sun symbol versioning, but]) AC_MSG_WARN([=== you are not targetting Solaris 2.]) AC_MSG_WARN([=== Symbol versioning will be disabled.]) enable_symvers=no ;; esac fi d2873 1 a2873 3 if test $enable_symvers = gnu || test $enable_symvers = gnu-versioned-namespace || test $enable_symvers = sun; then a2908 2 elif test $with_gnu_ld != yes && test $enable_symvers = sun; then : All interesting versions of Sun ld support sun style symbol versioning. d2928 1 a2928 4 # For libtool versioning info, format is CURRENT:REVISION:AGE libtool_VERSION=6:19:0 # Everything parsed; figure out what files and settings to use. d2935 2 a2936 2 AC_DEFINE(_GLIBCXX_SYMVER_GNU, 1, [Define to use GNU versioning in the shared library.]) a2938 1 libtool_VERSION=7:0:0 d2940 2 a2941 2 AC_DEFINE(_GLIBCXX_SYMVER_GNU_NAMESPACE, 1, [Define to use GNU namespace versioning in the shared library.]) d2945 2 a2946 7 AC_DEFINE(_GLIBCXX_SYMVER_DARWIN, 1, [Define to use darwin versioning in the shared library.]) ;; sun) SYMVER_FILE=config/abi/pre/gnu.ver AC_DEFINE(_GLIBCXX_SYMVER_SUN, 1, [Define to use Sun versioning in the shared library.]) a2970 1 GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_SUN, test $enable_symvers = sun) a2972 14 if test $enable_symvers != no ; then case ${target_os} in # The Solaris 2 runtime linker doesn't support the GNU extension of # binding the same symbol to different versions solaris2*) ;; # Other platforms with GNU symbol versioning (GNU/Linux, more?) do. *) AC_DEFINE(HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT, 1, [Define to 1 if the target runtime linker supports binding the same symbol to different versions.]) ;; esac fi d2980 2 a2981 2 AC_TRY_COMPILE(, [__SIZE_TYPE__* stp; unsigned int* uip; stp = uip;], [glibcxx_size_t_is_i=yes], [glibcxx_size_t_is_i=no]) d2991 2 a2992 2 AC_TRY_COMPILE(, [__PTRDIFF_TYPE__* ptp; int* ip; ptp = ip;], [glibcxx_ptrdiff_t_is_i=yes], [glibcxx_ptrdiff_t_is_i=no]) d3014 4 a3017 1 dnl thread_header d3023 18 a3040 1 GCC_AC_THREAD_HEADER([$target_thread_file]) a3048 2 dnl GLIBCXX_ENABLE_SYMVERS must be done before this. dnl a3049 5 GLIBCXX_ENABLE(libstdcxx-threads,auto,,[enable C++11 threads support]) if test x$enable_libstdcxx_threads = xauto || test x$enable_libstdcxx_threads = xyes; then d3054 1 a3054 2 CXXFLAGS="$CXXFLAGS -fno-exceptions \ -I${toplevel_srcdir}/libgcc -I${toplevel_builddir}/libgcc" d3062 1 a3062 1 AC_MSG_CHECKING([whether it can be safely assumed that mutex_timedlock is available]) d3064 1 a3064 1 AC_TRY_COMPILE([#include <unistd.h>], d3066 1 a3066 3 // In case of POSIX threads check _POSIX_TIMEOUTS. #if (defined(_PTHREADS) \ && (!defined(_POSIX_TIMEOUTS) || _POSIX_TIMEOUTS <= 0)) a3068 1 ], [ac_gthread_use_mutex_timedlock=1], [ac_gthread_use_mutex_timedlock=0]) d3070 3 a3072 12 AC_DEFINE_UNQUOTED(_GTHREAD_USE_MUTEX_TIMEDLOCK, $ac_gthread_use_mutex_timedlock, [Define to 1 if mutex_timedlock is available.]) if test $ac_gthread_use_mutex_timedlock = 1 ; then res_mutex_timedlock=yes ; else res_mutex_timedlock=no ; fi AC_MSG_RESULT([$res_mutex_timedlock]) AC_MSG_CHECKING([for gthreads library]) AC_TRY_COMPILE([#include "gthr.h"], [ #ifndef __GTHREADS_CXX0X d3075 1 a3075 22 ], [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]) else ac_has_gthreads=no fi d3081 1 a3081 1 [Define if gthreads library is available.]) d3102 2 a3103 2 AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if LC_MESSAGES is available in <locale.h>.]) a3107 225 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_cv_x86_rdrand=no case "$target" in i?86-*-* | \ x86_64-*-*) AC_TRY_COMPILE(, [asm("rdrand %eax");], [ac_cv_x86_rdrand=yes], [ac_cv_x86_rdrand=no]) esac ]) if test $ac_cv_x86_rdrand = yes; then AC_DEFINE(_GLIBCXX_X86_RDRAND, 1, [ Defined if as can handle rdrand. ]) fi AC_MSG_RESULT($ac_cv_x86_rdrand) ]) dnl dnl Check whether get_nprocs is available in <sys/sysinfo.h>, and define _GLIBCXX_USE_GET_NPROCS. dnl AC_DEFUN([GLIBCXX_CHECK_GET_NPROCS], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_CHECKING([for get_nprocs]) AC_CACHE_VAL(glibcxx_cv_GET_NPROCS, [ GCC_TRY_COMPILE_OR_LINK( [#include <sys/sysinfo.h>], [int n = get_nprocs();], [glibcxx_cv_GET_NPROCS=yes], [glibcxx_cv_GET_NPROCS=no]) ]) if test $glibcxx_cv_GET_NPROCS = yes; then AC_DEFINE(_GLIBCXX_USE_GET_NPROCS, 1, [Define if get_nprocs is available in <sys/sysinfo.h>.]) fi AC_MSG_RESULT($glibcxx_cv_GET_NPROCS) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether sysconf(_SC_NPROCESSORS_ONLN) is available in <unistd.h>, and define _GLIBCXX_USE_SC_NPROCESSORS_ONLN. dnl AC_DEFUN([GLIBCXX_CHECK_SC_NPROCESSORS_ONLN], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_CHECKING([for _SC_NPROCESSORS_ONLN]) AC_CACHE_VAL(glibcxx_cv_SC_NPROCESSORS_ONLN, [ GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [int n = sysconf(_SC_NPROCESSORS_ONLN);], [glibcxx_cv_SC_NPROCESSORS_ONLN=yes], [glibcxx_cv_SC_NPROCESSORS_ONLN=no]) ]) if test $glibcxx_cv_SC_NPROCESSORS_ONLN = yes; then AC_DEFINE(_GLIBCXX_USE_SC_NPROCESSORS_ONLN, 1, [Define if _SC_NPROCESSORS_ONLN is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_SC_NPROCESSORS_ONLN) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether sysconf(_SC_NPROC_ONLN) is available in <unistd.h>, and define _GLIBCXX_USE_SC_NPROC_ONLN. dnl AC_DEFUN([GLIBCXX_CHECK_SC_NPROC_ONLN], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_CHECKING([for _SC_NPROC_ONLN]) AC_CACHE_VAL(glibcxx_cv_SC_NPROC_ONLN, [ GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [int n = sysconf(_SC_NPROC_ONLN);], [glibcxx_cv_SC_NPROC_ONLN=yes], [glibcxx_cv_SC_NPROC_ONLN=no]) ]) if test $glibcxx_cv_SC_NPROC_ONLN = yes; then AC_DEFINE(_GLIBCXX_USE_SC_NPROC_ONLN, 1, [Define if _SC_NPROC_ONLN is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_SC_NPROC_ONLN) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether pthread_num_processors_np is available in <pthread.h>, and define _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP. dnl AC_DEFUN([GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_CHECKING([for pthreads_num_processors_np]) AC_CACHE_VAL(glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP, [ GCC_TRY_COMPILE_OR_LINK( [#include <pthread.h>], [int n = pthread_num_processors_np();], [glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP=yes], [glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP=no]) ]) if test $glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP = yes; then AC_DEFINE(_GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP, 1, [Define if pthreads_num_processors_np is available in <pthread.h>.]) fi AC_MSG_RESULT($glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check whether sysctl is available in <pthread.h>, and define _GLIBCXX_USE_SYSCTL_HW_NCPU. dnl AC_DEFUN([GLIBCXX_CHECK_SYSCTL_HW_NCPU], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_CHECKING([for hw.ncpu sysctl]) AC_CACHE_VAL(glibcxx_cv_SYSCTL_HW_NCPU, [ GCC_TRY_COMPILE_OR_LINK( [ #include <stddef.h> #include <sys/sysctl.h> ], [ int count; size_t size = sizeof(count); int mib[] = { CTL_HW, HW_NCPU }; sysctl(mib, 2, &count, &size, NULL, 0); ], [glibcxx_cv_SYSCTL_HW_NCPU=yes], [glibcxx_cv_SYSCTL_HW_NCPU=no]) ]) if test $glibcxx_cv_SYSCTL_HW_NCPU = yes; then AC_DEFINE(_GLIBCXX_USE_SYSCTL_HW_NCPU, 1, [Define if sysctl(), CTL_HW and HW_NCPU are available in <sys/sysctl.h>.]) fi AC_MSG_RESULT($glibcxx_cv_SYSCTL_HW_NCPU) CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl dnl Check to see if python pretty printing can be activated. dnl dnl --with-python-dir=dir dnl installs directory into $prefix/dir AC_DEFUN([GLIBCXX_ENABLE_PYTHON], [ AC_MSG_CHECKING([for custom python install directory]) AC_ARG_WITH([python-dir], AS_HELP_STRING([--with-python-dir], [the location to install Python modules. This path is relative starting from the prefix.]), [with_python_dir=$withval], [with_python_dir="no"]) AC_MSG_RESULT(${with_python_dir}) # Needed for installing Python modules during make install. python_mod_dir="${with_python_dir}" AC_SUBST(python_mod_dir) GLIBCXX_CONDITIONAL(ENABLE_PYTHONDIR, test $python_mod_dir != no) ]) dnl dnl Check to see if -Werror is disabled. dnl dnl --enable-werror/--disable-werror AC_DEFUN([GLIBCXX_ENABLE_WERROR], [ AC_MSG_CHECKING([for -Werror]) GLIBCXX_ENABLE(werror,$1,,[turns on -Werror]) AC_MSG_RESULT($enable_werror) GLIBCXX_CONDITIONAL(ENABLE_WERROR, test $enable_werror = yes) ]) 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_RESULT([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 <sys/sdt.h> 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 <sys/sdt.h> header file]) fi AC_MSG_RESULT($glibcxx_cv_sys_sdt_h) ]) a3108 1 m4_include([../config/gc++filt.m4]) d3110 1 a3110 1 m4_include([../config/gthr.m4]) @ 1.1.1.3 log @import GCC 5.3.0. see these urls for details which are too large to include here: http://gcc.gnu.org/gcc-4.9/changes.html http://gcc.gnu.org/gcc-5/changes.html (note that GCC 5.x is a release stream like GCC 4.9.x, 4.8.x, etc.) the main issues we will have are: The default mode for C is now -std=gnu11 instead of -std=gnu89. ARM: The deprecated option -mwords-little-endian has been removed. The options -mapcs, -mapcs-frame, -mtpcs-frame and -mtpcs-leaf-frame which are only applicable to the old ABI have been deprecated. MIPS: The o32 ABI has been modified and extended. The o32 64-bit floating-point register support is now obsolete and has been removed. It has been replaced by three ABI extensions FPXX, FP64A, and FP64. The meaning of the -mfp64 command-line option has changed. It is now used to enable the FP64A and FP64 ABI extensions. @ text @d52 1 a52 1 m4_define([glibcxx_SUBDIRS],[include libsupc++ src src/c++98 src/c++11 src/filesystem doc po testsuite python]) d874 1 a874 2 dnl See manual/appendix_porting.html#appendix.porting.build_hacking for dnl documentation. d924 1 a924 1 # Long term, -std=c++0x could be even better, could manage to explicitly d1054 2 a1055 2 snprintf(fmt, 0, "%i"); }], [], d1164 2 a1165 3 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, d1178 2 a1179 1 GLIBCXX_ENABLE(libstdcxx-time,auto,[[[=KIND]]], d1191 1 a1191 2 ac_has_nanosleep=no ac_has_sched_yield=no d1193 1 a1193 50 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 <features.h>], [ #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*|dragonfly*) 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 elif test x"$enable_libstdcxx_time" != x"no"; then d1217 2 a1218 1 ac_has_sched_yield=yes d1223 2 a1224 1 ac_has_sched_yield=yes d1228 2 a1229 1 ac_has_sched_yield=yes a1311 5 if test x"$ac_has_sched_yield" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1, [ Defined if sched_yield is available. ]) fi d1727 1 a1727 1 # Check for the existence of wchar_t <inttypes.h> functions (NB: doesn't a1846 46 dnl Check whether required C++11 overloads are present in <math.h>. dnl AC_DEFUN([GLIBCXX_CHECK_MATH11_PROTO], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -std=c++11" case "$host" in *-*-solaris2.*) # Solaris 12 introduced the C++11 <math.h> overloads. A backport to # a Solaris 11.3 SRU is likely, maybe even a Solaris 10 patch. AC_MSG_CHECKING([for C++11 <math.h> overloads]) AC_CACHE_VAL(glibcxx_cv_math11_overload, [ AC_COMPILE_IFELSE([AC_LANG_SOURCE( [#include <math.h> #undef isfinite namespace std { inline bool isfinite(float __x) { return __builtin_isfinite(__x); } } ])], [glibcxx_cv_math11_overload=no], [glibcxx_cv_math11_overload=yes] )]) # autoheader cannot handle indented templates. AH_VERBATIM([__CORRECT_ISO_CPP11_MATH_H_PROTO], [/* Define if all C++11 overloads are available in <math.h>. */ #if __cplusplus >= 201103L #undef __CORRECT_ISO_CPP11_MATH_H_PROTO #endif]) if test $glibcxx_cv_math11_overload = yes; then AC_DEFINE(__CORRECT_ISO_CPP11_MATH_H_PROTO) fi AC_MSG_RESULT([$glibcxx_cv_math11_overload]) ;; esac CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl a1938 3 dragonfly*) enable_clocale_flag=dragonfly ;; a2030 17 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 ;; a2234 42 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]) vtv_cygmin=no if test $enable_vtable_verify = yes; then case ${target_os} in cygwin*|mingw32*) VTV_CXXFLAGS="-fvtable-verify=std -Wl,-lvtv,-u_vtable_map_vars_start,-u_vtable_map_vars_end" vtv_cygmin=yes ;; *) VTV_CXXFLAGS="-fvtable-verify=std -Wl,-u_vtable_map_vars_start,-u_vtable_map_vars_end" ;; esac 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) AM_CONDITIONAL(VTV_CYGMIN, test x$vtv_cygmin = xyes) GLIBCXX_CONDITIONAL(ENABLE_VTABLE_VERIFY, test $enable_vtable_verify = yes) ]) dnl a3056 2 elif grep _Unwind_SjLj_Register conftest.s >/dev/null 2>&1 ; then enable_sjlj_exceptions=yes d3269 1 a3269 1 libtool_VERSION=6:21:0 d3439 19 a3457 1 ], [ac_has_gthreads=yes], [ac_has_gthreads=no]) a3466 7 # Also check for pthread_rwlock_t for std::shared_timed_mutex in C++14 AC_CHECK_TYPE([pthread_rwlock_t], [AC_DEFINE([_GLIBCXX_USE_PTHREAD_RWLOCK_T], 1, [Define if POSIX read/write locks are available in <gthr.h>.])], [], [#include "gthr.h"]) a3686 27 dnl dnl Check whether obsolescent tmpnam is available in <stdio.h>, 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 <stdio.h>], [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 <stdio.h>.]) fi AC_MSG_RESULT($glibcxx_cv_TMPNAM) dnl CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) d3693 1 a3693 1 AC_MSG_CHECKING([for suitable sys/sdt.h]) a3717 230 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_symvers = xgnu-versioned-namespace; then # gnu-versioned-namespace is incompatible with the dual ABI. enable_libstdcxx_dual_abi="no" fi if test x"$enable_libstdcxx_dual_abi" != xyes; then AC_MSG_NOTICE([dual ABI is disabled]) default_libstdcxx_abi="gcc4-compatible" 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={gcc4-compatible,new} 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 gcc4-compatible) default_libstdcxx_abi="gcc4-compatible" ;; new|cxx11) default_libstdcxx_abi="new" ;; c++*|gnu++*) AC_MSG_ERROR([Supported arguments for --with-default-libstdcxx-abi have changed, use "new" or "gcc4-compatible"]) ;; *) AC_MSG_ERROR([Invalid argument for --with-default-libstdcxx-abi]) ;; esac ], [default_libstdcxx_abi="new"]) AC_MSG_RESULT(${default_libstdcxx_abi}) fi if test $default_libstdcxx_abi = "new"; 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) ]) dnl dnl Check to see whether to build libstdc++fs.a dnl dnl --enable-libstdcxx-filesystem-ts dnl AC_DEFUN([GLIBCXX_ENABLE_FILESYSTEM_TS], [ GLIBCXX_ENABLE(libstdcxx-filesystem-ts,auto,, [turns on ISO/IEC TS 18822 support], [permit yes|no|auto]) AC_MSG_CHECKING([whether to build Filesystem TS support]) if test x"$ac_cv_header_dirent_h" != x"yes"; then enable_libstdcxx_filesystem_ts=no fi if test x"$enable_libstdcxx_filesystem_ts" = x"auto"; then case "${target_os}" in freebsd*|netbsd*|openbsd*|dragonfly*|darwin*) enable_libstdcxx_filesystem_ts=yes ;; gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu) enable_libstdcxx_filesystem_ts=yes ;; solaris*) enable_libstdcxx_filesystem_ts=yes ;; *) enable_libstdcxx_filesystem_ts=no ;; esac fi AC_MSG_RESULT($enable_libstdcxx_filesystem_ts) GLIBCXX_CONDITIONAL(ENABLE_FILESYSTEM_TS, test $enable_libstdcxx_filesystem_ts = yes) ]) dnl dnl Check whether the library calls required by the Filesystem TS are present dnl and define _GLIBCXX_USE_REALPATH and _GLIBCXX_USE_UTIMENSAT. dnl AC_DEFUN([GLIBCXX_CHECK_FILESYSTEM_DEPS], [dnl dnl AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" dnl AC_MSG_CHECKING([for struct dirent.d_type]) AC_CACHE_VAL(glibcxx_cv_dirent_d_type, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <dirent.h>], [ struct dirent d; if (sizeof d.d_type) return 0; ], [glibcxx_cv_dirent_d_type=yes], [glibcxx_cv_dirent_d_type=no]) ]) if test $glibcxx_cv_dirent_d_type = yes; then AC_DEFINE(HAVE_STRUCT_DIRENT_D_TYPE, 1, [Define to 1 if `d_type' is a member of `struct dirent'.]) fi AC_MSG_RESULT($glibcxx_cv_dirent_d_type) dnl AC_MSG_CHECKING([for realpath]) AC_CACHE_VAL(glibcxx_cv_realpath, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <stdlib.h> #include <unistd.h> ], [ #if _XOPEN_VERSION < 500 #error #elif _XOPEN_VERSION >= 700 || defined(PATH_MAX) char *tmp = realpath((const char*)NULL, (char*)NULL); #else #error #endif ], [glibcxx_cv_realpath=yes], [glibcxx_cv_realpath=no]) ]) if test $glibcxx_cv_realpath = yes; then AC_DEFINE(_GLIBCXX_USE_REALPATH, 1, [Define if usable realpath is available in <stdlib.h>.]) fi AC_MSG_RESULT($glibcxx_cv_realpath) dnl AC_MSG_CHECKING([for utimensat]) AC_CACHE_VAL(glibcxx_cv_utimensat, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <fcntl.h> #include <sys/stat.h> ], [ struct timespec ts[2] = { { 0, UTIME_OMIT }, { 1, 1 } }; int i = utimensat(AT_FDCWD, "path", ts, 0); ], [glibcxx_cv_utimensat=yes], [glibcxx_cv_utimensat=no]) ]) if test $glibcxx_cv_utimensat = yes; then AC_DEFINE(_GLIBCXX_USE_UTIMENSAT, 1, [Define if utimensat and UTIME_OMIT are available in <sys/stat.h> and AT_FDCWD in <fcntl.h>.]) fi AC_MSG_RESULT($glibcxx_cv_utimensat) dnl AC_MSG_CHECKING([for struct stat.st_mtim.tv_nsec]) AC_CACHE_VAL(glibcxx_cv_st_mtim, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <sys/stat.h> ], [ struct stat st; return st.st_mtim.tv_nsec; ], [glibcxx_cv_st_mtim=yes], [glibcxx_cv_st_mtim=no]) ]) if test $glibcxx_cv_st_mtim = yes; then AC_DEFINE(_GLIBCXX_USE_ST_MTIM, 1, [Define if struct stat has timespec members.]) fi AC_MSG_RESULT($glibcxx_cv_st_mtim) dnl AC_MSG_CHECKING([for fchmod]) AC_CACHE_VAL(glibcxx_cv_fchmod, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <sys/stat.h>], [fchmod(1, S_IWUSR);], [glibcxx_cv_fchmod=yes], [glibcxx_cv_fchmod=no]) ]) if test $glibcxx_cv_fchmod = yes; then AC_DEFINE(_GLIBCXX_USE_FCHMOD, 1, [Define if fchmod is available in <sys/stat.h>.]) fi AC_MSG_RESULT($glibcxx_cv_fchmod) dnl AC_MSG_CHECKING([for fchmodat]) AC_CACHE_VAL(glibcxx_cv_fchmodat, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <fcntl.h> #include <sys/stat.h> ], [fchmodat(AT_FDCWD, "", 0, AT_SYMLINK_NOFOLLOW);], [glibcxx_cv_fchmodat=yes], [glibcxx_cv_fchmodat=no]) ]) if test $glibcxx_cv_fchmodat = yes; then AC_DEFINE(_GLIBCXX_USE_FCHMODAT, 1, [Define if fchmodat is available in <sys/stat.h>.]) fi AC_MSG_RESULT($glibcxx_cv_fchmodat) dnl AC_MSG_CHECKING([for sendfile that can copy files]) AC_CACHE_VAL(glibcxx_cv_sendfile, [dnl case "${target_os}" in gnu* | linux* | solaris*) GCC_TRY_COMPILE_OR_LINK( [#include <sys/sendfile.h>], [sendfile(1, 2, (off_t*)NULL, sizeof 1);], [glibcxx_cv_sendfile=yes], [glibcxx_cv_sendfile=no]) ;; *) glibcxx_cv_sendfile=no ;; esac ]) if test $glibcxx_cv_sendfile = yes; then AC_DEFINE(_GLIBCXX_USE_SENDFILE, 1, [Define if sendfile is available in <sys/stat.h>.]) fi AC_MSG_RESULT($glibcxx_cv_sendfile) dnl CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) @ 1.1.1.4 log @initial import of GCC 5.5.0. this fixes a very large number of PRs. 280 are listed here: https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.5 and this list is likely not complete, and not reproduced here. the only specific change in functionality is removal of x86 "pcommit" instruction (which was apparently never implemented.) @ text @d1900 1 a1900 2 dnl Check whether required C++11 overloads for floating point and integral dnl types are present in <math.h>. d1911 4 a1914 4 # Solaris 12 Build 86, Solaris 11.3 SRU 3.6, and Solaris 10 Patch # 11996[67]-02 introduced the C++11 <math.h> floating point overloads. AC_MSG_CHECKING([for C++11 <math.h> floating point overloads]) AC_CACHE_VAL(glibcxx_cv_math11_fp_overload, [ d1923 2 a1924 2 [glibcxx_cv_math11_fp_overload=no], [glibcxx_cv_math11_fp_overload=yes] d1928 2 a1929 2 AH_VERBATIM([__CORRECT_ISO_CPP11_MATH_H_PROTO_FP], [/* Define if all C++11 floating point overloads are available in <math.h>. */ d1931 1 a1931 1 #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP d1934 2 a1935 2 if test $glibcxx_cv_math11_fp_overload = yes; then AC_DEFINE(__CORRECT_ISO_CPP11_MATH_H_PROTO_FP) d1937 1 a1937 53 AC_MSG_RESULT([$glibcxx_cv_math11_fp_overload]) # Solaris 12 Build 90, Solaris 11.3 SRU 5.6, and Solaris 10 Patch # 11996[67]-02 introduced the C++11 <math.h> integral type overloads. AC_MSG_CHECKING([for C++11 <math.h> integral type overloads]) AC_CACHE_VAL(glibcxx_cv_math11_int_overload, [ AC_COMPILE_IFELSE([AC_LANG_SOURCE( [#include <math.h> namespace std { template<typename _Tp> struct __is_integer; template<> struct __is_integer<int> { enum { __value = 1 }; }; } namespace __gnu_cxx { template<bool, typename> struct __enable_if; template<typename _Tp> struct __enable_if<true, _Tp> { typedef _Tp __type; }; } namespace std { template<typename _Tp> constexpr typename __gnu_cxx::__enable_if <__is_integer<_Tp>::__value, double>::__type log2(_Tp __x) { return __builtin_log2(__x); } } int main (void) { int i = 1000; return std::log2(i); } ])], [glibcxx_cv_math11_int_overload=no], [glibcxx_cv_math11_int_overload=yes] )]) # autoheader cannot handle indented templates. AH_VERBATIM([__CORRECT_ISO_CPP11_MATH_H_PROTO_INT], [/* Define if all C++11 integral type overloads are available in <math.h>. */ #if __cplusplus >= 201103L #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT #endif]) if test $glibcxx_cv_math11_int_overload = yes; then AC_DEFINE(__CORRECT_ISO_CPP11_MATH_H_PROTO_INT) fi AC_MSG_RESULT([$glibcxx_cv_math11_int_overload]) a4018 1 #include <limits.h> d4109 1 a4109 1 [sendfile(1, 2, (off_t*)0, sizeof 1);], d4119 1 a4119 1 AC_DEFINE(_GLIBCXX_USE_SENDFILE, 1, [Define if sendfile is available in <sys/sendfile.h>.]) @ 1.1.1.5 log @import GCC 6.4.0. see this url for details which are too large to include here: http://gcc.gnu.org/gcc-6/changes.html the main visible changes appear to be: - The default mode for C++ is now -std=gnu++14 instead of -std=gnu++98. - The C and C++ compilers now support attributes on enumerators. - Diagnostics can now contain "fix-it hints" - more warnings (some added to -Wall) @ text @a917 2 AC_LANG_SAVE AC_LANG_CPLUSPLUS d919 2 a920 17 # Use -std=c++98 (instead of -std=gnu++98) because leaving __STRICT_ANSI__ # undefined may cause fake C99 facilities, like pre-standard snprintf, # to be spuriously enabled. ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -std=c++98" ac_save_LIBS="$LIBS" ac_save_gcc_no_link="$gcc_no_link" if test x$gcc_no_link != xyes; then # Use -fno-exceptions to that the C driver can link these tests without # hitting undefined references to personality routines. CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_CHECK_LIB(m, sin, [LIBS="$LIBS -lm"], [ # Use the default compile-only tests in GCC_TRY_COMPILE_OR_LINK gcc_no_link=yes ]) fi d922 9 a930 28 # Check for the existence of <math.h> functions used if C99 is enabled. AC_MSG_CHECKING([for ISO C99 support in <math.h> for C++98]) AC_CACHE_VAL(glibcxx_cv_c99_math_cxx98, [ GCC_TRY_COMPILE_OR_LINK( [#include <math.h> volatile double d1, d2; volatile int i;], [i = fpclassify(d1); i = isfinite(d1); i = isinf(d1); i = isnan(d1); i = isnormal(d1); i = signbit(d1); i = isgreater(d1, d2); i = isgreaterequal(d1, d2); i = isless(d1, d2); i = islessequal(d1, d2); i = islessgreater(d1, d2); i = islessgreater(d1, d2); i = isunordered(d1, d2); ], [glibcxx_cv_c99_math_cxx98=yes], [glibcxx_cv_c99_math_cxx98=no]) ]) AC_MSG_RESULT($glibcxx_cv_c99_math_cxx98) if test x"$glibcxx_cv_c99_math_cxx98" = x"yes"; then AC_DEFINE(_GLIBCXX98_USE_C99_MATH, 1, [Define if C99 functions or macros in <math.h> should be imported in <cmath> in namespace std for C++98.]) fi d932 9 a940 86 # Check for the existence of <complex.h> complex math functions. # This is necessary even though libstdc++ uses the builtin versions # of these functions, because if the builtin cannot be used, a reference # to the library function is emitted. AC_CHECK_HEADERS(tgmath.h, ac_has_tgmath_h=yes, ac_has_tgmath_h=no) AC_CHECK_HEADERS(complex.h, ac_has_complex_h=yes, ac_has_complex_h=no) if test x"$ac_has_complex_h" = x"yes"; then AC_MSG_CHECKING([for ISO C99 support in <complex.h> for C++98]) AC_CACHE_VAL(glibcxx_cv_c99_complex_cxx98, [ GCC_TRY_COMPILE_OR_LINK( [#include <complex.h> typedef __complex__ float float_type; typedef __complex__ double double_type; typedef __complex__ long double ld_type; volatile float_type tmpf; volatile double_type tmpd; volatile ld_type tmpld; volatile float f; volatile double d; volatile long double ld;], [f = cabsf(tmpf); f = cargf(tmpf); tmpf = ccosf(tmpf); tmpf = ccoshf(tmpf); tmpf = cexpf(tmpf); tmpf = clogf(tmpf); tmpf = csinf(tmpf); tmpf = csinhf(tmpf); tmpf = csqrtf(tmpf); tmpf = ctanf(tmpf); tmpf = ctanhf(tmpf); tmpf = cpowf(tmpf, tmpf); tmpf = cprojf(tmpf); d = cabs(tmpd); d = carg(tmpd); tmpd = ccos(tmpd); tmpd = ccosh(tmpd); tmpd = cexp(tmpd); tmpd = clog(tmpd); tmpd = csin(tmpd); tmpd = csinh(tmpd); tmpd = csqrt(tmpd); tmpd = ctan(tmpd); tmpd = ctanh(tmpd); tmpd = cpow(tmpd, tmpd); tmpd = cproj(tmpd); ld = cabsl(tmpld); ld = cargl(tmpld); tmpld = ccosl(tmpld); tmpld = ccoshl(tmpld); tmpld = cexpl(tmpld); tmpld = clogl(tmpld); tmpld = csinl(tmpld); tmpld = csinhl(tmpld); tmpld = csqrtl(tmpld); tmpld = ctanl(tmpld); tmpld = ctanhl(tmpld); tmpld = cpowl(tmpld, tmpld); tmpld = cprojl(tmpld); ], [glibcxx_cv_c99_complex_cxx98=yes], [glibcxx_cv_c99_complex_cxx98=no]) ]) fi AC_MSG_RESULT($glibcxx_cv_c99_complex_cxx98) if test x"$glibcxx_cv_c99_complex_cxx98" = x"yes"; then AC_DEFINE(_GLIBCXX98_USE_C99_COMPLEX, 1, [Define if C99 functions in <complex.h> should be used in <complex> for C++98. Using compiler builtins for these functions requires corresponding C99 library functions to be present.]) fi # Check for the existence in <stdio.h> of vscanf, et. al. AC_MSG_CHECKING([for ISO C99 support in <stdio.h> for C++98]) AC_CACHE_VAL(glibcxx_cv_c99_stdio_cxx98, [ GCC_TRY_COMPILE_OR_LINK( [#include <stdio.h> #include <stdarg.h> void foo(char* fmt, ...) { va_list args; va_start(args, fmt); vfscanf(stderr, "%i", args); vscanf("%i", args); vsnprintf(fmt, 0, "%i", args); vsscanf(fmt, "%i", args); snprintf(fmt, 0, "%i"); }], [], [glibcxx_cv_c99_stdio_cxx98=yes], [glibcxx_cv_c99_stdio_cxx98=no]) d942 1 a942 6 AC_MSG_RESULT($glibcxx_cv_c99_stdio_cxx98) if test x"$glibcxx_cv_c99_stdio_cxx98" = x"yes"; then AC_DEFINE(_GLIBCXX98_USE_C99_STDIO, 1, [Define if C99 functions or macros in <stdio.h> should be imported in <cstdio> in namespace std for C++98.]) fi d944 28 a971 28 # Check for the existence in <stdlib.h> of lldiv_t, et. al. AC_MSG_CHECKING([for ISO C99 support in <stdlib.h> for C++98]) AC_CACHE_VAL(glibcxx_cv_c99_stdlib_cxx98, [ GCC_TRY_COMPILE_OR_LINK( [#include <stdlib.h> volatile float f; volatile long double ld; volatile unsigned long long ll; lldiv_t mydivt;], [char* tmp; f = strtof("gnu", &tmp); ld = strtold("gnu", &tmp); ll = strtoll("gnu", &tmp, 10); ll = strtoull("gnu", &tmp, 10); ll = llabs(10); mydivt = lldiv(10,1); ll = mydivt.quot; ll = mydivt.rem; ll = atoll("10"); _Exit(0); ], [glibcxx_cv_c99_stdlib_cxx98=yes], [glibcxx_cv_c99_stdlib_cxx98=no]) ]) AC_MSG_RESULT($glibcxx_cv_c99_stdlib_cxx98) if test x"$glibcxx_cv_c99_stdlib_cxx98" = x"yes"; then AC_DEFINE(_GLIBCXX98_USE_C99_STDLIB, 1, [Define if C99 functions or macros in <stdlib.h> should be imported in <cstdlib> in namespace std for C++98.]) fi d973 68 a1040 14 # Check for the existence in <wchar.h> of wcstold, etc. if test x"$ac_has_wchar_h" = xyes && test x"$ac_has_wctype_h" = xyes; then AC_MSG_CHECKING([for ISO C99 support in <wchar.h> for C++98]) AC_CACHE_VAL(glibcxx_cv_c99_wchar_cxx98, [ AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::wcstold; using ::wcstoll; using ::wcstoull; } ], [], [glibcxx_cv_c99_wchar_cxx98=yes], [glibcxx_cv_c99_wchar_cxx98=no]) ]) d1042 56 a1097 7 # Checks for wide character functions that may not be present. # Injection of these is wrapped with guard macros. # NB: only put functions here, instead of immediately above, if # absolutely necessary. AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::vfwscanf; }], [], [AC_DEFINE(HAVE_VFWSCANF, 1, [Defined if vfwscanf exists.])], []) d1099 42 a1140 3 AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::vswscanf; }], [], [AC_DEFINE(HAVE_VSWSCANF, 1, [Defined if vswscanf exists.])], []) d1142 4 a1145 261 AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::vwscanf; }], [], [AC_DEFINE(HAVE_VWSCANF, 1, [Defined if vwscanf exists.])], []) AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::wcstof; }], [], [AC_DEFINE(HAVE_WCSTOF, 1, [Defined if wcstof exists.])], []) AC_TRY_COMPILE([#include <wctype.h>], [wint_t t; int i = iswblank(t);], [AC_DEFINE(HAVE_ISWBLANK, 1, [Defined if iswblank exists.])], []) AC_MSG_RESULT($glibcxx_cv_c99_wchar_cxx98) if test x"$glibcxx_cv_c99_wchar_cxx98" = x"yes"; then AC_DEFINE(_GLIBCXX98_USE_C99_WCHAR, 1, [Define if C99 functions or macros in <wchar.h> should be imported in <cwchar> in namespace std for C++98.]) fi fi # Option parsed, now set things appropriately. if test x"$glibcxx_cv_c99_math_cxx98" = x"no" || test x"$glibcxx_cv_c99_complex_cxx98" = x"no" || test x"$glibcxx_cv_c99_stdio_cxx98" = x"no" || test x"$glibcxx_cv_c99_stdlib_cxx98" = x"no" || test x"$glibcxx_cv_c99_wchar_cxx98" = x"no"; then enable_c99=no; else AC_DEFINE(_GLIBCXX_USE_C99, 1, [Define if C99 functions or macros from <wchar.h>, <math.h>, <complex.h>, <stdio.h>, and <stdlib.h> can be used or exposed.]) fi gcc_no_link="$ac_save_gcc_no_link" LIBS="$ac_save_LIBS" CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE AC_LANG_SAVE AC_LANG_CPLUSPLUS # Use -std=c++11 and test again for C99 library feature in C++11 mode. # For the reasons given above we use -std=c++11 not -std=gnu++11. ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -std=c++11" ac_save_LIBS="$LIBS" ac_save_gcc_no_link="$gcc_no_link" if test x$gcc_no_link != xyes; then # Use -fno-exceptions to that the C driver can link these tests without # hitting undefined references to personality routines. CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_CHECK_LIB(m, sin, [LIBS="$LIBS -lm"], [ # Use the default compile-only tests in GCC_TRY_COMPILE_OR_LINK gcc_no_link=yes ]) fi # Check for the existence of <math.h> functions used if C99 is enabled. AC_MSG_CHECKING([for ISO C99 support in <math.h> for C++11]) AC_CACHE_VAL(glibcxx_cv_c99_math_cxx11, [ GCC_TRY_COMPILE_OR_LINK( [#include <math.h> volatile double d1, d2; volatile int i;], [i = fpclassify(d1); i = isfinite(d1); i = isinf(d1); i = isnan(d1); i = isnormal(d1); i = signbit(d1); i = isgreater(d1, d2); i = isgreaterequal(d1, d2); i = isless(d1, d2); i = islessequal(d1, d2); i = islessgreater(d1, d2); i = islessgreater(d1, d2); i = isunordered(d1, d2); ], [glibcxx_cv_c99_math_cxx11=yes], [glibcxx_cv_c99_math_cxx11=no]) ]) AC_MSG_RESULT($glibcxx_cv_c99_math_cxx11) if test x"$glibcxx_cv_c99_math_cxx11" = x"yes"; then AC_DEFINE(_GLIBCXX11_USE_C99_MATH, 1, [Define if C99 functions or macros in <math.h> should be imported in <cmath> in namespace std for C++11.]) fi # Check for the existence of <complex.h> complex math functions. # This is necessary even though libstdc++ uses the builtin versions # of these functions, because if the builtin cannot be used, a reference # to the library function is emitted. AC_CHECK_HEADERS(tgmath.h, ac_has_tgmath_h=yes, ac_has_tgmath_h=no) AC_CHECK_HEADERS(complex.h, ac_has_complex_h=yes, ac_has_complex_h=no) if test x"$ac_has_complex_h" = x"yes"; then AC_MSG_CHECKING([for ISO C99 support in <complex.h> for C++11]) AC_CACHE_VAL(glibcxx_cv_c99_complex_cxx11, [ GCC_TRY_COMPILE_OR_LINK( [#include <complex.h> typedef __complex__ float float_type; typedef __complex__ double double_type; typedef __complex__ long double ld_type; volatile float_type tmpf; volatile double_type tmpd; volatile ld_type tmpld; volatile float f; volatile double d; volatile long double ld;], [f = cabsf(tmpf); f = cargf(tmpf); tmpf = ccosf(tmpf); tmpf = ccoshf(tmpf); tmpf = cexpf(tmpf); tmpf = clogf(tmpf); tmpf = csinf(tmpf); tmpf = csinhf(tmpf); tmpf = csqrtf(tmpf); tmpf = ctanf(tmpf); tmpf = ctanhf(tmpf); tmpf = cpowf(tmpf, tmpf); tmpf = cprojf(tmpf); d = cabs(tmpd); d = carg(tmpd); tmpd = ccos(tmpd); tmpd = ccosh(tmpd); tmpd = cexp(tmpd); tmpd = clog(tmpd); tmpd = csin(tmpd); tmpd = csinh(tmpd); tmpd = csqrt(tmpd); tmpd = ctan(tmpd); tmpd = ctanh(tmpd); tmpd = cpow(tmpd, tmpd); tmpd = cproj(tmpd); ld = cabsl(tmpld); ld = cargl(tmpld); tmpld = ccosl(tmpld); tmpld = ccoshl(tmpld); tmpld = cexpl(tmpld); tmpld = clogl(tmpld); tmpld = csinl(tmpld); tmpld = csinhl(tmpld); tmpld = csqrtl(tmpld); tmpld = ctanl(tmpld); tmpld = ctanhl(tmpld); tmpld = cpowl(tmpld, tmpld); tmpld = cprojl(tmpld); ], [glibcxx_cv_c99_complex_cxx11=yes], [glibcxx_cv_c99_complex_cxx11=no]) ]) fi AC_MSG_RESULT($glibcxx_cv_c99_complex_cxx11) if test x"$glibcxx_cv_c99_complex_cxx11" = x"yes"; then AC_DEFINE(_GLIBCXX11_USE_C99_COMPLEX, 1, [Define if C99 functions in <complex.h> should be used in <complex> for C++11. Using compiler builtins for these functions requires corresponding C99 library functions to be present.]) fi # Check for the existence in <stdio.h> of vscanf, et. al. AC_MSG_CHECKING([for ISO C99 support in <stdio.h> for C++11]) AC_CACHE_VAL(glibcxx_cv_c99_stdio_cxx11, [ GCC_TRY_COMPILE_OR_LINK( [#include <stdio.h> #include <stdarg.h> void foo(char* fmt, ...) { va_list args; va_start(args, fmt); vfscanf(stderr, "%i", args); vscanf("%i", args); vsnprintf(fmt, 0, "%i", args); vsscanf(fmt, "%i", args); snprintf(fmt, 0, "%i"); }], [], [glibcxx_cv_c99_stdio_cxx11=yes], [glibcxx_cv_c99_stdio_cxx11=no]) ]) AC_MSG_RESULT($glibcxx_cv_c99_stdio_cxx11) if test x"$glibcxx_cv_c99_stdio_cxx11" = x"yes"; then AC_DEFINE(_GLIBCXX11_USE_C99_STDIO, 1, [Define if C99 functions or macros in <stdio.h> should be imported in <cstdio> in namespace std for C++11.]) fi # Check for the existence in <stdlib.h> of lldiv_t, et. al. AC_MSG_CHECKING([for ISO C99 support in <stdlib.h> for C++11]) AC_CACHE_VAL(glibcxx_cv_c99_stdlib_cxx11, [ GCC_TRY_COMPILE_OR_LINK( [#include <stdlib.h> volatile float f; volatile long double ld; volatile unsigned long long ll; lldiv_t mydivt;], [char* tmp; f = strtof("gnu", &tmp); ld = strtold("gnu", &tmp); ll = strtoll("gnu", &tmp, 10); ll = strtoull("gnu", &tmp, 10); ll = llabs(10); mydivt = lldiv(10,1); ll = mydivt.quot; ll = mydivt.rem; ll = atoll("10"); _Exit(0); ], [glibcxx_cv_c99_stdlib_cxx11=yes], [glibcxx_cv_c99_stdlib_cxx11=no]) ]) AC_MSG_RESULT($glibcxx_cv_c99_stdlib_cxx11) if test x"$glibcxx_cv_c99_stdlib_cxx11" = x"yes"; then AC_DEFINE(_GLIBCXX11_USE_C99_STDLIB, 1, [Define if C99 functions or macros in <stdlib.h> should be imported in <cstdlib> in namespace std for C++11.]) fi # Check for the existence in <wchar.h> of wcstold, etc. if test x"$ac_has_wchar_h" = xyes && test x"$ac_has_wctype_h" = xyes; then AC_MSG_CHECKING([for ISO C99 support in <wchar.h> for C++11]) AC_CACHE_VAL(glibcxx_cv_c99_wchar_cxx11, [ AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::wcstold; using ::wcstoll; using ::wcstoull; } ], [], [glibcxx_cv_c99_wchar_cxx11=yes], [glibcxx_cv_c99_wchar_cxx11=no]) ]) # Checks for wide character functions that may not be present. # Injection of these is wrapped with guard macros. # NB: only put functions here, instead of immediately above, if # absolutely necessary. AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::vfwscanf; }], [], [AC_DEFINE(HAVE_VFWSCANF, 1, [Defined if vfwscanf exists.])], []) AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::vswscanf; }], [], [AC_DEFINE(HAVE_VSWSCANF, 1, [Defined if vswscanf exists.])], []) AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::vwscanf; }], [], [AC_DEFINE(HAVE_VWSCANF, 1, [Defined if vwscanf exists.])], []) AC_TRY_COMPILE([#include <wchar.h> namespace test { using ::wcstof; }], [], [AC_DEFINE(HAVE_WCSTOF, 1, [Defined if wcstof exists.])], []) AC_TRY_COMPILE([#include <wctype.h>], [wint_t t; int i = iswblank(t);], [AC_DEFINE(HAVE_ISWBLANK, 1, [Defined if iswblank exists.])], []) AC_MSG_RESULT($glibcxx_cv_c99_wchar_cxx11) if test x"$glibcxx_cv_c99_wchar_cxx11" = x"yes"; then AC_DEFINE(_GLIBCXX11_USE_C99_WCHAR, 1, [Define if C99 functions or macros in <wchar.h> should be imported in <cwchar> in namespace std for C++11.]) fi fi gcc_no_link="$ac_save_gcc_no_link" LIBS="$ac_save_LIBS" CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE a1811 46 dnl Check for uchar.h and usability. dnl AC_DEFUN([GLIBCXX_CHECK_UCHAR_H], [ # Test uchar.h. AC_CHECK_HEADERS(uchar.h, ac_has_uchar_h=yes, ac_has_uchar_h=no) AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -std=c++11" if test x"$ac_has_uchar_h" = x"yes"; then AC_MSG_CHECKING([for ISO C11 support for <uchar.h>]) AC_TRY_COMPILE([#include <uchar.h> #ifdef __STDC_UTF_16__ long i = __STDC_UTF_16__; #endif #ifdef __STDC_UTF_32__ long j = __STDC_UTF_32__; #endif namespace test { using ::c16rtomb; using ::c32rtomb; using ::mbrtoc16; using ::mbrtoc32; } ], [], [ac_c11_uchar_cxx11=yes], [ac_c11_uchar_cxx11=no]) else ac_c11_uchar_cxx11=no fi AC_MSG_RESULT($ac_c11_uchar_cxx11) if test x"$ac_c11_uchar_cxx11" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C11_UCHAR_CXX11, 1, [Define if C11 functions in <uchar.h> should be imported into namespace std in <cuchar>.]) fi CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) dnl a1876 4 # Use C++11 because a conforming <stdio.h> won't define gets for C++14, # and we don't need a declaration for C++14 anyway. ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -std=gnu++11" d1892 1 a1892 1 AC_DEFINE(HAVE_GETS, 1, [Define if gets is available in <stdio.h> before C++14.]) a1895 1 CXXFLAGS="$ac_save_CXXFLAGS" a1991 51 *) # If <math.h> defines the obsolete isinf(double) and isnan(double) # functions (instead of or as well as the C99 generic macros) then we # can't define std::isinf(double) and std::isnan(double) in <cmath> # and must use the ones from <math.h> instead. AC_MSG_CHECKING([for obsolete isinf function in <math.h>]) AC_CACHE_VAL(glibcxx_cv_obsolete_isinf, [ AC_COMPILE_IFELSE([AC_LANG_SOURCE( [#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS #include <math.h> #undef isinf namespace std { using ::isinf; bool isinf(float); bool isinf(long double); } using std::isinf; bool b = isinf(0.0); ])], [glibcxx_cv_obsolete_isinf=yes], [glibcxx_cv_obsolete_isinf=no] )]) AC_MSG_RESULT([$glibcxx_cv_obsolete_isinf]) if test $glibcxx_cv_obsolete_isinf = yes; then AC_DEFINE(HAVE_OBSOLETE_ISINF, 1, [Define if <math.h> defines obsolete isinf function.]) fi AC_MSG_CHECKING([for obsolete isnan function in <math.h>]) AC_CACHE_VAL(glibcxx_cv_obsolete_isnan, [ AC_COMPILE_IFELSE([AC_LANG_SOURCE( [#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS #include <math.h> #undef isnan namespace std { using ::isnan; bool isnan(float); bool isnan(long double); } using std::isnan; bool b = isnan(0.0); ])], [glibcxx_cv_obsolete_isnan=yes], [glibcxx_cv_obsolete_isnan=no] )]) AC_MSG_RESULT([$glibcxx_cv_obsolete_isnan]) if test $glibcxx_cv_obsolete_isnan = yes; then AC_DEFINE(HAVE_OBSOLETE_ISNAN, 1, [Define if <math.h> defines obsolete isnan function.]) fi ;; d2088 1 a2088 1 darwin*) d2091 1 a2091 1 dragonfly* | freebsd*) d2170 1 a2170 1 AC_MSG_RESULT(darwin) d2187 1 a2187 1 AC_MSG_RESULT(dragonfly or freebsd) d2189 1 a2189 1 CLOCALE_H=config/locale/dragonfly/c_locale.h d2191 2 a2192 2 CCODECVT_CC=config/locale/dragonfly/codecvt_members.cc CCOLLATE_CC=config/locale/dragonfly/collate_members.cc d2196 4 a2199 4 CMONEY_CC=config/locale/dragonfly/monetary_members.cc CNUMERIC_CC=config/locale/dragonfly/numeric_members.cc CTIME_H=config/locale/dragonfly/time_members.h CTIME_CC=config/locale/dragonfly/time_members.cc a2365 2 GLIBCXX_CONDITIONAL(ENABLE_ALLOCATOR_NEW, test $enable_libstdcxx_allocator_flag = new) a2426 1 VTV_CXXLINKFLAGS="-L${toplevel_builddir}/libvtv/.libs -Wl,--rpath -Wl,${toplevel_builddir}/libvtv/.libs" a2428 8 darwin*) VTV_CXXFLAGS="-fvtable-verify=std -Wl,-u,_vtable_map_vars_start -Wl,-u,_vtable_map_vars_end" VTV_CXXLINKFLAGS="-L${toplevel_builddir}/libvtv/.libs -Wl,-rpath,${toplevel_builddir}/libvtv/.libs" ;; solaris2*) VTV_CXXFLAGS="-fvtable-verify=std -Wl,-u_vtable_map_vars_start,-u_vtable_map_vars_end" VTV_CXXLINKFLAGS="-L${toplevel_builddir}/libvtv/.libs -Wl,-R -Wl,${toplevel_builddir}/libvtv/.libs" ;; a2430 1 VTV_CXXLINKFLAGS="-L${toplevel_builddir}/libvtv/.libs -Wl,--rpath -Wl,${toplevel_builddir}/libvtv/.libs" d2434 1 d2569 1 a2569 1 dnl building debug libraries with --enable-libstdcxx-debug. d3006 1 a3006 1 // N.B. __atomic_fetch_add is not supported for bool. d3091 1 a3091 1 // N.B. __atomic_fetch_add is not supported for bool. d3205 4 a3208 6 # Set atomicity_dir to builtins if all but the long long test above passes, # or if the builtins were already chosen (e.g. by configure.host). if { test "$glibcxx_cv_atomic_bool" = yes \ && test "$glibcxx_cv_atomic_short" = yes \ && test "$glibcxx_cv_atomic_int" = yes; } \ || test "$atomicity_dir" = "cpu/generic/atomicity_builtins"; then d3231 73 d3485 1 a3485 1 libtool_VERSION=6:22:0 a4180 32 dnl dnl Check how size_t is mangled. Copied from libitm. dnl AC_DEFUN([GLIBCXX_CHECK_SIZE_T_MANGLING], [ AC_CACHE_CHECK([how size_t is mangled], glibcxx_cv_size_t_mangling, [ AC_TRY_COMPILE([], [extern __SIZE_TYPE__ x; extern unsigned long x;], [glibcxx_cv_size_t_mangling=m], [ AC_TRY_COMPILE([], [extern __SIZE_TYPE__ x; extern unsigned int x;], [glibcxx_cv_size_t_mangling=j], [ AC_TRY_COMPILE([], [extern __SIZE_TYPE__ x; extern unsigned long long x;], [glibcxx_cv_size_t_mangling=y], [ AC_TRY_COMPILE([], [extern __SIZE_TYPE__ x; extern unsigned short x;], [glibcxx_cv_size_t_mangling=t], [ AC_TRY_COMPILE([], [extern __SIZE_TYPE__ x; extern __int20 unsigned x;], [glibcxx_cv_size_t_mangling=u6uint20], [glibcxx_cv_size_t_mangling=x]) ]) ]) ]) ]) ]) if test $glibcxx_cv_size_t_mangling = x; then AC_MSG_ERROR([Unknown underlying type for size_t]) fi AC_DEFINE_UNQUOTED(_GLIBCXX_MANGLE_SIZE_T, [$glibcxx_cv_size_t_mangling], [Define to the letter to which size_t is mangled.]) ]) @ 1.1.1.6 log @import GCC 7.4.0. main changes include: The non-standard C++0x type traits has_trivial_default_constructor, has_trivial_copy_constructor and has_trivial_copy_assign have been removed. On ARM targets (arm*-*-*), a bug introduced in GCC 5 that affects conformance to the procedure call standard (AAPCS) has been fixed. Many optimiser improvements DWARF-5 support. Many new and enhanced warnings. Warnings about format strings now underline the pertinent part of the string, and can offer suggested fixes. Several new warnings related to buffer overflows and buffer truncation. New __builtin_add_overflow_p, __builtin_sub_overflow_p, __builtin_mul_overflow_p built-ins added that test for overflow. The C++ front end has experimental support for all of the current C++17 draft. The -fverbose-asm option has been expanded to prints comments showing the source lines that correspond to the assembly. The gcc and g++ driver programs will now provide suggestions for misspelled arguments to command-line options. AArch64 specific: GCC has been updated to the latest revision of the procedure call standard (AAPCS64) to provide support for parameter passing when data types have been over-aligned. The ARMv8.2-A and ARMv8.3-A architecture are now supported. ARM specific: Support for the ARMv5 and ARMv5E architectures has been deprecated (which have no known implementations). A new command-line option -mpure-code has been added. It does not allow constant data to be placed in code sections. x86 specific: Support for the AVX-512 4FMAPS, 4VNNIW, VPOPCNTDQ and Software Guard Extensions (SGX) ISA extensions has been added. PPC specific: GCC now diagnoses inline assembly that clobbers register r2. RISC-V specific: Support for the RISC-V instruction set has been added. SH specific: Support for SH5/SH64 has been removed. Support for SH2A has been enhanced. @ text @d172 32 d432 1 a432 1 [Define if S_ISREG is available in <sys/stat.h>.]) d635 3 a637 2 # Do checks for resource limit functions. GLIBCXX_CHECK_SETRLIMIT a638 1 if $GLIBCXX_IS_NATIVE ; then a1924 1 #ifndef __APPLE__ /* see below */ a1930 1 #endif a1988 23 case "${target_os}" in darwin*) AC_MSG_CHECKING([for ISO C99 rounding functions in <math.h>]) AC_CACHE_VAL(glibcxx_cv_c99_math_llround, [ AC_TRY_COMPILE([#include <math.h>], [llrint(0.0); llrintf(0.0f); llrintl(0.0l); llround(0.0); llroundf(0.0f); llroundl(0.0l); ], [glibcxx_cv_c99_math_llround=yes], [glibcxx_cv_c99_math_llround=no]) ]) AC_MSG_RESULT($glibcxx_cv_c99_math_llround) ;; esac if test x"$glibcxx_cv_c99_math_llround" = x"no"; then AC_DEFINE(_GLIBCXX_NO_C99_ROUNDING_FUNCS, 1, [Define if C99 llrint and llround functions are missing from <math.h>.]) fi d3072 1 a3072 1 dnl ENABLE_FLOAT128 d3127 2 a3133 1 GLIBCXX_CONDITIONAL(ENABLE_FLOAT128, test $enable_float128 = yes) d3760 1 a3760 1 libtool_VERSION=6:24:0 a4487 37 dnl dnl Determine whether std::exception_ptr symbols should be exported with dnl the symbol versions from GCC 4.6.0 or GCC 7.1.0, depending on which dnl release first added support for std::exception_ptr. Originally it was dnl only supported for targets with always-lock-free atomics for int, but dnl since GCC 7.1 it is supported for all targets. dnl AC_DEFUN([GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER], [ if test $enable_symvers != no; then AC_MSG_CHECKING([for first version to support std::exception_ptr]) case ${target} in aarch64-*-* | alpha-*-* | hppa*-*-* | i?86-*-* | x86_64-*-* | \ m68k-*-* | powerpc*-*-* | s390*-*-* | *-*-solaris* ) ac_exception_ptr_since_gcc46=yes ;; *) # If the value of this macro changes then we will need to hardcode # yes/no here for additional targets based on the original value. AC_TRY_COMPILE([], [ #if __GCC_ATOMIC_INT_LOCK_FREE <= 1 # error atomic int not always lock free #endif ], [ac_exception_ptr_since_gcc46=yes], [ac_exception_ptr_since_gcc46=no]) ;; esac if test x"$ac_exception_ptr_since_gcc46" = x"yes" ; then AC_DEFINE(HAVE_EXCEPTION_PTR_SINCE_GCC46, 1, [Define to 1 if GCC 4.6 supported std::exception_ptr for the target]) AC_MSG_RESULT([4.6.0]) else AC_MSG_RESULT([7.1.0]) fi fi ]) @ 1.1.1.7 log @import GCC 8.3. it includes these new features: - many optimisations improved: inter-procedural, profile-directed, LTO, loops including user-controllable unroll support, and more. - columns numbers added to line numbers in dwarf - gcov extended significantly - many sanitizer updates - many new warning messages - many better hints and more useful error messages - minor ABI changes on x86-64 libstdc++, and some c++17 modes - draft c++2a features - better c++17 experimental support - Armv8.4-A supported, better 8.2-A and 8.3-A support, including 32 bit arm port. cortex a-55, a-75 and a-55.a-75 combo support. - in the GCC bugzilla, 8.1 shows 1149 bugs fixed, 8.2 shows 100, and 8.3 shows 158. @ text @d1425 1 a1425 1 freebsd*|netbsd*|dragonfly*|rtems*) d3752 1 a3752 1 libtool_VERSION=6:25:0 d3765 1 a3765 1 libtool_VERSION=8:0:0 a4295 3 rtems*) enable_libstdcxx_filesystem_ts=yes ;; a4520 1 m4_include([../config/cet.m4]) @ 1.1.1.8 log @import GCC 8.4. it fixes at least these 210 PRs in GCC bugzilla: 90095 93348 89906 89766 86747 87770 89588 89753 88235 89762 89684 89946 89965 90010 90026 90733 90810 90840 90842 90867 91623 92930 93073 93402 93505 93576 93744 93820 93908 85762 86429 86521 87327 87480 87513 87554 87685 87748 88183 88380 88394 88419 88690 88820 89381 89422 89576 89831 89917 90951 92003 92852 93140 80791 89358 89970 90899 89212 89419 92745 93684 93789 88273 91826 92376 84746 89497 89595 89664 89711 89725 90018 90316 90900 91108 91293 91772 92763 93054 93246 90313 92420 93434 93767 88530 89517 91838 79262 84680 85459 85711 85860 86567 87008 87651 87652 88469 89546 89827 90197 93072 93241 81800 89190 85400 91472 91854 92095 92131 92575 93704 60228 61414 65782 89405 89498 89703 89752 90187 90193 90898 91401 91450 91665 92296 92384 92438 92615 92648 92723 92732 92904 93087 93228 93515 93905 82081 92859 89712 89876 92106 82645 78552 81266 85965 89102 90165 90299 90532 91436 92059 93205 93325 93562 90359 91280 91375 92674 92704 93439 92768 80938 83361 90563 92113 92961 87833 89848 89902 89903 92022 93828 78179 79221 82920 84016 87015 88075 89077 89266 90454 90634 91226 92154 92664 92886 93065 92692 92629 80590 91944 92899 92977 93463 89601 88025 91660 91845 90498 91077 84487 86119 89174 89981 91550 92569 84135 84974 90872 93714 @ text @d645 6 a650 1 glibcxx_docbook_url=http://docbook.sourceforge.net/release/xsl-ns/current/ d654 13 a666 17 if test x${XMLCATALOG} = xyes && xsl_style_dir=`xmlcatalog "" $glibcxx_docbook_url 2>/dev/null` then XSL_STYLE_DIR=`echo $xsl_style_dir | sed -n 's;^file://;;p'` glibcxx_local_stylesheets=yes else for dir in \ /usr/share/sgml/docbook/xsl-ns-stylesheets \ /usr/share/xml/docbook/stylesheet/docbook-xsl-ns \ /usr/share/xml/docbook/stylesheet/nwalsh5/current \ /usr/share/xml/docbook/stylesheet/nwalsh/current do if test -d $dir; then glibcxx_local_stylesheets=yes XSL_STYLE_DIR=$dir break fi done a672 10 AC_MSG_CHECKING([for docbook stylesheets for documentation creation]) glibcxx_stylesheets=no if test x${XMLCATALOG} = xno || xmlcatalog "" $glibcxx_docbook_url/xhtml/docbook.xsl >/dev/null 2>&1; then if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude $glibcxx_docbook_url/xhtml/docbook.xsl - 2>/dev/null; then glibcxx_stylesheets=yes fi fi AC_MSG_RESULT($glibcxx_stylesheets) d1407 14 a1420 8 # Don't use link test for freestanding library, in case gcc_no_link=yes if test x"$is_hosted" = xyes; then # Versions of glibc before 2.17 needed -lrt for clock_gettime. AC_SEARCH_LIBS(clock_gettime, [rt]) if test x"$ac_cv_search_clock_gettime" = x"none required"; then ac_has_clock_monotonic=yes ac_has_clock_realtime=yes fi @ 1.1.1.9 log @import GCC 7.5.0. doing this here so that the vendor branch has the code we'll merge into gcc.old and the netbsd-9 tree gcc tree. GCC 8.4.0 will be imported immediately on top of this again, restoring the current status. these PRs in the GCC bugzilla are fixed with this update: 89869 80693 89795 84272 85593 86669 87148 87647 87895 88103 88107 88563 88870 88976 89002 89187 89195 89234 89303 89314 89354 89361 89403 89412 89512 89520 89590 89621 89663 89679 89704 89734 89872 89933 90090 90208 87075 85870 89009 89242 88167 80864 81933 85890 86608 87145 88857 89024 89119 89214 89511 89612 89705 89400 81740 82186 84552 86554 87609 88105 88149 88415 88739 88903 89135 89223 89296 89505 89572 89677 89698 89710 90006 90020 90071 90328 90474 91126 91162 91812 91887 90075 88998 89945 87047 87506 88074 88656 88740 91137 89008 84010 89349 91136 91347 91995 89397 87030 60702 78884 85594 87649 87725 88181 88470 88553 88568 88588 88620 88644 88906 88949 89246 89587 89726 89768 89796 89998 90108 90756 90950 91704 88825 88983 86538 51333 89446 90220 91308 92143 89392 90213 90278 91131 91200 91510 89037 91481 87673 88418 88938 88948 90547 27221 58321 61250 67183 67958 77583 83531 86215 88648 88720 88726 89091 89466 89629 90105 90329 90585 90760 90924 91087 89222 81956 71861 35031 69455 81849 82993 85798 88138 88155 88169 88205 88206 88228 88249 88269 88376 77703 80260 82077 86248 88393 90786 57048 66089 66695 67679 68009 71723 72714 84394 85544 87734 88298 90937 91557 63891 64132 65342 68649 68717 71066 71860 71935 77746 78421 78645 78865 78983 79485 79540 85953 88326 89651 90744 @ text @d1416 8 a1423 14 AC_MSG_CHECKING([for at least GNU libc 2.17]) AC_TRY_COMPILE( [#include <features.h>], [ #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 d1428 1 a1428 1 freebsd*|netbsd*|dragonfly*) d3755 1 a3755 1 libtool_VERSION=6:24:0 d3768 1 a3768 1 libtool_VERSION=7:0:0 d4299 3 d4527 1 @ 1.1.1.10 log @re-import GCC 8.4.0. @ text @d1416 14 a1429 8 # Don't use link test for freestanding library, in case gcc_no_link=yes if test x"$is_hosted" = xyes; then # Versions of glibc before 2.17 needed -lrt for clock_gettime. AC_SEARCH_LIBS(clock_gettime, [rt]) if test x"$ac_cv_search_clock_gettime" = x"none required"; then ac_has_clock_monotonic=yes ac_has_clock_realtime=yes fi d1434 1 a1434 1 freebsd*|netbsd*|dragonfly*|rtems*) d3761 1 a3761 1 libtool_VERSION=6:25:0 d3774 1 a3774 1 libtool_VERSION=8:0:0 a4304 3 rtems*) enable_libstdcxx_filesystem_ts=yes ;; a4529 1 m4_include([../config/cet.m4]) @ 1.1.1.11 log @initial import of GCC 9.3.0. changes include: - live patching support - shell completion help - generally better diagnostic output (less verbose/more useful) - diagnostics and optimisation choices can be emitted in json - asan memory usage reduction - many general, and specific to switch, inter-procedure, profile and link-time optimisations. from the release notes: "Overall compile time of Firefox 66 and LibreOffice 6.2.3 on an 8-core machine was reduced by about 5% compared to GCC 8.3" - OpenMP 5.0 support - better spell-guesser - partial experimental support for c2x and c++2a - c++17 is no longer experimental - arm AAPCS GCC 6-8 structure passing bug fixed, may cause incompatibility (restored compat with GCC 5 and earlier.) - openrisc support @ text @d52 1 a52 1 m4_define([glibcxx_SUBDIRS],[include libsupc++ src src/c++98 src/c++11 src/c++17 src/filesystem doc po testsuite python]) d143 7 d166 1 d745 1 a745 1 WARN_FLAGS="-Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi=2" d2087 1 a2087 2 dnl Check whether "/dev/random" and "/dev/urandom" are available for dnl class std::random_device from C++ 2011 [rand.device], and d2090 1 a2090 1 AC_DEFUN([GLIBCXX_CHECK_DEV_RANDOM], [ d2092 2 a2093 2 AC_MSG_CHECKING([for "/dev/random" and "/dev/urandom" for std::random_device]) AC_CACHE_VAL(glibcxx_cv_dev_random, [ d2095 2 a2096 2 ## For MSys environment the test above is detected as false-positive ## on mingw-targets. So disable it explicitly for them. d2098 2 a2099 2 *mingw*) glibcxx_cv_dev_random=no ;; *) glibcxx_cv_dev_random=yes ;; d2102 1 a2102 1 glibcxx_cv_dev_random=no; d2105 1 a2105 1 AC_MSG_RESULT($glibcxx_cv_dev_random) d2107 1 a2107 4 if test x"$glibcxx_cv_dev_random" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM, 1, [Define if /dev/random and /dev/urandom are available for std::random_device.]) a3571 66 dnl dnl Set default lock policy for synchronizing shared_ptr reference counting. dnl dnl --with-libstdcxx-lock-policy=auto dnl Use atomic operations for shared_ptr reference counting only if dnl the default target supports atomic compare-and-swap. dnl --with-libstdcxx-lock-policy=atomic dnl Use atomic operations for shared_ptr reference counting. dnl --with-libstdcxx-lock-policy=mutex dnl Use a mutex to synchronize shared_ptr reference counting. dnl dnl This controls the value of __gnu_cxx::__default_lock_policy, which dnl determines how shared_ptr reference counts are synchronized. dnl The option "atomic" means that atomic operations should be used, dnl "mutex" means that a mutex will be used. The default option, "auto", dnl will check if the target supports the compiler-generated builtins dnl for atomic compare-and-swap operations for 2-byte and 4-byte integers, dnl and will use "atomic" if supported, "mutex" otherwise. dnl This option is ignored if the thread model used by GCC is "single", dnl as no synchronization is used at all in that case. dnl This option affects the library ABI (except in the "single" thread model). dnl dnl Defines _GLIBCXX_HAVE_ATOMIC_LOCK_POLICY to 1 if atomics should be used. dnl AC_DEFUN([GLIBCXX_ENABLE_LOCK_POLICY], [ AC_ARG_WITH([libstdcxx-lock-policy], AC_HELP_STRING([--with-libstdcxx-lock-policy={atomic,mutex,auto}], [synchronization policy for shared_ptr reference counting [default=auto]]), [libstdcxx_atomic_lock_policy=$withval], [libstdcxx_atomic_lock_policy=auto]) case "$libstdcxx_atomic_lock_policy" in atomic|mutex|auto) ;; *) AC_MSG_ERROR([Invalid argument for --with-libstdcxx-lock-policy]) ;; esac AC_MSG_CHECKING([for lock policy for shared_ptr reference counts]) if test x"$libstdcxx_atomic_lock_policy" = x"auto"; then AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" dnl Why do we care about 2-byte CAS on targets with 4-byte _Atomic_word?! AC_TRY_COMPILE([ #if ! defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 # error "No 2-byte compare-and-swap" #elif ! defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 # error "No 4-byte compare-and-swap" #endif ],, [libstdcxx_atomic_lock_policy=atomic], [libstdcxx_atomic_lock_policy=mutex]) AC_LANG_RESTORE CXXFLAGS="$ac_save_CXXFLAGS" fi if test x"$libstdcxx_atomic_lock_policy" = x"atomic"; then AC_MSG_RESULT(atomic) AC_DEFINE(HAVE_ATOMIC_LOCK_POLICY,1, [Defined if shared_ptr reference counting should use atomic operations.]) else AC_MSG_RESULT(mutex) fi ]) d3755 1 a3755 1 libtool_VERSION=6:28:0 d4315 2 a4316 12 dnl Check whether the library calls required by the Filesystem TS are present. dnl Defines: dnl HAVE_STRUCT_DIRENT_D_TYPE dnl _GLIBCXX_USE_REALPATH dnl _GLIBCXX_USE_UTIMENSAT dnl _GLIBCXX_USE_ST_MTIM dnl _GLIBCXX_USE_FCHMOD dnl _GLIBCXX_USE_FCHMODAT dnl _GLIBCXX_USE_SENDFILE dnl HAVE_LINK dnl HAVE_READLINK dnl HAVE_SYMLINK d4320 4 a4323 5 if test $enable_libstdcxx_filesystem_ts = yes; then AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" d4325 15 a4339 15 AC_MSG_CHECKING([for struct dirent.d_type]) AC_CACHE_VAL(glibcxx_cv_dirent_d_type, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <dirent.h>], [ struct dirent d; if (sizeof d.d_type) return 0; ], [glibcxx_cv_dirent_d_type=yes], [glibcxx_cv_dirent_d_type=no]) ]) if test $glibcxx_cv_dirent_d_type = yes; then AC_DEFINE(HAVE_STRUCT_DIRENT_D_TYPE, 1, [Define to 1 if `d_type' is a member of `struct dirent'.]) fi AC_MSG_RESULT($glibcxx_cv_dirent_d_type) d4341 24 a4364 24 AC_MSG_CHECKING([for realpath]) AC_CACHE_VAL(glibcxx_cv_realpath, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <limits.h> #include <stdlib.h> #include <unistd.h> ], [ #if _XOPEN_VERSION < 500 #error #elif _XOPEN_VERSION >= 700 || defined(PATH_MAX) char *tmp = realpath((const char*)NULL, (char*)NULL); #else #error #endif ], [glibcxx_cv_realpath=yes], [glibcxx_cv_realpath=no]) ]) if test $glibcxx_cv_realpath = yes; then AC_DEFINE(_GLIBCXX_USE_REALPATH, 1, [Define if usable realpath is available in <stdlib.h>.]) fi AC_MSG_RESULT($glibcxx_cv_realpath) d4366 18 a4383 18 AC_MSG_CHECKING([for utimensat]) AC_CACHE_VAL(glibcxx_cv_utimensat, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <fcntl.h> #include <sys/stat.h> ], [ struct timespec ts[2] = { { 0, UTIME_OMIT }, { 1, 1 } }; int i = utimensat(AT_FDCWD, "path", ts, 0); ], [glibcxx_cv_utimensat=yes], [glibcxx_cv_utimensat=no]) ]) if test $glibcxx_cv_utimensat = yes; then AC_DEFINE(_GLIBCXX_USE_UTIMENSAT, 1, [Define if utimensat and UTIME_OMIT are available in <sys/stat.h> and AT_FDCWD in <fcntl.h>.]) fi AC_MSG_RESULT($glibcxx_cv_utimensat) d4385 15 a4399 17 AC_MSG_CHECKING([for utime]) AC_CACHE_VAL(glibcxx_cv_utime, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <utime.h> ], [ struct utimbuf t = { 1, 1 }; int i = utime("path", &t); ], [glibcxx_cv_utime=yes], [glibcxx_cv_utime=no]) ]) if test $glibcxx_cv_utime = yes; then AC_DEFINE(_GLIBCXX_USE_UTIME, 1, [Define if utime is available in <utime.h>.]) fi AC_MSG_RESULT($glibcxx_cv_utime) d4401 12 a4412 15 AC_MSG_CHECKING([for lstat]) AC_CACHE_VAL(glibcxx_cv_lstat, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <sys/stat.h> ], [ struct stat st; int i = lstat("path", &st); ], [glibcxx_cv_lstat=yes], [glibcxx_cv_lstat=no]) ]) if test $glibcxx_cv_lstat = yes; then AC_DEFINE(_GLIBCXX_USE_LSTAT, 1, [Define if lstat is available in <sys/stat.h>.]) fi AC_MSG_RESULT($glibcxx_cv_lstat) d4414 15 a4428 15 AC_MSG_CHECKING([for struct stat.st_mtim.tv_nsec]) AC_CACHE_VAL(glibcxx_cv_st_mtim, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <sys/stat.h> ], [ struct stat st; return st.st_mtim.tv_nsec; ], [glibcxx_cv_st_mtim=yes], [glibcxx_cv_st_mtim=no]) ]) if test $glibcxx_cv_st_mtim = yes; then AC_DEFINE(_GLIBCXX_USE_ST_MTIM, 1, [Define if struct stat has timespec members.]) fi AC_MSG_RESULT($glibcxx_cv_st_mtim) d4430 19 a4448 12 AC_MSG_CHECKING([for fchmod]) AC_CACHE_VAL(glibcxx_cv_fchmod, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <sys/stat.h>], [fchmod(1, S_IWUSR);], [glibcxx_cv_fchmod=yes], [glibcxx_cv_fchmod=no]) ]) if test $glibcxx_cv_fchmod = yes; then AC_DEFINE(_GLIBCXX_USE_FCHMOD, 1, [Define if fchmod is available in <sys/stat.h>.]) fi AC_MSG_RESULT($glibcxx_cv_fchmod) d4450 2 a4451 91 AC_MSG_CHECKING([for fchmodat]) AC_CACHE_VAL(glibcxx_cv_fchmodat, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <fcntl.h> #include <sys/stat.h> ], [fchmodat(AT_FDCWD, "", 0, AT_SYMLINK_NOFOLLOW);], [glibcxx_cv_fchmodat=yes], [glibcxx_cv_fchmodat=no]) ]) if test $glibcxx_cv_fchmodat = yes; then AC_DEFINE(_GLIBCXX_USE_FCHMODAT, 1, [Define if fchmodat is available in <sys/stat.h>.]) fi AC_MSG_RESULT($glibcxx_cv_fchmodat) dnl AC_MSG_CHECKING([for sendfile that can copy files]) AC_CACHE_VAL(glibcxx_cv_sendfile, [dnl case "${target_os}" in gnu* | linux* | solaris*) GCC_TRY_COMPILE_OR_LINK( [#include <sys/sendfile.h>], [sendfile(1, 2, (off_t*)0, sizeof 1);], [glibcxx_cv_sendfile=yes], [glibcxx_cv_sendfile=no]) ;; *) glibcxx_cv_sendfile=no ;; esac ]) if test $glibcxx_cv_sendfile = yes; then AC_DEFINE(_GLIBCXX_USE_SENDFILE, 1, [Define if sendfile is available in <sys/sendfile.h>.]) fi AC_MSG_RESULT($glibcxx_cv_sendfile) dnl AC_MSG_CHECKING([for link]) AC_CACHE_VAL(glibcxx_cv_link, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [link("", "");], [glibcxx_cv_link=yes], [glibcxx_cv_link=no]) ]) if test $glibcxx_cv_link = yes; then AC_DEFINE(HAVE_LINK, 1, [Define if link is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_link) dnl AC_MSG_CHECKING([for readlink]) AC_CACHE_VAL(glibcxx_cv_readlink, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [char buf[32]; readlink("", buf, sizeof(buf));], [glibcxx_cv_readlink=yes], [glibcxx_cv_readlink=no]) ]) if test $glibcxx_cv_readlink = yes; then AC_DEFINE(HAVE_READLINK, 1, [Define if readlink is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_readlink) dnl AC_MSG_CHECKING([for symlink]) AC_CACHE_VAL(glibcxx_cv_symlink, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [symlink("", "");], [glibcxx_cv_symlink=yes], [glibcxx_cv_symlink=no]) ]) if test $glibcxx_cv_symlink = yes; then AC_DEFINE(HAVE_SYMLINK, 1, [Define if symlink is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_symlink) dnl AC_MSG_CHECKING([for truncate]) AC_CACHE_VAL(glibcxx_cv_truncate, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [truncate("", 99);], [glibcxx_cv_truncate=yes], [glibcxx_cv_truncate=no]) ]) if test $glibcxx_cv_truncate = yes; then AC_DEFINE(HAVE_TRUNCATE, 1, [Define if truncate is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_truncate) dnl CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE fi @ 1.1.1.12 log @initial import of GCC 10.3.0. main changes include: caveats: - ABI issue between c++14 and c++17 fixed - profile mode is removed from libstdc++ - -fno-common is now the default new features: - new flags -fallocation-dce, -fprofile-partial-training, -fprofile-reproducible, -fprofile-prefix-path, and -fanalyzer - many new compile and link time optimisations - enhanced drive optimisations - openacc 2.6 support - openmp 5.0 features - new warnings: -Wstring-compare and -Wzero-length-bounds - extended warnings: -Warray-bounds, -Wformat-overflow, -Wrestrict, -Wreturn-local-addr, -Wstringop-overflow, -Warith-conversion, -Wmismatched-tags, and -Wredundant-tags - some likely C2X features implemented - more C++20 implemented - many new arm & intel CPUs known hundreds of reported bugs are fixed. full list of changes can be found at: https://gcc.gnu.org/gcc-10/changes.html @ text @d214 1 a214 1 sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'` a318 2 AC_LANG_SAVE AC_LANG_CPLUSPLUS a354 1 AC_LANG_RESTORE a784 2 GCC_WITH_TOOLEXECLIBDIR d815 1 a815 8 case ${with_toolexeclibdir} in no) glibcxx_toolexeclibdir='${toolexecdir}/lib' ;; *) glibcxx_toolexeclibdir=${with_toolexeclibdir} ;; esac a1406 5 # VxWorks has nanosleep as soon as the kernel is configured with # INCLUDE_POSIX_TIMERS, which is normally/most-often the case. vxworks*) ac_has_nanosleep=yes ;; a1437 3 uclinux*) ac_has_nanosleep=yes ac_has_sched_yield=yes d1523 1 a1523 1 linux* | uclinux*) d2157 1 a2157 1 namespace test d2326 29 d2774 1 a2774 1 VTV_CXXFLAGS= d2776 1 a2776 1 VTV_CXXLINKFLAGS= a2895 1 skip_debug_build= d2897 1 a2897 12 if test x$enable_libstdcxx_debug = xyes; then if test -f $toplevel_builddir/../stage_final \ && test -f $toplevel_builddir/../stage_current; then stage_final=`cat $toplevel_builddir/../stage_final` stage_current=`cat $toplevel_builddir/../stage_current` if test x$stage_current != x$stage_final ; then skip_debug_build=" (skipped for bootstrap stage $stage_current)" enable_libstdcxx_debug=no fi fi fi AC_MSG_RESULT($enable_libstdcxx_debug$skip_debug_build) d3946 1 a3946 1 if test x$enable_libstdcxx_threads = xauto || d3999 5 a4003 17 # but only do so if we're using pthread in the gthread library. # On VxWorks for example, pthread_rwlock_t is defined in sys/types.h # but the pthread library is not there by default and the gthread library # does not use it. AC_TRY_COMPILE([#include "gthr.h"], [ #if (!defined(_PTHREADS)) #error #endif ], [ac_gthread_use_pthreads=yes], [ac_gthread_use_pthreads=no]) if test x"$ac_gthread_use_pthreads" = x"yes"; then AC_CHECK_TYPE([pthread_rwlock_t], [AC_DEFINE([_GLIBCXX_USE_PTHREAD_RWLOCK_T], 1, [Define if POSIX read/write locks are available in <gthr.h>.])], [], [#include "gthr.h"]) fi a4050 20 dnl Check whether rdseed is supported in the assembler. AC_DEFUN([GLIBCXX_CHECK_X86_RDSEED], [ AC_MSG_CHECKING([for rdseed support in assembler]) AC_CACHE_VAL(ac_cv_x86_rdseed, [ ac_cv_x86_rdseed=no case "$target" in i?86-*-* | \ x86_64-*-*) AC_TRY_COMPILE(, [asm("rdseed %eax");], [ac_cv_x86_rdseed=yes], [ac_cv_x86_rdseed=no]) esac ]) if test $ac_cv_x86_rdseed = yes; then AC_DEFINE(_GLIBCXX_X86_RDSEED, 1, [ Defined if as can handle rdseed. ]) fi AC_MSG_RESULT($ac_cv_x86_rdseed) ]) dnl a4158 95 dnl Check whether pthread_cond_clockwait is available in <pthread.h> for std::condition_variable to use, dnl and define _GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT. dnl AC_DEFUN([GLIBCXX_CHECK_PTHREAD_COND_CLOCKWAIT], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" ac_save_LIBS="$LIBS" LIBS="$LIBS -lpthread" AC_MSG_CHECKING([for pthread_cond_clockwait]) AC_CACHE_VAL(glibcxx_cv_PTHREAD_COND_CLOCKWAIT, [ GCC_TRY_COMPILE_OR_LINK( [#include <pthread.h>], [pthread_mutex_t mutex; pthread_cond_t cond; struct timespec ts; int n = pthread_cond_clockwait(&cond, &mutex, 0, &ts);], [glibcxx_cv_PTHREAD_COND_CLOCKWAIT=yes], [glibcxx_cv_PTHREAD_COND_CLOCKWAIT=no]) ]) if test $glibcxx_cv_PTHREAD_COND_CLOCKWAIT = yes; then AC_DEFINE(_GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT, 1, [Define if pthread_cond_clockwait is available in <pthread.h>.]) fi AC_MSG_RESULT($glibcxx_cv_PTHREAD_COND_CLOCKWAIT) CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" AC_LANG_RESTORE ]) dnl dnl Check whether pthread_mutex_clocklock is available in <pthread.h> for std::timed_mutex to use, dnl and define _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK. dnl AC_DEFUN([GLIBCXX_CHECK_PTHREAD_MUTEX_CLOCKLOCK], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" ac_save_LIBS="$LIBS" LIBS="$LIBS -lpthread" AC_MSG_CHECKING([for pthread_mutex_clocklock]) AC_CACHE_VAL(glibcxx_cv_PTHREAD_MUTEX_CLOCKLOCK, [ GCC_TRY_COMPILE_OR_LINK( [#include <pthread.h>], [pthread_mutex_t mutex; struct timespec ts; int n = pthread_mutex_clocklock(&mutex, CLOCK_REALTIME, &ts);], [glibcxx_cv_PTHREAD_MUTEX_CLOCKLOCK=yes], [glibcxx_cv_PTHREAD_MUTEX_CLOCKLOCK=no]) ]) if test $glibcxx_cv_PTHREAD_MUTEX_CLOCKLOCK = yes; then AC_DEFINE(_GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK, 1, [Define if pthread_mutex_clocklock is available in <pthread.h>.]) fi AC_MSG_RESULT($glibcxx_cv_PTHREAD_MUTEX_CLOCKLOCK) CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" AC_LANG_RESTORE ]) dnl dnl Check whether pthread_mutex_clocklock is available in <pthread.h> for std::timed_mutex to use, dnl and define _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK. dnl AC_DEFUN([GLIBCXX_CHECK_PTHREAD_RWLOCK_CLOCKLOCK], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" ac_save_LIBS="$LIBS" LIBS="$LIBS -lpthread" AC_MSG_CHECKING([for pthread_rwlock_clockrdlock, pthread_wlock_clockwrlock]) AC_CACHE_VAL(glibcxx_cv_PTHREAD_RWLOCK_CLOCKLOCK, [ GCC_TRY_COMPILE_OR_LINK( [#include <pthread.h>], [pthread_rwlock_t rwl; struct timespec ts;] [int n = pthread_rwlock_clockrdlock(&rwl, CLOCK_REALTIME, &ts);] [int m = pthread_rwlock_clockwrlock(&rwl, CLOCK_REALTIME, &ts);], [glibcxx_cv_PTHREAD_RWLOCK_CLOCKLOCK=yes], [glibcxx_cv_PTHREAD_RWLOCK_CLOCKLOCK=no]) ]) if test $glibcxx_cv_PTHREAD_RWLOCK_CLOCKLOCK = yes; then AC_DEFINE(_GLIBCXX_USE_PTHREAD_RWLOCK_CLOCKLOCK, 1, [Define if pthread_rwlock_clockrdlock and pthread_rwlock_clockwrlock are available in <pthread.h>.]) fi AC_MSG_RESULT($glibcxx_cv_PTHREAD_RWLOCK_CLOCKLOCK) CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" AC_LANG_RESTORE ]) dnl d4358 1 a4358 1 gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*) a4366 3 mingw*) enable_libstdcxx_filesystem_ts=yes ;; d4377 1 a4377 2 dnl Check whether the library calls required by the C++17 Filesystem library dnl and the Filesystem TS are present. d4392 21 a4412 4 AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-exceptions" d4414 24 a4437 15 AC_MSG_CHECKING([for struct dirent.d_type]) AC_CACHE_VAL(glibcxx_cv_dirent_d_type, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <dirent.h>], [ struct dirent d; if (sizeof d.d_type) return 0; ], [glibcxx_cv_dirent_d_type=yes], [glibcxx_cv_dirent_d_type=no]) ]) if test $glibcxx_cv_dirent_d_type = yes; then AC_DEFINE(HAVE_STRUCT_DIRENT_D_TYPE, 1, [Define to 1 if `d_type' is a member of `struct dirent'.]) fi AC_MSG_RESULT($glibcxx_cv_dirent_d_type) d4439 18 a4456 24 AC_MSG_CHECKING([for realpath]) AC_CACHE_VAL(glibcxx_cv_realpath, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <limits.h> #include <stdlib.h> #include <unistd.h> ], [ #if _XOPEN_VERSION < 500 #error #elif _XOPEN_VERSION >= 700 || defined(PATH_MAX) char *tmp = realpath((const char*)NULL, (char*)NULL); #else #error #endif ], [glibcxx_cv_realpath=yes], [glibcxx_cv_realpath=no]) ]) if test $glibcxx_cv_realpath = yes; then AC_DEFINE(_GLIBCXX_USE_REALPATH, 1, [Define if usable realpath is available in <stdlib.h>.]) fi AC_MSG_RESULT($glibcxx_cv_realpath) d4458 17 a4474 18 AC_MSG_CHECKING([for utimensat]) AC_CACHE_VAL(glibcxx_cv_utimensat, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <fcntl.h> #include <sys/stat.h> ], [ struct timespec ts[2] = { { 0, UTIME_OMIT }, { 1, 1 } }; int i = utimensat(AT_FDCWD, "path", ts, 0); ], [glibcxx_cv_utimensat=yes], [glibcxx_cv_utimensat=no]) ]) if test $glibcxx_cv_utimensat = yes; then AC_DEFINE(_GLIBCXX_USE_UTIMENSAT, 1, [Define if utimensat and UTIME_OMIT are available in <sys/stat.h> and AT_FDCWD in <fcntl.h>.]) fi AC_MSG_RESULT($glibcxx_cv_utimensat) d4476 15 a4490 17 AC_MSG_CHECKING([for utime]) AC_CACHE_VAL(glibcxx_cv_utime, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <utime.h> ], [ struct utimbuf t = { 1, 1 }; int i = utime("path", &t); ], [glibcxx_cv_utime=yes], [glibcxx_cv_utime=no]) ]) if test $glibcxx_cv_utime = yes; then AC_DEFINE(_GLIBCXX_USE_UTIME, 1, [Define if utime is available in <utime.h>.]) fi AC_MSG_RESULT($glibcxx_cv_utime) d4492 15 a4506 15 AC_MSG_CHECKING([for lstat]) AC_CACHE_VAL(glibcxx_cv_lstat, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <sys/stat.h> ], [ struct stat st; int i = lstat("path", &st); ], [glibcxx_cv_lstat=yes], [glibcxx_cv_lstat=no]) ]) if test $glibcxx_cv_lstat = yes; then AC_DEFINE(_GLIBCXX_USE_LSTAT, 1, [Define if lstat is available in <sys/stat.h>.]) fi AC_MSG_RESULT($glibcxx_cv_lstat) d4508 12 a4519 15 AC_MSG_CHECKING([for struct stat.st_mtim.tv_nsec]) AC_CACHE_VAL(glibcxx_cv_st_mtim, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <sys/stat.h> ], [ struct stat st; return st.st_mtim.tv_nsec; ], [glibcxx_cv_st_mtim=yes], [glibcxx_cv_st_mtim=no]) ]) if test $glibcxx_cv_st_mtim = yes; then AC_DEFINE(_GLIBCXX_USE_ST_MTIM, 1, [Define if struct stat has timespec members.]) fi AC_MSG_RESULT($glibcxx_cv_st_mtim) d4521 15 a4535 12 AC_MSG_CHECKING([for fchmod]) AC_CACHE_VAL(glibcxx_cv_fchmod, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <sys/stat.h>], [fchmod(1, S_IWUSR);], [glibcxx_cv_fchmod=yes], [glibcxx_cv_fchmod=no]) ]) if test $glibcxx_cv_fchmod = yes; then AC_DEFINE(_GLIBCXX_USE_FCHMOD, 1, [Define if fchmod is available in <sys/stat.h>.]) fi AC_MSG_RESULT($glibcxx_cv_fchmod) d4537 19 a4555 15 AC_MSG_CHECKING([for fchmodat]) AC_CACHE_VAL(glibcxx_cv_fchmodat, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <fcntl.h> #include <sys/stat.h> ], [fchmodat(AT_FDCWD, "", 0, AT_SYMLINK_NOFOLLOW);], [glibcxx_cv_fchmodat=yes], [glibcxx_cv_fchmodat=no]) ]) if test $glibcxx_cv_fchmodat = yes; then AC_DEFINE(_GLIBCXX_USE_FCHMODAT, 1, [Define if fchmodat is available in <sys/stat.h>.]) fi AC_MSG_RESULT($glibcxx_cv_fchmodat) d4557 12 a4568 19 AC_MSG_CHECKING([for sendfile that can copy files]) AC_CACHE_VAL(glibcxx_cv_sendfile, [dnl case "${target_os}" in gnu* | linux* | solaris* | uclinux*) GCC_TRY_COMPILE_OR_LINK( [#include <sys/sendfile.h>], [sendfile(1, 2, (off_t*)0, sizeof 1);], [glibcxx_cv_sendfile=yes], [glibcxx_cv_sendfile=no]) ;; *) glibcxx_cv_sendfile=no ;; esac ]) if test $glibcxx_cv_sendfile = yes; then AC_DEFINE(_GLIBCXX_USE_SENDFILE, 1, [Define if sendfile is available in <sys/sendfile.h>.]) fi AC_MSG_RESULT($glibcxx_cv_sendfile) d4570 12 a4581 12 AC_MSG_CHECKING([for link]) AC_CACHE_VAL(glibcxx_cv_link, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [link("", "");], [glibcxx_cv_link=yes], [glibcxx_cv_link=no]) ]) if test $glibcxx_cv_link = yes; then AC_DEFINE(HAVE_LINK, 1, [Define if link is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_link) d4583 12 a4594 12 AC_MSG_CHECKING([for readlink]) AC_CACHE_VAL(glibcxx_cv_readlink, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [char buf[32]; readlink("", buf, sizeof(buf));], [glibcxx_cv_readlink=yes], [glibcxx_cv_readlink=no]) ]) if test $glibcxx_cv_readlink = yes; then AC_DEFINE(HAVE_READLINK, 1, [Define if readlink is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_readlink) d4596 12 a4607 12 AC_MSG_CHECKING([for symlink]) AC_CACHE_VAL(glibcxx_cv_symlink, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [symlink("", "");], [glibcxx_cv_symlink=yes], [glibcxx_cv_symlink=no]) ]) if test $glibcxx_cv_symlink = yes; then AC_DEFINE(HAVE_SYMLINK, 1, [Define if symlink is available in <unistd.h>.]) fi AC_MSG_RESULT($glibcxx_cv_symlink) d4609 2 a4610 10 AC_MSG_CHECKING([for truncate]) AC_CACHE_VAL(glibcxx_cv_truncate, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [truncate("", 99);], [glibcxx_cv_truncate=yes], [glibcxx_cv_truncate=no]) ]) if test $glibcxx_cv_truncate = yes; then AC_DEFINE(HAVE_TRUNCATE, 1, [Define if truncate is available in <unistd.h>.]) a4611 4 AC_MSG_RESULT($glibcxx_cv_truncate) dnl CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE @ 1.1.1.13 log @initial import of GCC 12.3.0. major changes in GCC 11 included: - The default mode for C++ is now -std=gnu++17 instead of -std=gnu++14. - When building GCC itself, the host compiler must now support C++11, rather than C++98. - Some short options of the gcov tool have been renamed: -i to -j and -j to -H. - ThreadSanitizer improvements. - Introduce Hardware-assisted AddressSanitizer support. - For targets that produce DWARF debugging information GCC now defaults to DWARF version 5. This can produce up to 25% more compact debug information compared to earlier versions. - Many optimisations. - The existing malloc attribute has been extended so that it can be used to identify allocator/deallocator API pairs. A pair of new -Wmismatched-dealloc and -Wmismatched-new-delete warnings are added. - Other new warnings: -Wsizeof-array-div, enabled by -Wall, warns about divisions of two sizeof operators when the first one is applied to an array and the divisor does not equal the size of the array element. -Wstringop-overread, enabled by default, warns about calls to string functions reading past the end of the arrays passed to them as arguments. -Wtsan, enabled by default, warns about unsupported features in ThreadSanitizer (currently std::atomic_thread_fence). - Enchanced warnings: -Wfree-nonheap-object detects many more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function. -Wmaybe-uninitialized diagnoses passing pointers or references to uninitialized memory to functions taking const-qualified arguments. -Wuninitialized detects reads from uninitialized dynamically allocated memory. -Warray-parameter warns about functions with inconsistent array forms. -Wvla-parameter warns about functions with inconsistent VLA forms. - Several new features from the upcoming C2X revision of the ISO C standard are supported with -std=c2x and -std=gnu2x. - Several C++20 features have been implemented. - The C++ front end has experimental support for some of the upcoming C++23 draft. - Several new C++ warnings. - Enhanced Arm, AArch64, x86, and RISC-V CPU support. - The implementation of how program state is tracked within -fanalyzer has been completely rewritten with many enhancements. see https://gcc.gnu.org/gcc-11/changes.html for a full list. major changes in GCC 12 include: - An ABI incompatibility between C and C++ when passing or returning by value certain aggregates containing zero width bit-fields has been discovered on various targets. x86-64, ARM and AArch64 will always ignore them (so there is a C ABI incompatibility between GCC 11 and earlier with GCC 12 or later), PowerPC64 ELFv2 always take them into account (so there is a C++ ABI incompatibility, GCC 4.4 and earlier compatible with GCC 12 or later, incompatible with GCC 4.5 through GCC 11). RISC-V has changed the handling of these already starting with GCC 10. As the ABI requires, MIPS takes them into account handling function return values so there is a C++ ABI incompatibility with GCC 4.5 through 11. - STABS: Support for emitting the STABS debugging format is deprecated and will be removed in the next release. All ports now default to emit DWARF (version 2 or later) debugging info or are obsoleted. - Vectorization is enabled at -O2 which is now equivalent to the original -O2 -ftree-vectorize -fvect-cost-model=very-cheap. - GCC now supports the ShadowCallStack sanitizer. - Support for __builtin_shufflevector compatible with the clang language extension was added. - Support for attribute unavailable was added. - Support for __builtin_dynamic_object_size compatible with the clang language extension was added. - New warnings: -Wbidi-chars warns about potentially misleading UTF-8 bidirectional control characters. -Warray-compare warns about comparisons between two operands of array type. - Some new features from the upcoming C2X revision of the ISO C standard are supported with -std=c2x and -std=gnu2x. - Several C++23 features have been implemented. - Many C++ enhancements across warnings and -f options. see https://gcc.gnu.org/gcc-12/changes.html for a full list. @ text @d52 1 a52 1 m4_define([glibcxx_SUBDIRS],[include libsupc++ src src/c++98 src/c++11 src/c++17 src/c++20 src/filesystem src/libbacktrace doc po testsuite python]) a174 1 dnl glibcxx_ld_is_mold (set to "no" or "yes") a206 1 glibcxx_ld_is_mold=no a211 2 elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then glibcxx_ld_is_mold=yes d223 1 a223 1 if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" ; then d276 7 a282 16 # cygwin and mingw uses PE, which has no ELF relro support, # multi target ld may confuse configure machinery case "$host" in *-*-cygwin*) ;; *-*-mingw*) ;; *) AC_MSG_CHECKING([for ld that supports -Wl,-z,relro]) cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"` if test -n "$cxx_z_relo"; then OPT_LDFLAGS="-Wl,-z,relro" ac_ld_relro=yes fi AC_MSG_RESULT($ac_ld_relro) esac d336 1 a336 2 AC_CACHE_CHECK([for testsuite resource limits support], glibcxx_cv_setrlimit, [ d346 1 d348 8 a355 5 if test $glibcxx_cv_setrlimit = yes; then AC_DEFINE(_GLIBCXX_RES_LIMITS, 1, [Define if using setrlimit to set resource limits during "make check"]) fi d358 1 d419 2 a420 1 AC_CACHE_CHECK([for poll], glibcxx_cv_POLL, [ d432 1 d449 2 a450 1 AC_CACHE_CHECK([for writev], glibcxx_cv_WRITEV, [ d461 1 d469 57 d533 2 a534 1 AC_CACHE_CHECK([for LFS support], glibcxx_cv_LFS, [ d553 1 d560 4 a563 9 dnl Check whether the old Copy-On-Write basic_string should allocate a new dnl empty representation for every default-constructed basic_string. Without dnl this option, COW strings share a single empty rep in static storage, dnl but this only works if the linker can guarantee the static storage has dnl a unique definition in the process. It also doesn't work if basic_string dnl objects are stored in shared memory (see PR libstdc++/16612). dnl When fully dynamic strings are enabled, the static storage is not used dnl and a new empty string with reference-count == 1 is allocated each time. dnl Enabling this changes the libstdc++.so ABI. d567 1 a567 1 dnl otherwise the macro is not defined. d572 1 a572 1 GLIBCXX_ENABLE(fully-dynamic-string,$1,,[do not put empty strings in per-process static memory], [permit yes|no]) d921 2 a922 2 AC_CACHE_CHECK([for ISO C99 support in <math.h> for C++98], glibcxx_cv_c99_math_cxx98, [ d942 1 d956 2 a957 2 AC_CACHE_CHECK([for ISO C99 support in <complex.h> for C++98], glibcxx_cv_c99_complex_cxx98, [ d1011 1 d1020 2 a1021 2 AC_CACHE_CHECK([for ISO C99 support in <stdio.h> for C++98], glibcxx_cv_c99_stdio_cxx98, [ d1036 1 d1044 2 a1045 2 AC_CACHE_CHECK([for ISO C99 support in <stdlib.h> for C++98], glibcxx_cv_c99_stdlib_cxx98, [ d1065 1 d1075 2 a1076 2 AC_CACHE_CHECK([for ISO C99 support in <wchar.h> for C++98], glibcxx_cv_c99_wchar_cxx98, [ d1111 1 d1158 2 a1159 2 AC_CACHE_CHECK([for ISO C99 support in <math.h> for C++11], glibcxx_cv_c99_math_cxx11, [ d1179 1 d1193 2 a1194 2 AC_CACHE_CHECK([for ISO C99 support in <complex.h> for C++11], glibcxx_cv_c99_complex_cxx11, [ d1248 1 d1257 2 a1258 2 AC_CACHE_CHECK([for ISO C99 support in <stdio.h> for C++11], glibcxx_cv_c99_stdio_cxx11, [ d1273 1 d1281 2 a1282 2 AC_CACHE_CHECK([for ISO C99 support in <stdlib.h> for C++11], glibcxx_cv_c99_stdlib_cxx11, [ d1302 1 d1312 2 a1313 2 AC_CACHE_CHECK([for ISO C99 support in <wchar.h> for C++11], glibcxx_cv_c99_wchar_cxx11, [ d1348 1 d1375 2 a1376 1 dnl nanosleep and sched_yield in libc. d1449 1 d1463 2 a1464 2 AC_SEARCH_LIBS(clock_gettime, [rt]) AC_SEARCH_LIBS(nanosleep, [rt]) d1466 2 a1467 2 AC_CHECK_FUNC(clock_gettime) AC_CHECK_FUNC(nanosleep) d1479 1 a1479 1 AC_SEARCH_LIBS(sched_yield, [rt]) d1482 4 d1555 3 a1557 3 ], [ac_has_clock_gettime_syscall=yes], [ac_has_clock_gettime_syscall=no]) AC_MSG_RESULT($ac_has_clock_gettime_syscall) if test x"$ac_has_clock_gettime_syscall" = x"yes"; then d1559 1 a1559 1 [Defined if clock_gettime syscall has monotonic and realtime clock support. ]) a1561 21 AC_MSG_CHECKING([for struct timespec that matches syscall]) AC_TRY_COMPILE( [#include <time.h> #include <sys/syscall.h> ], [#ifdef SYS_clock_gettime64 #if SYS_clock_gettime64 != SYS_clock_gettime // We need to use SYS_clock_gettime and libc appears to // also know about the SYS_clock_gettime64 syscall. // Check that userspace doesn't use time64 version of timespec. static_assert(sizeof(timespec::tv_sec) == sizeof(long), "struct timespec must be compatible with SYS_clock_gettime"); #endif #endif ], [ac_timespec_matches_syscall=yes], [ac_timespec_matches_syscall=no]) AC_MSG_RESULT($ac_timespec_matches_syscall) if test x"$ac_timespec_matches_syscall" = no; then AC_MSG_ERROR([struct timespec is not compatible with SYS_clock_gettime, please report a bug to http://gcc.gnu.org/bugzilla]) fi a1604 1 ac_no_sleep=yes a1610 1 ac_no_sleep=no a1614 4 if test x"$ac_no_sleep" = x"yes"; then AC_DEFINE(_GLIBCXX_NO_SLEEP,1, [Defined if no way to sleep is available.]) fi d1708 2 a1709 2 AC_CACHE_CHECK([for ISO C99 support to TR1 in <ctype.h>], glibcxx_cv_c99_ctype_tr1, [ d1717 1 a1745 1 AC_MSG_RESULT($ac_c99_fenv_tr1) d1747 1 d1755 2 a1756 2 AC_CACHE_CHECK([for ISO C99 support to TR1 in <stdint.h>], glibcxx_cv_c99_stdint_tr1, [ d1847 1 d1855 2 a1856 2 AC_CACHE_CHECK([for ISO C99 support to TR1 in <math.h>], glibcxx_cv_c99_math_tr1, [ d1969 1 d1977 2 a1978 2 AC_CACHE_CHECK([for ISO C99 rounding functions in <math.h>], glibcxx_cv_c99_math_llround, [ d1990 1 a2012 1 AC_MSG_RESULT($ac_c99_inttypes_tr1) d2014 1 a2033 1 AC_MSG_RESULT($ac_c99_inttypes_wchar_t_tr1) d2035 1 a2082 1 AC_MSG_RESULT($ac_c11_uchar_cxx11) d2086 1 a2092 44 CXXFLAGS="$CXXFLAGS -fchar8_t" if test x"$ac_has_uchar_h" = x"yes"; then AC_MSG_CHECKING([for c8rtomb and mbrtoc8 in <uchar.h> with -fchar8_t]) AC_TRY_COMPILE([#include <uchar.h> namespace test { using ::c8rtomb; using ::mbrtoc8; } ], [], [ac_uchar_c8rtomb_mbrtoc8_fchar8_t=yes], [ac_uchar_c8rtomb_mbrtoc8_fchar8_t=no]) AC_MSG_RESULT($ac_uchar_c8rtomb_mbrtoc8_fchar8_t) else ac_uchar_c8rtomb_mbrtoc8_fchar8_t=no fi if test x"$ac_uchar_c8rtomb_mbrtoc8_fchar8_t" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_UCHAR_C8RTOMB_MBRTOC8_FCHAR8_T, 1, [Define if c8rtomb and mbrtoc8 functions in <uchar.h> should be imported into namespace std in <cuchar> for -fchar8_t.]) fi CXXFLAGS="$CXXFLAGS -std=c++20" if test x"$ac_has_uchar_h" = x"yes"; then AC_MSG_CHECKING([for c8rtomb and mbrtoc8 in <uchar.h> with -std=c++20]) AC_TRY_COMPILE([#include <uchar.h> namespace test { using ::c8rtomb; using ::mbrtoc8; } ], [], [ac_uchar_c8rtomb_mbrtoc8_cxx20=yes], [ac_uchar_c8rtomb_mbrtoc8_cxx20=no]) AC_MSG_RESULT($ac_uchar_c8rtomb_mbrtoc8_cxx20) else ac_uchar_c8rtomb_mbrtoc8_cxx20=no fi if test x"$ac_uchar_c8rtomb_mbrtoc8_cxx20" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_UCHAR_C8RTOMB_MBRTOC8_CXX20, 1, [Define if c8rtomb and mbrtoc8 functions in <uchar.h> should be imported into namespace std in <cuchar> for C++20.]) fi d2105 2 a2106 2 AC_CACHE_CHECK([for "/dev/random" and "/dev/urandom" for std::random_device], glibcxx_cv_dev_random, [ d2118 1 a2135 1 if test "$is_hosted" = yes; then a2158 1 fi d2173 2 a2174 1 AC_CACHE_CHECK([for gets declaration], glibcxx_cv_gets, [ d2189 1 d2210 2 a2211 2 AC_CACHE_CHECK([for C++11 <math.h> floating point overloads], glibcxx_cv_math11_fp_overload, [ d2234 1 d2238 2 a2239 2 AC_CACHE_CHECK([for C++11 <math.h> integral type overloads], glibcxx_cv_math11_int_overload, [ d2286 1 d2293 2 a2294 2 AC_CACHE_CHECK([for obsolete isinf function in <math.h>], glibcxx_cv_obsolete_isinf, [ d2310 1 d2316 2 a2317 2 AC_CACHE_CHECK([for obsolete isnan function in <math.h>], glibcxx_cv_obsolete_isnan, [ d2333 1 d2351 1 a2351 4 dnl Where DEFAULT is either 'c' or 'c_global' or 'c_std'. dnl dnl To use the obsolete 'c_std' headers use --enable-cheaders-obsolete as dnl well as --enable-cheaders=c_std, otherwise configure will fail. a2353 2 GLIBCXX_ENABLE(cheaders-obsolete,no,, [allow use of obsolete "C" headers for g++]) d2355 1 a2355 1 [construct "C" headers for g++], [permit c|c_global|c_std]) a2356 7 if test $enable_cheaders = c_std ; then AC_MSG_WARN([the --enable-cheaders=c_std configuration is obsolete, c_global should be used instead]) AC_MSG_WARN([if you are unable to use c_global please report a bug or inform libstdc++@@gcc.gnu.org]) if test $enable_cheaders_obsolete != yes ; then AC_MSG_ERROR(use --enable-cheaders-obsolete to use c_std "C" headers) fi fi a2408 3 vxworks*) enable_clocale_flag=vxworks ;; a2502 2 vxworks) AC_MSG_RESULT(vxworks) a2503 13 CLOCALE_H=config/locale/generic/c_locale.h CLOCALE_CC=config/locale/generic/c_locale.cc CCODECVT_CC=config/locale/generic/codecvt_members.cc CCOLLATE_CC=config/locale/generic/collate_members.cc CCTYPE_CC=config/locale/vxworks/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 ;; d2630 1 a2630 1 [permit new|malloc|yes|no|auto]) d2662 4 d2670 4 d2678 4 d2800 1 a2800 1 dnl Check for which I/O library to use: stdio and POSIX, or pure stdio. d2802 1 a2802 1 dnl Default is stdio_posix. d2807 1 a2807 1 [use target-specific I/O package], [permit stdio|stdio_posix|stdio_pure]) d2809 3 a2811 4 # The only available I/O model is based on stdio, via basic_file_stdio. # The default "stdio" is actually "stdio + POSIX" because it uses fdopen(3) # to get a file descriptor and then uses read(3) and write(3) with it. # The "stdio_pure" model doesn't use fdopen and only uses FILE* for I/O. d2813 1 a2813 1 stdio*) d2817 1 a2817 8 if test "x$enable_cstdio" = "xstdio_pure" ; then AC_MSG_RESULT([stdio (without POSIX read/write)]) AC_DEFINE(_GLIBCXX_USE_STDIO_PURE, 1, [Define to restrict std::__basic_file<> to stdio APIs.]) else AC_MSG_RESULT([stdio (with POSIX read/write)]) fi a2959 1 freestanding_flags= a2965 3 if test "x$with_headers" = xno; then freestanding_flags="-ffreestanding" fi a2972 2 FREESTANDING_FLAGS="$freestanding_flags" AC_SUBST(FREESTANDING_FLAGS) d3061 1 a3061 1 dnl Check for GNU 128-bit floating point type. d3063 1 a3063 1 dnl Note: also checks that the type isn't a standard types. d3066 1 d3069 1 a3069 1 AC_DEFUN([GLIBCXX_ENABLE_FLOAT128], [ d3077 28 a3104 1 cat > conftest.$ac_ext << EOF d3338 2 a3339 2 AC_CACHE_CHECK([for atomic builtins for bool], glibcxx_cv_atomic_bool, [ d3355 1 d3357 2 a3358 2 AC_CACHE_CHECK([for atomic builtins for short], glibcxx_cv_atomic_short, [ d3374 1 d3376 2 a3377 2 AC_CACHE_CHECK([for atomic builtins for int], glibcxx_cv_atomic_int, [ d3393 1 d3395 2 a3396 2 AC_CACHE_CHECK([for atomic builtins for long long], glibcxx_cv_atomic_long_long, [ d3412 1 a3614 2 dnl Why don't we check 8-byte CAS for sparc64, where _Atomic_word is long?! dnl New targets should only check for CAS for the _Atomic_word type. a3615 3 #if defined __riscv # error "Defaulting to mutex-based locks for ABI compatibility" #endif a3807 2 elif test $glibcxx_ld_is_mold = yes ; then : All versions of mold support symbol versioning. d3820 1 a3820 1 libtool_VERSION=6:30:0 a4020 37 AC_CHECK_HEADER(semaphore.h, [ AC_MSG_CHECKING([for POSIX Semaphores and sem_timedwait]) AC_TRY_COMPILE([ #include <unistd.h> #include <semaphore.h> #include <limits.h> ], [ #if !defined _POSIX_TIMEOUTS || _POSIX_TIMEOUTS <= 0 # error "POSIX Timeouts option not supported" #elif !defined _POSIX_SEMAPHORES || _POSIX_SEMAPHORES <= 0 # error "POSIX Semaphores option not supported" #else #if defined SEM_VALUE_MAX constexpr int sem_value_max = SEM_VALUE_MAX; #elif defined _POSIX_SEM_VALUE_MAX constexpr int sem_value_max = _POSIX_SEM_VALUE_MAX; #else # error "SEM_VALUE_MAX not available" #endif sem_t sem; sem_init(&sem, 0, sem_value_max); struct timespec ts = { 0 }; sem_timedwait(&sem, &ts); #endif ], [ac_have_posix_semaphore=yes], [ac_have_posix_semaphore=no])], [ac_have_posix_semaphore=no]) if test $ac_have_posix_semaphore = yes ; then AC_DEFINE(HAVE_POSIX_SEMAPHORE, 1, [Define to 1 if POSIX Semaphores with sem_timedwait are available in <semaphore.h>.]) fi AC_MSG_RESULT([$ac_have_posix_semaphore]) d4048 2 a4049 2 AC_CACHE_CHECK([for rdrand support in assembler], ac_cv_x86_rdrand, [ d4062 1 d4068 2 a4069 2 AC_CACHE_CHECK([for rdseed support in assembler], ac_cv_x86_rdseed, [ d4082 1 d4095 2 a4096 2 AC_CACHE_CHECK([for get_nprocs], glibcxx_cv_GET_NPROCS, [ d4106 1 d4122 2 a4123 2 AC_CACHE_CHECK([for _SC_NPROCESSORS_ONLN], glibcxx_cv_SC_NPROCESSORS_ONLN, [ d4133 1 d4149 2 a4150 2 AC_CACHE_CHECK([for _SC_NPROC_ONLN], glibcxx_cv_SC_NPROC_ONLN, [ d4160 1 d4176 2 a4177 2 AC_CACHE_CHECK([for pthreads_num_processors_np], glibcxx_cv_PTHREADS_NUM_PROCESSORS_NP, [ d4187 1 d4206 2 a4207 2 AC_CACHE_CHECK([for pthread_cond_clockwait], glibcxx_cv_PTHREAD_COND_CLOCKWAIT, [ d4217 1 d4237 2 a4238 2 AC_CACHE_CHECK([for pthread_mutex_clocklock], glibcxx_cv_PTHREAD_MUTEX_CLOCKLOCK, [ d4248 1 d4268 2 a4269 2 AC_CACHE_CHECK([for pthread_rwlock_clockrdlock, pthread_wlock_clockwrlock], glibcxx_cv_PTHREAD_RWLOCK_CLOCKLOCK, [ d4281 1 d4298 2 a4299 2 AC_CACHE_CHECK([for hw.ncpu sysctl], glibcxx_cv_SYSCTL_HW_NCPU, [ d4317 1 d4365 2 a4366 1 AC_CACHE_CHECK([for tmpnam], glibcxx_cv_TMPNAM, [dnl d4376 1 d4387 1 d4393 1 a4393 2 AC_CACHE_CHECK([for suitable sys/sdt.h], glibcxx_cv_sys_sdt_h, [ d4409 1 d4531 2 a4532 1 AC_CACHE_CHECK([for struct dirent.d_type], glibcxx_cv_dirent_d_type, [dnl d4545 1 d4547 2 a4548 1 AC_CACHE_CHECK([for realpath], glibcxx_cv_realpath, [dnl d4570 1 d4572 2 a4573 1 AC_CACHE_CHECK([for utimensat], glibcxx_cv_utimensat, [dnl d4589 1 d4591 2 a4592 1 AC_CACHE_CHECK([for utime], glibcxx_cv_utime, [dnl d4607 1 d4609 2 a4610 1 AC_CACHE_CHECK([for lstat], glibcxx_cv_lstat, [dnl d4623 1 d4625 2 a4626 2 AC_CACHE_CHECK([for struct stat.st_mtim.tv_nsec], glibcxx_cv_st_mtim, [dnl d4639 1 d4641 2 a4642 2 AC_CACHE_CHECK([for fchmod], glibcxx_cv_fchmod, [dnl d4652 1 d4654 2 a4655 2 AC_CACHE_CHECK([for fchmodat], glibcxx_cv_fchmodat, [dnl d4668 1 d4670 2 a4671 2 AC_CACHE_CHECK([for sendfile that can copy files], glibcxx_cv_sendfile, [dnl d4688 1 d4690 2 a4691 2 AC_CACHE_CHECK([for link], glibcxx_cv_link, [dnl d4701 1 d4703 2 a4704 2 AC_CACHE_CHECK([for readlink], glibcxx_cv_readlink, [dnl d4714 1 d4716 2 a4717 2 AC_CACHE_CHECK([for symlink], glibcxx_cv_symlink, [dnl d4727 1 d4729 2 a4730 2 AC_CACHE_CHECK([for truncate], glibcxx_cv_truncate, [dnl d4740 1 a4740 49 dnl AC_CACHE_CHECK([for fdopendir], glibcxx_cv_fdopendir, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <dirent.h>], [::DIR* dir = ::fdopendir(1);], [glibcxx_cv_fdopendir=yes], [glibcxx_cv_fdopendir=no]) ]) if test $glibcxx_cv_fdopendir = yes; then AC_DEFINE(HAVE_FDOPENDIR, 1, [Define if fdopendir is available in <dirent.h>.]) fi dnl AC_CACHE_CHECK([for dirfd], glibcxx_cv_dirfd, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <dirent.h>], [int fd = ::dirfd((::DIR*)0);], [glibcxx_cv_dirfd=yes], [glibcxx_cv_dirfd=no]) ]) if test $glibcxx_cv_dirfd = yes; then AC_DEFINE(HAVE_DIRFD, 1, [Define if dirfd is available in <dirent.h>.]) fi dnl AC_CACHE_CHECK([for openat], glibcxx_cv_openat, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <fcntl.h>], [int fd = ::openat(AT_FDCWD, "", 0);], [glibcxx_cv_openat=yes], [glibcxx_cv_openat=no]) ]) if test $glibcxx_cv_openat = yes; then AC_DEFINE(HAVE_OPENAT, 1, [Define if openat is available in <fcntl.h>.]) fi dnl AC_CACHE_CHECK([for unlinkat], glibcxx_cv_unlinkat, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <fcntl.h> #include <unistd.h>], [::unlinkat(AT_FDCWD, "", AT_REMOVEDIR);], [glibcxx_cv_unlinkat=yes], [glibcxx_cv_unlinkat=no]) ]) if test $glibcxx_cv_unlinkat = yes; then AC_DEFINE(HAVE_UNLINKAT, 1, [Define if unlinkat is available in <fcntl.h>.]) fi a4814 201 dnl dnl Check whether getentropy is present in <unistd.h>. dnl AC_DEFUN([GLIBCXX_CHECK_GETENTROPY], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_CACHE_CHECK([for getentropy], glibcxx_cv_getentropy, [ GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [unsigned i; ::getentropy(&i, sizeof(i));], [glibcxx_cv_getentropy=yes], [glibcxx_cv_getentropy=no]) ]) if test $glibcxx_cv_getentropy = yes; then AC_DEFINE(HAVE_GETENTROPY, 1, [Define if getentropy is available in <unistd.h>.]) fi AC_LANG_RESTORE ]) dnl dnl Check whether arc4random is present in <stdlib.h>. dnl AC_DEFUN([GLIBCXX_CHECK_ARC4RANDOM], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_CACHE_CHECK([for arc4random], glibcxx_cv_arc4random, [ GCC_TRY_COMPILE_OR_LINK( [#include <stdlib.h>], [unsigned i = ::arc4random();], [glibcxx_cv_arc4random=yes], [glibcxx_cv_arc4random=no]) ]) if test $glibcxx_cv_arc4random = yes; then AC_DEFINE(HAVE_ARC4RANDOM, 1, [Define if arc4random is available in <stdlib.h>.]) fi AC_LANG_RESTORE ]) dnl dnl Check to see whether to build libstdc++_libbacktrace.a dnl dnl --enable-libstdcxx-backtrace dnl AC_DEFUN([GLIBCXX_ENABLE_BACKTRACE], [ GLIBCXX_ENABLE(libstdcxx-backtrace,auto,, [turns on libbacktrace support], [permit yes|no|auto]) # Most of this is adapted from libsanitizer/configure.ac BACKTRACE_CPPFLAGS= # libbacktrace only needs atomics for int, which we've already tested if test "$glibcxx_cv_atomic_int" = "yes"; then BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DHAVE_ATOMIC_FUNCTIONS=1" fi # Test for __sync support. AC_CACHE_CHECK([__sync extensions], [glibcxx_cv_sys_sync], [GCC_TRY_COMPILE_OR_LINK( [int i;], [__sync_bool_compare_and_swap (&i, i, i); __sync_lock_test_and_set (&i, 1); __sync_lock_release (&i);], [glibcxx_cv_sys_sync=yes], [glibcxx_cv_sys_sync=no]) ]) if test "$glibcxx_cv_sys_sync" = "yes"; then BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DHAVE_SYNC_FUNCTIONS=1" fi # Check for dl_iterate_phdr. AC_CHECK_HEADERS(link.h) if test "$ac_cv_header_link_h" = "no"; then have_dl_iterate_phdr=no else # When built as a GCC target library, we can't do a link test. AC_EGREP_HEADER([dl_iterate_phdr], [link.h], [have_dl_iterate_phdr=yes], [have_dl_iterate_phdr=no]) fi if test "$have_dl_iterate_phdr" = "yes"; then BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DHAVE_DL_ITERATE_PHDR=1" fi # Check for the fcntl function. if test -n "${with_target_subdir}"; then case "${host}" in *-*-mingw*) have_fcntl=no ;; *) have_fcntl=yes ;; esac else AC_CHECK_FUNC(fcntl, [have_fcntl=yes], [have_fcntl=no]) fi if test "$have_fcntl" = "yes"; then BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DHAVE_FCNTL=1" fi AC_CHECK_DECLS(strnlen) # Check for getexecname function. if test -n "${with_target_subdir}"; then case "${host}" in *-*-solaris2*) have_getexecname=yes ;; *) have_getexecname=no ;; esac else AC_CHECK_FUNC(getexecname, [have_getexecname=yes], [have_getexecname=no]) fi if test "$have_getexecname" = "yes"; then BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DHAVE_GETEXECNAME=1" fi # The library needs to be able to read the executable itself. Compile # a file to determine the executable format. The awk script # filetype.awk prints out the file type. AC_CACHE_CHECK([output filetype], [glibcxx_cv_sys_filetype], [filetype= AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([int i;], [int j;])], [filetype=`${AWK} -f $srcdir/../libbacktrace/filetype.awk conftest.$ac_objext`], [AC_MSG_FAILURE([compiler failed])]) glibcxx_cv_sys_filetype=$filetype]) # Match the file type to decide what files to compile. FORMAT_FILE= case "$glibcxx_cv_sys_filetype" in elf*) FORMAT_FILE="elf.lo" ;; *) AC_MSG_WARN([could not determine output file type]) FORMAT_FILE="unknown.lo" enable_libstdcxx_backtrace=no ;; esac AC_SUBST(FORMAT_FILE) # ELF defines. elfsize= case "$glibcxx_cv_sys_filetype" in elf32) elfsize=32 ;; elf64) elfsize=64 ;; esac BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DBACKTRACE_ELF_SIZE=$elfsize" AC_MSG_CHECKING([whether to build libbacktrace support]) if test "$enable_libstdcxx_backtrace" = "auto"; then enable_libstdcxx_backtrace=no fi AC_MSG_RESULT($enable_libstdcxx_backtrace) if test "$enable_libstdcxx_backtrace" = "yes"; then BACKTRACE_SUPPORTED=1 AC_CHECK_HEADERS(sys/mman.h) case "${host}" in *-*-msdosdjgpp) # DJGPP has sys/man.h, but no mmap have_mmap=no ;; *-*-*) have_mmap="$ac_cv_header_sys_mman_h" ;; esac if test "$have_mmap" = "no"; then VIEW_FILE=read.lo ALLOC_FILE=alloc.lo else VIEW_FILE=mmapio.lo AC_PREPROC_IFELSE([AC_LANG_SOURCE([ #include <sys/mman.h> #if !defined(MAP_ANONYMOUS) && !defined(MAP_ANON) #error no MAP_ANONYMOUS #endif ])], [ALLOC_FILE=mmap.lo], [ALLOC_FILE=alloc.lo]) fi AC_SUBST(VIEW_FILE) AC_SUBST(ALLOC_FILE) BACKTRACE_USES_MALLOC=0 if test "$ALLOC_FILE" = "alloc.lo"; then BACKTRACE_USES_MALLOC=1 fi if test "$ac_has_gthreads" = "yes"; then BACKTRACE_SUPPORTS_THREADS=1 else BACKTRACE_SUPPORTS_THREADS=0 fi AC_SUBST(BACKTRACE_CPPFLAGS) AC_SUBST(BACKTRACE_SUPPORTED) AC_SUBST(BACKTRACE_USES_MALLOC) AC_SUBST(BACKTRACE_SUPPORTS_THREADS) AC_DEFINE(HAVE_STACKTRACE, 1, [Define if the <stacktrace> header is supported.]) else BACKTRACE_SUPPORTED=0 BACKTRACE_USES_MALLOC=0 BACKTRACE_SUPPORTS_THREADS=0 fi GLIBCXX_CONDITIONAL(ENABLE_BACKTRACE, [test "$enable_libstdcxx_backtrace" = yes]) ]) @ 1.1.1.14 log @import GCC 12.4.0. this includes at least 85 GCC PRs fixed, 2 C, 17 C++, 16 libstdc++-v3, at least 13 target-specific (x86, arm64, riscv mostly), and at least 24 optimisation PRs. @ text @d981 1 a981 1 snprintf(fmt, 0, "%i", 1); d1213 1 a1213 1 snprintf(fmt, 0, "%i", 1); d1626 1 a1626 1 # Use -std=c++98 because -std=gnu++98 leaves __STRICT_ANSI__ d1891 3 a1893 3 nan(""); nanf(""); nanl(""); a4572 60 AC_CACHE_CHECK([for chmod], glibcxx_cv_chmod, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <sys/stat.h> ], [ int i = chmod("", S_IRUSR); ], [glibcxx_cv_chmod=yes], [glibcxx_cv_chmod=no]) ]) if test $glibcxx_cv_chmod = yes; then AC_DEFINE(_GLIBCXX_USE_CHMOD, 1, [Define if usable chmod is available in <sys/stat.h>.]) fi dnl AC_CACHE_CHECK([for mkdir], glibcxx_cv_mkdir, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <sys/stat.h> ], [ int i = mkdir("", S_IRUSR); ], [glibcxx_cv_mkdir=yes], [glibcxx_cv_mkdir=no]) ]) if test $glibcxx_cv_mkdir = yes; then AC_DEFINE(_GLIBCXX_USE_MKDIR, 1, [Define if usable mkdir is available in <sys/stat.h>.]) fi dnl AC_CACHE_CHECK([for chdir], glibcxx_cv_chdir, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <unistd.h> ], [ int i = chdir(""); ], [glibcxx_cv_chdir=yes], [glibcxx_cv_chdir=no]) ]) if test $glibcxx_cv_chdir = yes; then AC_DEFINE(_GLIBCXX_USE_CHDIR, 1, [Define if usable chdir is available in <unistd.h>.]) fi dnl AC_CACHE_CHECK([for getcwd], glibcxx_cv_getcwd, [dnl GCC_TRY_COMPILE_OR_LINK( [ #include <unistd.h> ], [ char* s = getcwd((char*)0, 1); ], [glibcxx_cv_getcwd=yes], [glibcxx_cv_getcwd=no]) ]) if test $glibcxx_cv_getcwd = yes; then AC_DEFINE(_GLIBCXX_USE_GETCWD, 1, [Define if usable getcwd is available in <unistd.h>.]) fi dnl d4927 1 a4927 1 BACKTRACE_CPPFLAGS="-D_GNU_SOURCE" a4954 2 ac_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" a4956 1 CPPFLAGS="$ac_save_CPPFLAGS" @ 1.1.1.15 log @initial import of GCC 14.3.0. major changes in GCC 13: - improved sanitizer - zstd debug info compression - LTO improvements - SARIF based diagnostic support - new warnings: -Wxor-used-as-pow, -Wenum-int-mismatch, -Wself-move, -Wdangling-reference - many new -Wanalyzer* specific warnings - enhanced warnings: -Wpessimizing-move, -Wredundant-move - new attributes to mark file descriptors, c++23 "assume" - several C23 features added - several C++23 features added - many new features for Arm, x86, RISC-V major changes in GCC 14: - more strict C99 or newer support - ia64* marked deprecated (but seemingly still in GCC 15.) - several new hardening features - support for "hardbool", which can have user supplied values of true/false - explicit support for stack scrubbing upon function exit - better auto-vectorisation support - added clang-compatible __has_feature and __has_extension - more C23, including -std=c23 - several C++26 features added - better diagnostics in C++ templates - new warnings: -Wnrvo, Welaborated-enum-base - many new features for Arm, x86, RISC-V - possible ABI breaking change for SPARC64 and small structures with arrays of floats. @ text @d52 1 a52 1 m4_define([glibcxx_SUBDIRS],[include libsupc++ src src/c++98 src/c++11 src/c++17 src/c++20 src/c++23 src/c++26 src/filesystem src/libbacktrace src/experimental doc po testsuite python]) a499 16 AC_CACHE_CHECK([for fseeko and ftello], glibcxx_cv_posix_lfs, [ GCC_TRY_COMPILE_OR_LINK( [#include <stdio.h> ], [FILE* fp; fseeko(fp, 0, SEEK_CUR); ftello(fp); ], [glibcxx_cv_posix_lfs=yes], [glibcxx_cv_posix_lfs=no]) ]) if test $glibcxx_cv_posix_lfs = yes; then AC_DEFINE(_GLIBCXX_USE_FSEEKO_FTELLO, 1, [Define if fseeko and ftello are available.]) fi d591 1 a591 1 glibcxx_docbook_url=http://cdn.docbook.org/release/xsl/current/ a680 1 dnl CPPFLAGS a684 2 AC_SUBST(CPPFLAGS) d1103 2 a1104 144 # Check for the existence of <stdint.h> types. AC_CACHE_CHECK([for ISO C99 support in <stdint.h> for C++11], glibcxx_cv_c99_stdint, [ AC_TRY_COMPILE([#define __STDC_LIMIT_MACROS #define __STDC_CONSTANT_MACROS #include <stdint.h>], [typedef int8_t my_int8_t; my_int8_t i8 = INT8_MIN; i8 = INT8_MAX; typedef int16_t my_int16_t; my_int16_t i16 = INT16_MIN; i16 = INT16_MAX; typedef int32_t my_int32_t; my_int32_t i32 = INT32_MIN; i32 = INT32_MAX; typedef int64_t my_int64_t; my_int64_t i64 = INT64_MIN; i64 = INT64_MAX; typedef int_fast8_t my_int_fast8_t; my_int_fast8_t if8 = INT_FAST8_MIN; if8 = INT_FAST8_MAX; typedef int_fast16_t my_int_fast16_t; my_int_fast16_t if16 = INT_FAST16_MIN; if16 = INT_FAST16_MAX; typedef int_fast32_t my_int_fast32_t; my_int_fast32_t if32 = INT_FAST32_MIN; if32 = INT_FAST32_MAX; typedef int_fast64_t my_int_fast64_t; my_int_fast64_t if64 = INT_FAST64_MIN; if64 = INT_FAST64_MAX; typedef int_least8_t my_int_least8_t; my_int_least8_t il8 = INT_LEAST8_MIN; il8 = INT_LEAST8_MAX; typedef int_least16_t my_int_least16_t; my_int_least16_t il16 = INT_LEAST16_MIN; il16 = INT_LEAST16_MAX; typedef int_least32_t my_int_least32_t; my_int_least32_t il32 = INT_LEAST32_MIN; il32 = INT_LEAST32_MAX; typedef int_least64_t my_int_least64_t; my_int_least64_t il64 = INT_LEAST64_MIN; il64 = INT_LEAST64_MAX; typedef intmax_t my_intmax_t; my_intmax_t im = INTMAX_MAX; im = INTMAX_MIN; typedef intptr_t my_intptr_t; my_intptr_t ip = INTPTR_MAX; ip = INTPTR_MIN; typedef uint8_t my_uint8_t; my_uint8_t ui8 = UINT8_MAX; ui8 = UINT8_MAX; typedef uint16_t my_uint16_t; my_uint16_t ui16 = UINT16_MAX; ui16 = UINT16_MAX; typedef uint32_t my_uint32_t; my_uint32_t ui32 = UINT32_MAX; ui32 = UINT32_MAX; typedef uint64_t my_uint64_t; my_uint64_t ui64 = UINT64_MAX; ui64 = UINT64_MAX; typedef uint_fast8_t my_uint_fast8_t; my_uint_fast8_t uif8 = UINT_FAST8_MAX; uif8 = UINT_FAST8_MAX; typedef uint_fast16_t my_uint_fast16_t; my_uint_fast16_t uif16 = UINT_FAST16_MAX; uif16 = UINT_FAST16_MAX; typedef uint_fast32_t my_uint_fast32_t; my_uint_fast32_t uif32 = UINT_FAST32_MAX; uif32 = UINT_FAST32_MAX; typedef uint_fast64_t my_uint_fast64_t; my_uint_fast64_t uif64 = UINT_FAST64_MAX; uif64 = UINT_FAST64_MAX; typedef uint_least8_t my_uint_least8_t; my_uint_least8_t uil8 = UINT_LEAST8_MAX; uil8 = UINT_LEAST8_MAX; typedef uint_least16_t my_uint_least16_t; my_uint_least16_t uil16 = UINT_LEAST16_MAX; uil16 = UINT_LEAST16_MAX; typedef uint_least32_t my_uint_least32_t; my_uint_least32_t uil32 = UINT_LEAST32_MAX; uil32 = UINT_LEAST32_MAX; typedef uint_least64_t my_uint_least64_t; my_uint_least64_t uil64 = UINT_LEAST64_MAX; uil64 = UINT_LEAST64_MAX; typedef uintmax_t my_uintmax_t; my_uintmax_t uim = UINTMAX_MAX; uim = UINTMAX_MAX; typedef uintptr_t my_uintptr_t; my_uintptr_t uip = UINTPTR_MAX; uip = UINTPTR_MAX; ],[glibcxx_cv_c99_stdint=yes], [glibcxx_cv_c99_stdint=no]) ]) if test x"$glibcxx_cv_c99_stdint" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_STDINT, 1, [Define if C99 types in <stdint.h> should be imported in <cstdint> in namespace std for C++11.]) fi # Check for the existence of <inttypes.h> functions (NB: doesn't make # sense if the glibcxx_cv_c99_stdint check fails, per C99, 7.8/1). ac_c99_inttypes=no; if test x"$glibcxx_cv_c99_stdint" = x"yes"; then AC_MSG_CHECKING([for ISO C99 support for C++11 in <inttypes.h>]) AC_TRY_COMPILE([#include <inttypes.h>], [intmax_t i, numer, denom, base; const char* s; char** endptr; intmax_t ret = imaxabs(i); imaxdiv_t dret = imaxdiv(numer, denom); ret = strtoimax(s, endptr, base); uintmax_t uret = strtoumax(s, endptr, base); ],[ac_c99_inttypes=yes], [ac_c99_inttypes=no]) AC_MSG_RESULT($ac_c99_inttypes) fi if test x"$ac_c99_inttypes" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_INTTYPES, 1, [Define if C99 functions in <inttypes.h> should be imported in <cinttypes> in namespace std in C++11.]) fi # Check for the existence of wchar_t <inttypes.h> functions (NB: doesn't # make sense if the glibcxx_cv_c99_stdint check fails, per C99, 7.8/1). ac_c99_inttypes_wchar_t=no; if test x"$glibcxx_cv_c99_stdint" = x"yes"; then AC_MSG_CHECKING([for wchar_t ISO C99 support for C++11 in <inttypes.h>]) AC_TRY_COMPILE([#include <inttypes.h>], [intmax_t base; const wchar_t* s; wchar_t** endptr; intmax_t ret = wcstoimax(s, endptr, base); uintmax_t uret = wcstoumax(s, endptr, base); ],[ac_c99_inttypes_wchar_t=yes], [ac_c99_inttypes_wchar_t=no]) AC_MSG_RESULT($ac_c99_inttypes_wchar_t) fi if test x"$ac_c99_inttypes_wchar_t" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_INTTYPES_WCHAR_T, 1, [Define if wchar_t C99 functions in <inttypes.h> should be imported in <cinttypes> in namespace std in C++11.]) fi # Check for the existence of <math.h> generic macros used if C99 is enabled. AC_CACHE_CHECK([for ISO C99 generic macro support in <math.h> for C++11], d1127 1 a1127 1 [Define if C99 generic macros in <math.h> should be imported a1130 170 # Check for the existence of <math.h> typedefs. AC_CACHE_CHECK([for ISO C99 float types for C++11 in <math.h>], glibcxx_cv_c99_flt_eval_types, [ AC_TRY_COMPILE([#include <math.h>], [// Types typedef double_t my_double_t; typedef float_t my_float_t; ], [glibcxx_cv_c99_flt_eval_types=yes], [glibcxx_cv_c99_flt_eval_types=no]) ]) if test x"$glibcxx_cv_c99_flt_eval_types" = x"yes"; then AC_DEFINE(HAVE_C99_FLT_EVAL_TYPES, 1, [Define if C99 float_t and double_t in <math.h> should be imported in <cmath> in namespace std for C++11.]) fi # Check for the existence of <math.h> functions. AC_CACHE_CHECK([for ISO C99 function support for C++11 in <math.h>], glibcxx_cv_c99_math_funcs, [ AC_TRY_COMPILE([#include <math.h>], [ // Hyperbolic acosh(0.0); acoshf(0.0f); acoshl(0.0l); asinh(0.0); asinhf(0.0f); asinhl(0.0l); atanh(0.0); atanhf(0.0f); atanhl(0.0l); // Exponential and logarithmic exp2(0.0); exp2f(0.0f); exp2l(0.0l); expm1(0.0); expm1f(0.0f); expm1l(0.0l); ilogb(0.0); ilogbf(0.0f); ilogbl(0.0l); log1p(0.0); log1pf(0.0f); log1pl(0.0l); log2(0.0); log2f(0.0f); log2l(0.0l); logb(0.0); logbf(0.0f); logbl(0.0l); scalbln(0.0, 0l); scalblnf(0.0f, 0l); scalblnl(0.0l, 0l); scalbn(0.0, 0); scalbnf(0.0f, 0); scalbnl(0.0l, 0); // Power and absolute-value cbrt(0.0); cbrtf(0.0f); cbrtl(0.0l); hypot(0.0, 0.0); hypotf(0.0f, 0.0f); hypotl(0.0l, 0.0l); // Error and gamma erf(0.0); erff(0.0f); erfl(0.0l); erfc(0.0); erfcf(0.0f); erfcl(0.0l); lgamma(0.0); lgammaf(0.0f); lgammal(0.0l); tgamma(0.0); tgammaf(0.0f); tgammal(0.0l); // Nearest integer nearbyint(0.0); nearbyintf(0.0f); nearbyintl(0.0l); rint(0.0); rintf(0.0f); rintl(0.0l); round(0.0); roundf(0.0f); roundl(0.0l); lrint(0.0); lrintf(0.0f); lrintl(0.0l); lround(0.0); lroundf(0.0f); lroundl(0.0l); #ifndef __APPLE__ /* see below */ llrint(0.0); llrintf(0.0f); llrintl(0.0l); llround(0.0); llroundf(0.0f); llroundl(0.0l); #endif trunc(0.0); truncf(0.0f); truncl(0.0l); // Remainder remainder(0.0, 0.0); remainderf(0.0f, 0.0f); remainderl(0.0l, 0.0l); remquo(0.0, 0.0, 0); remquof(0.0f, 0.0f, 0); remquol(0.0l, 0.0l, 0); // Manipulation copysign(0.0, 0.0); copysignf(0.0f, 0.0f); copysignl(0.0l, 0.0l); nan(""); nanf(""); nanl(""); nextafter(0.0, 0.0); nextafterf(0.0f, 0.0f); nextafterl(0.0l, 0.0l); nexttoward(0.0, 0.0); nexttowardf(0.0f, 0.0f); nexttowardl(0.0l, 0.0l); // Max, min, positive difference fdim(0.0, 0.0); fdimf(0.0f, 0.0f); fdiml(0.0l, 0.0l); fmax(0.0, 0.0); fmaxf(0.0f, 0.0f); fmaxl(0.0l, 0.0l); fmin(0.0, 0.0); fminf(0.0f, 0.0f); fminl(0.0l, 0.0l); // FP Multiply-add fma(0.0, 0.0, 0.0); fmaf(0.0f, 0.0f, 0.0f); fmal(0.0l, 0.0l, 0.0l); ], [glibcxx_cv_c99_math_funcs=yes], [glibcxx_cv_c99_math_funcs=no]) ]) if test x"$glibcxx_cv_c99_math_funcs" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_MATH_FUNCS, 1, [Define if C99 functions in <math.h> should be imported in <cmath> in namespace std for C++11.]) case "${target_os}" in darwin*) AC_CACHE_CHECK([for ISO C99 rounding functions in <math.h>], glibcxx_cv_c99_math_llround, [ AC_TRY_COMPILE([#include <math.h>], [llrint(0.0); llrintf(0.0f); llrintl(0.0l); llround(0.0); llroundf(0.0f); llroundl(0.0l); ], [glibcxx_cv_c99_math_llround=yes], [glibcxx_cv_c99_math_llround=no]) ]) ;; esac if test x"$glibcxx_cv_c99_math_llround" = x"no"; then AC_DEFINE(_GLIBCXX_NO_C99_ROUNDING_FUNCS, 1, [Define if C99 llrint and llround functions are missing from <math.h>.]) fi fi a1199 37 # Check for the existence of <complex.h> complex inverse trigonometric # math functions used by <complex> for C++11 and later. ac_c99_complex_arc=no; if test x"$ac_has_complex_h" = x"yes"; then AC_MSG_CHECKING([for ISO C99 support for inverse trig functions in <complex.h>]) AC_TRY_COMPILE([#include <complex.h>], [typedef __complex__ float float_type; float_type tmpf; cacosf(tmpf); casinf(tmpf); catanf(tmpf); cacoshf(tmpf); casinhf(tmpf); catanhf(tmpf); typedef __complex__ double double_type; double_type tmpd; cacos(tmpd); casin(tmpd); catan(tmpd); cacosh(tmpd); casinh(tmpd); catanh(tmpd); typedef __complex__ long double ld_type; ld_type tmpld; cacosl(tmpld); casinl(tmpld); catanl(tmpld); cacoshl(tmpld); casinhl(tmpld); catanhl(tmpld); ],[ac_c99_complex_arc=yes], [ac_c99_complex_arc=no]) fi AC_MSG_RESULT($ac_c99_complex_arc) if test x"$ac_c99_complex_arc" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_COMPLEX_ARC, 1, [Define if C99 inverse trig functions in <complex.h> should be used in <complex>. Using compiler builtins for these functions requires corresponding C99 library functions to be present.]) fi a1296 46 # Check for the existence of <ctype.h> functions. AC_CACHE_CHECK([for ISO C99 support for C++11 in <ctype.h>], glibcxx_cv_c99_ctype, [ AC_TRY_COMPILE([#include <ctype.h>], [int ch; int ret; ret = isblank(ch); ],[glibcxx_cv_c99_ctype=yes], [glibcxx_cv_c99_ctype=no]) ]) if test x"$glibcxx_cv_c99_ctype" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_CTYPE, 1, [Define if C99 functions in <ctype.h> should be imported in <cctype> in namespace std for C++11.]) fi # Check for the existence of <fenv.h> functions. AC_CHECK_HEADERS(fenv.h, ac_has_fenv_h=yes, ac_has_fenv_h=no) ac_c99_fenv=no; if test x"$ac_has_fenv_h" = x"yes"; then AC_MSG_CHECKING([for ISO C99 support for C++11 in <fenv.h>]) AC_TRY_COMPILE([#include <fenv.h>], [int except, mode; fexcept_t* pflag; fenv_t* penv; int ret; ret = feclearexcept(except); ret = fegetexceptflag(pflag, except); ret = feraiseexcept(except); ret = fesetexceptflag(pflag, except); ret = fetestexcept(except); ret = fegetround(); ret = fesetround(mode); ret = fegetenv(penv); ret = feholdexcept(penv); ret = fesetenv(penv); ret = feupdateenv(penv); ],[ac_c99_fenv=yes], [ac_c99_fenv=no]) AC_MSG_RESULT($ac_c99_fenv) fi if test x"$ac_c99_fenv" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99_FENV, 1, [Define if C99 functions in <fenv.h> should be imported in <cfenv> in namespace std for C++11.]) fi a1354 4 mingw*) ac_has_win32_sleep=yes ac_has_sched_yield=yes ;; a1539 3 elif test x"$ac_has_win32_sleep" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_WIN32_SLEEP, 1, [Defined if Sleep exists.]) d1560 14 a1573 1 if test x"$ac_has_nanosleep$ac_has_win32_sleep$ac_has_sleep" = x"nonono"; then d1933 22 a2964 4 dnl Also define --disable-libstdcxx-hosted as an alias for dnl --disable-hosted-libstdcxx but fail if both are given dnl and their values do not agree. dnl d2974 1 a2974 2 [only build freestanding C++ runtime support]), [enable_hosted_libstdcxx_was_given=yes], d2980 1 a2980 4 case "${with_newlib}-${with_headers}" in no-no) enable_hosted_libstdcxx=no ;; *) enable_hosted_libstdcxx=yes ;; esac a2982 15 # Because most configure args are --enable-libstdcxx-foo add an alias # of that form for --enable-hosted-libstdcxx. AC_ARG_ENABLE([libstdcxx-hosted], AC_HELP_STRING([--disable-libstdcxx-hosted], [alias for --disable-hosted-libstdcxx]), [if test "$enable_hosted_libstdcxx_was_given" = yes; then if test "$enable_hosted_libstdcxx" != "$enableval"; then AC_MSG_ERROR([--enable-libstdcxx-hosted=$enableval conflicts with --enable-hosted-libstdcxx=$enable_hosted_libstdcxx]) fi else enable_hosted_libstdcxx=${enableval} fi ],) d2995 1 a2995 1 hosted_define=__STDC_HOSTED__ d3824 1 a3824 1 libtool_VERSION=6:33:0 a3966 9 ;; win32) CXXFLAGS="$CXXFLAGS -D_WIN32_THREADS" # The support of condition variables is disabled by default in # the Win32 gthreads library, so enable it on explicit request. if test x$enable_libstdcxx_threads = xyes; then CXXFLAGS="$CXXFLAGS -D_WIN32_WINNT=0x0600" fi ;; a3976 3 // In case of Win32 threads there is no support. #elif defined(_WIN32_THREADS) #error a4022 5 # See above for the rationale. if test $target_thread_file = win32; then CPPFLAGS="$CPPFLAGS -D_WIN32_WINNT=0x0600" fi d4070 1 a4070 1 # This file can be copied and used freely without restrictions. It can d4280 1 a4280 1 AC_DEFINE(_GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK, (_GLIBCXX_TSAN==0), [Define if pthread_mutex_clocklock is available in <pthread.h>.]) a4546 1 dnl _GLIBCXX_USE_COPY_FILE_RANGE a4548 1 dnl HAVE_LSEEK d4745 19 a4775 12 AC_CACHE_CHECK([for lseek], glibcxx_cv_lseek, [dnl GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [lseek(1, 0, SEEK_SET);], [glibcxx_cv_lseek=yes], [glibcxx_cv_lseek=no]) ]) if test $glibcxx_cv_lseek = yes; then AC_DEFINE(HAVE_LSEEK, 1, [Define if lseek is available in <unistd.h>.]) fi dnl a4811 38 AC_CACHE_CHECK([for copy_file_range that can copy files], glibcxx_cv_copy_file_range, [dnl case "${target_os}" in linux*) GCC_TRY_COMPILE_OR_LINK( [#include <unistd.h>], [copy_file_range(1, (loff_t*)nullptr, 2, (loff_t*)nullptr, 1, 0);], [glibcxx_cv_copy_file_range=yes], [glibcxx_cv_copy_file_range=no]) ;; *) glibcxx_cv_copy_file_range=no ;; esac ]) if test $glibcxx_cv_copy_file_range = yes; then AC_DEFINE(_GLIBCXX_USE_COPY_FILE_RANGE, 1, [Define if copy_file_range is available in <unistd.h>.]) fi dnl AC_CACHE_CHECK([for sendfile that can copy files], glibcxx_cv_sendfile, [dnl case "${target_os}" in gnu* | linux* | solaris* | uclinux*) GCC_TRY_COMPILE_OR_LINK( [#include <sys/sendfile.h>], [sendfile(1, 2, (off_t*)0, sizeof 1);], [glibcxx_cv_sendfile=yes], [glibcxx_cv_sendfile=no]) ;; *) glibcxx_cv_sendfile=no ;; esac ]) if test $glibcxx_cv_sendfile = yes && test $glibcxx_cv_lseek = yes; then AC_DEFINE(_GLIBCXX_USE_SENDFILE, 1, [Define if sendfile is available in <sys/sendfile.h>.]) fi dnl a5023 1 AC_CHECK_HEADERS(windows.h) a5068 1 pecoff*) FORMAT_FILE="pecoff.lo" ;; d5086 1 a5086 4 case "$host" in avr-*-*) enable_libstdcxx_backtrace=no ;; *) enable_libstdcxx_backtrace="$is_hosted" ;; esac a5137 253 dnl dnl Allow the emergency EH pool to be configured. dnl dnl --enable-libstdcxx-static-eh-pool will cause a fixed-size static buffer dnl to be used for allocating exceptions after malloc fails. The default is dnl to allocate a buffer using malloc dnl dnl --with-libstdcxx-eh-pool-obj-count=N will set the default size for the dnl buffer. For a static buffer that size is fixed permanently. For a dynamic dnl buffer it's the default, but it can be overridden from the environment. dnl dnl To set the default to approximately the same values as GCC 12, dnl use --with-libstdcxx-eh-pool-obj-count=94 for 32-bit targets, dnl and --with-libstdcxx-eh-pool-obj-count=252 for 64-bit targets. dnl dnl Defines: dnl _GLIBCXX_EH_POOL_STATIC if a fixed-size static buffer should be used dnl instead of allocating a buffer on startup. dnl _GLIBCXX_EH_POOL_NOBJS to override the default EMERGENCY_OBJ_COUNT value. dnl AC_DEFUN([GLIBCXX_EMERGENCY_EH_ALLOC], [ eh_pool_static= eh_pool_nobjs= AC_ARG_ENABLE([libstdcxx-static-eh-pool], AC_HELP_STRING([--enable-libstdcxx-static-eh-pool], [use a fixed-size static buffer for allocating exceptions if malloc fails]), [if test "${enableval}" = yes; then eh_pool_static="-D_GLIBCXX_EH_POOL_STATIC" AC_MSG_NOTICE([EH pool using static buffer]) fi],) AC_ARG_WITH([libstdcxx-eh-pool-obj-count], AC_HELP_STRING([--with-libstdcxx-eh-pool-obj-count], [the number of exceptions that can be allocated from the pool if malloc fails]), [if test "${withval}" -ge 0 2>/dev/null; then eh_pool_obj_count="-D_GLIBCXX_EH_POOL_NOBJS=${withval}" AC_MSG_NOTICE([EH pool object count: ${withval}]) else AC_MSG_ERROR([EH pool obj count must be a non-negative integer: $withval]) fi],) EH_POOL_FLAGS="$eh_pool_static $eh_pool_obj_count" AC_SUBST(EH_POOL_FLAGS) ]) dnl dnl Allow the location of tzdata files to be configured. dnl dnl --with-libstdcxx-zoneinfo=ARG where ARG can be: dnl DIR - use DIR/tzdata.zi and DIR/leapseconds files. dnl static - use static copy of tzdata.zi embedded in the library. dnl DIR,static - use DIR, but use embedded static copy as fallback. dnl yes - equivalent to DIR,static with a system-specific value for DIR. dnl no - disable most tzdb functionality. dnl dnl Defines: dnl _GLIBCXX_ZONEINFO_DIR if std::chrono::tzdb should use the specified dnl directory for the tzdata.zi and leapseconds files. dnl _GLIBCXX_STATIC_TZDATA if std::chrono::tzdb should use an embedded dnl static copy of the tzdata.zi file. dnl AC_DEFUN([GLIBCXX_ZONEINFO_DIR], [ AC_ARG_WITH([libstdcxx-zoneinfo], AC_HELP_STRING([--with-libstdcxx-zoneinfo], [the location to use for tzdata]), [],[with_libstdcxx_zoneinfo=yes]) if test "x${with_libstdcxx_zoneinfo}" = xyes; then # Pick a default when no specific path is set. case "$target_os" in gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu) # Not all distros ship tzdata.zi in this dir. zoneinfo_dir="/usr/share/zoneinfo" ;; aix*) # Binary tzfile files are in /usr/share/lib/zoneinfo # but tzdata.zi is not present there. zoneinfo_dir=none ;; darwin2*) # Binary tzfile files are in /usr/share/lib/zoneinfo.default # but tzdata.zi is not present there. zoneinfo_dir=none ;; *) # Binary tzfile files are commonly found in /usr/share/zoneinfo # but tzdata.zi is not present there. zoneinfo_dir=none ;; esac AC_COMPUTE_INT(glibcxx_cv_at_least_32bit, [__INTPTR_WIDTH__ >= 32]) if test "$glibcxx_cv_at_least_32bit" -ne 0; then # Also embed a copy of the tzdata.zi file as a static string. embed_zoneinfo=yes else # The embedded data is too large for 16-bit targets. embed_zoneinfo=no fi elif test "x${with_libstdcxx_zoneinfo}" = xno; then # Disable tzdb support completely. zoneinfo_dir=none embed_zoneinfo=no else case "${with_libstdcxx_zoneinfo}" in static) # Do not attempt to read from disk, always use embedded data. zoneinfo_dir=none embed_zoneinfo=yes ;; static,* | *,static) # Try to read from disk, use embedded data as fallback. zoneinfo_dir="${with_libstdcxx_zoneinfo#static,}" zoneinfo_dir="${with_libstdcxx_zoneinfo%,static}" embed_zoneinfo=yes ;; *) zoneinfo_dir="${with_libstdcxx_zoneinfo}" embed_zoneinfo=no ;; esac fi AC_MSG_NOTICE([zoneinfo data directory: ${zoneinfo_dir}]) if test "x${zoneinfo_dir}" != xnone; then AC_DEFINE_UNQUOTED(_GLIBCXX_ZONEINFO_DIR, "${zoneinfo_dir}", [Define if a directory should be searched for tzdata files.]) if $GLIBCXX_IS_NATIVE && ! test -f "$zoneinfo_dir/tzdata.zi"; then AC_MSG_WARN("$zoneinfo_dir does not contain tzdata.zi file") fi fi GLIBCXX_CONDITIONAL(USE_STATIC_TZDATA, test "${embed_zoneinfo}" = yes) if test "x${embed_zoneinfo}" = xyes; then AC_MSG_NOTICE([static tzdata.zi file will be compiled into the library]) AC_DEFINE_UNQUOTED(_GLIBCXX_STATIC_TZDATA, 1, [Define if static tzdata should be compiled into the library.]) fi ]) dnl dnl Check whether lock tables can be aligned to avoid false sharing. dnl dnl Defines: dnl _GLIBCXX_CAN_ALIGNAS_DESTRUCTIVE_SIZE if objects with static storage dnl duration can be aligned to std::hardware_destructive_interference_size. dnl AC_DEFUN([GLIBCXX_CHECK_ALIGNAS_CACHELINE], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_MSG_CHECKING([whether static objects can be aligned to the cacheline size]) AC_TRY_COMPILE(, [struct alignas(__GCC_DESTRUCTIVE_SIZE) Aligned { }; alignas(Aligned) static char buf[sizeof(Aligned) * 16]; ], [ac_alignas_cacheline=yes], [ac_alignas_cacheline=no]) if test "$ac_alignas_cacheline" = yes; then AC_DEFINE_UNQUOTED(_GLIBCXX_CAN_ALIGNAS_DESTRUCTIVE_SIZE, 1, [Define if global objects can be aligned to std::hardware_destructive_interference_size.]) fi AC_MSG_RESULT($ac_alignas_cacheline) AC_LANG_RESTORE ]) dnl dnl Check whether iostream initialization should be done in the library, dnl using the init_priority attribute. dnl dnl Defines: dnl _GLIBCXX_USE_INIT_PRIORITY_ATTRIBUTE if GCC supports the init_priority dnl attribute for the target. dnl AC_DEFUN([GLIBCXX_CHECK_INIT_PRIORITY], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_MSG_CHECKING([whether init_priority attribute is supported]) AC_TRY_COMPILE(, [ #if ! __has_attribute(init_priority) #error init_priority not supported #endif ], [ac_init_priority=yes], [ac_init_priority=no]) if test "$ac_init_priority" = yes; then AC_DEFINE_UNQUOTED(_GLIBCXX_USE_INIT_PRIORITY_ATTRIBUTE, 1, [Define if init_priority should be used for iostream initialization.]) fi AC_MSG_RESULT($ac_init_priority) AC_LANG_RESTORE ]) dnl dnl Check whether the Windows CRT function _get_osfhandle is available. dnl dnl Defines: dnl _GLIBCXX_USE__GET_OSFHANDLE if _get_osfhandle is in <io.h> for Windows. dnl AC_DEFUN([GLIBCXX_CHECK_FILEBUF_NATIVE_HANDLES], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_MSG_CHECKING([whether _get_osfhandle is defined in <io.h>]) AC_TRY_COMPILE([ #if defined(_WIN32) && !defined(__CYGWIN__) # include <stdint.h> # include <stdio.h> # include <io.h> #endif ],[ FILE* file = 0; int fd = fileno(file); intptr_t crt_handle = _get_osfhandle(fd); void* win32_handle = reinterpret_cast<void*>(crt_handle); ], [ac_get_osfhandle=yes], [ac_get_osfhandle=no]) if test "$ac_get_osfhandle" = yes; then AC_DEFINE_UNQUOTED(_GLIBCXX_USE__GET_OSFHANDLE, 1, [Define if _get_osfhandle should be used for filebuf::native_handle().]) fi AC_MSG_RESULT($ac_get_osfhandle) AC_LANG_RESTORE ]) dnl dnl Check whether the dependencies for std::text_encoding are available. dnl dnl Defines: dnl _GLIBCXX_USE_NL_LANGINFO_L if nl_langinfo_l is in <langinfo.h>. dnl AC_DEFUN([GLIBCXX_CHECK_TEXT_ENCODING], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_MSG_CHECKING([whether nl_langinfo_l is defined in <langinfo.h>]) AC_TRY_COMPILE([ #include <locale.h> #if __has_include(<xlocale.h>) # include <xlocale.h> #endif #include <langinfo.h> ],[ locale_t loc = newlocale(LC_ALL_MASK, "", (locale_t)0); const char* enc = nl_langinfo_l(CODESET, loc); freelocale(loc); ], [ac_nl_langinfo_l=yes], [ac_nl_langinfo_l=no]) AC_MSG_RESULT($ac_nl_langinfo_l) if test "$ac_nl_langinfo_l" = yes; then AC_DEFINE_UNQUOTED(_GLIBCXX_USE_NL_LANGINFO_L, 1, [Define if nl_langinfo_l should be used for std::text_encoding.]) fi AC_LANG_RESTORE ]) @