From 547b127d7a3102e29c0dfdc25bee0dbab89b99bd Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 17 Oct 2006 16:13:10 +0000 Subject: make kernel module packaging code reusable and use it in madwifi SVN-Revision: 5189 --- include/kernel.mk | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) (limited to 'include') 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)),) -- cgit v1.2.3