diff --git a/CMakeLists.txt b/CMakeLists.txt index f3ff04c9e922cf9fbc6035f3353a09ba85205a25..74cac38d21e3e4bfcf399ee02657218f19b4dc5c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -475,8 +475,12 @@ endif() ############################################################################################################################ try_compile( WALBERLA_USE_STD_FILESYSTEM "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestStdFilesystem.cpp" - COMPILE_DEFINITIONS -DWALBERLA_USE_STD_FILESYSTEM ) + COMPILE_DEFINITIONS -DWALBERLA_USE_STD_FILESYSTEM COPY_FILE "${CMAKE_CURRENT_BINARY_DIR}/TestStdFilesystem" ) if( WALBERLA_USE_STD_FILESYSTEM ) + # detect https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90050 by checking whether it segfaults + execute_process( COMMAND "${CMAKE_CURRENT_BINARY_DIR}/TestStdFilesystem" RESULT_VARIABLE WALBERLA_STD_FILESYSTEM_WORKS ) +endif() +if( WALBERLA_USE_STD_FILESYSTEM AND WALBERLA_STD_FILESYSTEM_WORKS EQUAL 0 ) message( STATUS "Found std::filesystem") else() try_compile( WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestStdFilesystem.cpp" diff --git a/cmake/TestStdFilesystem.cpp b/cmake/TestStdFilesystem.cpp index 079e2358213185a67aee9602ea01052819b328d7..1caf5057db6c1253635b8810e2a7792bd56d249f 100644 --- a/cmake/TestStdFilesystem.cpp +++ b/cmake/TestStdFilesystem.cpp @@ -5,10 +5,6 @@ #include <experimental/filesystem> #endif -#if defined(WALBERLA_USE_STD_FILESYSTEM) && defined(__GLIBCXX__) && (!defined(_GLIBCXX_RELEASE) || _GLIBCXX_RELEASE < 9) -#error "std:filesystem broken due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90050" -#endif - int main() { #if defined(WALBERLA_USE_STD_FILESYSTEM) std::filesystem::path p("/tmp/test.txt");