Loading Documentation/kbuild/makefiles.txt +2 −2 Original line number Diff line number Diff line Loading @@ -1033,9 +1033,9 @@ When kbuild executes the following steps are followed (roughly): Example: #arch/i386/Makefile GCC_VERSION := $(call cc-version) cflags-y += $(shell \ if [ $(GCC_VERSION) -ge 0300 ] ; then echo "-mregparm=3"; fi ;) if [ $(call cc-version) -ge 0300 ] ; then \ echo "-mregparm=3"; fi ;) In the above example -mregparm=3 is only used for gcc version greater than or equal to gcc 3.0. Loading Kbuild +2 −3 Original line number Diff line number Diff line Loading @@ -22,8 +22,6 @@ sed-$(CONFIG_MIPS) := "/^@@@/s///p" quiet_cmd_offsets = GEN $@ define cmd_offsets mkdir -p $(dir $@); \ cat $< | \ (set -e; \ echo "#ifndef __ASM_OFFSETS_H__"; \ echo "#define __ASM_OFFSETS_H__"; \ Loading @@ -34,7 +32,7 @@ define cmd_offsets echo " *"; \ echo " */"; \ echo ""; \ sed -ne $(sed-y); \ sed -ne $(sed-y) $<; \ echo ""; \ echo "#endif" ) > $@ endef Loading @@ -45,5 +43,6 @@ arch/$(ARCH)/kernel/asm-offsets.s: arch/$(ARCH)/kernel/asm-offsets.c FORCE $(call if_changed_dep,cc_s_c) $(obj)/$(offsets-file): arch/$(ARCH)/kernel/asm-offsets.s Kbuild $(Q)mkdir -p $(dir $@) $(call cmd,offsets) Makefile +54 −43 Original line number Diff line number Diff line Loading @@ -141,24 +141,6 @@ VPATH := $(srctree) export srctree objtree VPATH TOPDIR nullstring := space := $(nullstring) # end of line # Take the contents of any files called localversion* and the config # variable CONFIG_LOCALVERSION and append them to KERNELRELEASE. Be # careful not to include files twice if building in the source # directory. LOCALVERSION from the command line override all of this localver := $(objtree)/localversion* $(srctree)/localversion* localver := $(sort $(wildcard $(localver))) # skip backup files (containing '~') localver := $(foreach f, $(localver), $(if $(findstring ~, $(f)),,$(f))) LOCALVERSION = $(subst $(space),, \ $(shell cat /dev/null $(localver)) \ $(patsubst "%",%,$(CONFIG_LOCALVERSION))) KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)$(LOCALVERSION) # SUBARCH tells the usermode build what the underlying arch is. That is set # first, and if a usermode build is happening, the "ARCH=um" on the command Loading Loading @@ -353,7 +335,10 @@ CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ -ffreestanding AFLAGS := -D__ASSEMBLY__ export VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION LOCALVERSION KERNELRELEASE \ # Read KERNELRELEASE from .kernelrelease (if it exists) KERNELRELEASE = $(shell cat .kernelrelease 2> /dev/null) export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE \ ARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC \ CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE \ HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS Loading Loading @@ -551,26 +536,6 @@ 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 @@ -782,6 +747,50 @@ $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ; $(vmlinux-dirs): prepare scripts $(Q)$(MAKE) $(build)=$@ # Build the kernel release string # The KERNELRELEASE is stored in a file named .kernelrelease # 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 nullstring := space := $(nullstring) # end of line ___localver = $(objtree)/localversion* $(srctree)/localversion* __localver = $(sort $(wildcard $(___localver))) # skip backup files (containing '~') _localver = $(foreach f, $(__localver), $(if $(findstring ~, $(f)),,$(f))) localver = $(subst $(space),, \ $(shell cat /dev/null $(_localver)) \ $(patsubst "%",%,$(CONFIG_LOCALVERSION))) # If CONFIG_LOCALVERSION_AUTO is set scripts/setlocalversion is called # and if the SCM is know a tag from the SCM is appended. # The appended tag is determinded by the SCM used. # # Currently, only git is supported. # Other SCMs can edit scripts/setlocalversion and add the appropriate # checks as needed. ifdef CONFIG_LOCALVERSION_AUTO _localver-auto = $(shell $(CONFIG_SHELL) \ $(srctree)/scripts/setlocalversion $(srctree)) localver-auto = $(LOCALVERSION)$(_localver-auto) endif localver-full = $(localver)$(localver-auto) # Store (new) KERNELRELASE string in .kernelrelease kernelrelease = \ $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)$(localver-full) .kernelrelease: FORCE $(Q)rm -f .kernelrelease $(Q)echo $(kernelrelease) > .kernelrelease $(Q)echo " Building kernel $(kernelrelease)" # Things we need to do before we recursively start building the kernel # or the modules are listed in "prepare". # A multi level approach is used. prepareN is processed before prepareN-1. Loading @@ -798,8 +807,7 @@ $(vmlinux-dirs): prepare scripts # and if so do: # 1) Check that make has not been executed in the kernel src $(srctree) # 2) Create the include2 directory, used for the second asm symlink prepare3: prepare3: .kernelrelease ifneq ($(KBUILD_SRC),) @echo ' Using $(srctree) as source for kernel' $(Q)if [ -f $(srctree)/.config ]; then \ Loading Loading @@ -984,9 +992,9 @@ CLEAN_FILES += vmlinux System.map \ # Directories & files removed with 'make mrproper' MRPROPER_DIRS += include/config include2 MRPROPER_FILES += .config .config.old include/asm .version \ MRPROPER_FILES += .config .config.old include/asm .version .old_version \ include/linux/autoconf.h include/linux/version.h \ Module.symvers tags TAGS cscope* .kernelrelease Module.symvers tags TAGS cscope* # clean - Delete most, but leave enough to build external modules # Loading Loading @@ -1072,6 +1080,7 @@ help: @echo ' tags/TAGS - Generate tags file for editors' @echo ' cscope - Generate cscope index' @echo ' kernelrelease - Output the release version string' @echo ' kernelversion - Output the version stored in Makefile' @echo '' @echo 'Static analysers' @echo ' buildcheck - List dangling references to vmlinux discarded sections' Loading Loading @@ -1293,6 +1302,8 @@ checkstack: kernelrelease: @echo $(KERNELRELEASE) kernelversion: @echo $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) # FIXME Should go into a make.lib or something # =========================================================================== Loading arch/frv/boot/Makefile +2 −2 Original line number Diff line number Diff line Loading @@ -57,10 +57,10 @@ initrd: # installation # install: $(CONFIGURE) Image sh ./install.sh $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) Image $(TOPDIR)/System.map "$(INSTALL_PATH)" sh ./install.sh $(KERNELRELEASE) Image $(TOPDIR)/System.map "$(INSTALL_PATH)" zinstall: $(CONFIGURE) zImage sh ./install.sh $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) zImage $(TOPDIR)/System.map "$(INSTALL_PATH)" sh ./install.sh $(KERNELRELEASE) zImage $(TOPDIR)/System.map "$(INSTALL_PATH)" # # miscellany Loading arch/i386/Makefile +6 −4 Original line number Diff line number Diff line Loading @@ -37,7 +37,10 @@ CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2) # CPU-specific tuning. Anything which can be shared with UML should go here. include $(srctree)/arch/i386/Makefile.cpu cflags-$(CONFIG_REGPARM) += -mregparm=3 # -mregparm=3 works ok on gcc-3.0 and later # cflags-$(CONFIG_REGPARM) += $(shell if [ $(call cc-version) -ge 0300 ] ; then \ echo "-mregparm=3"; fi ;) # Disable unit-at-a-time mode, it makes gcc use a lot more stack # due to the lack of sharing of stacklots. Loading Loading @@ -100,7 +103,7 @@ AFLAGS += $(mflags-y) boot := arch/i386/boot .PHONY: zImage bzImage compressed zlilo bzlilo \ zdisk bzdisk fdimage fdimage144 fdimage288 install kernel_install zdisk bzdisk fdimage fdimage144 fdimage288 install all: bzImage Loading @@ -122,8 +125,7 @@ zdisk bzdisk: vmlinux fdimage fdimage144 fdimage288: vmlinux $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) $@ install: vmlinux install kernel_install: install: $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) install archclean: Loading Loading
Documentation/kbuild/makefiles.txt +2 −2 Original line number Diff line number Diff line Loading @@ -1033,9 +1033,9 @@ When kbuild executes the following steps are followed (roughly): Example: #arch/i386/Makefile GCC_VERSION := $(call cc-version) cflags-y += $(shell \ if [ $(GCC_VERSION) -ge 0300 ] ; then echo "-mregparm=3"; fi ;) if [ $(call cc-version) -ge 0300 ] ; then \ echo "-mregparm=3"; fi ;) In the above example -mregparm=3 is only used for gcc version greater than or equal to gcc 3.0. Loading
Kbuild +2 −3 Original line number Diff line number Diff line Loading @@ -22,8 +22,6 @@ sed-$(CONFIG_MIPS) := "/^@@@/s///p" quiet_cmd_offsets = GEN $@ define cmd_offsets mkdir -p $(dir $@); \ cat $< | \ (set -e; \ echo "#ifndef __ASM_OFFSETS_H__"; \ echo "#define __ASM_OFFSETS_H__"; \ Loading @@ -34,7 +32,7 @@ define cmd_offsets echo " *"; \ echo " */"; \ echo ""; \ sed -ne $(sed-y); \ sed -ne $(sed-y) $<; \ echo ""; \ echo "#endif" ) > $@ endef Loading @@ -45,5 +43,6 @@ arch/$(ARCH)/kernel/asm-offsets.s: arch/$(ARCH)/kernel/asm-offsets.c FORCE $(call if_changed_dep,cc_s_c) $(obj)/$(offsets-file): arch/$(ARCH)/kernel/asm-offsets.s Kbuild $(Q)mkdir -p $(dir $@) $(call cmd,offsets)
Makefile +54 −43 Original line number Diff line number Diff line Loading @@ -141,24 +141,6 @@ VPATH := $(srctree) export srctree objtree VPATH TOPDIR nullstring := space := $(nullstring) # end of line # Take the contents of any files called localversion* and the config # variable CONFIG_LOCALVERSION and append them to KERNELRELEASE. Be # careful not to include files twice if building in the source # directory. LOCALVERSION from the command line override all of this localver := $(objtree)/localversion* $(srctree)/localversion* localver := $(sort $(wildcard $(localver))) # skip backup files (containing '~') localver := $(foreach f, $(localver), $(if $(findstring ~, $(f)),,$(f))) LOCALVERSION = $(subst $(space),, \ $(shell cat /dev/null $(localver)) \ $(patsubst "%",%,$(CONFIG_LOCALVERSION))) KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)$(LOCALVERSION) # SUBARCH tells the usermode build what the underlying arch is. That is set # first, and if a usermode build is happening, the "ARCH=um" on the command Loading Loading @@ -353,7 +335,10 @@ CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ -ffreestanding AFLAGS := -D__ASSEMBLY__ export VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION LOCALVERSION KERNELRELEASE \ # Read KERNELRELEASE from .kernelrelease (if it exists) KERNELRELEASE = $(shell cat .kernelrelease 2> /dev/null) export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE \ ARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC \ CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE \ HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS Loading Loading @@ -551,26 +536,6 @@ 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 @@ -782,6 +747,50 @@ $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ; $(vmlinux-dirs): prepare scripts $(Q)$(MAKE) $(build)=$@ # Build the kernel release string # The KERNELRELEASE is stored in a file named .kernelrelease # 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 nullstring := space := $(nullstring) # end of line ___localver = $(objtree)/localversion* $(srctree)/localversion* __localver = $(sort $(wildcard $(___localver))) # skip backup files (containing '~') _localver = $(foreach f, $(__localver), $(if $(findstring ~, $(f)),,$(f))) localver = $(subst $(space),, \ $(shell cat /dev/null $(_localver)) \ $(patsubst "%",%,$(CONFIG_LOCALVERSION))) # If CONFIG_LOCALVERSION_AUTO is set scripts/setlocalversion is called # and if the SCM is know a tag from the SCM is appended. # The appended tag is determinded by the SCM used. # # Currently, only git is supported. # Other SCMs can edit scripts/setlocalversion and add the appropriate # checks as needed. ifdef CONFIG_LOCALVERSION_AUTO _localver-auto = $(shell $(CONFIG_SHELL) \ $(srctree)/scripts/setlocalversion $(srctree)) localver-auto = $(LOCALVERSION)$(_localver-auto) endif localver-full = $(localver)$(localver-auto) # Store (new) KERNELRELASE string in .kernelrelease kernelrelease = \ $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)$(localver-full) .kernelrelease: FORCE $(Q)rm -f .kernelrelease $(Q)echo $(kernelrelease) > .kernelrelease $(Q)echo " Building kernel $(kernelrelease)" # Things we need to do before we recursively start building the kernel # or the modules are listed in "prepare". # A multi level approach is used. prepareN is processed before prepareN-1. Loading @@ -798,8 +807,7 @@ $(vmlinux-dirs): prepare scripts # and if so do: # 1) Check that make has not been executed in the kernel src $(srctree) # 2) Create the include2 directory, used for the second asm symlink prepare3: prepare3: .kernelrelease ifneq ($(KBUILD_SRC),) @echo ' Using $(srctree) as source for kernel' $(Q)if [ -f $(srctree)/.config ]; then \ Loading Loading @@ -984,9 +992,9 @@ CLEAN_FILES += vmlinux System.map \ # Directories & files removed with 'make mrproper' MRPROPER_DIRS += include/config include2 MRPROPER_FILES += .config .config.old include/asm .version \ MRPROPER_FILES += .config .config.old include/asm .version .old_version \ include/linux/autoconf.h include/linux/version.h \ Module.symvers tags TAGS cscope* .kernelrelease Module.symvers tags TAGS cscope* # clean - Delete most, but leave enough to build external modules # Loading Loading @@ -1072,6 +1080,7 @@ help: @echo ' tags/TAGS - Generate tags file for editors' @echo ' cscope - Generate cscope index' @echo ' kernelrelease - Output the release version string' @echo ' kernelversion - Output the version stored in Makefile' @echo '' @echo 'Static analysers' @echo ' buildcheck - List dangling references to vmlinux discarded sections' Loading Loading @@ -1293,6 +1302,8 @@ checkstack: kernelrelease: @echo $(KERNELRELEASE) kernelversion: @echo $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) # FIXME Should go into a make.lib or something # =========================================================================== Loading
arch/frv/boot/Makefile +2 −2 Original line number Diff line number Diff line Loading @@ -57,10 +57,10 @@ initrd: # installation # install: $(CONFIGURE) Image sh ./install.sh $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) Image $(TOPDIR)/System.map "$(INSTALL_PATH)" sh ./install.sh $(KERNELRELEASE) Image $(TOPDIR)/System.map "$(INSTALL_PATH)" zinstall: $(CONFIGURE) zImage sh ./install.sh $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) zImage $(TOPDIR)/System.map "$(INSTALL_PATH)" sh ./install.sh $(KERNELRELEASE) zImage $(TOPDIR)/System.map "$(INSTALL_PATH)" # # miscellany Loading
arch/i386/Makefile +6 −4 Original line number Diff line number Diff line Loading @@ -37,7 +37,10 @@ CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2) # CPU-specific tuning. Anything which can be shared with UML should go here. include $(srctree)/arch/i386/Makefile.cpu cflags-$(CONFIG_REGPARM) += -mregparm=3 # -mregparm=3 works ok on gcc-3.0 and later # cflags-$(CONFIG_REGPARM) += $(shell if [ $(call cc-version) -ge 0300 ] ; then \ echo "-mregparm=3"; fi ;) # Disable unit-at-a-time mode, it makes gcc use a lot more stack # due to the lack of sharing of stacklots. Loading Loading @@ -100,7 +103,7 @@ AFLAGS += $(mflags-y) boot := arch/i386/boot .PHONY: zImage bzImage compressed zlilo bzlilo \ zdisk bzdisk fdimage fdimage144 fdimage288 install kernel_install zdisk bzdisk fdimage fdimage144 fdimage288 install all: bzImage Loading @@ -122,8 +125,7 @@ zdisk bzdisk: vmlinux fdimage fdimage144 fdimage288: vmlinux $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) $@ install: vmlinux install kernel_install: install: $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) install archclean: Loading