xref: /linux/scripts/Makefile.modinst (revision fd8c09ad0d87783b9b6a27900d66293be45b7bad)
1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
21da177e4SLinus Torvalds# ==========================================================================
31da177e4SLinus Torvalds# Installing modules
41da177e4SLinus Torvalds# ==========================================================================
51da177e4SLinus Torvalds
64f193362SPaul SmithPHONY := __modinst
71da177e4SLinus Torvalds__modinst:
81da177e4SLinus Torvalds
9214c0eeaSMasahiro Yamadainclude $(objtree)/include/config/auto.conf
103204a7fbSMasahiro Yamadainclude $(srctree)/scripts/Kbuild.include
111da177e4SLinus Torvalds
122dfec887SMasahiro Yamadainstall-y :=
132dfec887SMasahiro Yamada
14151aeca2SMasahiro Yamadaifeq ($(KBUILD_EXTMOD)$(sign-only),)
155e02797bSMasahiro Yamada
165e02797bSMasahiro Yamada# remove the old directory and symlink
175e02797bSMasahiro Yamada$(shell rm -fr $(MODLIB)/kernel $(MODLIB)/build)
185e02797bSMasahiro Yamada
195e02797bSMasahiro Yamadainstall-$(CONFIG_MODULES) += $(addprefix $(MODLIB)/, build modules.order)
205e02797bSMasahiro Yamada
215e02797bSMasahiro Yamada$(MODLIB)/build: FORCE
225e02797bSMasahiro Yamada	$(call cmd,symlink)
235e02797bSMasahiro Yamada
245e02797bSMasahiro Yamadaquiet_cmd_symlink = SYMLINK $@
255e02797bSMasahiro Yamada      cmd_symlink = ln -s $(CURDIR) $@
265e02797bSMasahiro Yamada
275e02797bSMasahiro Yamada$(MODLIB)/modules.order: modules.order FORCE
285e02797bSMasahiro Yamada	$(call cmd,install_modorder)
295e02797bSMasahiro Yamada
305e02797bSMasahiro Yamadaquiet_cmd_install_modorder = INSTALL $@
315e02797bSMasahiro Yamada      cmd_install_modorder = sed 's:^\(.*\)\.o$$:kernel/\1.ko:' $< > $@
325e02797bSMasahiro Yamada
33ae70d708SKris Van Hees# Install modules.builtin(.modinfo,.ranges) even when CONFIG_MODULES is disabled.
345e02797bSMasahiro Yamadainstall-y += $(addprefix $(MODLIB)/, modules.builtin modules.builtin.modinfo)
355e02797bSMasahiro Yamada
36ae70d708SKris Van Heesinstall-$(CONFIG_BUILTIN_MODULE_RANGES) += $(MODLIB)/modules.builtin.ranges
37ae70d708SKris Van Hees
38ae70d708SKris Van Hees$(addprefix $(MODLIB)/, modules.builtin modules.builtin.modinfo modules.builtin.ranges): $(MODLIB)/%: % FORCE
395e02797bSMasahiro Yamada	$(call cmd,install)
405e02797bSMasahiro Yamada
415e02797bSMasahiro Yamadaendif
425e02797bSMasahiro Yamada
43bad6beb2SMasahiro Yamadamodules := $(call read-file, modules.order)
441da177e4SLinus Torvalds
45ccae4cfaSMasahiro Yamadaifeq ($(KBUILD_EXTMOD),)
46ccae4cfaSMasahiro Yamadadst := $(MODLIB)/kernel
47ccae4cfaSMasahiro Yamadaelse
48b74d7bb7SLuis ChamberlainINSTALL_MOD_DIR ?= updates
49ccae4cfaSMasahiro Yamadadst := $(MODLIB)/$(INSTALL_MOD_DIR)
50ccae4cfaSMasahiro Yamadaendif
51ccae4cfaSMasahiro Yamada
5284850dbbSMasahiro Yamada$(foreach x, % :, $(if $(findstring $x, $(dst)), \
5384850dbbSMasahiro Yamada	$(error module installation path cannot contain '$x')))
5484850dbbSMasahiro Yamada
5565ce9c38SMasahiro Yamadasuffix-y				:=
56c7ff693fSPetr Pavluifdef CONFIG_MODULE_COMPRESS_ALL
5765ce9c38SMasahiro Yamadasuffix-$(CONFIG_MODULE_COMPRESS_GZIP)	:= .gz
5865ce9c38SMasahiro Yamadasuffix-$(CONFIG_MODULE_COMPRESS_XZ)	:= .xz
59c3d7ef37SPiotr Gorskisuffix-$(CONFIG_MODULE_COMPRESS_ZSTD)	:= .zst
60c7ff693fSPetr Pavluendif
6165ce9c38SMasahiro Yamada
62bad6beb2SMasahiro Yamadamodules := $(patsubst %.o, $(dst)/%.ko$(suffix-y), $(modules))
632dfec887SMasahiro Yamadainstall-$(CONFIG_MODULES) += $(modules)
64ccae4cfaSMasahiro Yamada
655e02797bSMasahiro Yamada__modinst: $(install-y)
661da177e4SLinus Torvalds	@:
671da177e4SLinus Torvalds
6865ce9c38SMasahiro Yamada#
6965ce9c38SMasahiro Yamada# Installation
7065ce9c38SMasahiro Yamada#
7165ce9c38SMasahiro Yamadaquiet_cmd_install = INSTALL $@
722dfec887SMasahiro Yamada      cmd_install = cp $< $@
7365ce9c38SMasahiro Yamada
7465ce9c38SMasahiro Yamada# Strip
7565ce9c38SMasahiro Yamada#
7665ce9c38SMasahiro Yamada# INSTALL_MOD_STRIP, if defined, will cause modules to be stripped after they
7765ce9c38SMasahiro Yamada# are installed. If INSTALL_MOD_STRIP is '1', then the default option
7865ce9c38SMasahiro Yamada# --strip-debug will be used. Otherwise, INSTALL_MOD_STRIP value will be used
7965ce9c38SMasahiro Yamada# as the options to the strip command.
8065ce9c38SMasahiro Yamadaifdef INSTALL_MOD_STRIP
8165ce9c38SMasahiro Yamada
8265ce9c38SMasahiro Yamadaifeq ($(INSTALL_MOD_STRIP),1)
8365ce9c38SMasahiro Yamadastrip-option := --strip-debug
8465ce9c38SMasahiro Yamadaelse
8565ce9c38SMasahiro Yamadastrip-option := $(INSTALL_MOD_STRIP)
8665ce9c38SMasahiro Yamadaendif
8765ce9c38SMasahiro Yamada
8865ce9c38SMasahiro Yamadaquiet_cmd_strip = STRIP   $@
8965ce9c38SMasahiro Yamada      cmd_strip = $(STRIP) $(strip-option) $@
9065ce9c38SMasahiro Yamada
9165ce9c38SMasahiro Yamadaelse
9265ce9c38SMasahiro Yamada
9365ce9c38SMasahiro Yamadaquiet_cmd_strip =
9465ce9c38SMasahiro Yamada      cmd_strip = :
9565ce9c38SMasahiro Yamada
9665ce9c38SMasahiro Yamadaendif
9765ce9c38SMasahiro Yamada
9865ce9c38SMasahiro Yamada#
9965ce9c38SMasahiro Yamada# Signing
10065ce9c38SMasahiro Yamada# Don't stop modules_install even if we can't sign external modules.
10165ce9c38SMasahiro Yamada#
10222e46f64SJan Luebbeifeq ($(filter pkcs11:%, $(CONFIG_MODULE_SIG_KEY)),)
1034db9c2e3SMasahiro Yamadasig-key := $(if $(wildcard $(CONFIG_MODULE_SIG_KEY)),,$(srctree)/)$(CONFIG_MODULE_SIG_KEY)
10422e46f64SJan Luebbeelse
10522e46f64SJan Luebbesig-key := $(CONFIG_MODULE_SIG_KEY)
10622e46f64SJan Luebbeendif
10765ce9c38SMasahiro Yamadaquiet_cmd_sign = SIGN    $@
108*25ff08aaSTorsten Hilbrich      cmd_sign = $(objtree)/scripts/sign-file $(CONFIG_MODULE_SIG_HASH) "$(sig-key)" $(objtree)/certs/signing_key.x509 $@ \
10965ce9c38SMasahiro Yamada                 $(if $(KBUILD_EXTMOD),|| true)
11002e8487bSMasahiro Yamada
111151aeca2SMasahiro Yamadaifeq ($(sign-only),)
11202e8487bSMasahiro Yamada
11302e8487bSMasahiro Yamada# During modules_install, modules are signed only when CONFIG_MODULE_SIG_ALL=y.
11402e8487bSMasahiro Yamadaifndef CONFIG_MODULE_SIG_ALL
11565ce9c38SMasahiro Yamadaquiet_cmd_sign :=
11665ce9c38SMasahiro Yamada      cmd_sign := :
11765ce9c38SMasahiro Yamadaendif
11865ce9c38SMasahiro Yamada
1192dfec887SMasahiro Yamada# Create necessary directories
120552c5013SMichal Kubecek$(foreach dir, $(sort $(dir $(install-y))), $(shell mkdir -p $(dir)))
1212dfec887SMasahiro Yamada
122bad6beb2SMasahiro Yamada$(dst)/%.ko: %.ko FORCE
123ccae4cfaSMasahiro Yamada	$(call cmd,install)
12465ce9c38SMasahiro Yamada	$(call cmd,strip)
12565ce9c38SMasahiro Yamada	$(call cmd,sign)
12665ce9c38SMasahiro Yamada
1275e02797bSMasahiro Yamadaifdef CONFIG_MODULES
12879b96c33SMasahiro Yamada__modinst: depmod
12979b96c33SMasahiro Yamada
13079b96c33SMasahiro YamadaPHONY += depmod
1315e02797bSMasahiro Yamadadepmod: $(install-y)
13279b96c33SMasahiro Yamada	$(call cmd,depmod)
13379b96c33SMasahiro Yamada
13479b96c33SMasahiro Yamadaquiet_cmd_depmod = DEPMOD  $(MODLIB)
13579b96c33SMasahiro Yamada      cmd_depmod = $(srctree)/scripts/depmod.sh $(KERNELRELEASE)
1365e02797bSMasahiro Yamadaendif
13779b96c33SMasahiro Yamada
138961ab4a3SMasahiro Yamadaelse
139961ab4a3SMasahiro Yamada
140961ab4a3SMasahiro Yamada$(dst)/%.ko: FORCE
141961ab4a3SMasahiro Yamada	$(call cmd,sign)
142961ab4a3SMasahiro Yamada
143961ab4a3SMasahiro Yamadaendif
144961ab4a3SMasahiro Yamada
14565ce9c38SMasahiro Yamada#
14665ce9c38SMasahiro Yamada# Compression
14765ce9c38SMasahiro Yamada#
14865ce9c38SMasahiro Yamadaquiet_cmd_gzip = GZIP    $@
14965ce9c38SMasahiro Yamada      cmd_gzip = $(KGZIP) -n -f $<
15065ce9c38SMasahiro Yamadaquiet_cmd_xz = XZ      $@
151fbf5892dSMartin Nybo Andersen      cmd_xz = $(XZ) --check=crc32 --lzma2=dict=1MiB -f $<
152c3d7ef37SPiotr Gorskiquiet_cmd_zstd = ZSTD    $@
1530c4beffbSMasahiro Yamada      cmd_zstd = $(ZSTD) --rm -f -q $<
15465ce9c38SMasahiro Yamada
15565ce9c38SMasahiro Yamada$(dst)/%.ko.gz: $(dst)/%.ko FORCE
15665ce9c38SMasahiro Yamada	$(call cmd,gzip)
15765ce9c38SMasahiro Yamada
15865ce9c38SMasahiro Yamada$(dst)/%.ko.xz: $(dst)/%.ko FORCE
15965ce9c38SMasahiro Yamada	$(call cmd,xz)
1601da177e4SLinus Torvalds
161c3d7ef37SPiotr Gorski$(dst)/%.ko.zst: $(dst)/%.ko FORCE
162c3d7ef37SPiotr Gorski	$(call cmd,zstd)
163c3d7ef37SPiotr Gorski
164ccae4cfaSMasahiro YamadaPHONY += FORCE
165ccae4cfaSMasahiro YamadaFORCE:
1664f193362SPaul Smith
1674f193362SPaul Smith.PHONY: $(PHONY)
168