aboutsummaryrefslogtreecommitdiff
path: root/depends/patches/qt/memory_resource.patch
blob: e41d68db30171dee720427b66b693ecb57ce5da0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Fix unusable memory_resource on macos

See https://bugreports.qt.io/browse/QTBUG-117484
and https://bugreports.qt.io/browse/QTBUG-114316

--- a/qtbase/src/corelib/tools/qduplicatetracker_p.h
+++ b/qtbase/src/corelib/tools/qduplicatetracker_p.h
@@ -52,7 +52,7 @@
 
 #include <qglobal.h>
 
-#if QT_HAS_INCLUDE(<memory_resource>) && __cplusplus > 201402L
+#ifdef __cpp_lib_memory_resource
 #  include <unordered_set>
 #  include <memory_resource>
 #else

--- a/qtbase/src/corelib/global/qcompilerdetection.h
+++ b/qtbase/src/corelib/global/qcompilerdetection.h
@@ -1041,16 +1041,22 @@
 #   endif // !_HAS_CONSTEXPR
 #  endif // !__GLIBCXX__ && !_LIBCPP_VERSION
 # endif // Q_OS_QNX
-# if (defined(Q_CC_CLANG) || defined(Q_CC_INTEL)) && defined(Q_OS_MAC) && defined(__GNUC_LIBSTD__) \
-    && ((__GNUC_LIBSTD__-0) * 100 + __GNUC_LIBSTD_MINOR__-0 <= 402)
+# if (defined(Q_CC_CLANG) || defined(Q_CC_INTEL)) && defined(Q_OS_MAC)
+#  if defined(__GNUC_LIBSTD__) && ((__GNUC_LIBSTD__-0) * 100 + __GNUC_LIBSTD_MINOR__-0 <= 402)
 // Apple has not updated libstdc++ since 2007, which means it does not have
 // <initializer_list> or std::move. Let's disable these features
-#  undef Q_COMPILER_INITIALIZER_LISTS
-#  undef Q_COMPILER_RVALUE_REFS
-#  undef Q_COMPILER_REF_QUALIFIERS
+#   undef Q_COMPILER_INITIALIZER_LISTS
+#   undef Q_COMPILER_RVALUE_REFS
+#   undef Q_COMPILER_REF_QUALIFIERS
 // Also disable <atomic>, since it's clearly not there
-#  undef Q_COMPILER_ATOMICS
-# endif
+#   undef Q_COMPILER_ATOMICS
+#  endif
+#  if defined(__cpp_lib_memory_resource) \
+    && ((defined(__MAC_OS_X_VERSION_MIN_REQUIRED)  && __MAC_OS_X_VERSION_MIN_REQUIRED  < 140000) \
+     || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 170000))
+#   undef __cpp_lib_memory_resource // Only supported on macOS 14 and iOS 17
+#  endif
+# endif // (defined(Q_CC_CLANG) || defined(Q_CC_INTEL)) && defined(Q_OS_MAC)
 # if defined(Q_CC_CLANG) && defined(Q_CC_INTEL) && Q_CC_INTEL >= 1500
 // ICC 15.x and 16.0 have their own implementation of std::atomic, which is activated when in Clang mode
 // (probably because libc++'s <atomic> on OS X failed to compile), but they're missing some