python3.11/python-3.8.0-c++atomics.patch
2023-04-20 00:20:40 +03:00

81 lines
3 KiB
Diff

diff -up Python-3.11.0a5/Include/internal/pycore_atomic.h.6~ Python-3.11.0a5/Include/internal/pycore_atomic.h
--- Python-3.11.0a5/Include/internal/pycore_atomic.h.6~ 2022-02-03 19:37:08.000000000 +0100
+++ Python-3.11.0a5/Include/internal/pycore_atomic.h 2022-02-08 17:49:48.488052459 +0100
@@ -1,5 +1,18 @@
#ifndef Py_ATOMIC_H
#define Py_ATOMIC_H
+
+#if defined(__cplusplus) && !defined(NO_CXX_ATOMICS)
+#include <atomic>
+typedef std::atomic<uintptr_t> atomic_uintptr_t;
+typedef std::atomic<int> atomic_int;
+#define memory_order_relaxed std::memory_order_relaxed
+#define memory_order_acquire std::memory_order_acquire
+#define memory_order_release std::memory_order_release
+#define memory_order_acq_rel std::memory_order_acq_rel
+#define memory_order_seq_cst std::memory_order_seq_cst
+#define CXX_ATOMICS 1
+#endif
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -11,7 +24,7 @@ extern "C" {
#include "dynamic_annotations.h" /* _Py_ANNOTATE_MEMORY_ORDER */
#include "pyconfig.h"
-#ifdef HAVE_STD_ATOMIC
+#if defined(HAVE_STD_ATOMIC) && !defined(CXX_ATOMICS)
# include <stdatomic.h>
#endif
diff -up Python-3.11.0a5/Include/internal/pycore_gil.h.6~ Python-3.11.0a5/Include/internal/pycore_gil.h
--- Python-3.11.0a5/Include/internal/pycore_gil.h.6~ 2022-02-03 19:37:08.000000000 +0100
+++ Python-3.11.0a5/Include/internal/pycore_gil.h 2022-02-08 17:49:06.774200895 +0100
@@ -1,5 +1,8 @@
#ifndef Py_INTERNAL_GIL_H
#define Py_INTERNAL_GIL_H
+
+#include "pycore_atomic.h" /* Intentionally not in extern C */
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -8,7 +11,6 @@ extern "C" {
# error "this header requires Py_BUILD_CORE define"
#endif
-#include "pycore_atomic.h" /* _Py_atomic_address */
#include "pycore_condvar.h" /* PyCOND_T */
#ifndef Py_HAVE_CONDVAR
diff -up Python-3.11.0a5/Include/internal/pycore_initconfig.h.6~ Python-3.11.0a5/Include/internal/pycore_initconfig.h
--- Python-3.11.0a5/Include/internal/pycore_initconfig.h.6~ 2022-02-03 19:37:08.000000000 +0100
+++ Python-3.11.0a5/Include/internal/pycore_initconfig.h 2022-02-08 17:49:06.774200895 +0100
@@ -1,5 +1,6 @@
#ifndef Py_INTERNAL_CORECONFIG_H
#define Py_INTERNAL_CORECONFIG_H
+
#ifdef __cplusplus
extern "C" {
#endif
diff -up Python-3.11.0a5/Include/internal/pycore_pylifecycle.h.6~ Python-3.11.0a5/Include/internal/pycore_pylifecycle.h
--- Python-3.11.0a5/Include/internal/pycore_pylifecycle.h.6~ 2022-02-03 19:37:08.000000000 +0100
+++ Python-3.11.0a5/Include/internal/pycore_pylifecycle.h 2022-02-08 17:49:06.774200895 +0100
@@ -1,5 +1,6 @@
#ifndef Py_INTERNAL_LIFECYCLE_H
#define Py_INTERNAL_LIFECYCLE_H
+
#ifdef __cplusplus
extern "C" {
#endif
diff -up Python-3.11.0a5/Include/internal/pycore_pystate.h.6~ Python-3.11.0a5/Include/internal/pycore_pystate.h
--- Python-3.11.0a5/Include/internal/pycore_pystate.h.6~ 2022-02-03 19:37:08.000000000 +0100
+++ Python-3.11.0a5/Include/internal/pycore_pystate.h 2022-02-08 17:49:06.774200895 +0100
@@ -1,5 +1,6 @@
#ifndef Py_INTERNAL_PYSTATE_H
#define Py_INTERNAL_PYSTATE_H
+
#ifdef __cplusplus
extern "C" {
#endif