[PATCH 07/12] kbuild: add support for installing and stripping modules
Ahmad Fatoum
a.fatoum at barebox.org
Thu Jan 15 03:54:33 PST 2026
We have a defunct modules_install target, which fails when called.
Fix it, so it actually installs stripped modules.
This is important, because we don't want barebox to attempt relocation
the .debug sections as it doesn't support all relocations that can occur
there.
Note that unlike Linux, we always strip. Linux on the other hand has a
check that skips relocation of non-alloc segments and we may want to add
that too in future, but only after switching to barebox proper being
linked in PBL as proper ELF.
Co-developed-by: Claude <noreply at claude.ai>
Signed-off-by: Ahmad Fatoum <a.fatoum at barebox.org>
---
Makefile | 15 ++-------
scripts/Makefile.modinst | 67 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 70 insertions(+), 12 deletions(-)
create mode 100644 scripts/Makefile.modinst
diff --git a/Makefile b/Makefile
index 1a5f21b66ebb..b6023dc4ff2c 100644
--- a/Makefile
+++ b/Makefile
@@ -448,7 +448,6 @@ LEX = flex
YACC = bison
AWK = awk
GENKSYMS = scripts/genksyms/genksyms
-DEPMOD = /sbin/depmod
KALLSYMS = scripts/kallsyms
SCONFIGPOST = scripts/sconfig/sconfigpost
PERL = perl
@@ -1317,18 +1316,13 @@ modules_prepare: prepare scripts
# Target to install modules
PHONY += modules_install
-modules_install: _modinst_ _modinst_post
+modules_install: _modinst_
PHONY += _modinst_
_modinst_:
- @if [ -z "`$(DEPMOD) -V 2>/dev/null | grep module-init-tools`" ]; then \
- echo "Warning: you may need to install module-init-tools"; \
- echo "See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt";\
- sleep 1; \
- fi
- @rm -rf $(MODLIB)/kernel
+ @rm -rf $(MODLIB)/barebox
@rm -f $(MODLIB)/source
- @mkdir -p $(MODLIB)/kernel
+ @mkdir -p $(MODLIB)/barebox
@ln -s $(srctree) $(MODLIB)/source
@if [ ! $(objtree) -ef $(MODLIB)/build ]; then \
rm -f $(MODLIB)/build ; \
@@ -1346,9 +1340,6 @@ depmod_opts :=
else
depmod_opts := -b $(INSTALL_MOD_PATH) -r
endif
-PHONY += _modinst_post
-_modinst_post: _modinst_
- if [ -r System.map -a -x $(DEPMOD) ]; then $(DEPMOD) -ae -F System.map $(depmod_opts) $(KERNELRELEASE); fi
else # CONFIG_MODULES
diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst
new file mode 100644
index 000000000000..6cb9b6ccaa1e
--- /dev/null
+++ b/scripts/Makefile.modinst
@@ -0,0 +1,67 @@
+# SPDX-License-Identifier: GPL-2.0
+# ==========================================================================
+# Installing modules
+# ==========================================================================
+
+PHONY := __modinst
+__modinst:
+
+include $(objtree)/include/config/auto.conf
+include $(srctree)/scripts/Kbuild.include
+
+install-y :=
+
+# remove the old directory
+$(shell rm -fr $(MODLIB)/barebox)
+
+dst := $(MODLIB)/barebox
+
+# Find all .ko files in the build tree
+modules := $(shell find $(objtree) -name '*.ko' -not -path '$(MODLIB)/*' 2>/dev/null)
+modules-dst := $(addprefix $(dst)/, $(patsubst $(objtree)/%,%,$(modules)))
+
+install-$(CONFIG_MODULES) += $(modules-dst)
+
+__modinst: $(install-y)
+ @:
+
+#
+# Installation
+#
+quiet_cmd_install = INSTALL $@
+ cmd_install = mkdir -p $(dir $@) && cp $< $@
+
+INSTALL_MOD_STRIP ?= 1
+
+# Strip
+#
+# INSTALL_MOD_STRIP, if defined, will cause modules to be stripped after they
+# are installed. If INSTALL_MOD_STRIP is '1', then the default option
+# --strip-debug will be used. Otherwise, INSTALL_MOD_STRIP value will be used
+# as the options to the strip command.
+ifdef INSTALL_MOD_STRIP
+
+ifeq ($(INSTALL_MOD_STRIP),1)
+strip-option := --strip-debug
+else
+strip-option := $(INSTALL_MOD_STRIP)
+endif
+
+quiet_cmd_strip = STRIP $@
+ cmd_strip = $(STRIP) $(strip-option) $@
+
+else
+
+quiet_cmd_strip =
+ cmd_strip = :
+
+endif
+
+$(dst)/%.ko: $(objtree)/%.ko FORCE
+ $(call cmd,install)
+ $(call cmd,strip)
+
+PHONY += FORCE
+FORCE:
+
+.PHONY: $(PHONY)
--
2.47.3
More information about the barebox
mailing list