diff options
author | Jan Holesovsky <kendy@collabora.com> | 2019-11-08 13:42:59 +0100 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2019-11-08 13:56:09 +0100 |
commit | 07d5f8cf2aa2495bf803e04afff42a5da911f5b5 (patch) | |
tree | d07e3b1d68f03326cbd69431d6a4a18e7e450d98 /configure.ac | |
parent | 9d535ca76d652734c138fea3eae40190211e5f71 (diff) |
killpoco: Remove POCO usage from FileUtil.cpp when C++17 is available.
This introduces basic C++17 support, because the functionality needed
here is easy to implement using std::filesystem.
Adds also the necessary checks to ./configure. The code still uses POCO
when C++17 is not available in the compiler.
Change-Id: I03353834d10201bf0a13ea72715560b9b9b16265
Reviewed-on: https://gerrit.libreoffice.org/82294
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
Tested-by: Jan Holesovsky <kendy@collabora.com>
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac index 159204888..401738c67 100644 --- a/configure.ac +++ b/configure.ac @@ -506,8 +506,8 @@ fi # check for C++11 support HAVE_CXX11= -AC_MSG_CHECKING([whether $CXX supports C++14 or C++11]) -for flag in -std=gnu++14 -std=gnu++1y -std=c++14 -std=c++1y -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x ; do +AC_MSG_CHECKING([whether $CXX supports C++17, C++14 or C++11]) +for flag in -std=c++17 -std=gnu++14 -std=gnu++1y -std=c++14 -std=c++1y -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x ; do save_CXXFLAGS=$CXXFLAGS CXXFLAGS="$CXXFLAGS $flag -Werror" AC_LANG_PUSH([C++]) @@ -532,6 +532,49 @@ else AC_MSG_ERROR(no) fi +STD_FILESYSTEM= +if test "$CXXFLAGS_CXX11" = "-std=c++17" ; then + save_CXXFLAGS=$CXXFLAGS + CXXFLAGS="$CXXFLAGS -Werror" + save_LIBS=$LIBS + LIBS="$save_LIBS -lstdc++fs" + AC_LANG_PUSH([C++]) + AC_LINK_IFELSE([AC_LANG_SOURCE([[ + #include <experimental/filesystem> + int main() + { + if (!std::experimental::filesystem::temp_directory_path().empty()) + return 0; + return 1; + } + ]])],[STD_FILESYSTEM=experimental]) + AC_LINK_IFELSE([AC_LANG_SOURCE([[ + #include <filesystem> + int main() + { + if (!std::filesystem::temp_directory_path().empty()) + return 0; + return 1; + } + ]])],[STD_FILESYSTEM=TRUE]) + AC_LANG_POP([C++]) + CXXFLAGS=$save_CXXFLAGS + LIBS=$save_LIBS +fi + +if test -n "$STD_FILESYSTEM" ; then + LIBS="$LIBS -lstdc++fs" + AC_DEFINE([HAVE_STD_FILESYSTEM],1,[Whether the used C++ has support for std::filesystem.]) + if test "$STD_FILESYSTEM" = "experimental" ; then + AC_DEFINE([HAVE_STD_FILESYSTEM_EXPERIMENTAL],1,[Whether the std::filesystem is in the experimental header.]) + else + AC_DEFINE([HAVE_STD_FILESYSTEM_EXPERIMENTAL],0,[Whether the std::filesystem is in the experimental header.]) + fi +else + AC_DEFINE([HAVE_STD_FILESYSTEM],0,[Whether the used C++ has support for std::filesystem.]) + AC_DEFINE([HAVE_STD_FILESYSTEM_EXPERIMENTAL],0,[Whether the std::filesystem is in the experimental header.]) +fi + AS_IF([test -n "$LOKIT_PATH"], [CPPFLAGS="$CPPFLAGS -I${LOKIT_PATH}"]) lokit_msg="$LOKIT_PATH" |