--- a/tools/scripts/Makefile.include +++ b/tools/scripts/Makefile.include @@ -72,8 +72,6 @@ $(call allow-override,CXX,$(CROSS_COMPIL $(call allow-override,STRIP,$(CROSS_COMPILE)strip) endif -CC_NO_CLANG := $(shell $(CC) -dM -E -x c /dev/null | grep -Fq "__clang__"; echo $$?) - ifneq ($(LLVM),) HOSTAR ?= $(LLVM_PREFIX)llvm-ar$(LLVM_SUFFIX) HOSTCC ?= $(LLVM_PREFIX)clang$(LLVM_SUFFIX) @@ -84,6 +82,9 @@ HOSTCC ?= gcc HOSTLD ?= ld endif +CC_NO_CLANG := $(shell $(CC) -dM -E -x c /dev/null | grep -Fq "__clang__"; echo $$?) +HOSTCC_NO_CLANG := $(shell $(HOSTCC) -dM -E -x c /dev/null | grep -Fq "__clang__"; echo $$?) + # Some tools require Clang, LLC and/or LLVM utils CLANG ?= clang LLC ?= llc @@ -92,8 +93,9 @@ LLVM_OBJCOPY ?= llvm-objcopy LLVM_STRIP ?= llvm-strip ifeq ($(CC_NO_CLANG), 1) -EXTRA_WARNINGS += -Wstrict-aliasing=3 - + ifeq ($(HOSTCC_NO_CLANG), 1) + EXTRA_WARNINGS += -Wstrict-aliasing=3 + endif else ifneq ($(CROSS_COMPILE),) # Allow userspace to override CLANG_CROSS_FLAGS to specify their own # sysroots and flags or to avoid the GCC call in pure Clang builds. --- a/tools/include/linux/types.h +++ b/tools/include/linux/types.h @@ -56,6 +56,7 @@ typedef __s8 s8; #define __user #endif #define __must_check +#undef __cold #define __cold typedef __u16 __bitwise __le16; --- a/tools/objtool/include/objtool/objtool.h +++ b/tools/objtool/include/objtool/objtool.h @@ -12,6 +12,7 @@ #include +#undef __weak #define __weak __attribute__((weak)) struct pv_state { --- a/tools/include/asm-generic/bitops/fls.h +++ b/tools/include/asm-generic/bitops/fls.h @@ -2,6 +2,8 @@ #ifndef _ASM_GENERIC_BITOPS_FLS_H_ #define _ASM_GENERIC_BITOPS_FLS_H_ +#include + /** * fls - find last (most-significant) bit set * @x: the word to search @@ -10,6 +12,7 @@ * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32. */ +#define fls __linux_fls static __always_inline int fls(unsigned int x) { int r = 32; --- a/tools/lib/string.c +++ b/tools/lib/string.c @@ -96,6 +96,7 @@ int strtobool(const char *s, bool *res) * If libc has strlcpy() then that version will override this * implementation: */ +#ifndef __APPLE__ #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wignored-attributes" @@ -114,6 +115,7 @@ size_t __weak strlcpy(char *dest, const #ifdef __clang__ #pragma clang diagnostic pop #endif +#endif /** * skip_spaces - Removes leading whitespace from @str.