.. | .. |
---|
32 | 32 | EXTRA_WARNINGS += -Wold-style-definition |
---|
33 | 33 | EXTRA_WARNINGS += -Wpacked |
---|
34 | 34 | EXTRA_WARNINGS += -Wredundant-decls |
---|
35 | | -EXTRA_WARNINGS += -Wshadow |
---|
36 | 35 | EXTRA_WARNINGS += -Wstrict-prototypes |
---|
37 | 36 | EXTRA_WARNINGS += -Wswitch-default |
---|
38 | 37 | EXTRA_WARNINGS += -Wswitch-enum |
---|
39 | 38 | EXTRA_WARNINGS += -Wundef |
---|
40 | 39 | EXTRA_WARNINGS += -Wwrite-strings |
---|
41 | 40 | EXTRA_WARNINGS += -Wformat |
---|
42 | | - |
---|
43 | | -CC_NO_CLANG := $(shell $(CC) -dM -E -x c /dev/null | grep -Fq "__clang__"; echo $$?) |
---|
44 | 41 | |
---|
45 | 42 | # Makefiles suck: This macro sets a default value of $(2) for the |
---|
46 | 43 | # variable named by $(1), unless the variable has been set by |
---|
.. | .. |
---|
53 | 50 | $(eval $(1) = $(2))) |
---|
54 | 51 | endef |
---|
55 | 52 | |
---|
| 53 | +ifneq ($(LLVM),) |
---|
| 54 | +$(call allow-override,CC,clang) |
---|
| 55 | +$(call allow-override,AR,llvm-ar) |
---|
| 56 | +$(call allow-override,LD,ld.lld) |
---|
| 57 | +$(call allow-override,CXX,clang++) |
---|
| 58 | +$(call allow-override,STRIP,llvm-strip) |
---|
| 59 | +else |
---|
56 | 60 | # Allow setting various cross-compile vars or setting CROSS_COMPILE as a prefix. |
---|
57 | 61 | $(call allow-override,CC,$(CROSS_COMPILE)gcc) |
---|
58 | 62 | $(call allow-override,AR,$(CROSS_COMPILE)ar) |
---|
59 | 63 | $(call allow-override,LD,$(CROSS_COMPILE)ld) |
---|
60 | 64 | $(call allow-override,CXX,$(CROSS_COMPILE)g++) |
---|
61 | 65 | $(call allow-override,STRIP,$(CROSS_COMPILE)strip) |
---|
| 66 | +endif |
---|
| 67 | + |
---|
| 68 | +CC_NO_CLANG := $(shell $(CC) -dM -E -x c /dev/null | grep -Fq "__clang__"; echo $$?) |
---|
62 | 69 | |
---|
63 | 70 | ifneq ($(LLVM),) |
---|
64 | 71 | HOSTAR ?= llvm-ar |
---|
.. | .. |
---|
79 | 86 | # will do for now and keep the above -Wstrict-aliasing=3 in place |
---|
80 | 87 | # in newer systems. |
---|
81 | 88 | # Needed for the __raw_cmpxchg in tools/arch/x86/include/asm/cmpxchg.h |
---|
| 89 | +# |
---|
| 90 | +# See https://lkml.org/lkml/2006/11/28/253 and https://gcc.gnu.org/gcc-4.8/changes.html, |
---|
| 91 | +# that takes into account Linus's comments (search for Wshadow) for the reasoning about |
---|
| 92 | +# -Wshadow not being interesting before gcc 4.8. |
---|
| 93 | + |
---|
82 | 94 | ifneq ($(filter 3.%,$(MAKE_VERSION)),) # make-3 |
---|
83 | 95 | EXTRA_WARNINGS += -fno-strict-aliasing |
---|
| 96 | +EXTRA_WARNINGS += -Wno-shadow |
---|
| 97 | +else |
---|
| 98 | +EXTRA_WARNINGS += -Wshadow |
---|
84 | 99 | endif |
---|
85 | 100 | |
---|
86 | 101 | ifneq ($(findstring $(MAKEFLAGS), w),w) |
---|
.. | .. |
---|
109 | 124 | ifneq ($(V),1) |
---|
110 | 125 | QUIET_CC = @echo ' CC '$@; |
---|
111 | 126 | QUIET_CC_FPIC = @echo ' CC FPIC '$@; |
---|
| 127 | + QUIET_CLANG = @echo ' CLANG '$@; |
---|
112 | 128 | QUIET_AR = @echo ' AR '$@; |
---|
113 | 129 | QUIET_LINK = @echo ' LINK '$@; |
---|
114 | 130 | QUIET_MKDIR = @echo ' MKDIR '$@; |
---|