<pre style='margin:0'>
Ryan Schmidt (ryandesign) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/d600ab208416957d0ca5e38259bfdcc6cfb38ef3">https://github.com/macports/macports-ports/commit/d600ab208416957d0ca5e38259bfdcc6cfb38ef3</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit d600ab208416957d0ca5e38259bfdcc6cfb38ef3
</span>Author: Ryan Schmidt <ryandesign@macports.org>
AuthorDate: Sun Dec 11 23:20:12 2022 -0600

<span style='display:block; white-space:pre;color:#404040;'>    php82: Fix build with clang >= 700 < 1001
</span>---
 lang/php/Portfile                      |  4 ++
 lang/php/files/patch-php82-atomic.diff | 76 ++++++++++++++++++++++++++++++++++
 2 files changed, 80 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/php/Portfile b/lang/php/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 7d3ed7c3aed..9ff20d38796 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/php/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/php/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -251,6 +251,10 @@ if {[is_sapi_subport]} {
</span>     patch.pre_args      -p1
     patchfiles-append   patch-${php}-scripts-php-config.in.diff
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[vercmp ${branch} >= 8.2]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        patch-${php}-atomic.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span>     if {[vercmp ${branch} 7.0] >= 0 && [vercmp ${branch} 7.2] <= 0} {
         patchfiles-append \
                         patch-${php}-implicit.diff
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/php/files/patch-php82-atomic.diff b/lang/php/files/patch-php82-atomic.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..817caa82754
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/php/files/patch-php82-atomic.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,76 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See https://github.com/php/php-src/issues/8881
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Based on https://github.com/php/php-src/commit/f33d6cfb98790c7e38d8cdd5b343f42180064698.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/Zend/zend_atomic.c.orig      2022-11-22 12:07:40.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/Zend/zend_atomic.c   2022-12-06 14:46:36.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -35,13 +35,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   zend_atomic_bool_store_ex(obj, desired);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(ZEND_WIN32) || defined(HAVE_SYNC_ATOMICS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-/* On these platforms it is non-const due to underlying APIs. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-ZEND_API bool zend_atomic_bool_load(zend_atomic_bool *obj) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  return zend_atomic_bool_load_ex(obj);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ZEND_API bool zend_atomic_bool_load(const zend_atomic_bool *obj) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return zend_atomic_bool_load_ex(obj);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/Zend/zend_atomic.h.orig      2022-11-22 12:07:40.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/Zend/zend_atomic.h   2022-12-06 14:48:09.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -70,10 +70,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return InterlockedExchange8(&obj->value, desired);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-/* On this platform it is non-const due to Iterlocked API*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-static zend_always_inline bool zend_atomic_bool_load_ex(zend_atomic_bool *obj) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static zend_always_inline bool zend_atomic_bool_load_ex(const zend_atomic_bool *obj) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /* Or'ing with false won't change the value. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  return InterlockedOr8(&obj->value, false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return InterlockedOr8(&((zend_atomic_bool *) obj)->value, false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static zend_always_inline void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -89,7 +88,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static zend_always_inline bool zend_atomic_bool_load_ex(const zend_atomic_bool *obj) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  return __c11_atomic_load(&obj->value, __ATOMIC_SEQ_CST);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return __c11_atomic_load(&((zend_atomic_bool *) obj)->value, __ATOMIC_SEQ_CST);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static zend_always_inline void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -108,7 +107,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static zend_always_inline bool zend_atomic_bool_load_ex(const zend_atomic_bool *obj) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   bool prev = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  __atomic_load(&obj->value, &prev, __ATOMIC_SEQ_CST);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  __atomic_load(&((zend_atomic_bool *) obj)->value, &prev, __ATOMIC_SEQ_CST);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return prev;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -130,9 +129,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return prev;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-static zend_always_inline bool zend_atomic_bool_load_ex(zend_atomic_bool *obj) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static zend_always_inline bool zend_atomic_bool_load_ex(const zend_atomic_bool *obj) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /* Or'ing false won't change the value */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  return __sync_fetch_and_or(&obj->value, false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return __sync_fetch_and_or(&((zend_atomic_bool *) obj)->value, false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static zend_always_inline void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -167,12 +166,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ZEND_API bool zend_atomic_bool_exchange(zend_atomic_bool *obj, bool desired);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ZEND_API void zend_atomic_bool_store(zend_atomic_bool *obj, bool desired);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(ZEND_WIN32) || defined(HAVE_SYNC_ATOMICS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-/* On these platforms it is non-const due to underlying APIs. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-ZEND_API bool zend_atomic_bool_load(zend_atomic_bool *obj);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ZEND_API bool zend_atomic_bool_load(const zend_atomic_bool *obj);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ END_EXTERN_C()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span></pre><pre style='margin:0'>

</pre>