From 7314856c61938db90d66f4cead8e4df73ea5d3af Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Mon, 18 Jun 2018 17:01:24 +0100 Subject: [PATCH] Fix bootstrap failure for bare metal due to autoconf link tests The AC_CHECK_FUNCS tests cause the build to fail for bare metal cross compilers, where link tests are not allowed. Replace them with GCC_TRY_COMPILE_OR_LINK tests instead. Skip all the Filesystem dependency checks if not building the filesystem library. * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Only check when enable_libstdcxx_filesystem_ts = yes. Check for link, readlink and symlink. * config.h.in: Regenerate. * configure: Regenerate. * configure.ac: Remove AC_CHECK_FUNCS for link, readlink and symlink. From-SVN: r261704 --- libstdc++-v3/ChangeLog | 7 + libstdc++-v3/acinclude.m4 | 303 ++++++++++++++++++------------- libstdc++-v3/config.h.in | 6 +- libstdc++-v3/configure | 371 +++++++++++++++++++++++++++----------- libstdc++-v3/configure.ac | 1 - 5 files changed, 451 insertions(+), 237 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 166522ccedf..6b2357a7a4e 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,12 @@ 2018-06-18 Jonathan Wakely + * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Only check when + enable_libstdcxx_filesystem_ts = yes. Check for link, readlink and + symlink. + * config.h.in: Regenerate. + * configure: Regenerate. + * configure.ac: Remove AC_CHECK_FUNCS for link, readlink and symlink. + LWG 3035. std::allocator's constructors should be constexpr * include/bits/allocator.h (allocator): Add constexpr to constructors for C++2a. Replace dynamic exception specifications with NOTHROW diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 4f37b6a6498..6c855b6c7e5 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -4309,143 +4309,194 @@ AC_DEFUN([GLIBCXX_ENABLE_FILESYSTEM_TS], [ ]) 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 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 dnl AC_DEFUN([GLIBCXX_CHECK_FILESYSTEM_DEPS], [dnl dnl - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -fno-exceptions" + if test $enable_libstdcxx_filesystem_ts = yes; then + 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 ], - [ - 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) + AC_MSG_CHECKING([for struct dirent.d_type]) + AC_CACHE_VAL(glibcxx_cv_dirent_d_type, [dnl + GCC_TRY_COMPILE_OR_LINK( + [#include ], + [ + 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 - #include - #include - ], - [ - #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 .]) - fi - AC_MSG_RESULT($glibcxx_cv_realpath) + AC_MSG_CHECKING([for realpath]) + AC_CACHE_VAL(glibcxx_cv_realpath, [dnl + GCC_TRY_COMPILE_OR_LINK( + [ + #include + #include + #include + ], + [ + #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 .]) + 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 - #include - ], - [ - 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 and AT_FDCWD in .]) - fi - AC_MSG_RESULT($glibcxx_cv_utimensat) + AC_MSG_CHECKING([for utimensat]) + AC_CACHE_VAL(glibcxx_cv_utimensat, [dnl + GCC_TRY_COMPILE_OR_LINK( + [ + #include + #include + ], + [ + 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 and AT_FDCWD in .]) + 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 ], - [ - 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) + AC_MSG_CHECKING([for struct stat.st_mtim.tv_nsec]) + AC_CACHE_VAL(glibcxx_cv_st_mtim, [dnl + GCC_TRY_COMPILE_OR_LINK( + [ #include ], + [ + 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 ], - [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 .]) - fi - AC_MSG_RESULT($glibcxx_cv_fchmod) + AC_MSG_CHECKING([for fchmod]) + AC_CACHE_VAL(glibcxx_cv_fchmod, [dnl + GCC_TRY_COMPILE_OR_LINK( + [#include ], + [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 .]) + 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 - #include - ], - [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 .]) - fi - AC_MSG_RESULT($glibcxx_cv_fchmodat) + AC_MSG_CHECKING([for fchmodat]) + AC_CACHE_VAL(glibcxx_cv_fchmodat, [dnl + GCC_TRY_COMPILE_OR_LINK( + [ + #include + #include + ], + [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 .]) + 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 ], + [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 .]) + fi + AC_MSG_RESULT($glibcxx_cv_sendfile) 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 ], - [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 .]) - fi - AC_MSG_RESULT($glibcxx_cv_sendfile) + AC_MSG_CHECKING([for link]) + AC_CACHE_VAL(glibcxx_cv_link, [dnl + GCC_TRY_COMPILE_OR_LINK( + [#include ], + [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 .]) + fi + AC_MSG_RESULT($glibcxx_cv_link) dnl - CXXFLAGS="$ac_save_CXXFLAGS" - AC_LANG_RESTORE + AC_MSG_CHECKING([for readlink]) + AC_CACHE_VAL(glibcxx_cv_readlink, [dnl + GCC_TRY_COMPILE_OR_LINK( + [#include ], + [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 .]) + 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 ], + [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 .]) + fi + AC_MSG_RESULT($glibcxx_cv_symlink) +dnl + CXXFLAGS="$ac_save_CXXFLAGS" + AC_LANG_RESTORE + fi ]) dnl diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in index 3fb685ce9aa..919a1f068c0 100644 --- a/libstdc++-v3/config.h.in +++ b/libstdc++-v3/config.h.in @@ -264,7 +264,7 @@ /* Only used in build directory testsuite_hooks.h. */ #undef HAVE_LIMIT_VMEM -/* Define to 1 if you have the `link' function. */ +/* Define if link is available in . */ #undef HAVE_LINK /* Define if futex syscall is available. */ @@ -342,7 +342,7 @@ /* Define to 1 if you have the `quick_exit' function. */ #undef HAVE_QUICK_EXIT -/* Define to 1 if you have the `readlink' function. */ +/* Define if readlink is available in . */ #undef HAVE_READLINK /* Define to 1 if you have the `setenv' function. */ @@ -414,7 +414,7 @@ /* Define if strxfrm_l is available in . */ #undef HAVE_STRXFRM_L -/* Define to 1 if you have the `symlink' function. */ +/* Define if symlink is available in . */ #undef HAVE_SYMLINK /* Define to 1 if the target runtime linker supports binding the same symbol diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index b9883d413f6..7bad76486a0 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -80047,19 +80047,6 @@ _ACEOF fi -done - -for ac_func in link readlink symlink -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -eval as_val=\$$as_ac_var - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi done @@ -80105,21 +80092,22 @@ $as_echo_n "checking whether to build Filesystem TS support... " >&6; } $as_echo "$enable_libstdcxx_filesystem_ts" >&6; } + if test $enable_libstdcxx_filesystem_ts = yes; then - ac_ext=cpp + ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -fno-exceptions" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_type" >&5 + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -fno-exceptions" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_type" >&5 $as_echo_n "checking for struct dirent.d_type... " >&6; } - if test "${glibcxx_cv_dirent_d_type+set}" = set; then : + if test "${glibcxx_cv_dirent_d_type+set}" = set; then : $as_echo_n "(cached) " >&6 else - if test x$gcc_no_link = xyes; then + if test x$gcc_no_link = xyes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -80127,8 +80115,8 @@ int main () { - struct dirent d; - if (sizeof d.d_type) return 0; + struct dirent d; + if (sizeof d.d_type) return 0; ; return 0; @@ -80151,8 +80139,8 @@ int main () { - struct dirent d; - if (sizeof d.d_type) return 0; + struct dirent d; + if (sizeof d.d_type) return 0; ; return 0; @@ -80169,37 +80157,37 @@ fi fi - if test $glibcxx_cv_dirent_d_type = yes; then + if test $glibcxx_cv_dirent_d_type = yes; then $as_echo "#define HAVE_STRUCT_DIRENT_D_TYPE 1" >>confdefs.h - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_dirent_d_type" >&5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_dirent_d_type" >&5 $as_echo "$glibcxx_cv_dirent_d_type" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for realpath" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for realpath" >&5 $as_echo_n "checking for realpath... " >&6; } - if test "${glibcxx_cv_realpath+set}" = set; then : + if test "${glibcxx_cv_realpath+set}" = set; then : $as_echo_n "(cached) " >&6 else - if test x$gcc_no_link = xyes; then + if test x$gcc_no_link = xyes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include - #include - #include + #include + #include + #include int main () { - #if _XOPEN_VERSION < 500 - #error - #elif _XOPEN_VERSION >= 700 || defined(PATH_MAX) - char *tmp = realpath((const char*)NULL, (char*)NULL); - #else - #error - #endif + #if _XOPEN_VERSION < 500 + #error + #elif _XOPEN_VERSION >= 700 || defined(PATH_MAX) + char *tmp = realpath((const char*)NULL, (char*)NULL); + #else + #error + #endif ; return 0; @@ -80218,21 +80206,21 @@ fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include - #include - #include + #include + #include + #include int main () { - #if _XOPEN_VERSION < 500 - #error - #elif _XOPEN_VERSION >= 700 || defined(PATH_MAX) - char *tmp = realpath((const char*)NULL, (char*)NULL); - #else - #error - #endif + #if _XOPEN_VERSION < 500 + #error + #elif _XOPEN_VERSION >= 700 || defined(PATH_MAX) + char *tmp = realpath((const char*)NULL, (char*)NULL); + #else + #error + #endif ; return 0; @@ -80249,31 +80237,31 @@ fi fi - if test $glibcxx_cv_realpath = yes; then + if test $glibcxx_cv_realpath = yes; then $as_echo "#define _GLIBCXX_USE_REALPATH 1" >>confdefs.h - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_realpath" >&5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_realpath" >&5 $as_echo "$glibcxx_cv_realpath" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for utimensat" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for utimensat" >&5 $as_echo_n "checking for utimensat... " >&6; } - if test "${glibcxx_cv_utimensat+set}" = set; then : + if test "${glibcxx_cv_utimensat+set}" = set; then : $as_echo_n "(cached) " >&6 else - if test x$gcc_no_link = xyes; then + if test x$gcc_no_link = xyes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include - #include + #include + #include int main () { - struct timespec ts[2] = { { 0, UTIME_OMIT }, { 1, 1 } }; - int i = utimensat(AT_FDCWD, "path", ts, 0); + struct timespec ts[2] = { { 0, UTIME_OMIT }, { 1, 1 } }; + int i = utimensat(AT_FDCWD, "path", ts, 0); ; return 0; @@ -80292,15 +80280,15 @@ fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include - #include + #include + #include int main () { - struct timespec ts[2] = { { 0, UTIME_OMIT }, { 1, 1 } }; - int i = utimensat(AT_FDCWD, "path", ts, 0); + struct timespec ts[2] = { { 0, UTIME_OMIT }, { 1, 1 } }; + int i = utimensat(AT_FDCWD, "path", ts, 0); ; return 0; @@ -80317,19 +80305,19 @@ fi fi - if test $glibcxx_cv_utimensat = yes; then + if test $glibcxx_cv_utimensat = yes; then $as_echo "#define _GLIBCXX_USE_UTIMENSAT 1" >>confdefs.h - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_utimensat" >&5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_utimensat" >&5 $as_echo "$glibcxx_cv_utimensat" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct stat.st_mtim.tv_nsec" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct stat.st_mtim.tv_nsec" >&5 $as_echo_n "checking for struct stat.st_mtim.tv_nsec... " >&6; } - if test "${glibcxx_cv_st_mtim+set}" = set; then : + if test "${glibcxx_cv_st_mtim+set}" = set; then : $as_echo_n "(cached) " >&6 else - if test x$gcc_no_link = xyes; then + if test x$gcc_no_link = xyes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -80337,8 +80325,8 @@ int main () { - struct stat st; - return st.st_mtim.tv_nsec; + struct stat st; + return st.st_mtim.tv_nsec; ; return 0; @@ -80361,8 +80349,8 @@ int main () { - struct stat st; - return st.st_mtim.tv_nsec; + struct stat st; + return st.st_mtim.tv_nsec; ; return 0; @@ -80379,19 +80367,19 @@ fi fi - if test $glibcxx_cv_st_mtim = yes; then + if test $glibcxx_cv_st_mtim = yes; then $as_echo "#define _GLIBCXX_USE_ST_MTIM 1" >>confdefs.h - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_st_mtim" >&5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_st_mtim" >&5 $as_echo "$glibcxx_cv_st_mtim" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fchmod" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fchmod" >&5 $as_echo_n "checking for fchmod... " >&6; } - if test "${glibcxx_cv_fchmod+set}" = set; then : + if test "${glibcxx_cv_fchmod+set}" = set; then : $as_echo_n "(cached) " >&6 else - if test x$gcc_no_link = xyes; then + if test x$gcc_no_link = xyes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -80435,24 +80423,24 @@ fi fi - if test $glibcxx_cv_fchmod = yes; then + if test $glibcxx_cv_fchmod = yes; then $as_echo "#define _GLIBCXX_USE_FCHMOD 1" >>confdefs.h - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_fchmod" >&5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_fchmod" >&5 $as_echo "$glibcxx_cv_fchmod" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fchmodat" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fchmodat" >&5 $as_echo_n "checking for fchmodat... " >&6; } - if test "${glibcxx_cv_fchmodat+set}" = set; then : + if test "${glibcxx_cv_fchmodat+set}" = set; then : $as_echo_n "(cached) " >&6 else - if test x$gcc_no_link = xyes; then + if test x$gcc_no_link = xyes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include - #include + #include + #include int main () @@ -80475,8 +80463,8 @@ fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include - #include + #include + #include int main () @@ -80497,21 +80485,21 @@ fi fi - if test $glibcxx_cv_fchmodat = yes; then + if test $glibcxx_cv_fchmodat = yes; then $as_echo "#define _GLIBCXX_USE_FCHMODAT 1" >>confdefs.h - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_fchmodat" >&5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_fchmodat" >&5 $as_echo "$glibcxx_cv_fchmodat" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sendfile that can copy files" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sendfile that can copy files" >&5 $as_echo_n "checking for sendfile that can copy files... " >&6; } - if test "${glibcxx_cv_sendfile+set}" = set; then : + if test "${glibcxx_cv_sendfile+set}" = set; then : $as_echo_n "(cached) " >&6 else - case "${target_os}" in - gnu* | linux* | solaris*) - if test x$gcc_no_link = xyes; then + case "${target_os}" in + gnu* | linux* | solaris*) + if test x$gcc_no_link = xyes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -80552,28 +80540,197 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi - ;; - *) - glibcxx_cv_sendfile=no - ;; - esac + ;; + *) + glibcxx_cv_sendfile=no + ;; + esac fi - if test $glibcxx_cv_sendfile = yes; then + if test $glibcxx_cv_sendfile = yes; then $as_echo "#define _GLIBCXX_USE_SENDFILE 1" >>confdefs.h - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_sendfile" >&5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_sendfile" >&5 $as_echo "$glibcxx_cv_sendfile" >&6; } - CXXFLAGS="$ac_save_CXXFLAGS" - ac_ext=c + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for link" >&5 +$as_echo_n "checking for link... " >&6; } + if test "${glibcxx_cv_link+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test x$gcc_no_link = xyes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +link("", ""); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + glibcxx_cv_link=yes +else + glibcxx_cv_link=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + if test x$gcc_no_link = xyes; then + as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +fi +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +link("", ""); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + glibcxx_cv_link=yes +else + glibcxx_cv_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + +fi + + if test $glibcxx_cv_link = yes; then + +$as_echo "#define HAVE_LINK 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_link" >&5 +$as_echo "$glibcxx_cv_link" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readlink" >&5 +$as_echo_n "checking for readlink... " >&6; } + if test "${glibcxx_cv_readlink+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test x$gcc_no_link = xyes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char buf[32]; readlink("", buf, sizeof(buf)); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + glibcxx_cv_readlink=yes +else + glibcxx_cv_readlink=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + if test x$gcc_no_link = xyes; then + as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +fi +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char buf[32]; readlink("", buf, sizeof(buf)); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + glibcxx_cv_readlink=yes +else + glibcxx_cv_readlink=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + +fi + + if test $glibcxx_cv_readlink = yes; then + +$as_echo "#define HAVE_READLINK 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_readlink" >&5 +$as_echo "$glibcxx_cv_readlink" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for symlink" >&5 +$as_echo_n "checking for symlink... " >&6; } + if test "${glibcxx_cv_symlink+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test x$gcc_no_link = xyes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +symlink("", ""); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + glibcxx_cv_symlink=yes +else + glibcxx_cv_symlink=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + if test x$gcc_no_link = xyes; then + as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +fi +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +symlink("", ""); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + glibcxx_cv_symlink=yes +else + glibcxx_cv_symlink=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + +fi + + if test $glibcxx_cv_symlink = yes; then + +$as_echo "#define HAVE_SYMLINK 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_symlink" >&5 +$as_echo "$glibcxx_cv_symlink" >&6; } + CXXFLAGS="$ac_save_CXXFLAGS" + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu + fi # For Transactional Memory TS diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac index dde1c4da944..7e1fd84606a 100644 --- a/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac @@ -420,7 +420,6 @@ GLIBCXX_CHECK_GTHREADS # For Filesystem TS. AC_CHECK_HEADERS([fcntl.h dirent.h sys/statvfs.h utime.h]) -AC_CHECK_FUNCS(link readlink symlink) GLIBCXX_ENABLE_FILESYSTEM_TS GLIBCXX_CHECK_FILESYSTEM_DEPS -- 2.30.2