From 2e496876c60cc45a06ac610e02c00ec767028b64 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Thu, 20 Jul 2017 22:34:54 +0200 Subject: [PATCH] kernel: collect module symvers for external modules Collect module symvers for all external modules to make them available for modpost. This fixes dependencies for most external modules. Example: Before: root@LEDE:/# modinfo mt76 module: /lib/modules/4.4.74/mt76.ko license: Dual BSD/GPL depends: After: root@LEDE:/# modinfo mt76 module: /lib/modules/4.4.74/mt76.ko license: Dual BSD/GPL depends: mac80211,cfg80211 Signed-off-by: Jonas Gorski --- include/kernel.mk | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/include/kernel.mk b/include/kernel.mk index 75797cf17e..f2099add53 100644 --- a/include/kernel.mk +++ b/include/kernel.mk @@ -123,6 +123,32 @@ ifdef CONFIG_USE_SPARSE KERNEL_MAKEOPTS += C=1 CHECK=$(STAGING_DIR_HOST)/bin/sparse endif +PKG_EXTMOD_SUBDIRS ?= . + +define populate_module_symvers + cat /dev/null > $(PKG_INFO_DIR)/$(PKG_NAME).symvers; \ + for subdir in $(PKG_EXTMOD_SUBDIRS); do \ + cat $(PKG_INFO_DIR)/*.symvers 2>/dev/null > $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers; \ + done +endef + +define collect_module_symvers + for subdir in $(PKG_EXTMOD_SUBDIRS); do \ + grep -F $(PKG_BUILD_DIR) $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers >> $(PKG_BUILD_DIR)/Module.symvers.tmp; \ + done; \ + sort -u $(PKG_BUILD_DIR)/Module.symvers.tmp > $(PKG_BUILD_DIR)/Module.symvers; \ + mv $(PKG_BUILD_DIR)/Module.symvers $(PKG_INFO_DIR)/$(PKG_NAME).symvers +endef + +define KernelPackage/hooks + ifneq ($(PKG_NAME),kernel) + Hooks/Compile/Pre += populate_module_symvers + Hooks/Compile/Post += collect_module_symvers + endif + define KernelPackage/hooks + endef +endef + define KernelPackage/Defaults FILES:= AUTOLOAD:= @@ -230,6 +256,7 @@ $(call KernelPackage/$(1)/config) endif $(call KernelPackage/depends) + $(call KernelPackage/hooks) ifneq ($(if $(filter-out %=y %=n %=m,$(KCONFIG)),$(filter m y,$(foreach c,$(filter-out %=y %=n %=m,$(KCONFIG)),$($(c)))),.),) ifneq ($(strip $(FILES)),)