From 07aea3a71fc6b07744691eec2dfea705a7b30280 Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Sun, 23 Jul 2006 20:47:50 +0200 Subject: kbuild: use in-kernel unifdef Let headers_install use in-kernel unifdef Signed-off-by: Sam Ravnborg --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index edfc2fdf76c9..b06b1ea46fe5 100644 --- a/Makefile +++ b/Makefile @@ -893,8 +893,8 @@ INSTALL_HDR_PATH=$(objtree)/usr export INSTALL_HDR_PATH PHONY += headers_install -headers_install: include/linux/version.h - $(Q)unifdef -Ux /dev/null +headers_install: include/linux/version.h scripts_basic FORCE + $(Q)$(MAKE) $(build)=scripts scripts/unifdef $(Q)rm -rf $(INSTALL_HDR_PATH)/include $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.headersinst obj=include -- cgit v1.2.2 From 12715d20af9fd9179daca7a1cd2cf3db3c2c494f Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Tue, 8 Aug 2006 20:43:39 +0200 Subject: kbuild: modpost on vmlinux regardless of CONFIG_MODULES Based on patch from: Magnus Damm This has the advantage that all section mismatch checks are run regardless of modules being enabled or not. When running modpost on vmlinux output: MODPOST vmlinux When running modpost on modules output count of modules like this: MODPOST 5 modules Signed-off-by: Sam Ravnborg --- Makefile | 1 + 1 file changed, 1 insertion(+) (limited to 'Makefile') diff --git a/Makefile b/Makefile index b06b1ea46fe5..22451c2ac1e0 100644 --- a/Makefile +++ b/Makefile @@ -736,6 +736,7 @@ endif # ifdef CONFIG_KALLSYMS # vmlinux image - including updated kernel symbols vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE $(call if_changed_rule,vmlinux__) + $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost $@ $(Q)rm -f .old_version # The actual objects are generated when descending, -- cgit v1.2.2 From 45d506bd65e2e35881d8276c111b647807823d19 Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Tue, 8 Aug 2006 21:35:14 +0200 Subject: kbuild: make V=2 tell why a target is rebuild tell why a a target got build enabled by make V=2 Output (listed in the order they are checked): (1) - due to target is PHONY (2) - due to target missing (3) - due to: file1.h file2.h (4) - due to command line change (5) - due to missing .cmd file (6) - due to target not in $(targets) (1) We always build PHONY targets (2) No target, so we better build it (3) Prerequisite is newer than target (4) The command line stored in the file named dir/.target.cmd differed from actual command line. This happens when compiler options changes (5) No dir/.target.cmd file (used to store command line) (6) No dir/.target.cmd file and target not listed in $(targets) This is a good hint that there is a bug in the kbuild file This patch is inspired by a patch from: Milton Miller Cc: Milton Miller Signed-off-by: Sam Ravnborg --- Makefile | 1 + 1 file changed, 1 insertion(+) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 22451c2ac1e0..440a1331d883 100644 --- a/Makefile +++ b/Makefile @@ -1101,6 +1101,7 @@ help: echo '') @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build' + @echo ' make V=2 [targets] 2 => give reason for rebuild of target' @echo ' make O=dir [targets] Locate all output files in "dir", including .config' @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)' @echo ' make C=2 [targets] Force check of all c source with $$CHECK' -- cgit v1.2.2 From b805aa0e79c78bd05ad1f5c52ec126a19531edb0 Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Tue, 8 Aug 2006 21:36:08 +0200 Subject: kbuild: make -rR is now default Do not specify -rR anymore - it is default. Signed-off-by: Sam Ravnborg --- Makefile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 440a1331d883..ccbc8c0a863f 100644 --- a/Makefile +++ b/Makefile @@ -897,11 +897,11 @@ PHONY += headers_install headers_install: include/linux/version.h scripts_basic FORCE $(Q)$(MAKE) $(build)=scripts scripts/unifdef $(Q)rm -rf $(INSTALL_HDR_PATH)/include - $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.headersinst obj=include + $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.headersinst obj=include PHONY += headers_check headers_check: headers_install - $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.headersinst obj=include HDRCHECK=1 + $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.headersinst obj=include HDRCHECK=1 # --------------------------------------------------------------------------- # Modules @@ -917,7 +917,7 @@ all: modules PHONY += modules modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) @echo ' Building modules, stage 2.'; - $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost + $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost # Target to prepare building external modules @@ -943,7 +943,7 @@ _modinst_: rm -f $(MODLIB)/build ; \ ln -s $(objtree) $(MODLIB)/build ; \ fi - $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modinst + $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst # If System.map exists, run depmod. This deliberately does not have a # dependency on System.map since that would run the dependency tree on @@ -1156,7 +1156,7 @@ $(module-dirs): crmodverdir $(objtree)/Module.symvers modules: $(module-dirs) @echo ' Building modules, stage 2.'; - $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost + $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost PHONY += modules_install modules_install: _emodinst_ _emodinst_post @@ -1165,7 +1165,7 @@ install-dir := $(if $(INSTALL_MOD_DIR),$(INSTALL_MOD_DIR),extra) PHONY += _emodinst_ _emodinst_: $(Q)mkdir -p $(MODLIB)/$(install-dir) - $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modinst + $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst # Run depmod only is we have System.map and depmod is executable quiet_cmd_depmod = DEPMOD $(KERNELRELEASE) @@ -1381,7 +1381,7 @@ endif %.ko: prepare scripts FORCE $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ $(build)=$(build-dir) $(@:.ko=.o) - $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost + $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost # FIXME Should go into a make.lib or something # =========================================================================== -- cgit v1.2.2 From 4635281c8ea26e9f718c28f8f7713d10ad332eff Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Tue, 8 Aug 2006 21:41:18 +0200 Subject: kbuild: preperly align SYSMAP output Align filenames for SYSMAP with other filenames Signed-off-by: Sam Ravnborg --- Makefile | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index ccbc8c0a863f..fc67adc6d500 100644 --- a/Makefile +++ b/Makefile @@ -639,12 +639,12 @@ define rule_vmlinux__ $(call cmd,vmlinux__) $(Q)echo 'cmd_$@ := $(cmd_vmlinux__)' > $(@D)/.$(@F).cmd - $(Q)$(if $($(quiet)cmd_sysmap), \ - echo ' $($(quiet)cmd_sysmap) System.map' &&) \ - $(cmd_sysmap) $@ System.map; \ - if [ $$? -ne 0 ]; then \ - rm -f $@; \ - /bin/false; \ + $(Q)$(if $($(quiet)cmd_sysmap), \ + echo ' $($(quiet)cmd_sysmap) System.map' &&) \ + $(cmd_sysmap) $@ System.map; \ + if [ $$? -ne 0 ]; then \ + rm -f $@; \ + /bin/false; \ fi; $(verify_kallsyms) endef @@ -677,12 +677,12 @@ endif kallsyms.o := .tmp_kallsyms$(last_kallsyms).o define verify_kallsyms - $(Q)$(if $($(quiet)cmd_sysmap), \ - echo ' $($(quiet)cmd_sysmap) .tmp_System.map' &&) \ + $(Q)$(if $($(quiet)cmd_sysmap), \ + echo ' $($(quiet)cmd_sysmap) .tmp_System.map' &&) \ $(cmd_sysmap) .tmp_vmlinux$(last_kallsyms) .tmp_System.map - $(Q)cmp -s System.map .tmp_System.map || \ - (echo Inconsistent kallsyms data; \ - echo Try setting CONFIG_KALLSYMS_EXTRA_PASS; \ + $(Q)cmp -s System.map .tmp_System.map || \ + (echo Inconsistent kallsyms data; \ + echo Try setting CONFIG_KALLSYMS_EXTRA_PASS; \ rm .tmp_kallsyms* ; /bin/false ) endef -- cgit v1.2.2 From b32c8268475358cfa18cf9373e6f95c661a7a142 Mon Sep 17 00:00:00 2001 From: "Robert P. J. Day" Date: Mon, 11 Sep 2006 12:09:42 -0400 Subject: kbuild: update help in top level Makefile Signed-off-by: Sam Ravnborg --- Makefile | 1 + 1 file changed, 1 insertion(+) (limited to 'Makefile') diff --git a/Makefile b/Makefile index fc67adc6d500..0d4a4dc7222d 100644 --- a/Makefile +++ b/Makefile @@ -1060,6 +1060,7 @@ help: @echo 'Cleaning targets:' @echo ' clean - remove most generated files but keep the config' @echo ' mrproper - remove all generated files + config + various backup files' + @echo ' distclean - mrproper + patch files' @echo '' @echo 'Configuration targets:' @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help -- cgit v1.2.2 From 1c7bafe7206d928eaccbcbd08d868733e0fb7054 Mon Sep 17 00:00:00 2001 From: "Robert P. J. Day" Date: Wed, 13 Sep 2006 07:57:50 -0400 Subject: kbuild: clarify "make C=" build option Clarify the use of "make C=" in the top-level Makefile, and fix a typo in the Documentation file. Signed-off-by: Sam Ravnborg --- Makefile | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 0d4a4dc7222d..cd50298fbda7 100644 --- a/Makefile +++ b/Makefile @@ -41,9 +41,15 @@ ifndef KBUILD_VERBOSE KBUILD_VERBOSE = 0 endif -# Call checker as part of compilation of C files -# Use 'make C=1' to enable checking (sparse, by default) -# Override with 'make C=1 CHECK=checker_executable CHECKFLAGS=....' +# Call a source code checker (by default, "sparse") as part of the +# C compilation. +# +# Use 'make C=1' to enable checking of only re-compiled files. +# Use 'make C=2' to enable checking of *all* source files, regardless +# of whether they are re-compiled or not. +# +# See the file "Documentation/sparse.txt" for more details, including +# where to get the "sparse" utility. ifdef C ifeq ("$(origin C)", "command line") -- cgit v1.2.2 From da7c04083c113c67800f1e13fe92a186e1f9084e Mon Sep 17 00:00:00 2001 From: Aron Griffis Date: Thu, 21 Sep 2006 00:27:02 -0400 Subject: kbuild: Extend kbuild/defconfig tags support to exuberant ctags The following patch extends kbuild/defconfig tags support to exuberant ctags. The previous support is only for emacs ctags/etags programs. This patch also corrects the kconfig regex for the emacs invocation. Previously it would miss some instances because it assumed /^config instead of /^[ \t]*config Signed-off-by: Aron Griffis Signed-off-by: Sam Ravnborg --- Makefile | 44 +++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index cd50298fbda7..13bc589c6056 100644 --- a/Makefile +++ b/Makefile @@ -1273,6 +1273,31 @@ define all-defconfigs $(call find-sources,'defconfig') endef +define xtags + if $1 --version 2>&1 | grep -iq exuberant; then \ + $(all-sources) | xargs $1 -a \ + -I __initdata,__exitdata,__acquires,__releases \ + -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \ + --extra=+f --c-kinds=+px; \ + $(all-kconfigs) | xargs $1 -a \ + --langdef=kconfig \ + --language-force=kconfig \ + --regex-kconfig='/^[[:blank:]]*config[[:blank:]]+([[:alnum:]_]+)/\1/'; \ + $(all-defconfigs) | xargs $1 -a \ + --langdef=dotconfig \ + --language-force=dotconfig \ + --regex-dotconfig='/^#?[[:blank:]]*(CONFIG_[[:alnum:]_]+)/\1/'; \ + elif $1 --version 2>&1 | grep -iq emacs; then \ + $(all-sources) | xargs $1 -a; \ + $(all-kconfigs) | xargs $1 -a \ + --regex='/^[ \t]*config[ \t]+\([a-zA-Z0-9_]+\)/\1/'; \ + $(all-defconfigs) | xargs $1 -a \ + --regex='/^#?[ \t]?\(CONFIG_[a-zA-Z0-9_]+\)/\1/'; \ + else \ + $(all-sources) | xargs $1 -a; \ + fi +endef + quiet_cmd_cscope-file = FILELST cscope.files cmd_cscope-file = (echo \-k; echo \-q; $(all-sources)) > cscope.files @@ -1286,31 +1311,16 @@ cscope: FORCE quiet_cmd_TAGS = MAKE $@ define cmd_TAGS rm -f $@; \ - ETAGSF=`etags --version | grep -i exuberant >/dev/null && \ - echo "-I __initdata,__exitdata,__acquires,__releases \ - -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \ - --extra=+f --c-kinds=+px"`; \ - $(all-sources) | xargs etags $$ETAGSF -a; \ - if test "x$$ETAGSF" = x; then \ - $(all-kconfigs) | xargs etags -a \ - --regex='/^config[ \t]+\([a-zA-Z0-9_]+\)/\1/'; \ - $(all-defconfigs) | xargs etags -a \ - --regex='/^#?[ \t]?\(CONFIG_[a-zA-Z0-9_]+\)/\1/'; \ - fi + $(call xtags,etags) endef TAGS: FORCE $(call cmd,TAGS) - quiet_cmd_tags = MAKE $@ define cmd_tags rm -f $@; \ - CTAGSF=`ctags --version | grep -i exuberant >/dev/null && \ - echo "-I __initdata,__exitdata,__acquires,__releases \ - -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \ - --extra=+f --c-kinds=+px"`; \ - $(all-sources) | xargs ctags $$CTAGSF -a + $(call xtags,ctags) endef tags: FORCE -- cgit v1.2.2 From 1ef988569051d47e990fe5bbea22fb9b64152098 Mon Sep 17 00:00:00 2001 From: "Robert P. J. Day" Date: Tue, 12 Sep 2006 12:38:19 -0400 Subject: kbuild: correct and clarify versioning info in Makefile The attached patch clarifies the creation of KERNELRELEASE and corrects an error regarding the use of $(LOCALVERSION). Signed-off-by: Sam Ravnborg --- Makefile | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 13bc589c6056..241fed3a74a6 100644 --- a/Makefile +++ b/Makefile @@ -760,12 +760,34 @@ $(vmlinux-dirs): prepare scripts $(Q)$(MAKE) $(build)=$@ # Build the kernel release string -# The KERNELRELEASE is stored in a file named include/config/kernel.release -# to be used when executing for example make install or make modules_install # -# Take the contents of any files called localversion* and the config -# variable CONFIG_LOCALVERSION and append them to KERNELRELEASE. -# LOCALVERSION from the command line override all of this +# The KERNELRELEASE value built here is stored in the file +# include/config/kernel.release, and is used when executing several +# make targets, such as "make install" or "make modules_install." +# +# The eventual kernel release string consists of the following fields, +# shown in a hierarchical format to show how smaller parts are concatenated +# to form the larger and final value, with values coming from places like +# the Makefile, kernel config options, make command line options and/or +# SCM tag information. +# +# $(KERNELVERSION) +# $(VERSION) eg, 2 +# $(PATCHLEVEL) eg, 6 +# $(SUBLEVEL) eg, 18 +# $(EXTRAVERSION) eg, -rc6 +# $(localver-full) +# $(localver) +# localversion* (all localversion* files) +# $(CONFIG_LOCALVERSION) (from kernel config setting) +# $(localver-auto) (only if CONFIG_LOCALVERSION_AUTO is set) +# ./scripts/setlocalversion (SCM tag, if one exists) +# $(LOCALVERSION) (from make command line if provided) +# +# Note how the final $(localver-auto) string is included *only* if the +# kernel config option CONFIG_LOCALVERSION_AUTO is selected. Also, at the +# moment, only git is supported but other SCMs can edit the script +# scripts/setlocalversion and add the appropriate checks as needed. nullstring := space := $(nullstring) # end of line -- cgit v1.2.2 From 5cc8d246d0ebbdf827d4bb7c3de175377d244d73 Mon Sep 17 00:00:00 2001 From: Jesper Juhl Date: Sun, 24 Sep 2006 14:01:08 +0200 Subject: kbuild: add distclean info to 'make help' and more details for 'clean' Add distclean info, that was previously missing, to 'make help'. Also add a few more details to the 'make clean' help text. Signed-off-by: Jesper Juhl Signed-off-by: Sam Ravnborg --- Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 241fed3a74a6..fce530a66e33 100644 --- a/Makefile +++ b/Makefile @@ -1086,9 +1086,10 @@ boards := $(notdir $(boards)) help: @echo 'Cleaning targets:' - @echo ' clean - remove most generated files but keep the config' + @echo ' clean - remove most generated files but keep the config and' + @echo ' enough build support to build external modules' @echo ' mrproper - remove all generated files + config + various backup files' - @echo ' distclean - mrproper + patch files' + @echo ' distclean - mrproper + remove editor backup and patch files' @echo '' @echo 'Configuration targets:' @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help -- cgit v1.2.2