--- include/spdlog/details/os.h	2018-05-22 01:38:13.000000000 +0800
+++ include/spdlog/details/os.h	2024-08-25 09:14:56.000000000 +0800
@@ -49,6 +49,10 @@
 
 #endif // unix
 
+#if defined __APPLE__
+#include <AvailabilityMacros.h>
+#endif
+
 #ifndef __has_feature      // Clang - feature checking macros.
 #define __has_feature(x) 0 // Compatibility with non-clang compilers.
 #endif
@@ -337,7 +341,17 @@
     return static_cast<size_t>(tid);
 #elif __APPLE__
     uint64_t tid;
-    pthread_threadid_np(nullptr, &tid);
+#if (MAC_OS_X_VERSION_MAX_ALLOWED < 1060) || defined(__POWERPC__)
+        tid = pthread_mach_thread_np(pthread_self());
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < 1060
+        if (&pthread_threadid_np) {
+            pthread_threadid_np(nullptr, &tid);
+        } else {
+            tid = pthread_mach_thread_np(pthread_self());
+        }
+#else
+        pthread_threadid_np(nullptr, &tid);
+#endif
     return static_cast<size_t>(tid);
 #else // Default to standard C++11 (other Unix)
     return static_cast<size_t>(std::hash<std::thread::id>()(std::this_thread::get_id()));
