You've already forked macports-ports
mirror of
https://github.com/macports/macports-ports.git
synced 2026-07-12 18:20:25 -07:00
f5ed23cd1b
* ruby-devel: new port, supports PPC * ruby31: fix PPC build, needed for ruby-devel * ruby-devel: add kimuraw as co-maintainer [skip ci] Co-authored-by: kimura wataru <kimuraw@macports.org>
45 lines
1.5 KiB
Diff
45 lines
1.5 KiB
Diff
--- thread_pthread.c.orig 2022-04-12 19:11:15.000000000 +0800
|
|
+++ thread_pthread.c 2022-10-24 05:26:46.000000000 +0800
|
|
@@ -40,6 +40,10 @@
|
|
#include <time.h>
|
|
#include <signal.h>
|
|
|
|
+#if defined __APPLE__
|
|
+# include <AvailabilityMacros.h>
|
|
+#endif
|
|
+
|
|
#if defined(HAVE_SYS_EVENTFD_H) && defined(HAVE_EVENTFD)
|
|
# define USE_EVENTFD (1)
|
|
# include <sys/eventfd.h>
|
|
@@ -1732,9 +1736,29 @@
|
|
return INT2FIX(tid);
|
|
#elif defined(__APPLE__)
|
|
uint64_t tid;
|
|
- int e = pthread_threadid_np(target_th->thread_id, &tid);
|
|
+# if (!defined(MAC_OS_X_VERSION_10_6) || \
|
|
+ (MAC_OS_X_VERSION_MAX_ALLOWED < 1060) || \
|
|
+ defined(__POWERPC__) /* never defined for PowerPC platforms */)
|
|
+ const bool no_pthread_threadid_np = true;
|
|
+# define NO_PTHREAD_MACH_THREAD_NP 1
|
|
+# elif MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
|
|
+ const bool no_pthread_threadid_np = false;
|
|
+# else
|
|
+# if !(defined(__has_attribute) && __has_attribute(availability))
|
|
+ /* __API_AVAILABLE macro does nothing on gcc */
|
|
+ __attribute__((weak)) int pthread_threadid_np(pthread_t, uint64_t*);
|
|
+# endif
|
|
+ /* Check weakly linked symbol */
|
|
+ const bool no_pthread_threadid_np = !&pthread_threadid_np;
|
|
+# endif
|
|
+ if (no_pthread_threadid_np) {
|
|
+ return ULL2NUM(pthread_mach_thread_np(pthread_self()));
|
|
+ }
|
|
+# ifndef NO_PTHREAD_MACH_THREAD_NP
|
|
+ int e = pthread_threadid_np(target_th->thread_id, &tid);
|
|
if (e != 0) rb_syserr_fail(e, "pthread_threadid_np");
|
|
return ULL2NUM((unsigned long long)tid);
|
|
+# endif
|
|
#endif
|
|
}
|
|
# define USE_NATIVE_THREAD_NATIVE_THREAD_ID 1
|