summaryrefslogtreecommitdiffstats
path: root/include/kernel.mk
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2006-10-17 16:13:10 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2006-10-17 16:13:10 +0000
commitb7b4cc7ec32a51be920d1d224ba5914ec236c58f (patch)
tree3c4d928b9af8a53056dea57a2fbceab1b4c8a4d4 /include/kernel.mk
parent105637591137a75d2a50b908e8554a977f4c4a17 (diff)
make kernel module packaging code reusable and use it in madwifi
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5189 3c298f89-4303-0410-b956-a3cf2f4a3e73
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 580e3951d..927381725 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)),)