diff options
author | Felix Fietkau <nbd@openwrt.org> | 2006-10-17 16:13:10 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2006-10-17 16:13:10 +0000 |
commit | fc8658be6d1f0ed8e2eee24ccf289090465e6720 (patch) | |
tree | 3c4d928b9af8a53056dea57a2fbceab1b4c8a4d4 /include | |
parent | e579015bb4f31cc4303fdef7af888f0485a49de9 (diff) | |
download | upstream-fc8658be6d1f0ed8e2eee24ccf289090465e6720.tar.gz upstream-fc8658be6d1f0ed8e2eee24ccf289090465e6720.tar.bz2 upstream-fc8658be6d1f0ed8e2eee24ccf289090465e6720.zip |
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')
-rw-r--r-- | include/kernel.mk | 63 |
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)),) |