aboutsummaryrefslogtreecommitdiff
path: root/src/helper
diff options
context:
space:
mode:
authorAntonio Borneo <borneo.antonio@gmail.com>2023-03-19 10:57:04 +0100
committerAntonio Borneo <borneo.antonio@gmail.com>2023-03-25 18:00:28 +0000
commit9ce6b0898e5c0b2d6b6928b93b18137fecd6a32d (patch)
treee6e737fd0eb87febe30e914b813c173d6d4e4d29 /src/helper
parentb6b4f9d46a48aadc1de6bb5152ff4913661c9059 (diff)
downloadriscv-openocd-9ce6b0898e5c0b2d6b6928b93b18137fecd6a32d.zip
riscv-openocd-9ce6b0898e5c0b2d6b6928b93b18137fecd6a32d.tar.gz
riscv-openocd-9ce6b0898e5c0b2d6b6928b93b18137fecd6a32d.tar.bz2
helper/compiler: fix build on MacOS
On MacOS, clang defines [1]: #define __nonnull _Nonnull that creates incompatibility with GCC and with the macro __nonnull defined in some libc. Detect clang on MacOS and undefine __nonnull. Change-Id: I64fcf51b102ea91c196e657debd8c267943a2b08 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Links: [1] https://github.com/llvm/llvm-project/blob/llvmorg-16.0.0/clang/lib/Frontend/InitPreprocessor.cpp#L1226 Reviewed-on: https://review.openocd.org/c/openocd/+/7544 Tested-by: jenkins
Diffstat (limited to 'src/helper')
-rw-r--r--src/helper/compiler.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/helper/compiler.h b/src/helper/compiler.h
index 8f6c099..33a075d 100644
--- a/src/helper/compiler.h
+++ b/src/helper/compiler.h
@@ -32,7 +32,15 @@
/*
* The __nonnull function attribute marks pointer parameters that
* must not be NULL.
+ *
+ * clang for Apple defines
+ * #define __nonnull _Nonnull
+ * that is a per argument attribute, incompatible with the gcc per function attribute __nonnull__.
+ * Undefine it to keep compatibility among compilers.
*/
+#if defined(__clang__) && defined(__APPLE__)
+# undef __nonnull
+#endif
#ifndef __nonnull
# if __has_attribute(__nonnull__)
# define __nonnull(params) __attribute__ ((__nonnull__ params))