diff --git a/source/adios2/CMakeLists.txt b/source/adios2/CMakeLists.txt index f48e0924efd82bad7899ba61c83a4a8f4bbea8b1..651b7bc5985d7417ced44eabca06e5a72f0b0c7a 100644 --- a/source/adios2/CMakeLists.txt +++ b/source/adios2/CMakeLists.txt @@ -48,6 +48,7 @@ target_include_directories(adios2 $<INSTALL_INTERFACE:include> PRIVATE ${ADIOS2_SOURCE_DIR}/source ) +target_link_libraries(adios2 PRIVATE adios2sys) find_package(Threads REQUIRED) target_link_libraries(adios2 PUBLIC ${CMAKE_THREAD_LIBS_INIT}) diff --git a/source/adios2/helper/adiosSystem.cpp b/source/adios2/helper/adiosSystem.cpp index 24cda3d57021ade4815a96bf3ed38edb26d5cf88..8e0b967c5e0d07b8620c29dce7beadaf8693a2f6 100644 --- a/source/adios2/helper/adiosSystem.cpp +++ b/source/adios2/helper/adiosSystem.cpp @@ -9,12 +9,11 @@ */ #include "adiosSystem.h" -#include <sys/stat.h> //stat, mkdir -#include <sys/types.h> //CreateDirectory -#include <unistd.h> //CreateDirectory +#include <ctime> //std::ctime #include <chrono> //system_clock, now -#include <ctime> //std::ctime + +#include <adios2sys/SystemTools.hxx> #include "adios2/ADIOSMPI.h" #include "adios2/ADIOSTypes.h" @@ -25,44 +24,7 @@ namespace adios2 bool CreateDirectory(const std::string &fullPath) noexcept { - auto lf_Mkdir = [](const std::string directory, struct stat &st) -> bool { - if (stat(directory.c_str(), &st) == -1) // doesn't exist - { - mkdir(directory.c_str(), 0777); - if (stat(directory.c_str(), &st) == -1) // doesn't exist - { - return false; - } - } - return true; - }; - - bool directoryExists = false; - auto directoryPosition = fullPath.find("/"); - - if (fullPath[0] == '/' || fullPath[0] == '.') - { // find the second '/' - directoryPosition = fullPath.find("/", directoryPosition + 1); - } - - struct stat st = {0}; - if (directoryPosition == fullPath.npos) // no subdirectories - { - directoryExists = lf_Mkdir(fullPath.c_str(), st); - } - else - { - std::string directory(fullPath.substr(0, directoryPosition)); - lf_Mkdir(directory.c_str(), st); - - while (directoryPosition != fullPath.npos) - { - directoryPosition = fullPath.find("/", directoryPosition + 1); - directory = fullPath.substr(0, directoryPosition); - directoryExists = lf_Mkdir(directory.c_str(), st); - } - } - return directoryExists; + return adios2sys::SystemTools::MakeDirectory(fullPath); } bool IsLittleEndian() noexcept diff --git a/thirdparty/KWSys/CMakeLists.txt b/thirdparty/KWSys/CMakeLists.txt index 6faf39f54be3613cb02169029931592dc407094b..62afcc1147e786f747b8918cb51e1692dedb8b99 100644 --- a/thirdparty/KWSys/CMakeLists.txt +++ b/thirdparty/KWSys/CMakeLists.txt @@ -1,5 +1,7 @@ set(KWSYS_NAMESPACE adios2sys) set(KWSYS_USE_DynamicLoader ON) +set(KWSYS_USE_RegularExpression ON) +set(KWSYS_USE_SystemTools ON) set(KWSYS_BUILD_SHARED OFF) if(NOT ADIOS2_BUILD_SHARED_LIBS) set(KWSYS_INSTALL_EXPORT_NAME adios2)