summaryrefslogtreecommitdiffstats
path: root/toolchain.inc
diff options
context:
space:
mode:
authorMartin Roth <gaumless@gmail.com>2022-09-27 18:13:48 -0600
committerFelix Held <felix-coreboot@felixheld.de>2022-10-11 14:33:28 +0000
commit461c33b226da241fdb5944f42cccd60fe9918621 (patch)
tree0d30c7ddcf072032653ad1685c852a2a83564fea /toolchain.inc
parent21dc639f9965d82ada20fc7f9d51af6ed2e64d72 (diff)
downloadcoreboot-461c33b226da241fdb5944f42cccd60fe9918621.tar.gz
coreboot-461c33b226da241fdb5944f42cccd60fe9918621.tar.bz2
coreboot-461c33b226da241fdb5944f42cccd60fe9918621.zip
coreboot: Add support for include-what-you-use
The tool "include-what-you-use" analyzes each file's headers and makes recommendations for header files to add and remove. There are additional scripts as part of the package that will make these changes directly based on the recommendations, but due to the way coreboot compiles code in/out base on Kconfig options, this isn't really safe for the project to use. It is a good starting point though. To use, set the IWYU kconfig option, then build with the command: make -k Because this doesn't actually build any files, the -k option is needed or make will stop after looking at the first file. Signed-off-by: Martin Roth <martin.roth@amd.corp-partner.google.com> Change-Id: I084813f21a3c26cac1e4e134bf8a83eb8637ff63 Reviewed-on: https://review.coreboot.org/c/coreboot/+/67915 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Elyes Haouas <ehaouas@noos.fr> Reviewed-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'toolchain.inc')
-rw-r--r--toolchain.inc15
1 files changed, 15 insertions, 0 deletions
diff --git a/toolchain.inc b/toolchain.inc
index 893f7d1a11a8..47c5fe9b8511 100644
--- a/toolchain.inc
+++ b/toolchain.inc
@@ -32,6 +32,21 @@ HOSTCC:=CCC_CC="$(HOSTCC)" $(CC)
HOSTCXX:=CCC_CXX="$(HOSTCXX)" $(CXX)
endif
+# include-what-you-use integration
+ifeq ($(CONFIG_IWYU),y)
+
+IWYU:=$(word 1,$(wildcard $(addsuffix /iwyu,$(subst :, ,$(PATH)))))
+ifeq ($(IWYU),)
+$(error include-what-you-use selected, but not found in PATH)
+endif
+
+$(foreach arch,$(ARCH_SUPPORTED), \
+ $(eval CC_$(arch):=$(IWYU) ))
+
+CFLAGS_common := -Xiwyu --prefix_header_includes=remove -Xiwyu --no_comments -Xiwyu --no_fwd_decls $(CFLAGS_common)
+NOCOMPILE := 1
+endif
+
COREBOOT_STANDARD_STAGES := decompressor bootblock verstage romstage ramstage
MAP-decompressor := bootblock