Commit 63104eec234bdecb55fd9c15467ae00d0a3f42ac

Authored by Sam Ravnborg
1 parent 0566838114

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>

Showing 14 changed files with 33 additions and 27 deletions Side-by-side Diff

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