From 539e5f19d6bc417179b729466077adb6fc449720 Mon Sep 17 00:00:00 2001 From: nbd Date: Mon, 26 Jun 2006 01:55:47 +0000 Subject: add support for new modules.mk format (no autogenerated Config.in yet) git-svn-id: svn://svn.openwrt.org/openwrt/branches/buildroot-ng/openwrt@4083 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- include/kernel-build.mk | 90 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) (limited to 'include/kernel-build.mk') diff --git a/include/kernel-build.mk b/include/kernel-build.mk index 706764db5..3a455a812 100644 --- a/include/kernel-build.mk +++ b/include/kernel-build.mk @@ -127,3 +127,93 @@ clean: FORCE rm -f $(STAMP_DIR)/.linux-compile rm -rf $(KERNEL_BUILD_DIR) rm -f $(TARGETS) + + +define AutoLoad +add_module $(1) "$(2)"; +endef + +define KernelPackage/Defaults + VERSION:=$(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE) + DEPENDS:= + MAINTAINER:=OpenWrt Developers Team + SOURCE:=$(patsubst $(TOPDIR)/%,%,${shell pwd}) + PKGARCH:=$(ARCH) + PRIORITY:=optional + KCONFIG:= + FILES:= + BUILD:= + MODULES:= + TITLE:= + DESCRIPTION:= +endef + +define KernelPackage + NAME:=$(1) + $(eval $(call KernelPackage/Defaults)) + $(eval $(call KernelPackage/$(1))) + $(eval $(call KernelPackage/$(1)/$(KERNEL))) + + PKG_$(1) := $(PACKAGE_DIR)/kmod-$(1)_$(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE)_$(ARCH).ipk + I_$(1) := $(KMOD_BUILD_DIR)/ipkg/$(1) + + IDEPEND_$(1):='kernel ($(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE))' $(DEPENDS) + + ifeq ($$(strip $(KCONFIG)),) + KDEPEND_$(1):=m + else + KDEPEND_$(1):=$($(KCONFIG)) + endif + ifeq ($$(KDEPEND_$(1)),m) + ifneq ($(CONFIG_PACKAGE_kmod-$(1)),) + packages: $$(PKG_$(1)) + endif + ifeq ($(CONFIG_PACKAGE_kmod-$(1)),y) + install-kmod-$(1): FORCE + $(IPKG) install $$(PKG_$(1)) + pkg-install: install-kmod-$(1) + endif + endif + + $$(PKG_$(1)): $(LINUX_DIR)/.modules_done + rm -rf $$(I_$(1)) + install -d -m0755 $$(I_$(1))/CONTROL + echo "Package: kmod-$(1)" > $$(I_$(1))/CONTROL/control + echo "Version: $(VERSION)" >> $$(I_$(1))/CONTROL/control + ( \ + DEPENDS=; \ + for depend in $$(filter-out @%,$$(IDEPEND_$(1))); do \ + DEPENDS=$$$${DEPENDS:+$$$$DEPENDS, }$$$${depend##+}; \ + done; \ + echo "Depends: $$$$DEPENDS" >> $$(I_$(1))/CONTROL/control; \ + ) + echo "Source: $(SOURCE)" >> $$(I_$(1))/CONTROL/control + echo "Section: kernel" >> $$(I_$(1))/CONTROL/control + echo "Priority: $(PRIORITY)" >> $$(I_$(1))/CONTROL/control + echo "Maintainer: $(MAINTAINER)" >> $$(I_$(1))/CONTROL/control + echo "Architecture: $(PKGARCH)" >> $$(I_$(1))/CONTROL/control + echo "Description: $(DESCRIPTION)" | sed -e 's,\\,\n ,g' >> $$(I_$(1))/CONTROL/control + ifneq ($(strip $(FILES)),) + mkdir -p $$(I_$(1))/lib/modules/$(LINUX_VERSION) + $(CP) $(FILES) $$(I_$(1))/lib/modules/$(LINUX_VERSION)/ + endif + ifneq ($(MODULES),) + export modules=; \ + add_module() { \ + mkdir -p $$(I_$(1))/etc/modules.d; \ + echo "$$$$2" > $$(I_$(1))/etc/modules.d/$$$$1-$(1); \ + modules="$$$${modules:+$$$$modules }$$$$1-$(1)"; \ + }; \ + $(MODULES) \ + mkdir -p $$(I_$(1))/etc/modules.d; \ + echo "#!/bin/sh" >> $$(I_$(1))/CONTROL/postinst; \ + echo "[ -z \"\$$$$IPKG_INSTROOT\" ] || exit" >> $$(I_$(1))/CONTROL/postinst; \ + echo ". /etc/functions.sh" >> $$(I_$(1))/CONTROL/postinst; \ + echo "load_modules $$$$modules" >> $$(I_$(1))/CONTROL/postinst; \ + chmod 0755 $$(I_$(1))/CONTROL/postinst; + endif + $(IPKG_BUILD) $$(I_$(1)) $(PACKAGE_DIR) +endef + +-include $(INCLUDE_DIR)/modules.mk + -- cgit v1.2.3