[nginx] Support for Clang with "-fgnuc-version=0".
Maxim Dounin
mdounin at mdounin.ru
Mon Aug 12 03:37:05 UTC 2024
details: http://freenginx.org/hg/nginx/rev/d286426eab1a
branches:
changeset: 9315:d286426eab1a
user: Maxim Dounin <mdounin at mdounin.ru>
date: Wed Aug 07 03:58:30 2024 +0300
description:
Support for Clang with "-fgnuc-version=0".
Previously, the code assumed that Clang pretends to be GCC and defines
the __GNUC__ macro, which might not be the case if the "-fgnuc-version=0"
flag is used. Fix is to explicitly check for __clang__ as well.
In practice, with this change ngx_cpuinfo() is now available on Linux
with "-fgnuc-version=0".
diffstat:
src/core/ngx_cpuinfo.c | 3 ++-
src/event/modules/ngx_iocp_module.c | 2 +-
src/os/unix/ngx_atomic.h | 6 +++---
3 files changed, 6 insertions(+), 5 deletions(-)
diffs (55 lines):
diff --git a/src/core/ngx_cpuinfo.c b/src/core/ngx_cpuinfo.c
--- a/src/core/ngx_cpuinfo.c
+++ b/src/core/ngx_cpuinfo.c
@@ -9,7 +9,8 @@
#include <ngx_core.h>
-#if (( __i386__ || __amd64__ ) && ( __GNUC__ || __INTEL_COMPILER ))
+#if (( __i386__ || __amd64__ ) \
+ && ( __GNUC__ || __clang__ || __INTEL_COMPILER ))
static ngx_inline void ngx_cpuid(uint32_t i, uint32_t *buf);
diff --git a/src/event/modules/ngx_iocp_module.c b/src/event/modules/ngx_iocp_module.c
--- a/src/event/modules/ngx_iocp_module.c
+++ b/src/event/modules/ngx_iocp_module.c
@@ -172,7 +172,7 @@ ngx_iocp_timer(void *data)
#endif
}
-#if defined(__WATCOMC__) || defined(__GNUC__)
+#if defined(__WATCOMC__) || defined(__GNUC__) || defined(__clang__)
return 0;
#endif
}
diff --git a/src/os/unix/ngx_atomic.h b/src/os/unix/ngx_atomic.h
--- a/src/os/unix/ngx_atomic.h
+++ b/src/os/unix/ngx_atomic.h
@@ -153,7 +153,7 @@ ngx_cpu_pause(void);
#define ngx_memory_barrier() __asm (".volatile"); __asm (".nonvolatile")
-#else /* ( __GNUC__ || __INTEL_COMPILER ) */
+#else /* ( __GNUC__ || __clang__ || __INTEL_COMPILER ) */
#define NGX_HAVE_ATOMIC_OPS 1
@@ -194,7 +194,7 @@ ngx_cpu_pause(void);
#define ngx_memory_barrier() __asm (".volatile"); __asm (".nonvolatile")
-#else /* ( __GNUC__ || __INTEL_COMPILER ) */
+#else /* ( __GNUC__ || __clang__ || __INTEL_COMPILER ) */
#define NGX_HAVE_ATOMIC_OPS 1
@@ -229,7 +229,7 @@ typedef volatile ngx_atomic_uint_t ngx_
#include "ngx_sunpro_atomic_sparc64.h"
-#else /* ( __GNUC__ || __INTEL_COMPILER ) */
+#else /* ( __GNUC__ || __clang__ || __INTEL_COMPILER ) */
#define NGX_HAVE_ATOMIC_OPS 1
More information about the nginx-devel
mailing list