Makefile.include (d0034a7a4ac7fae708146ac0059b9c47a1543f0d) | Makefile.include (d1d1a2cd4627724c37539892db8efa611d2cbd70) |
---|---|
1# SPDX-License-Identifier: GPL-2.0 2ifneq ($(O),) 3ifeq ($(origin O), command line) 4 dummy := $(if $(shell cd $(PWD); test -d $(O) || echo $(O)),$(error O=$(O) does not exist),) 5 ABSOLUTE_O := $(shell cd $(PWD); cd $(O) ; pwd) 6 OUTPUT := $(ABSOLUTE_O)/$(if $(subdir),$(subdir)/) 7 COMMAND_O := O=$(ABSOLUTE_O) 8ifeq ($(objtree),) --- 24 unchanged lines hidden (view full) --- 33EXTRA_WARNINGS += -Wpacked 34EXTRA_WARNINGS += -Wredundant-decls 35EXTRA_WARNINGS += -Wstrict-prototypes 36EXTRA_WARNINGS += -Wswitch-default 37EXTRA_WARNINGS += -Wswitch-enum 38EXTRA_WARNINGS += -Wundef 39EXTRA_WARNINGS += -Wwrite-strings 40EXTRA_WARNINGS += -Wformat | 1# SPDX-License-Identifier: GPL-2.0 2ifneq ($(O),) 3ifeq ($(origin O), command line) 4 dummy := $(if $(shell cd $(PWD); test -d $(O) || echo $(O)),$(error O=$(O) does not exist),) 5 ABSOLUTE_O := $(shell cd $(PWD); cd $(O) ; pwd) 6 OUTPUT := $(ABSOLUTE_O)/$(if $(subdir),$(subdir)/) 7 COMMAND_O := O=$(ABSOLUTE_O) 8ifeq ($(objtree),) --- 24 unchanged lines hidden (view full) --- 33EXTRA_WARNINGS += -Wpacked 34EXTRA_WARNINGS += -Wredundant-decls 35EXTRA_WARNINGS += -Wstrict-prototypes 36EXTRA_WARNINGS += -Wswitch-default 37EXTRA_WARNINGS += -Wswitch-enum 38EXTRA_WARNINGS += -Wundef 39EXTRA_WARNINGS += -Wwrite-strings 40EXTRA_WARNINGS += -Wformat |
41EXTRA_WARNINGS += -Wno-type-limits |
|
41 | 42 |
42CC_NO_CLANG := $(shell $(CC) -dM -E -x c /dev/null | grep -Fq "__clang__"; echo $$?) 43 | |
44# Makefiles suck: This macro sets a default value of $(2) for the 45# variable named by $(1), unless the variable has been set by 46# environment or command line. This is necessary for CC and AR 47# because make sets default values, so the simpler ?= approach 48# won't work as expected. 49define allow-override 50 $(if $(or $(findstring environment,$(origin $(1))),\ 51 $(findstring command line,$(origin $(1)))),,\ 52 $(eval $(1) = $(2))) 53endef 54 | 43# Makefiles suck: This macro sets a default value of $(2) for the 44# variable named by $(1), unless the variable has been set by 45# environment or command line. This is necessary for CC and AR 46# because make sets default values, so the simpler ?= approach 47# won't work as expected. 48define allow-override 49 $(if $(or $(findstring environment,$(origin $(1))),\ 50 $(findstring command line,$(origin $(1)))),,\ 51 $(eval $(1) = $(2))) 52endef 53 |
54ifneq ($(LLVM),) 55$(call allow-override,CC,clang) 56$(call allow-override,AR,llvm-ar) 57$(call allow-override,LD,ld.lld) 58$(call allow-override,CXX,clang++) 59$(call allow-override,STRIP,llvm-strip) 60else |
|
55# Allow setting various cross-compile vars or setting CROSS_COMPILE as a prefix. 56$(call allow-override,CC,$(CROSS_COMPILE)gcc) 57$(call allow-override,AR,$(CROSS_COMPILE)ar) 58$(call allow-override,LD,$(CROSS_COMPILE)ld) 59$(call allow-override,CXX,$(CROSS_COMPILE)g++) 60$(call allow-override,STRIP,$(CROSS_COMPILE)strip) | 61# Allow setting various cross-compile vars or setting CROSS_COMPILE as a prefix. 62$(call allow-override,CC,$(CROSS_COMPILE)gcc) 63$(call allow-override,AR,$(CROSS_COMPILE)ar) 64$(call allow-override,LD,$(CROSS_COMPILE)ld) 65$(call allow-override,CXX,$(CROSS_COMPILE)g++) 66$(call allow-override,STRIP,$(CROSS_COMPILE)strip) |
67endif |
|
61 | 68 |
69CC_NO_CLANG := $(shell $(CC) -dM -E -x c /dev/null | grep -Fq "__clang__"; echo $$?) 70 |
|
62ifneq ($(LLVM),) 63HOSTAR ?= llvm-ar 64HOSTCC ?= clang 65HOSTLD ?= ld.lld 66else 67HOSTAR ?= ar 68HOSTCC ?= gcc 69HOSTLD ?= ld --- 11 unchanged lines hidden (view full) --- 81endif 82 83# Hack to avoid type-punned warnings on old systems such as RHEL5: 84# We should be changing CFLAGS and checking gcc version, but this 85# will do for now and keep the above -Wstrict-aliasing=3 in place 86# in newer systems. 87# Needed for the __raw_cmpxchg in tools/arch/x86/include/asm/cmpxchg.h 88# | 71ifneq ($(LLVM),) 72HOSTAR ?= llvm-ar 73HOSTCC ?= clang 74HOSTLD ?= ld.lld 75else 76HOSTAR ?= ar 77HOSTCC ?= gcc 78HOSTLD ?= ld --- 11 unchanged lines hidden (view full) --- 90endif 91 92# Hack to avoid type-punned warnings on old systems such as RHEL5: 93# We should be changing CFLAGS and checking gcc version, but this 94# will do for now and keep the above -Wstrict-aliasing=3 in place 95# in newer systems. 96# Needed for the __raw_cmpxchg in tools/arch/x86/include/asm/cmpxchg.h 97# |
89# See https://lkml.org/lkml/2006/11/28/253 and https://gcc.gnu.org/gcc-4.8/changes.html, | 98# See https://lore.kernel.org/lkml/9a8748490611281710g78402fbeh8ff7fcc162dbcbca@mail.gmail.com/ 99# and https://gcc.gnu.org/gcc-4.8/changes.html, |
90# that takes into account Linus's comments (search for Wshadow) for the reasoning about 91# -Wshadow not being interesting before gcc 4.8. 92 93ifneq ($(filter 3.%,$(MAKE_VERSION)),) # make-3 94EXTRA_WARNINGS += -fno-strict-aliasing 95EXTRA_WARNINGS += -Wno-shadow 96else 97EXTRA_WARNINGS += -Wshadow --- 53 unchanged lines hidden --- | 100# that takes into account Linus's comments (search for Wshadow) for the reasoning about 101# -Wshadow not being interesting before gcc 4.8. 102 103ifneq ($(filter 3.%,$(MAKE_VERSION)),) # make-3 104EXTRA_WARNINGS += -fno-strict-aliasing 105EXTRA_WARNINGS += -Wno-shadow 106else 107EXTRA_WARNINGS += -Wshadow --- 53 unchanged lines hidden --- |