diff --git a/README.md b/README.md index 0cbc9ac..4c6667b 100644 --- a/README.md +++ b/README.md @@ -115,7 +115,10 @@ To retrieve logpp external dependencies, make sure to install and configure [con 3. Install dependencies ```sh cd build + # If you're on Linux/Windows conan install .. + # If you're on MacOS + conan install .. --build=fmt ``` 4. Build the library ```sh diff --git a/include/logpp/utils/date.h b/include/logpp/utils/date.h index c33d18c..be87845 100644 --- a/include/logpp/utils/date.h +++ b/include/logpp/utils/date.h @@ -53,7 +53,7 @@ namespace logpp inline void gmtime(std::time_t* time, std::tm* out) { -#if defined(LOGPP_PLATFORM_LINUX) +#if defined(LOGPP_PLATFORM_LINUX) || defined(LOGPP_PLATFORM_DARWIN) ::gmtime_r(time, out); #elif defined(LOGPP_PLATFORM_WINDOWS) gmtime_s(out, time); @@ -64,7 +64,7 @@ namespace logpp inline void localtime(std::time_t* time, std::tm* out) { -#if defined(LOGPP_PLATFORM_LINUX) +#if defined(LOGPP_PLATFORM_LINUX) || defined(LOGPP_PLATFORM_DARWIN) ::localtime_r(time, out); #elif defined(LOGPP_PLATFORM_WINDOWS) localtime_s(out, time); @@ -75,7 +75,7 @@ namespace logpp inline time_t timegm(std::tm* tm) { -#if defined(LOGPP_PLATFORM_LINUX) +#if defined(LOGPP_PLATFORM_LINUX) || defined(LOGPP_PLATFORM_DARWIN) return ::timegm(tm); #elif defined(LOGPP_PLATFORM_WINDOWS) return _mkgmtime(tm); diff --git a/include/logpp/utils/thread.h b/include/logpp/utils/thread.h index e2d7864..533f1ae 100644 --- a/include/logpp/utils/thread.h +++ b/include/logpp/utils/thread.h @@ -2,10 +2,11 @@ #include "logpp/core/config.h" -#if defined(LOGPP_PLATFORM_LINUX) +#if defined(LOGPP_PLATFORM_LINUX) || defined(LOGPP_PLATFORM_DARWIN) #include #include #include +#include #elif defined(LOGPP_PLATFORM_WINDOWS) #include #include @@ -21,6 +22,20 @@ namespace logpp::thread_utils return syscall(SYS_gettid); } + inline long toInteger(id id) + { + return static_cast(id); + } +#elif defined(LOGPP_PLATFORM_DARWIN) + using id = uint64_t; + + inline id getCurrentId() + { + uint64_t tid; + pthread_threadid_np(nullptr, &tid); + return tid; + } + inline long toInteger(id id) { return static_cast(id); diff --git a/src/SpinWait.cpp b/src/SpinWait.cpp index 6e41d75..56ee757 100644 --- a/src/SpinWait.cpp +++ b/src/SpinWait.cpp @@ -9,6 +9,9 @@ #if defined(LOGPP_PLATFORM_WINDOWS) #define NOMINMAX #include +#elif defined(LOGPP_PLATFORM_LINUX) || defined(LOGPP_PLATFORM_DARWIN) +#include +#include #endif namespace logpp @@ -105,7 +108,7 @@ namespace logpp { #if defined(LOGPP_PLATFORM_WINDOWS) return static_cast(GetTickCount()); -#elif defined(LOGPP_PLATFORM_LINUX) +#elif defined(LOGPP_PLATFORM_LINUX) || defined(LOGPP_PLATFORM_DARWIN) #if CLOCK_MONOTONIC struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts);