summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@home.transmeta.com>2003-05-07 08:12:58 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2003-05-07 08:12:58 -0700
commit8c2b313a0e3db75a83e976a119414fa29c560eaa (patch)
tree3b19736171a73b696f4170dea3c8c1d4d1030dac
parentc270c6447ba900499a571291248cfa23af424a9c (diff)
Support a "checking" mode for kernel builds, that runs a
user-supplied source checker on all C files before compiling them. I'll release the actual checker once I've cleaned it up a bit more (yay, all the copyright paperwork completed!)
-rw-r--r--Makefile15
-rw-r--r--scripts/Makefile.build21
2 files changed, 32 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index a96e715ce2a8..dd6caeb1a57d 100644
--- a/Makefile
+++ b/Makefile
@@ -90,7 +90,7 @@ ifneq ($(filter all,$(MAKECMDGOALS)),)
KBUILD_MODULES := 1
endif
-export KBUILD_MODULES KBUILD_BUILTIN KBUILD_VERBOSE
+export KBUILD_MODULES KBUILD_BUILTIN KBUILD_VERBOSE KBUILD_CHECKSRC
# Beautify output
# ---------------------------------------------------------------------------
@@ -118,6 +118,16 @@ ifndef KBUILD_VERBOSE
KBUILD_VERBOSE = 1
endif
+ifdef C
+ ifeq ("$(origin C)", "command line")
+ KBUILD_CHECKSRC = $(C)
+ endif
+endif
+ifndef KBUILD_CHECKSRC
+ KBUILD_CHECKSRC = 0
+endif
+
+
MAKEFLAGS += --no-print-directory
# For maximum performance (+ possibly random breakage, uncomment
@@ -172,6 +182,7 @@ GENKSYMS = scripts/genksyms/genksyms
DEPMOD = /sbin/depmod
KALLSYMS = scripts/kallsyms
PERL = perl
+CHECK = /home/torvalds/parser/check
MODFLAGS = -DMODULE
CFLAGS_MODULE = $(MODFLAGS)
AFLAGS_MODULE = $(MODFLAGS)
@@ -189,7 +200,7 @@ AFLAGS := -D__ASSEMBLY__ $(CPPFLAGS)
export VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION KERNELRELEASE ARCH \
CONFIG_SHELL TOPDIR HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC \
CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE \
- HOSTCXX HOSTCXXFLAGS LDFLAGS_BLOB LDFLAGS_MODULE
+ HOSTCXX HOSTCXXFLAGS LDFLAGS_BLOB LDFLAGS_MODULE CHECK
export CPPFLAGS NOSTDINC_FLAGS OBJCOPYFLAGS LDFLAGS
export CFLAGS CFLAGS_KERNEL CFLAGS_MODULE
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 4f3f9e3346a9..21d1a162b519 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -66,6 +66,12 @@ __build: $(if $(KBUILD_BUILTIN),$(O_TARGET) $(L_TARGET) $(extra-y)) \
$(subdir-ym) $(always)
@:
+# Linus's kernel sanity checking tool
+ifneq ($(KBUILD_CHECKSRC),0)
+quiet_cmd_checksrc = CHECK $<
+ cmd_checksrc = $(CHECK) $(CFLAGS) $< ;
+endif
+
# Module versioning
# ---------------------------------------------------------------------------
@@ -91,6 +97,8 @@ quiet_cmd_vcc_o_c = CC $(quiet_modtag) $@
cmd_vcc_o_c = $(CC) $(c_flags) -c -o $(@D)/.tmp_$(@F) $<
define rule_vcc_o_c
+ $(if $($(quiet)cmd_checksrc),echo ' $($(quiet)cmd_checksrc)';) \
+ $(cmd_checksrc) \
$(if $($(quiet)cmd_vcc_o_c),echo ' $($(quiet)cmd_vcc_o_c)';) \
$(cmd_vcc_o_c); \
\
@@ -158,6 +166,15 @@ cmd_cc_i_c = $(CPP) $(c_flags) -o $@ $<
quiet_cmd_cc_o_c = CC $(quiet_modtag) $@
cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
+define rule_cc_o_c
+ $(if $($(quiet)cmd_checksrc),echo ' $($(quiet)cmd_checksrc)';) \
+ $(cmd_checksrc) \
+ $(if $($(quiet)cmd_cc_o_c),echo ' $($(quiet)cmd_cc_o_c)';) \
+ $(cmd_cc_o_c); \
+ scripts/fixdep $(depfile) $@ '$(cmd_cc_o_c)' > $(@D)/.$(@F).tmp; \
+ rm -f $(depfile); \
+ mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd
+endef
# Built-in and composite module parts
@@ -165,7 +182,7 @@ cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
ifdef CONFIG_MODVERSIONS
$(call if_changed_rule,vcc_o_c)
else
- $(call if_changed_dep,cc_o_c)
+ $(call if_changed_rule,cc_o_c)
endif
# Single-part modules are special since we need to mark them in $(MODVERDIR)
@@ -174,7 +191,7 @@ $(single-used-m): %.o: %.c FORCE
ifdef CONFIG_MODVERSIONS
$(call if_changed_rule,vcc_o_c)
else
- $(call if_changed_dep,cc_o_c)
+ $(call if_changed_rule,cc_o_c)
endif
$(touch-module)