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
This commit is contained in:
Antonio Borneo 2023-03-19 10:57:04 +01:00
parent b6b4f9d46a
commit 9ce6b0898e
1 changed files with 8 additions and 0 deletions

View File

@ -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))