4 ifeq ($(KERNELRELEASE),)
6 MAKEFLAGS += --no-print-directory
8 +SHELL := /usr/bin/env bash
9 BACKPORT_PWD := $(shell pwd)
12 @@ -19,6 +19,7 @@ KLIB_BUILD ?= $(KLIB)/build/
13 KERNEL_CONFIG := $(KLIB_BUILD)/.config
14 KERNEL_MAKEFILE := $(KLIB_BUILD)/Makefile
15 CONFIG_MD5 := $(shell md5sum $(KERNEL_CONFIG) 2>/dev/null | sed 's/\s.*//')
16 +STAMP_KERNEL_CONFIG := .kernel_config_md5_$(CONFIG_MD5)
18 export KLIB KLIB_BUILD BACKPORT_PWD KMODDIR KMODPATH_ARG
20 @@ -36,7 +37,8 @@ mrproper:
21 @rm -f .kernel_config_md5 Kconfig.versions Kconfig.kernel
22 @rm -f backport-include/backport/autoconf.h
25 +.SILENT: $(STAMP_KERNEL_CONFIG)
26 +$(STAMP_KERNEL_CONFIG):
27 @set -e ; test -f .local-symbols || ( \
28 echo "/--------------" ;\
29 echo "| You shouldn't run make in the backports tree, but only in" ;\
30 @@ -60,56 +62,60 @@ mrproper:
31 echo "| (that isn't currently running.)" ;\
34 - @set -e ; if [ "$$(cat .kernel_config_md5 2>/dev/null)" != "$(CONFIG_MD5)" ] ;\
36 - echo -n "Generating local configuration database from kernel ..." ;\
37 - grep -v -f .local-symbols $(KERNEL_CONFIG) | grep = | ( \
39 - if [ "$${l:0:7}" != "CONFIG_" ] ; then \
45 - if [ "$$v" = "m" ] ; then \
48 - elif [ "$$v" = "y" ] ; then \
54 - echo " default $$v" ;\
57 - ) > Kconfig.kernel ;\
58 - kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) kernelversion | \
59 - sed 's/^\(\(3\|2\.6\)\.[0-9]\+\).*/\1/;t;d') ;\
60 - test "$$kver" != "" || echo "Kernel version parse failed!" ;\
61 - test "$$kver" != "" ;\
62 - kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\
63 - kvers="$$kvers $$(seq 0 99 | sed 's/^/3./')" ;\
65 - for v in $$kvers ; do \
66 - if [ "$$print" = "1" ] ; then \
67 - echo config BACKPORT_KERNEL_$$(echo $$v | tr . _) ;\
68 - echo " def_bool y" ;\
70 - if [ "$$v" = "$$kver" ] ; then print=1 ; fi ;\
71 - done > Kconfig.versions ;\
72 - # RHEL as well, sadly we need to grep for it ;\
73 - RHEL_MAJOR=$$(grep '^RHEL_MAJOR' $(KERNEL_MAKEFILE) | \
74 - sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
75 - RHEL_MINOR=$$(grep '^RHEL_MINOR' $(KERNEL_MAKEFILE) | \
76 - sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
77 - for v in $$(seq 0 $$RHEL_MINOR) ; do \
78 - echo config BACKPORT_RHEL_KERNEL_$${RHEL_MAJOR}_$$v ;\
79 - echo " def_bool y" ;\
80 - done >> Kconfig.versions ;\
83 - echo "$(CONFIG_MD5)" > .kernel_config_md5
84 + @rm -f .kernel_config_md5_*
87 +Kconfig.kernel: $(STAMP_KERNEL_CONFIG) .local-symbols
88 + @printf "Generating local configuration database from kernel ..."
89 + @grep -v -f .local-symbols $(KERNEL_CONFIG) | grep = | ( \
91 + if [ "$${l:0:7}" != "CONFIG_" ] ; then \
97 + if [ "$$v" = "m" ] ; then \
100 + elif [ "$$v" = "y" ] ; then \
106 + echo " default $$v" ;\
112 +Kconfig.versions: Kconfig.kernel
113 + @kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) kernelversion | \
114 + sed 's/^\(\(3\|2\.6\)\.[0-9]\+\).*/\1/;t;d') ;\
115 + test "$$kver" != "" || echo "Kernel version parse failed!" ;\
116 + test "$$kver" != "" ;\
117 + kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\
118 + kvers="$$kvers $$(seq 0 99 | sed 's/^/3./')" ;\
120 + for v in $$kvers ; do \
121 + if [ "$$print" = "1" ] ; then \
122 + echo config BACKPORT_KERNEL_$$(echo $$v | tr . _) ;\
123 + echo " def_bool y" ;\
125 + if [ "$$v" = "$$kver" ] ; then print=1 ; fi ;\
127 + @RHEL_MAJOR=$$(grep '^RHEL_MAJOR' $(KERNEL_MAKEFILE) | \
128 + sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
129 + RHEL_MINOR=$$(grep '^RHEL_MINOR' $(KERNEL_MAKEFILE) | \
130 + sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
131 + for v in $$(seq 0 $$RHEL_MINOR) ; do \
132 + echo config BACKPORT_RHEL_KERNEL_$${RHEL_MAJOR}_$$v ;\
133 + echo " def_bool y" ;\
137 + @$(MAKE) Kconfig.versions
138 @$(MAKE) -f Makefile.real "$@"
140 .PHONY: defconfig-help
143 @@ -59,7 +59,7 @@ defconfig-%::
145 backport-include/backport/autoconf.h: .config Kconfig.versions Kconfig.kernel
147 - @echo -n "Building backport-include/backport/autoconf.h ..."
148 + @printf "Building backport-include/backport/autoconf.h ..."
149 @grep -f .local-symbols .config | ( \
150 echo "#ifndef COMPAT_AUTOCONF_INCLUDED" ;\
151 echo "#define COMPAT_AUTOCONF_INCLUDED" ;\
152 @@ -80,7 +80,12 @@ backport-include/backport/autoconf.h: .c
155 echo "#endif /* COMPAT_AUTOCONF_INCLUDED */" ;\
156 - ) > backport-include/backport/autoconf.h
158 + @if cmp -s $@ $@.new; then \