4 ifeq ($(KERNELRELEASE),)
6 MAKEFLAGS += --no-print-directory
8 +SHELL := /usr/bin/env bash
9 BACKPORT_DIR := $(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_DIR 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,57 +62,61 @@ 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-4]\|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 19 | sed 's/^/3./')" ;\
64 - kvers="$$kvers $$(seq 0 99 | sed 's/^/4./')" ;\
66 - for v in $$kvers ; do \
67 - if [ "$$print" = "1" ] ; then \
68 - echo config KERNEL_$$(echo $$v | tr . _) ;\
69 - echo " def_bool y" ;\
71 - if [ "$$v" = "$$kver" ] ; then print=1 ; fi ;\
72 - done > Kconfig.versions ;\
73 - # RHEL as well, sadly we need to grep for it ;\
74 - RHEL_MAJOR=$$(grep '^RHEL_MAJOR' $(KERNEL_MAKEFILE) | \
75 - sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
76 - RHEL_MINOR=$$(grep '^RHEL_MINOR' $(KERNEL_MAKEFILE) | \
77 - sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
78 - for v in $$(seq 0 $$RHEL_MINOR) ; do \
79 - echo config BACKPORT_RHEL_KERNEL_$${RHEL_MAJOR}_$$v ;\
80 - echo " def_bool y" ;\
81 - done >> Kconfig.versions ;\
84 - echo "$(CONFIG_MD5)" > .kernel_config_md5
85 + @rm -f .kernel_config_md5_*
88 +Kconfig.kernel: $(STAMP_KERNEL_CONFIG) .local-symbols
89 + @printf "Generating local configuration database from kernel ..."
90 + @grep -v -f .local-symbols $(KERNEL_CONFIG) | grep = | ( \
92 + if [ "$${l:0:7}" != "CONFIG_" ] ; then \
98 + if [ "$$v" = "m" ] ; then \
100 + echo ' tristate' ;\
101 + elif [ "$$v" = "y" ] ; then \
107 + echo " default $$v" ;\
113 +Kconfig.versions: Kconfig.kernel
114 + @kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) kernelversion | \
115 + sed 's/^\(\([3-4]\|2\.6\)\.[0-9]\+\).*/\1/;t;d') ;\
116 + test "$$kver" != "" || echo "Kernel version parse failed!" ;\
117 + test "$$kver" != "" ;\
118 + kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\
119 + kvers="$$kvers $$(seq 0 19 | sed 's/^/3./')" ;\
120 + kvers="$$kvers $$(seq 0 99 | sed 's/^/4./')" ;\
122 + for v in $$kvers ; do \
123 + if [ "$$print" = "1" ] ; then \
124 + echo config KERNEL_$$(echo $$v | tr . _) ;\
125 + echo " def_bool y" ;\
127 + if [ "$$v" = "$$kver" ] ; then print=1 ; fi ;\
129 + @RHEL_MAJOR=$$(grep '^RHEL_MAJOR' $(KERNEL_MAKEFILE) | \
130 + sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
131 + RHEL_MINOR=$$(grep '^RHEL_MINOR' $(KERNEL_MAKEFILE) | \
132 + sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
133 + for v in $$(seq 0 $$RHEL_MINOR) ; do \
134 + echo config BACKPORT_RHEL_KERNEL_$${RHEL_MAJOR}_$$v ;\
135 + echo " def_bool y" ;\
139 + @$(MAKE) Kconfig.versions
140 @$(MAKE) -f Makefile.real "$@"
142 .PHONY: defconfig-help
145 @@ -59,7 +59,7 @@ defconfig-%::
147 backport-include/backport/autoconf.h: .config Kconfig.versions Kconfig.kernel
149 - @echo -n "Building backport-include/backport/autoconf.h ..."
150 + @printf "Building backport-include/backport/autoconf.h ..."
151 @grep -f .local-symbols .config | ( \
152 echo "#ifndef COMPAT_AUTOCONF_INCLUDED" ;\
153 echo "#define COMPAT_AUTOCONF_INCLUDED" ;\
154 @@ -80,7 +80,12 @@ backport-include/backport/autoconf.h: .c
157 echo "#endif /* COMPAT_AUTOCONF_INCLUDED */" ;\
158 - ) > backport-include/backport/autoconf.h
160 + @if cmp -s $@ $@.new; then \