diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 43 |
1 files changed, 38 insertions, 5 deletions
@@ -1,7 +1,7 @@ | |||
1 | VERSION = 4 | 1 | VERSION = 4 |
2 | PATCHLEVEL = 5 | 2 | PATCHLEVEL = 5 |
3 | SUBLEVEL = 0 | 3 | SUBLEVEL = 0 |
4 | EXTRAVERSION = -rc1 | 4 | EXTRAVERSION = |
5 | NAME = Blurry Fish Butt | 5 | NAME = Blurry Fish Butt |
6 | 6 | ||
7 | # *DOCUMENTATION* | 7 | # *DOCUMENTATION* |
@@ -365,6 +365,7 @@ LDFLAGS_MODULE = | |||
365 | CFLAGS_KERNEL = | 365 | CFLAGS_KERNEL = |
366 | AFLAGS_KERNEL = | 366 | AFLAGS_KERNEL = |
367 | CFLAGS_GCOV = -fprofile-arcs -ftest-coverage | 367 | CFLAGS_GCOV = -fprofile-arcs -ftest-coverage |
368 | CFLAGS_KCOV = -fsanitize-coverage=trace-pc | ||
368 | 369 | ||
369 | 370 | ||
370 | # Use USERINCLUDE when you must reference the UAPI directories only. | 371 | # Use USERINCLUDE when you must reference the UAPI directories only. |
@@ -411,7 +412,7 @@ export MAKE AWK GENKSYMS INSTALLKERNEL PERL PYTHON UTS_MACHINE | |||
411 | export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS | 412 | export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS |
412 | 413 | ||
413 | export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS | 414 | export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS |
414 | export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE CFLAGS_GCOV CFLAGS_KASAN CFLAGS_UBSAN | 415 | export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE CFLAGS_GCOV CFLAGS_KCOV CFLAGS_KASAN CFLAGS_UBSAN |
415 | export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE | 416 | export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE |
416 | export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE | 417 | export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE |
417 | export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL | 418 | export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL |
@@ -673,6 +674,14 @@ endif | |||
673 | endif | 674 | endif |
674 | KBUILD_CFLAGS += $(stackp-flag) | 675 | KBUILD_CFLAGS += $(stackp-flag) |
675 | 676 | ||
677 | ifdef CONFIG_KCOV | ||
678 | ifeq ($(call cc-option, $(CFLAGS_KCOV)),) | ||
679 | $(warning Cannot use CONFIG_KCOV: \ | ||
680 | -fsanitize-coverage=trace-pc is not supported by compiler) | ||
681 | CFLAGS_KCOV = | ||
682 | endif | ||
683 | endif | ||
684 | |||
676 | ifeq ($(cc-name),clang) | 685 | ifeq ($(cc-name),clang) |
677 | KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,) | 686 | KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,) |
678 | KBUILD_CPPFLAGS += $(call cc-option,-Wno-unknown-warning-option,) | 687 | KBUILD_CPPFLAGS += $(call cc-option,-Wno-unknown-warning-option,) |
@@ -996,7 +1005,21 @@ prepare0: archprepare FORCE | |||
996 | $(Q)$(MAKE) $(build)=. | 1005 | $(Q)$(MAKE) $(build)=. |
997 | 1006 | ||
998 | # All the preparing.. | 1007 | # All the preparing.. |
999 | prepare: prepare0 | 1008 | prepare: prepare0 prepare-objtool |
1009 | |||
1010 | ifdef CONFIG_STACK_VALIDATION | ||
1011 | has_libelf := $(shell echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf - &> /dev/null && echo 1 || echo 0) | ||
1012 | ifeq ($(has_libelf),1) | ||
1013 | objtool_target := tools/objtool FORCE | ||
1014 | else | ||
1015 | $(warning "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev or elfutils-libelf-devel") | ||
1016 | SKIP_STACK_VALIDATION := 1 | ||
1017 | export SKIP_STACK_VALIDATION | ||
1018 | endif | ||
1019 | endif | ||
1020 | |||
1021 | PHONY += prepare-objtool | ||
1022 | prepare-objtool: $(objtool_target) | ||
1000 | 1023 | ||
1001 | # Generate some files | 1024 | # Generate some files |
1002 | # --------------------------------------------------------------------------- | 1025 | # --------------------------------------------------------------------------- |
@@ -1090,6 +1113,14 @@ kselftest: | |||
1090 | kselftest-clean: | 1113 | kselftest-clean: |
1091 | $(Q)$(MAKE) -C tools/testing/selftests clean | 1114 | $(Q)$(MAKE) -C tools/testing/selftests clean |
1092 | 1115 | ||
1116 | PHONY += kselftest-merge | ||
1117 | kselftest-merge: | ||
1118 | $(if $(wildcard $(objtree)/.config),, $(error No .config exists, config your kernel first!)) | ||
1119 | $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \ | ||
1120 | -m $(objtree)/.config \ | ||
1121 | $(srctree)/tools/testing/selftests/*/config | ||
1122 | +$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig | ||
1123 | |||
1093 | # --------------------------------------------------------------------------- | 1124 | # --------------------------------------------------------------------------- |
1094 | # Modules | 1125 | # Modules |
1095 | 1126 | ||
@@ -1298,6 +1329,8 @@ help: | |||
1298 | @echo ' Build, install, and boot kernel before' | 1329 | @echo ' Build, install, and boot kernel before' |
1299 | @echo ' running kselftest on it' | 1330 | @echo ' running kselftest on it' |
1300 | @echo ' kselftest-clean - Remove all generated kselftest files' | 1331 | @echo ' kselftest-clean - Remove all generated kselftest files' |
1332 | @echo ' kselftest-merge - Merge all the config dependencies of kselftest to existed' | ||
1333 | @echo ' .config.' | ||
1301 | @echo '' | 1334 | @echo '' |
1302 | @echo 'Kernel packaging:' | 1335 | @echo 'Kernel packaging:' |
1303 | @$(MAKE) $(build)=$(package-dir) help | 1336 | @$(MAKE) $(build)=$(package-dir) help |
@@ -1509,11 +1542,11 @@ image_name: | |||
1509 | # Clear a bunch of variables before executing the submake | 1542 | # Clear a bunch of variables before executing the submake |
1510 | tools/: FORCE | 1543 | tools/: FORCE |
1511 | $(Q)mkdir -p $(objtree)/tools | 1544 | $(Q)mkdir -p $(objtree)/tools |
1512 | $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(filter --j% -j,$(MAKEFLAGS))" O=$(O) subdir=tools -C $(src)/tools/ | 1545 | $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/ |
1513 | 1546 | ||
1514 | tools/%: FORCE | 1547 | tools/%: FORCE |
1515 | $(Q)mkdir -p $(objtree)/tools | 1548 | $(Q)mkdir -p $(objtree)/tools |
1516 | $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(filter --j% -j,$(MAKEFLAGS))" O=$(O) subdir=tools -C $(src)/tools/ $* | 1549 | $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/ $* |
1517 | 1550 | ||
1518 | # Single targets | 1551 | # Single targets |
1519 | # --------------------------------------------------------------------------- | 1552 | # --------------------------------------------------------------------------- |