Loading Documentation/kbuild/makefiles.txt +6 −0 Original line number Diff line number Diff line Loading @@ -872,7 +872,13 @@ When kbuild executes the following steps are followed (roughly): Assignments to $(targets) are without $(obj)/ prefix. if_changed may be used in conjunction with custom commands as defined in 6.7 "Custom kbuild commands". Note: It is a typical mistake to forget the FORCE prerequisite. Another common pitfall is that whitespace is sometimes significant; for instance, the below will fail (note the extra space after the comma): target: source(s) FORCE #WRONG!# $(call if_changed, ld/objcopy/gzip) ld Link target. Often LDFLAGS_$@ is used to set specific options to ld. Loading Makefile +64 −96 Original line number Diff line number Diff line Loading @@ -110,9 +110,8 @@ $(if $(KBUILD_OUTPUT),, \ $(filter-out _all,$(MAKECMDGOALS)) _all: $(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \ KBUILD_SRC=$(CURDIR) KBUILD_VERBOSE=$(KBUILD_VERBOSE) \ KBUILD_CHECK=$(KBUILD_CHECK) KBUILD_EXTMOD="$(KBUILD_EXTMOD)" \ -f $(CURDIR)/Makefile $@ KBUILD_SRC=$(CURDIR) \ KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile $@ # Leave processing to above invocation of make skip-makefile := 1 Loading Loading @@ -233,7 +232,7 @@ ifeq ($(MAKECMDGOALS),) KBUILD_MODULES := 1 endif export KBUILD_MODULES KBUILD_BUILTIN KBUILD_VERBOSE export KBUILD_MODULES KBUILD_BUILTIN export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD # Beautify output Loading Loading @@ -309,6 +308,9 @@ cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh \ # Look for make include files relative to root of kernel src MAKEFLAGS += --include-dir=$(srctree) # We need some generic definitions include $(srctree)/scripts/Kbuild.include # For maximum performance (+ possibly random breakage, uncomment # the following) Loading Loading @@ -348,7 +350,7 @@ LINUXINCLUDE := -Iinclude \ CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE) CFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs \ CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ -fno-strict-aliasing -fno-common \ -ffreestanding AFLAGS := -D__ASSEMBLY__ Loading @@ -367,11 +369,6 @@ export AFLAGS AFLAGS_KERNEL AFLAGS_MODULE # even be read-only. export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions # The temporary file to save gcc -MD generated dependencies must not # contain a comma comma := , depfile = $(subst $(comma),_,$(@D)/.$(@F).d) # Files to ignore in find ... statements RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS -o -name .pc -o -name .hg \) -prune -o Loading Loading @@ -551,6 +548,26 @@ export KBUILD_IMAGE ?= vmlinux # images. Default is /boot, but you can set it to other values export INSTALL_PATH ?= /boot # If CONFIG_LOCALVERSION_AUTO is set, we automatically perform some tests # and try to determine if the current source tree is a release tree, of any sort, # or if is a pure development tree. # # A 'release tree' is any tree with a git TAG associated # with it. The primary goal of this is to make it safe for a native # git/CVS/SVN user to build a release tree (i.e, 2.6.9) and also to # continue developing against the current Linus tree, without having the Linus # tree overwrite the 2.6.9 tree when installed. # # Currently, only git is supported. # Other SCMs can edit scripts/setlocalversion and add the appropriate # checks as needed. ifdef CONFIG_LOCALVERSION_AUTO localversion-auto := $(shell $(PERL) $(srctree)/scripts/setlocalversion $(srctree)) LOCALVERSION := $(LOCALVERSION)$(localversion-auto) endif # # INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory # relocations required by build roots. This is not defined in the Loading Loading @@ -691,8 +708,10 @@ endef # Update vmlinux version before link # Use + in front of this rule to silent warning about make -j1 # First command is ':' to allow us to use + in front of this rule cmd_ksym_ld = $(cmd_vmlinux__) define rule_ksym_ld : +$(call cmd,vmlinux_version) $(call cmd,vmlinux__) $(Q)echo 'cmd_$@ := $(cmd_vmlinux__)' > $(@D)/.$(@F).cmd Loading Loading @@ -722,6 +741,16 @@ quiet_cmd_kallsyms = KSYM $@ # Needs to visit scripts/ before $(KALLSYMS) can be used. $(KALLSYMS): scripts ; # Generate some data for debugging strange kallsyms problems debug_kallsyms: .tmp_map$(last_kallsyms) .tmp_map%: .tmp_vmlinux% FORCE ($(OBJDUMP) -h $< | $(AWK) '/^ +[0-9]/{print $$4 " 0 " $$2}'; $(NM) $<) | sort > $@ .tmp_map3: .tmp_map2 .tmp_map2: .tmp_map1 endif # ifdef CONFIG_KALLSYMS # vmlinux image - including updated kernel symbols Loading Loading @@ -757,7 +786,7 @@ $(vmlinux-dirs): prepare-all scripts prepare2: ifneq ($(KBUILD_SRC),) @echo ' Using $(srctree) as source for kernel' $(Q)if [ -h $(srctree)/include/asm -o -f $(srctree)/.config ]; then \ $(Q)if [ -f $(srctree)/.config ]; then \ echo " $(srctree) is not clean, please run 'make mrproper'";\ echo " in the '$(srctree)' directory.";\ /bin/false; \ Loading @@ -769,7 +798,8 @@ endif # prepare1 creates a makefile if using a separate output directory prepare1: prepare2 outputmakefile prepare0: prepare1 include/linux/version.h include/asm include/config/MARKER prepare0: prepare1 include/linux/version.h include/asm \ include/config/MARKER ifneq ($(KBUILD_MODULES),) $(Q)rm -rf $(MODVERDIR) $(Q)mkdir -p $(MODVERDIR) Loading Loading @@ -875,7 +905,7 @@ modules_install: _modinst_ _modinst_post .PHONY: _modinst_ _modinst_: @if [ -z "`$(DEPMOD) -V | grep module-init-tools`" ]; then \ @if [ -z "`$(DEPMOD) -V 2>/dev/null | grep module-init-tools`" ]; then \ echo "Warning: you may need to install module-init-tools"; \ echo "See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt";\ sleep 1; \ Loading Loading @@ -1159,37 +1189,49 @@ else __srctree = $(srctree)/ endif ALLSOURCE_ARCHS := $(ARCH) define all-sources ( find $(__srctree) $(RCS_FIND_IGNORE) \ \( -name include -o -name arch \) -prune -o \ -name '*.[chS]' -print; \ find $(__srctree)arch/$(ARCH) $(RCS_FIND_IGNORE) \ for ARCH in $(ALLSOURCE_ARCHS) ; do \ find $(__srctree)arch/$${ARCH} $(RCS_FIND_IGNORE) \ -name '*.[chS]' -print; \ done ; \ find $(__srctree)security/selinux/include $(RCS_FIND_IGNORE) \ -name '*.[chS]' -print; \ find $(__srctree)include $(RCS_FIND_IGNORE) \ \( -name config -o -name 'asm-*' \) -prune \ -o -name '*.[chS]' -print; \ find $(__srctree)include/asm-$(ARCH) $(RCS_FIND_IGNORE) \ for ARCH in $(ALLSOURCE_ARCHS) ; do \ find $(__srctree)include/asm-$${ARCH} $(RCS_FIND_IGNORE) \ -name '*.[chS]' -print; \ done ; \ find $(__srctree)include/asm-generic $(RCS_FIND_IGNORE) \ -name '*.[chS]' -print ) endef quiet_cmd_cscope-file = FILELST cscope.files cmd_cscope-file = $(all-sources) > cscope.files cmd_cscope-file = (echo \-k; echo \-q; $(all-sources)) > cscope.files quiet_cmd_cscope = MAKE cscope.out cmd_cscope = cscope -k -b -q cmd_cscope = cscope -b cscope: FORCE $(call cmd,cscope-file) $(call cmd,cscope) quiet_cmd_TAGS = MAKE $@ cmd_TAGS = $(all-sources) | etags - define cmd_TAGS rm -f $@; \ ETAGSF=`etags --version | grep -i exuberant >/dev/null && echo "-I __initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_GPL --extra=+f"`; \ $(all-sources) | xargs etags $$ETAGSF -a endef TAGS: FORCE $(call cmd,TAGS) # Exuberant ctags works better with -I quiet_cmd_tags = MAKE $@ define cmd_tags Loading @@ -1198,9 +1240,6 @@ define cmd_tags $(all-sources) | xargs ctags $$CTAGSF -a endef TAGS: FORCE $(call cmd,TAGS) tags: FORCE $(call cmd,tags) Loading Loading @@ -1268,82 +1307,11 @@ ifneq ($(cmd_files),) include $(cmd_files) endif # Execute command and generate cmd file if_changed = $(if $(strip $? \ $(filter-out $(cmd_$(1)),$(cmd_$@))\ $(filter-out $(cmd_$@),$(cmd_$(1)))),\ @set -e; \ $(if $($(quiet)cmd_$(1)),echo ' $(subst ','\'',$($(quiet)cmd_$(1)))';) \ $(cmd_$(1)); \ echo 'cmd_$@ := $(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).cmd) # execute the command and also postprocess generated .d dependencies # file if_changed_dep = $(if $(strip $? $(filter-out FORCE $(wildcard $^),$^)\ $(filter-out $(cmd_$(1)),$(cmd_$@))\ $(filter-out $(cmd_$@),$(cmd_$(1)))),\ $(Q)set -e; \ $(if $($(quiet)cmd_$(1)),echo ' $(subst ','\'',$($(quiet)cmd_$(1)))';) \ $(cmd_$(1)); \ scripts/basic/fixdep $(depfile) $@ '$(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).tmp; \ rm -f $(depfile); \ mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd) # Usage: $(call if_changed_rule,foo) # will check if $(cmd_foo) changed, or any of the prequisites changed, # and if so will execute $(rule_foo) if_changed_rule = $(if $(strip $? \ $(filter-out $(cmd_$(1)),$(cmd_$(@F)))\ $(filter-out $(cmd_$(@F)),$(cmd_$(1)))),\ $(Q)$(rule_$(1))) # If quiet is set, only print short version of command cmd = @$(if $($(quiet)cmd_$(1)),echo ' $($(quiet)cmd_$(1))' &&) $(cmd_$(1)) # filechk is used to check if the content of a generated file is updated. # Sample usage: # define filechk_sample # echo $KERNELRELEASE # endef # version.h : Makefile # $(call filechk,sample) # The rule defined shall write to stdout the content of the new file. # The existing file will be compared with the new one. # - If no file exist it is created # - If the content differ the new file is used # - If they are equal no change, and no timestamp update define filechk @set -e; \ echo ' CHK $@'; \ mkdir -p $(dir $@); \ $(filechk_$(1)) < $< > $@.tmp; \ if [ -r $@ ] && cmp -s $@ $@.tmp; then \ rm -f $@.tmp; \ else \ echo ' UPD $@'; \ mv -f $@.tmp $@; \ fi endef # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=dir # Usage: # $(Q)$(MAKE) $(build)=dir build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir # Usage: # $(Q)$(MAKE) $(clean)=dir clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj # $(call descend,<dir>,<target>) # Recursively call a sub-make in <dir> with target <target> # Usage is deprecated, because make does not see this as an invocation of make. descend =$(Q)$(MAKE) -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj=$(1) $(2) endif # skip-makefile FORCE: arch/m68knommu/Makefile +1 −1 Original line number Diff line number Diff line Loading @@ -114,7 +114,7 @@ libs-y += arch/m68knommu/lib/ prepare: include/asm-$(ARCH)/asm-offsets.h archclean: $(call descend arch/$(ARCH)/boot, subdirclean) $(Q)$(MAKE) $(clean)=arch/m68knommu/boot include/asm-$(ARCH)/asm-offsets.h: arch/$(ARCH)/kernel/asm-offsets.s \ include/asm include/linux/version.h \ Loading arch/mips/Makefile +1 −1 Original line number Diff line number Diff line Loading @@ -673,7 +673,7 @@ drivers-$(CONFIG_OPROFILE) += arch/mips/oprofile/ ifdef CONFIG_LASAT rom.bin rom.sw: vmlinux $(call descend,arch/mips/lasat/image,$@) $(Q)$(MAKE) $(build)=arch/mips/lasat/image $@ endif # Loading drivers/block/Kconfig +0 −42 Original line number Diff line number Diff line Loading @@ -408,48 +408,6 @@ config BLK_DEV_INITRD "real" root file system, etc. See <file:Documentation/initrd.txt> for details. config INITRAMFS_SOURCE string "Initramfs source file(s)" default "" help This can be either a single cpio archive with a .cpio suffix or a space-separated list of directories and files for building the initramfs image. A cpio archive should contain a filesystem archive to be used as an initramfs image. Directories should contain a filesystem layout to be included in the initramfs image. Files should contain entries according to the format described by the "usr/gen_init_cpio" program in the kernel tree. When multiple directories and files are specified then the initramfs image will be the aggregate of all of them. See <file:Documentation/early-userspace/README for more details. If you are not sure, leave it blank. config INITRAMFS_ROOT_UID int "User ID to map to 0 (user root)" depends on INITRAMFS_SOURCE!="" default "0" help This setting is only meaningful if the INITRAMFS_SOURCE is contains a directory. Setting this user ID (UID) to something other than "0" will cause all files owned by that UID to be owned by user root in the initial ramdisk image. If you are not sure, leave it set to "0". config INITRAMFS_ROOT_GID int "Group ID to map to 0 (group root)" depends on INITRAMFS_SOURCE!="" default "0" help This setting is only meaningful if the INITRAMFS_SOURCE is contains a directory. Setting this group ID (GID) to something other than "0" will cause all files owned by that GID to be owned by group root in the initial ramdisk image. If you are not sure, leave it set to "0". #XXX - it makes sense to enable this only for 32-bit subarch's, not for x86_64 #for instance. Loading Loading
Documentation/kbuild/makefiles.txt +6 −0 Original line number Diff line number Diff line Loading @@ -872,7 +872,13 @@ When kbuild executes the following steps are followed (roughly): Assignments to $(targets) are without $(obj)/ prefix. if_changed may be used in conjunction with custom commands as defined in 6.7 "Custom kbuild commands". Note: It is a typical mistake to forget the FORCE prerequisite. Another common pitfall is that whitespace is sometimes significant; for instance, the below will fail (note the extra space after the comma): target: source(s) FORCE #WRONG!# $(call if_changed, ld/objcopy/gzip) ld Link target. Often LDFLAGS_$@ is used to set specific options to ld. Loading
Makefile +64 −96 Original line number Diff line number Diff line Loading @@ -110,9 +110,8 @@ $(if $(KBUILD_OUTPUT),, \ $(filter-out _all,$(MAKECMDGOALS)) _all: $(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \ KBUILD_SRC=$(CURDIR) KBUILD_VERBOSE=$(KBUILD_VERBOSE) \ KBUILD_CHECK=$(KBUILD_CHECK) KBUILD_EXTMOD="$(KBUILD_EXTMOD)" \ -f $(CURDIR)/Makefile $@ KBUILD_SRC=$(CURDIR) \ KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile $@ # Leave processing to above invocation of make skip-makefile := 1 Loading Loading @@ -233,7 +232,7 @@ ifeq ($(MAKECMDGOALS),) KBUILD_MODULES := 1 endif export KBUILD_MODULES KBUILD_BUILTIN KBUILD_VERBOSE export KBUILD_MODULES KBUILD_BUILTIN export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD # Beautify output Loading Loading @@ -309,6 +308,9 @@ cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh \ # Look for make include files relative to root of kernel src MAKEFLAGS += --include-dir=$(srctree) # We need some generic definitions include $(srctree)/scripts/Kbuild.include # For maximum performance (+ possibly random breakage, uncomment # the following) Loading Loading @@ -348,7 +350,7 @@ LINUXINCLUDE := -Iinclude \ CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE) CFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs \ CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ -fno-strict-aliasing -fno-common \ -ffreestanding AFLAGS := -D__ASSEMBLY__ Loading @@ -367,11 +369,6 @@ export AFLAGS AFLAGS_KERNEL AFLAGS_MODULE # even be read-only. export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions # The temporary file to save gcc -MD generated dependencies must not # contain a comma comma := , depfile = $(subst $(comma),_,$(@D)/.$(@F).d) # Files to ignore in find ... statements RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS -o -name .pc -o -name .hg \) -prune -o Loading Loading @@ -551,6 +548,26 @@ export KBUILD_IMAGE ?= vmlinux # images. Default is /boot, but you can set it to other values export INSTALL_PATH ?= /boot # If CONFIG_LOCALVERSION_AUTO is set, we automatically perform some tests # and try to determine if the current source tree is a release tree, of any sort, # or if is a pure development tree. # # A 'release tree' is any tree with a git TAG associated # with it. The primary goal of this is to make it safe for a native # git/CVS/SVN user to build a release tree (i.e, 2.6.9) and also to # continue developing against the current Linus tree, without having the Linus # tree overwrite the 2.6.9 tree when installed. # # Currently, only git is supported. # Other SCMs can edit scripts/setlocalversion and add the appropriate # checks as needed. ifdef CONFIG_LOCALVERSION_AUTO localversion-auto := $(shell $(PERL) $(srctree)/scripts/setlocalversion $(srctree)) LOCALVERSION := $(LOCALVERSION)$(localversion-auto) endif # # INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory # relocations required by build roots. This is not defined in the Loading Loading @@ -691,8 +708,10 @@ endef # Update vmlinux version before link # Use + in front of this rule to silent warning about make -j1 # First command is ':' to allow us to use + in front of this rule cmd_ksym_ld = $(cmd_vmlinux__) define rule_ksym_ld : +$(call cmd,vmlinux_version) $(call cmd,vmlinux__) $(Q)echo 'cmd_$@ := $(cmd_vmlinux__)' > $(@D)/.$(@F).cmd Loading Loading @@ -722,6 +741,16 @@ quiet_cmd_kallsyms = KSYM $@ # Needs to visit scripts/ before $(KALLSYMS) can be used. $(KALLSYMS): scripts ; # Generate some data for debugging strange kallsyms problems debug_kallsyms: .tmp_map$(last_kallsyms) .tmp_map%: .tmp_vmlinux% FORCE ($(OBJDUMP) -h $< | $(AWK) '/^ +[0-9]/{print $$4 " 0 " $$2}'; $(NM) $<) | sort > $@ .tmp_map3: .tmp_map2 .tmp_map2: .tmp_map1 endif # ifdef CONFIG_KALLSYMS # vmlinux image - including updated kernel symbols Loading Loading @@ -757,7 +786,7 @@ $(vmlinux-dirs): prepare-all scripts prepare2: ifneq ($(KBUILD_SRC),) @echo ' Using $(srctree) as source for kernel' $(Q)if [ -h $(srctree)/include/asm -o -f $(srctree)/.config ]; then \ $(Q)if [ -f $(srctree)/.config ]; then \ echo " $(srctree) is not clean, please run 'make mrproper'";\ echo " in the '$(srctree)' directory.";\ /bin/false; \ Loading @@ -769,7 +798,8 @@ endif # prepare1 creates a makefile if using a separate output directory prepare1: prepare2 outputmakefile prepare0: prepare1 include/linux/version.h include/asm include/config/MARKER prepare0: prepare1 include/linux/version.h include/asm \ include/config/MARKER ifneq ($(KBUILD_MODULES),) $(Q)rm -rf $(MODVERDIR) $(Q)mkdir -p $(MODVERDIR) Loading Loading @@ -875,7 +905,7 @@ modules_install: _modinst_ _modinst_post .PHONY: _modinst_ _modinst_: @if [ -z "`$(DEPMOD) -V | grep module-init-tools`" ]; then \ @if [ -z "`$(DEPMOD) -V 2>/dev/null | grep module-init-tools`" ]; then \ echo "Warning: you may need to install module-init-tools"; \ echo "See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt";\ sleep 1; \ Loading Loading @@ -1159,37 +1189,49 @@ else __srctree = $(srctree)/ endif ALLSOURCE_ARCHS := $(ARCH) define all-sources ( find $(__srctree) $(RCS_FIND_IGNORE) \ \( -name include -o -name arch \) -prune -o \ -name '*.[chS]' -print; \ find $(__srctree)arch/$(ARCH) $(RCS_FIND_IGNORE) \ for ARCH in $(ALLSOURCE_ARCHS) ; do \ find $(__srctree)arch/$${ARCH} $(RCS_FIND_IGNORE) \ -name '*.[chS]' -print; \ done ; \ find $(__srctree)security/selinux/include $(RCS_FIND_IGNORE) \ -name '*.[chS]' -print; \ find $(__srctree)include $(RCS_FIND_IGNORE) \ \( -name config -o -name 'asm-*' \) -prune \ -o -name '*.[chS]' -print; \ find $(__srctree)include/asm-$(ARCH) $(RCS_FIND_IGNORE) \ for ARCH in $(ALLSOURCE_ARCHS) ; do \ find $(__srctree)include/asm-$${ARCH} $(RCS_FIND_IGNORE) \ -name '*.[chS]' -print; \ done ; \ find $(__srctree)include/asm-generic $(RCS_FIND_IGNORE) \ -name '*.[chS]' -print ) endef quiet_cmd_cscope-file = FILELST cscope.files cmd_cscope-file = $(all-sources) > cscope.files cmd_cscope-file = (echo \-k; echo \-q; $(all-sources)) > cscope.files quiet_cmd_cscope = MAKE cscope.out cmd_cscope = cscope -k -b -q cmd_cscope = cscope -b cscope: FORCE $(call cmd,cscope-file) $(call cmd,cscope) quiet_cmd_TAGS = MAKE $@ cmd_TAGS = $(all-sources) | etags - define cmd_TAGS rm -f $@; \ ETAGSF=`etags --version | grep -i exuberant >/dev/null && echo "-I __initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_GPL --extra=+f"`; \ $(all-sources) | xargs etags $$ETAGSF -a endef TAGS: FORCE $(call cmd,TAGS) # Exuberant ctags works better with -I quiet_cmd_tags = MAKE $@ define cmd_tags Loading @@ -1198,9 +1240,6 @@ define cmd_tags $(all-sources) | xargs ctags $$CTAGSF -a endef TAGS: FORCE $(call cmd,TAGS) tags: FORCE $(call cmd,tags) Loading Loading @@ -1268,82 +1307,11 @@ ifneq ($(cmd_files),) include $(cmd_files) endif # Execute command and generate cmd file if_changed = $(if $(strip $? \ $(filter-out $(cmd_$(1)),$(cmd_$@))\ $(filter-out $(cmd_$@),$(cmd_$(1)))),\ @set -e; \ $(if $($(quiet)cmd_$(1)),echo ' $(subst ','\'',$($(quiet)cmd_$(1)))';) \ $(cmd_$(1)); \ echo 'cmd_$@ := $(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).cmd) # execute the command and also postprocess generated .d dependencies # file if_changed_dep = $(if $(strip $? $(filter-out FORCE $(wildcard $^),$^)\ $(filter-out $(cmd_$(1)),$(cmd_$@))\ $(filter-out $(cmd_$@),$(cmd_$(1)))),\ $(Q)set -e; \ $(if $($(quiet)cmd_$(1)),echo ' $(subst ','\'',$($(quiet)cmd_$(1)))';) \ $(cmd_$(1)); \ scripts/basic/fixdep $(depfile) $@ '$(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).tmp; \ rm -f $(depfile); \ mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd) # Usage: $(call if_changed_rule,foo) # will check if $(cmd_foo) changed, or any of the prequisites changed, # and if so will execute $(rule_foo) if_changed_rule = $(if $(strip $? \ $(filter-out $(cmd_$(1)),$(cmd_$(@F)))\ $(filter-out $(cmd_$(@F)),$(cmd_$(1)))),\ $(Q)$(rule_$(1))) # If quiet is set, only print short version of command cmd = @$(if $($(quiet)cmd_$(1)),echo ' $($(quiet)cmd_$(1))' &&) $(cmd_$(1)) # filechk is used to check if the content of a generated file is updated. # Sample usage: # define filechk_sample # echo $KERNELRELEASE # endef # version.h : Makefile # $(call filechk,sample) # The rule defined shall write to stdout the content of the new file. # The existing file will be compared with the new one. # - If no file exist it is created # - If the content differ the new file is used # - If they are equal no change, and no timestamp update define filechk @set -e; \ echo ' CHK $@'; \ mkdir -p $(dir $@); \ $(filechk_$(1)) < $< > $@.tmp; \ if [ -r $@ ] && cmp -s $@ $@.tmp; then \ rm -f $@.tmp; \ else \ echo ' UPD $@'; \ mv -f $@.tmp $@; \ fi endef # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=dir # Usage: # $(Q)$(MAKE) $(build)=dir build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir # Usage: # $(Q)$(MAKE) $(clean)=dir clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj # $(call descend,<dir>,<target>) # Recursively call a sub-make in <dir> with target <target> # Usage is deprecated, because make does not see this as an invocation of make. descend =$(Q)$(MAKE) -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj=$(1) $(2) endif # skip-makefile FORCE:
arch/m68knommu/Makefile +1 −1 Original line number Diff line number Diff line Loading @@ -114,7 +114,7 @@ libs-y += arch/m68knommu/lib/ prepare: include/asm-$(ARCH)/asm-offsets.h archclean: $(call descend arch/$(ARCH)/boot, subdirclean) $(Q)$(MAKE) $(clean)=arch/m68knommu/boot include/asm-$(ARCH)/asm-offsets.h: arch/$(ARCH)/kernel/asm-offsets.s \ include/asm include/linux/version.h \ Loading
arch/mips/Makefile +1 −1 Original line number Diff line number Diff line Loading @@ -673,7 +673,7 @@ drivers-$(CONFIG_OPROFILE) += arch/mips/oprofile/ ifdef CONFIG_LASAT rom.bin rom.sw: vmlinux $(call descend,arch/mips/lasat/image,$@) $(Q)$(MAKE) $(build)=arch/mips/lasat/image $@ endif # Loading
drivers/block/Kconfig +0 −42 Original line number Diff line number Diff line Loading @@ -408,48 +408,6 @@ config BLK_DEV_INITRD "real" root file system, etc. See <file:Documentation/initrd.txt> for details. config INITRAMFS_SOURCE string "Initramfs source file(s)" default "" help This can be either a single cpio archive with a .cpio suffix or a space-separated list of directories and files for building the initramfs image. A cpio archive should contain a filesystem archive to be used as an initramfs image. Directories should contain a filesystem layout to be included in the initramfs image. Files should contain entries according to the format described by the "usr/gen_init_cpio" program in the kernel tree. When multiple directories and files are specified then the initramfs image will be the aggregate of all of them. See <file:Documentation/early-userspace/README for more details. If you are not sure, leave it blank. config INITRAMFS_ROOT_UID int "User ID to map to 0 (user root)" depends on INITRAMFS_SOURCE!="" default "0" help This setting is only meaningful if the INITRAMFS_SOURCE is contains a directory. Setting this user ID (UID) to something other than "0" will cause all files owned by that UID to be owned by user root in the initial ramdisk image. If you are not sure, leave it set to "0". config INITRAMFS_ROOT_GID int "Group ID to map to 0 (group root)" depends on INITRAMFS_SOURCE!="" default "0" help This setting is only meaningful if the INITRAMFS_SOURCE is contains a directory. Setting this group ID (GID) to something other than "0" will cause all files owned by that GID to be owned by group root in the initial ramdisk image. If you are not sure, leave it set to "0". #XXX - it makes sense to enable this only for 32-bit subarch's, not for x86_64 #for instance. Loading