aboutsummaryrefslogtreecommitdiffstats
path: root/include/kernel.mk
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2006-10-17 16:13:10 +0000
committerFelix Fietkau <nbd@openwrt.org>2006-10-17 16:13:10 +0000
commit547b127d7a3102e29c0dfdc25bee0dbab89b99bd (patch)
treeb2d558c741c6224edd8c6b399b1e3db935337c8f /include/kernel.mk
parent92ced53400b669a55faf915599b402cf58b55b76 (diff)
downloadupstream-547b127d7a3102e29c0dfdc25bee0dbab89b99bd.tar.gz
upstream-547b127d7a3102e29c0dfdc25bee0dbab89b99bd.tar.bz2
upstream-547b127d7a3102e29c0dfdc25bee0dbab89b99bd.zip
make kernel module packaging code reusable and use it in madwifi
SVN-Revision: 5189
Diffstat (limited to 'include/kernel.mk')
-rw-r--r--include/kernel.mk63
1 files changed, 63 insertions, 0 deletions
diff --git a/include/kernel.mk b/include/kernel.mk
index 580e3951d1..9273817250 100644
--- a/include/kernel.mk
+++ b/include/kernel.mk
@@ -59,6 +59,69 @@ else
LINUX_KERNEL:=$(KERNEL_BUILD_DIR)/vmlinux
endif
+
+define KernelPackage/Defaults
+ FILES:=
+ KCONFIG:=m
+ AUTOLOAD:=
+endef
+
+define ModuleAutoLoad
+ export modules=; \
+ add_module() { \
+ mkdir -p $(2)/etc/modules.d; \
+ echo "$$$$$$$$2" > $(2)/etc/modules.d/$$$$$$$$1-$(1); \
+ modules="$$$$$$$${modules:+$$$$$$$$modules }$$$$$$$$1-$(1)"; \
+ }; \
+ $(3) \
+ if [ -n "$$$$$$$$modules" ]; then \
+ mkdir -p $(2)/etc/modules.d; \
+ echo "#!/bin/sh" > $(2)/CONTROL/postinst; \
+ echo "[ -z \"\$$$$$$$$IPKG_INSTROOT\" ] || exit 0" >> $(2)/CONTROL/postinst; \
+ echo ". /etc/functions.sh" >> $(2)/CONTROL/postinst; \
+ echo "load_modules $$$$$$$$modules" >> $(2)/CONTROL/postinst; \
+ chmod 0755 $(2)/CONTROL/postinst; \
+ fi
+endef
+
+
+define KernelPackage
+ NAME:=$(1)
+ $(eval $(call KernelPackage/Defaults))
+ $(eval $(call KernelPackage/$(1)))
+ $(eval $(call KernelPackage/$(1)/$(KERNEL)))
+ $(eval $(call KernelPackage/$(1)/$(BOARD)-$(KERNEL)))
+
+ define Package/kmod-$(1)
+ TITLE:=$(TITLE)
+ SECTION:=kernel
+ CATEGORY:=Kernel modules
+ DEFAULT:=m
+ DESCRIPTION:=$(DESCRIPTION)
+ EXTRA_DEPENDS:='kernel (=$(PKG_VERSION)-$(PKG_RELEASE))'
+ $(call KernelPackage/$(1))
+ $(call KernelPackage/$(1)/$(KERNEL))
+ $(call KernelPackage/$(1)/$(BOARD)-$(KERNEL))
+ endef
+
+ ifeq ($(findstring m,$(KCONFIG)),m)
+ ifneq ($(strip $(FILES)),)
+ define Package/kmod-$(1)/install
+ mkdir -p $$(1)/lib/modules/$(LINUX_VERSION)
+ $(CP) $$(FILES) $$(1)/lib/modules/$(LINUX_VERSION)/
+ $(call ModuleAutoLoad,$(1),$$(1),$(AUTOLOAD))
+ $(call KernelPackage/$(1)/install,$$(1))
+ endef
+ endif
+ endif
+ $$(eval $$(call BuildPackage,kmod-$(1)))
+endef
+
+define AutoLoad
+ add_module $(1) "$(2)";
+endef
+
+
# FIXME: remove this crap
define KMOD_template
ifeq ($$(strip $(4)),)