summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile164
1 files changed, 164 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..0fd4cdb
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,164 @@
+#
+# Makefile for the output source package
+#
+
+ifeq ($(KERNELRELEASE),)
+
+MAKEFLAGS += --no-print-directory
+SHELL := /bin/bash
+BACKPORT_DIR := $(shell pwd)
+
+KMODDIR ?= updates
+ifneq ($(origin KLIB), undefined)
+KMODPATH_ARG := "INSTALL_MOD_PATH=$(KLIB)"
+else
+KLIB := /lib/modules/$(shell uname -r)/
+KMODPATH_ARG :=
+endif
+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.*//')
+
+export KLIB KLIB_BUILD BACKPORT_DIR KMODDIR KMODPATH_ARG
+
+# disable built-in rules for this file
+.SUFFIXES:
+
+.PHONY: default
+default:
+ @$(MAKE) modules
+
+.PHONY: mrproper
+mrproper:
+ @test -f .config && $(MAKE) clean || true
+ @rm -f .config
+ @rm -f .kernel_config_md5 Kconfig.versions Kconfig.kernel
+ @rm -f backport-include/backport/autoconf.h
+
+.DEFAULT:
+ @set -e ; test -f local-symbols || ( \
+ echo "/--------------" ;\
+ echo "| You shouldn't run make in the backports tree, but only in" ;\
+ echo "| the generated output. This here is only the skeleton code" ;\
+ echo "| copied into the output directory. To use the backport system" ;\
+ echo "| from scratch, go into the top-level directory and run" ;\
+ echo "| ./gentree.py /path/to/linux-next/ /tmp/output" ;\
+ echo "| and then make menuconfig/... in the output directory. See" ;\
+ echo "| ./gentree.py --help" ;\
+ echo "| for more options." ;\
+ echo "\\--" ;\
+ false)
+ @set -e ; test -f $(KERNEL_CONFIG) || ( \
+ echo "/--------------" ;\
+ echo "| Your kernel headers are incomplete/not installed." ;\
+ echo "| Please install kernel headers, including a .config" ;\
+ echo "| file or use the KLIB/KLIB_BUILD make variables to" ;\
+ echo "| set the kernel to build against, e.g." ;\
+ echo "| make KLIB=/lib/modules/3.1.7/" ;\
+ echo "| to compile/install for the installed kernel 3.1.7" ;\
+ 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-4]\|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 19 | sed 's/^/3./')" ;\
+ kvers="$$kvers $$(seq 0 99 | sed 's/^/4./')" ;\
+ print=0 ;\
+ for v in $$kvers ; do \
+ if [ "$$print" = "1" ] ; then \
+ echo config 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
+ @$(MAKE) -f Makefile.real "$@"
+
+.PHONY: defconfig-help
+defconfig-help:
+ @echo "Driver or subsystem configuration targets:"
+ @set -e ;\
+ bk_configs="$$(ls defconfigs/*)" ;\
+ for cfg in $$bk_configs; do \
+ echo " defconfig-$${cfg##defconfigs/}" ;\
+ done
+ @echo ""
+
+.PHONY: help
+help: defconfig-help
+ @echo "Cleaning targets:"
+ @echo " clean - Remove most generated files but keep the config and"
+ @echo " enough build support to build external modules"
+ @echo " mrproper - Remove all generated files + config + various backup files"
+ @echo ""
+ @echo "Driver configuration help:"
+ @echo " defconfig-help - List all prearranged defconfig-targets we have"
+ @echo " designed for you. You can use this to find"
+ @echo " driver specific configs in case all you really"
+ @echo " need is to just compile one or a small group "
+ @echo " of drivers."
+ @echo ""
+ @echo "Configuration targets:"
+ @echo " menuconfig - Update current config utilising a menu based program"
+ @echo " oldconfig - Update current config utilising a provided .config as base"
+ @echo " oldaskconfig - ??"
+ @echo " silentoldconfig - Same as oldconfig, but quietly, additionally update deps"
+ @echo " allnoconfig - New config where all options are answered with no"
+ @echo " allyesconfig - New config where all options are accepted with yes"
+ @echo " allmodconfig - New config selecting modules when possible"
+ @echo " alldefconfig - New config with all symbols set to default"
+ @echo " randconfig - New config with random answer to all options"
+ @echo " listnewconfig - List new options"
+ @echo " olddefconfig - Same as silentoldconfig but sets new symbols to their default value"
+ @echo ""
+ @echo "Other generic targets:"
+ @echo " all - Build all targets marked with [*]"
+ @echo "* modules - Build all modules"
+ @echo ""
+ @echo "Architecture specific targets:"
+ @echo " install - Install modules"
+ @echo " uninstall - Uninstall modules"
+ @echo ""
+ @echo "Execute "make" or "make all" to build all targets marked with [*]"
+else
+include $(BACKPORT_DIR)/Makefile.kernel
+endif