157 lines
5.2 KiB
Diff
157 lines
5.2 KiB
Diff
--- a/Makefile
|
|
+++ b/Makefile
|
|
@@ -19,6 +19,7 @@ KLIB_BUILD ?= $(KLIB)/build/
|
|
KERNEL_CONFIG := $(KLIB_BUILD)/.config
|
|
KERNEL_MAKEFILE := $(KLIB_BUILD)/Makefile
|
|
CONFIG_MD5 := $(shell md5sum $(KERNEL_CONFIG) 2>/dev/null | sed 's/\s.*//')
|
|
+STAMP_KERNEL_CONFIG := .kernel_config_md5_$(CONFIG_MD5)
|
|
|
|
export KLIB KLIB_BUILD BACKPORT_PWD KMODDIR KMODPATH_ARG
|
|
|
|
@@ -36,7 +37,8 @@ mrproper:
|
|
@rm -f .kernel_config_md5 Kconfig.versions Kconfig.kernel
|
|
@rm -f backport-include/backport/autoconf.h
|
|
|
|
-.DEFAULT:
|
|
+.SILENT: $(STAMP_KERNEL_CONFIG)
|
|
+$(STAMP_KERNEL_CONFIG):
|
|
@set -e ; test -f .local-symbols || ( \
|
|
echo "/--------------" ;\
|
|
echo "| You shouldn't run make in the backports tree, but only in" ;\
|
|
@@ -60,56 +62,60 @@ mrproper:
|
|
echo "| (that isn't currently running.)" ;\
|
|
echo "\\--" ;\
|
|
false)
|
|
- @set -e ; if [ "$$(cat .kernel_config_md5 2>/dev/null)" != "$(CONFIG_MD5)" ] ;\
|
|
- then \
|
|
- echo -n "Generating local configuration database from kernel ..." ;\
|
|
- grep -v -f .local-symbols $(KERNEL_CONFIG) | grep = | ( \
|
|
- while read l ; do \
|
|
- if [ "$${l:0:7}" != "CONFIG_" ] ; then \
|
|
- continue ;\
|
|
- fi ;\
|
|
- l=$${l:7} ;\
|
|
- n=$${l%%=*} ;\
|
|
- v=$${l#*=} ;\
|
|
- if [ "$$v" = "m" ] ; then \
|
|
- echo config $$n ;\
|
|
- echo ' tristate' ;\
|
|
- elif [ "$$v" = "y" ] ; then \
|
|
- echo config $$n ;\
|
|
- echo ' bool' ;\
|
|
- else \
|
|
- continue ;\
|
|
- fi ;\
|
|
- echo " default $$v" ;\
|
|
- echo "" ;\
|
|
- done \
|
|
- ) > Kconfig.kernel ;\
|
|
- kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) kernelversion | \
|
|
- sed 's/^\(\(3\|2\.6\)\.[0-9]\+\).*/\1/;t;d') ;\
|
|
- test "$$kver" != "" || echo "Kernel version parse failed!" ;\
|
|
- test "$$kver" != "" ;\
|
|
- kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\
|
|
- kvers="$$kvers $$(seq 0 99 | sed 's/^/3./')" ;\
|
|
- print=0 ;\
|
|
- for v in $$kvers ; do \
|
|
- if [ "$$print" = "1" ] ; then \
|
|
- echo config BACKPORT_KERNEL_$$(echo $$v | tr . _) ;\
|
|
- echo " def_bool y" ;\
|
|
- fi ;\
|
|
- if [ "$$v" = "$$kver" ] ; then print=1 ; fi ;\
|
|
- done > Kconfig.versions ;\
|
|
- # RHEL as well, sadly we need to grep for it ;\
|
|
- RHEL_MAJOR=$$(grep '^RHEL_MAJOR' $(KERNEL_MAKEFILE) | \
|
|
- sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
|
|
- RHEL_MINOR=$$(grep '^RHEL_MINOR' $(KERNEL_MAKEFILE) | \
|
|
- sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
|
|
- for v in $$(seq 0 $$RHEL_MINOR) ; do \
|
|
- echo config BACKPORT_RHEL_KERNEL_$${RHEL_MAJOR}_$$v ;\
|
|
- echo " def_bool y" ;\
|
|
- done >> Kconfig.versions ;\
|
|
- echo " done." ;\
|
|
- fi ;\
|
|
- echo "$(CONFIG_MD5)" > .kernel_config_md5
|
|
+ @rm -f .kernel_config_md5_*
|
|
+ @touch $@
|
|
+
|
|
+Kconfig.kernel: $(STAMP_KERNEL_CONFIG) .local-symbols
|
|
+ @printf "Generating local configuration database from kernel ..."
|
|
+ @grep -v -f .local-symbols $(KERNEL_CONFIG) | grep = | ( \
|
|
+ while read l ; do \
|
|
+ if [ "$${l:0:7}" != "CONFIG_" ] ; then \
|
|
+ continue ;\
|
|
+ fi ;\
|
|
+ l=$${l:7} ;\
|
|
+ n=$${l%%=*} ;\
|
|
+ v=$${l#*=} ;\
|
|
+ if [ "$$v" = "m" ] ; then \
|
|
+ echo config $$n ;\
|
|
+ echo ' tristate' ;\
|
|
+ elif [ "$$v" = "y" ] ; then \
|
|
+ echo config $$n ;\
|
|
+ echo ' bool' ;\
|
|
+ else \
|
|
+ continue ;\
|
|
+ fi ;\
|
|
+ echo " default $$v" ;\
|
|
+ echo "" ;\
|
|
+ done \
|
|
+ ) > $@
|
|
+ @echo " done."
|
|
+
|
|
+Kconfig.versions: Kconfig.kernel
|
|
+ @kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) kernelversion | \
|
|
+ sed 's/^\(\(3\|2\.6\)\.[0-9]\+\).*/\1/;t;d') ;\
|
|
+ test "$$kver" != "" || echo "Kernel version parse failed!" ;\
|
|
+ test "$$kver" != "" ;\
|
|
+ kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\
|
|
+ kvers="$$kvers $$(seq 0 99 | sed 's/^/3./')" ;\
|
|
+ print=0 ;\
|
|
+ for v in $$kvers ; do \
|
|
+ if [ "$$print" = "1" ] ; then \
|
|
+ echo config BACKPORT_KERNEL_$$(echo $$v | tr . _) ;\
|
|
+ echo " def_bool y" ;\
|
|
+ fi ;\
|
|
+ if [ "$$v" = "$$kver" ] ; then print=1 ; fi ;\
|
|
+ done > $@
|
|
+ @RHEL_MAJOR=$$(grep '^RHEL_MAJOR' $(KERNEL_MAKEFILE) | \
|
|
+ sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
|
|
+ RHEL_MINOR=$$(grep '^RHEL_MINOR' $(KERNEL_MAKEFILE) | \
|
|
+ sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
|
|
+ for v in $$(seq 0 $$RHEL_MINOR) ; do \
|
|
+ echo config BACKPORT_RHEL_KERNEL_$${RHEL_MAJOR}_$$v ;\
|
|
+ echo " def_bool y" ;\
|
|
+ done >> $@
|
|
+
|
|
+.DEFAULT:
|
|
+ @$(MAKE) Kconfig.versions
|
|
@$(MAKE) -f Makefile.real "$@"
|
|
|
|
.PHONY: defconfig-help
|
|
--- a/Makefile.real
|
|
+++ b/Makefile.real
|
|
@@ -59,7 +59,7 @@ defconfig-%::
|
|
|
|
backport-include/backport/autoconf.h: .config Kconfig.versions Kconfig.kernel
|
|
@$(MAKE) oldconfig
|
|
- @echo -n "Building backport-include/backport/autoconf.h ..."
|
|
+ @printf "Building backport-include/backport/autoconf.h ..."
|
|
@grep -f .local-symbols .config | ( \
|
|
echo "#ifndef COMPAT_AUTOCONF_INCLUDED" ;\
|
|
echo "#define COMPAT_AUTOCONF_INCLUDED" ;\
|
|
@@ -80,7 +80,12 @@ backport-include/backport/autoconf.h: .c
|
|
esac ;\
|
|
done ;\
|
|
echo "#endif /* COMPAT_AUTOCONF_INCLUDED */" ;\
|
|
- ) > backport-include/backport/autoconf.h
|
|
+ ) > $@.new
|
|
+ @if cmp -s $@ $@.new; then \
|
|
+ rm -f $@.new; \
|
|
+ else \
|
|
+ mv $@.new $@; \
|
|
+ fi
|
|
@echo " done."
|
|
|
|
.PHONY: modules
|