kbuild: introduce utsrelease.h

include/linux/version.h contained both actual KERNEL version
and UTS_RELEASE that contains a subset from git SHA1 for when
kernel was compiled as part of a git repository.
This had the unfortunate side-effect that all files including version.h
would be recompiled when some git changes was made due to changes SHA1.
Split it out so we keep independent parts in separate files.

Also update checkversion.pl script to no longer check for UTS_RELEASE.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

+34 -28
+19 -13
Makefile
··· 812 # prepare2 creates a makefile if using a separate output directory 813 prepare2: prepare3 outputmakefile 814 815 - prepare1: prepare2 include/linux/version.h include/asm \ 816 - include/config/auto.conf 817 ifneq ($(KBUILD_MODULES),) 818 $(Q)mkdir -p $(MODVERDIR) 819 $(Q)rm -f $(MODVERDIR)/* ··· 848 # needs to be updated, so this check is forced on all builds 849 850 uts_len := 64 851 - 852 - define filechk_version.h 853 if [ `echo -n "$(KERNELRELEASE)" | wc -c ` -gt $(uts_len) ]; then \ 854 - echo '"$(KERNELRELEASE)" exceeds $(uts_len) characters' >&2; \ 855 - exit 1; \ 856 - fi; \ 857 - (echo \#define UTS_RELEASE \"$(KERNELRELEASE)\"; \ 858 - echo \#define LINUX_VERSION_CODE `expr $(VERSION) \\* 65536 + $(PATCHLEVEL) \\* 256 + $(SUBLEVEL)`; \ 859 - echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))'; \ 860 - ) 861 endef 862 863 - include/linux/version.h: $(srctree)/Makefile include/config/kernel.release FORCE 864 $(call filechk,version.h) 865 866 # --------------------------------------------------------------------------- 867 ··· 960 # Directories & files removed with 'make mrproper' 961 MRPROPER_DIRS += include/config include2 962 MRPROPER_FILES += .config .config.old include/asm .version .old_version \ 963 - include/linux/autoconf.h include/linux/version.h \ 964 Module.symvers tags TAGS cscope* 965 966 # clean - Delete most, but leave enough to build external modules
··· 812 # prepare2 creates a makefile if using a separate output directory 813 prepare2: prepare3 outputmakefile 814 815 + prepare1: prepare2 include/linux/version.h include/linux/utsrelease.h \ 816 + include/asm include/config/auto.conf 817 ifneq ($(KBUILD_MODULES),) 818 $(Q)mkdir -p $(MODVERDIR) 819 $(Q)rm -f $(MODVERDIR)/* ··· 848 # needs to be updated, so this check is forced on all builds 849 850 uts_len := 64 851 + define filechk_utsrelease.h 852 if [ `echo -n "$(KERNELRELEASE)" | wc -c ` -gt $(uts_len) ]; then \ 853 + echo '"$(KERNELRELEASE)" exceeds $(uts_len) characters' >&2; \ 854 + exit 1; \ 855 + fi; \ 856 + (echo \#define UTS_RELEASE \"$(KERNELRELEASE)\";) 857 endef 858 859 + define filechk_version.h 860 + (echo \#define LINUX_VERSION_CODE $(shell \ 861 + expr $(VERSION) \* 65536 + $(PATCHLEVEL) \* 256 + $(SUBLEVEL)); \ 862 + echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';) 863 + endef 864 + 865 + include/linux/version.h: $(srctree)/Makefile FORCE 866 $(call filechk,version.h) 867 + 868 + include/linux/utsrelease.h: include/config/kernel.release FORCE 869 + $(call filechk,utsrelease.h) 870 871 # --------------------------------------------------------------------------- 872 ··· 955 # Directories & files removed with 'make mrproper' 956 MRPROPER_DIRS += include/config include2 957 MRPROPER_FILES += .config .config.old include/asm .version .old_version \ 958 + include/linux/autoconf.h include/linux/version.h \ 959 + include/linux/utsrelease.h \ 960 Module.symvers tags TAGS cscope* 961 962 # clean - Delete most, but leave enough to build external modules
+1 -1
arch/alpha/boot/bootp.c
··· 9 */ 10 #include <linux/kernel.h> 11 #include <linux/string.h> 12 - #include <linux/version.h> 13 #include <linux/mm.h> 14 15 #include <asm/system.h>
··· 9 */ 10 #include <linux/kernel.h> 11 #include <linux/string.h> 12 + #include <linux/utsrelease.h> 13 #include <linux/mm.h> 14 15 #include <asm/system.h>
+1 -1
arch/alpha/boot/bootpz.c
··· 11 */ 12 #include <linux/kernel.h> 13 #include <linux/string.h> 14 - #include <linux/version.h> 15 #include <linux/mm.h> 16 17 #include <asm/system.h>
··· 11 */ 12 #include <linux/kernel.h> 13 #include <linux/string.h> 14 + #include <linux/utsrelease.h> 15 #include <linux/mm.h> 16 17 #include <asm/system.h>
+1 -1
arch/alpha/boot/main.c
··· 7 */ 8 #include <linux/kernel.h> 9 #include <linux/string.h> 10 - #include <linux/version.h> 11 #include <linux/mm.h> 12 13 #include <asm/system.h>
··· 7 */ 8 #include <linux/kernel.h> 9 #include <linux/string.h> 10 + #include <linux/utsrelease.h> 11 #include <linux/mm.h> 12 13 #include <asm/system.h>
+1 -1
arch/frv/kernel/setup.c
··· 10 * 2 of the License, or (at your option) any later version. 11 */ 12 13 - #include <linux/version.h> 14 #include <linux/kernel.h> 15 #include <linux/sched.h> 16 #include <linux/delay.h>
··· 10 * 2 of the License, or (at your option) any later version. 11 */ 12 13 + #include <linux/utsrelease.h> 14 #include <linux/kernel.h> 15 #include <linux/sched.h> 16 #include <linux/delay.h>
+1 -1
arch/i386/boot/setup.S
··· 47 */ 48 49 #include <asm/segment.h> 50 - #include <linux/version.h> 51 #include <linux/compile.h> 52 #include <asm/boot.h> 53 #include <asm/e820.h>
··· 47 */ 48 49 #include <asm/segment.h> 50 + #include <linux/utsrelease.h> 51 #include <linux/compile.h> 52 #include <asm/boot.h> 53 #include <asm/e820.h>
+1 -1
arch/powerpc/platforms/chrp/setup.c
··· 24 #include <linux/reboot.h> 25 #include <linux/init.h> 26 #include <linux/pci.h> 27 - #include <linux/version.h> 28 #include <linux/adb.h> 29 #include <linux/module.h> 30 #include <linux/delay.h>
··· 24 #include <linux/reboot.h> 25 #include <linux/init.h> 26 #include <linux/pci.h> 27 + #include <linux/utsrelease.h> 28 #include <linux/adb.h> 29 #include <linux/module.h> 30 #include <linux/delay.h>
+1 -1
arch/powerpc/platforms/powermac/bootx_init.c
··· 12 #include <linux/kernel.h> 13 #include <linux/string.h> 14 #include <linux/init.h> 15 - #include <linux/version.h> 16 #include <asm/sections.h> 17 #include <asm/prom.h> 18 #include <asm/page.h>
··· 12 #include <linux/kernel.h> 13 #include <linux/string.h> 14 #include <linux/init.h> 15 + #include <linux/utsrelease.h> 16 #include <asm/sections.h> 17 #include <asm/prom.h> 18 #include <asm/page.h>
+1 -1
arch/ppc/syslib/btext.c
··· 6 #include <linux/kernel.h> 7 #include <linux/string.h> 8 #include <linux/init.h> 9 - #include <linux/version.h> 10 11 #include <asm/sections.h> 12 #include <asm/bootx.h>
··· 6 #include <linux/kernel.h> 7 #include <linux/string.h> 8 #include <linux/init.h> 9 + #include <linux/utsrelease.h> 10 11 #include <asm/sections.h> 12 #include <asm/bootx.h>
+1 -1
arch/x86_64/boot/setup.S
··· 46 */ 47 48 #include <asm/segment.h> 49 - #include <linux/version.h> 50 #include <linux/compile.h> 51 #include <asm/boot.h> 52 #include <asm/e820.h>
··· 46 */ 47 48 #include <asm/segment.h> 49 + #include <linux/utsrelease.h> 50 #include <linux/compile.h> 51 #include <asm/boot.h> 52 #include <asm/e820.h>
+1 -1
drivers/net/wireless/bcm43xx/bcm43xx_ethtool.c
··· 32 #include <linux/netdevice.h> 33 #include <linux/pci.h> 34 #include <linux/string.h> 35 - #include <linux/version.h> 36 37 38 static void bcm43xx_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
··· 32 #include <linux/netdevice.h> 33 #include <linux/pci.h> 34 #include <linux/string.h> 35 + #include <linux/utsrelease.h> 36 37 38 static void bcm43xx_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
+1 -1
include/linux/vermagic.h
··· 1 - #include <linux/version.h> 2 #include <linux/module.h> 3 4 /* Simply sanity version stamp for modules. */
··· 1 + #include <linux/utsrelease.h> 2 #include <linux/module.h> 3 4 /* Simply sanity version stamp for modules. */
+1
init/version.c
··· 10 #include <linux/module.h> 11 #include <linux/uts.h> 12 #include <linux/utsname.h> 13 #include <linux/version.h> 14 15 #define version(a) Version_ ## a
··· 10 #include <linux/module.h> 11 #include <linux/uts.h> 12 #include <linux/utsname.h> 13 + #include <linux/utsrelease.h> 14 #include <linux/version.h> 15 16 #define version(a) Version_ ## a
+3 -4
scripts/checkversion.pl
··· 1 #! /usr/bin/perl 2 # 3 - # checkversion find uses of LINUX_VERSION_CODE, KERNEL_VERSION, or 4 - # UTS_RELEASE without including <linux/version.h>, or cases of 5 # including <linux/version.h> that don't need it. 6 # Copyright (C) 2003, Randy Dunlap <rdunlap@xenotime.net> 7 ··· 41 } 42 43 # Look for uses: LINUX_VERSION_CODE, KERNEL_VERSION, UTS_RELEASE 44 - if (($_ =~ /LINUX_VERSION_CODE/) || ($_ =~ /\WKERNEL_VERSION/) || 45 - ($_ =~ /UTS_RELEASE/)) { 46 $fUseVersion = 1; 47 last LINE if $iLinuxVersion; 48 }
··· 1 #! /usr/bin/perl 2 # 3 + # checkversion find uses of LINUX_VERSION_CODE or KERNEL_VERSION 4 + # without including <linux/version.h>, or cases of 5 # including <linux/version.h> that don't need it. 6 # Copyright (C) 2003, Randy Dunlap <rdunlap@xenotime.net> 7 ··· 41 } 42 43 # Look for uses: LINUX_VERSION_CODE, KERNEL_VERSION, UTS_RELEASE 44 + if (($_ =~ /LINUX_VERSION_CODE/) || ($_ =~ /\WKERNEL_VERSION/)) { 45 $fUseVersion = 1; 46 last LINE if $iLinuxVersion; 47 }