Zephyr minimal libc implements integer constant macros using internal headers provided by GCC, for example INT64_C(x) is just a __INT64_C(x) which is implemented by the GCC. Clang compiler doesn't provide these definitions, so we define them (__INT64_C() and INT64_C()) in zephyr/toolchain/llvm.h, but it looks like INT64_C() definition doesn't come from llvm.h, but from stdlib.h despite of checking if __GNUC__ is defined. This is because Clang sometimes pretends to be GNU compiler: $ x86_64-pc-linux-gnu-clang -dM -E - < /dev/null | grep "GNU" #define __GNUC_MINOR__ 2 #define __GNUC_PATCHLEVEL__ 1 #define __GNUC_STDC_INLINE__ 1 #define __GNUC__ 4 Let's keep the integer constant macros in stdlib.h and their actual implementation in llvm.h. Also define these macros if __clang__ is defined, just in case. Signed-off-by: Patryk Duda <patrykd@google.com> |
||
|---|---|---|
| .. | ||
| arcmwdt | ||
| armstdc | ||
| common | ||
| minimal | ||
| newlib | ||
| picolibc | ||
| CMakeLists.txt | ||
| Kconfig | ||