summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-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)),)