[committed] libstdc++: Make C++17 ignore --disable-libstdcxx-filesystem-ts [PR 94681]
Jonathan Wakely
jwakely@redhat.com
Mon Aug 10 12:24:03 GMT 2020
The configure switch should only affect the optional Filesystem TS, not
the std::filesystem features of C++17.
libstdc++-v3/ChangeLog:
PR libstdc++/94681
* acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Do not depend on
$enable_libstdcxx_filesystem_ts.
* configure: Regenerate.
Tested powerpc64le-linux. Committed to trunk.
The patch looks fairly large, but the only non-whitespace changes are:
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -4536,7 +4536,8 @@ AC_DEFUN([GLIBCXX_ENABLE_FILESYSTEM_TS], [
])
dnl
-dnl Check whether the library calls required by the Filesystem TS are present.
+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
@@ -4551,7 +4552,6 @@ dnl HAVE_SYMLINK
dnl
AC_DEFUN([GLIBCXX_CHECK_FILESYSTEM_DEPS], [dnl
dnl
- if test $enable_libstdcxx_filesystem_ts = yes; then
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
ac_save_CXXFLAGS="$CXXFLAGS"
@@ -4770,7 +4770,6 @@ dnl
dnl
CXXFLAGS="$ac_save_CXXFLAGS"
AC_LANG_RESTORE
- fi
])
dnl
The rest is just re-indenting the body of that macro.
-------------- next part --------------
commit 90f7636bf8df50940e0f749af60a6b374a8f09b4
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Mon Aug 10 13:21:59 2020
libstdc++: Make C++17 ignore --disable-libstdcxx-filesystem-ts [PR 94681]
The configure switch should only affect the optional Filesystem TS, not
the std::filesystem features of C++17.
libstdc++-v3/ChangeLog:
PR libstdc++/94681
* acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Do not depend on
$enable_libstdcxx_filesystem_ts.
* configure: Regenerate.
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index e3926e1c9c2..26cf2197549 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -4536,7 +4536,8 @@ AC_DEFUN([GLIBCXX_ENABLE_FILESYSTEM_TS], [
])
dnl
-dnl Check whether the library calls required by the Filesystem TS are present.
+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
@@ -4551,226 +4552,224 @@ dnl HAVE_SYMLINK
dnl
AC_DEFUN([GLIBCXX_CHECK_FILESYSTEM_DEPS], [dnl
dnl
- if test $enable_libstdcxx_filesystem_ts = yes; then
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- ac_save_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS="$CXXFLAGS -fno-exceptions"
+ 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 <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)
-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 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)
-dnl
- 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)
-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* | 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)
-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
+ 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 <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)
+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 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)
+dnl
+ 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)
+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* | 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)
+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
])
dnl
More information about the Libstdc++
mailing list