Commit 8ada737f authored by Jachin's avatar Jachin Committed by Oran Agra
Browse files

Fix compile on macOS 13 (#12611)

Use the __MAC_OS_X_VERSION_MIN_REQUIRED macro to detect the
macOS system version instead of using MAC_OS_X_VERSION_10_6.

From MacOSX14.0.sdk, the default definitions of MAC_OS_X_VERSION_xxx have
been removed in usr/include/AvailabilityMacros.h. It includes AvailabilityVersions.h,
where the following condition must be met:
`#if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || defined(_DARWIN_C_SOURCE)`
Only then will MAC_OS_X_VERSION_xxx be defined.
However, in the project, _DARWIN_C_SOURCE is not defined, which leads to the
loss of the definition for MAC_OS_X_VERSION_10_6.

(cherry picked from commit a2b0701d)
parent 7f486ea6
...@@ -40,8 +40,12 @@ ...@@ -40,8 +40,12 @@
#include <fcntl.h> #include <fcntl.h>
#endif #endif
#if defined(__APPLE__) && defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
#define MAC_OS_10_6_DETECTED
#endif
/* Define redis_fstat to fstat or fstat64() */ /* Define redis_fstat to fstat or fstat64() */
#if defined(__APPLE__) && !defined(MAC_OS_X_VERSION_10_6) #if defined(__APPLE__) && !defined(MAC_OS_10_6_DETECTED)
#define redis_fstat fstat64 #define redis_fstat fstat64
#define redis_stat stat64 #define redis_stat stat64
#else #else
...@@ -96,7 +100,7 @@ ...@@ -96,7 +100,7 @@
#define HAVE_ACCEPT4 1 #define HAVE_ACCEPT4 1
#endif #endif
#if (defined(__APPLE__) && defined(MAC_OS_X_VERSION_10_6)) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined (__NetBSD__) #if (defined(__APPLE__) && defined(MAC_OS_10_6_DETECTED)) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined (__NetBSD__)
#define HAVE_KQUEUE 1 #define HAVE_KQUEUE 1
#endif #endif
...@@ -293,7 +297,7 @@ void setproctitle(const char *fmt, ...); ...@@ -293,7 +297,7 @@ void setproctitle(const char *fmt, ...);
#include <kernel/OS.h> #include <kernel/OS.h>
#define redis_set_thread_title(name) rename_thread(find_thread(0), name) #define redis_set_thread_title(name) rename_thread(find_thread(0), name)
#else #else
#if (defined __APPLE__ && defined(MAC_OS_X_VERSION_10_7)) #if (defined __APPLE__ && defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1070)
int pthread_setname_np(const char *name); int pthread_setname_np(const char *name);
#include <pthread.h> #include <pthread.h>
#define redis_set_thread_title(name) pthread_setname_np(name) #define redis_set_thread_title(name) pthread_setname_np(name)
......
...@@ -1176,7 +1176,7 @@ static void* getAndSetMcontextEip(ucontext_t *uc, void *eip) { ...@@ -1176,7 +1176,7 @@ static void* getAndSetMcontextEip(ucontext_t *uc, void *eip) {
} \ } \
return old_val; \ return old_val; \
} while(0) } while(0)
#if defined(__APPLE__) && !defined(MAC_OS_X_VERSION_10_6) #if defined(__APPLE__) && !defined(MAC_OS_10_6_DETECTED)
/* OSX < 10.6 */ /* OSX < 10.6 */
#if defined(__x86_64__) #if defined(__x86_64__)
GET_SET_RETURN(uc->uc_mcontext->__ss.__rip, eip); GET_SET_RETURN(uc->uc_mcontext->__ss.__rip, eip);
...@@ -1185,7 +1185,7 @@ static void* getAndSetMcontextEip(ucontext_t *uc, void *eip) { ...@@ -1185,7 +1185,7 @@ static void* getAndSetMcontextEip(ucontext_t *uc, void *eip) {
#else #else
GET_SET_RETURN(uc->uc_mcontext->__ss.__srr0, eip); GET_SET_RETURN(uc->uc_mcontext->__ss.__srr0, eip);
#endif #endif
#elif defined(__APPLE__) && defined(MAC_OS_X_VERSION_10_6) #elif defined(__APPLE__) && defined(MAC_OS_10_6_DETECTED)
/* OSX >= 10.6 */ /* OSX >= 10.6 */
#if defined(_STRUCT_X86_THREAD_STATE64) && !defined(__i386__) #if defined(_STRUCT_X86_THREAD_STATE64) && !defined(__i386__)
GET_SET_RETURN(uc->uc_mcontext->__ss.__rip, eip); GET_SET_RETURN(uc->uc_mcontext->__ss.__rip, eip);
...@@ -1272,7 +1272,7 @@ void logRegisters(ucontext_t *uc) { ...@@ -1272,7 +1272,7 @@ void logRegisters(ucontext_t *uc) {
} while(0) } while(0)
/* OSX */ /* OSX */
#if defined(__APPLE__) && defined(MAC_OS_X_VERSION_10_6) #if defined(__APPLE__) && defined(MAC_OS_10_6_DETECTED)
/* OSX AMD64 */ /* OSX AMD64 */
#if defined(_STRUCT_X86_THREAD_STATE64) && !defined(__i386__) #if defined(_STRUCT_X86_THREAD_STATE64) && !defined(__i386__)
serverLog(LL_WARNING, serverLog(LL_WARNING,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment