xref: /linux-6.15/scripts/Makefile.modinst (revision 2dfec887)
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
965ce9c38SMasahiro Yamadainclude include/config/auto.conf
103204a7fbSMasahiro Yamadainclude $(srctree)/scripts/Kbuild.include
111da177e4SLinus Torvalds
12*2dfec887SMasahiro Yamadainstall-y :=
13*2dfec887SMasahiro Yamada
146768fa4bSMasahiro Yamadamodules := $(call read-file, $(MODORDER))
151da177e4SLinus Torvalds
16ccae4cfaSMasahiro Yamadaifeq ($(KBUILD_EXTMOD),)
17ccae4cfaSMasahiro Yamadadst := $(MODLIB)/kernel
18ccae4cfaSMasahiro Yamadaelse
19b74d7bb7SLuis ChamberlainINSTALL_MOD_DIR ?= updates
20ccae4cfaSMasahiro Yamadadst := $(MODLIB)/$(INSTALL_MOD_DIR)
21ccae4cfaSMasahiro Yamadaendif
22ccae4cfaSMasahiro Yamada
2384850dbbSMasahiro Yamada$(foreach x, % :, $(if $(findstring $x, $(dst)), \
2484850dbbSMasahiro Yamada	$(error module installation path cannot contain '$x')))
2584850dbbSMasahiro Yamada
2665ce9c38SMasahiro Yamadasuffix-y				:=
2765ce9c38SMasahiro Yamadasuffix-$(CONFIG_MODULE_COMPRESS_GZIP)	:= .gz
2865ce9c38SMasahiro Yamadasuffix-$(CONFIG_MODULE_COMPRESS_XZ)	:= .xz
29c3d7ef37SPiotr Gorskisuffix-$(CONFIG_MODULE_COMPRESS_ZSTD)	:= .zst
3065ce9c38SMasahiro Yamada
31f65a4868SMasahiro Yamadamodules := $(patsubst $(extmod_prefix)%.o, $(dst)/%.ko$(suffix-y), $(modules))
32*2dfec887SMasahiro Yamadainstall-$(CONFIG_MODULES) += $(modules)
33ccae4cfaSMasahiro Yamada
341da177e4SLinus Torvalds__modinst: $(modules)
351da177e4SLinus Torvalds	@:
361da177e4SLinus Torvalds
3765ce9c38SMasahiro Yamada#
3865ce9c38SMasahiro Yamada# Installation
3965ce9c38SMasahiro Yamada#
4065ce9c38SMasahiro Yamadaquiet_cmd_install = INSTALL $@
41*2dfec887SMasahiro Yamada      cmd_install = cp $< $@
4265ce9c38SMasahiro Yamada
4365ce9c38SMasahiro Yamada# Strip
4465ce9c38SMasahiro Yamada#
4565ce9c38SMasahiro Yamada# INSTALL_MOD_STRIP, if defined, will cause modules to be stripped after they
4665ce9c38SMasahiro Yamada# are installed. If INSTALL_MOD_STRIP is '1', then the default option
4765ce9c38SMasahiro Yamada# --strip-debug will be used. Otherwise, INSTALL_MOD_STRIP value will be used
4865ce9c38SMasahiro Yamada# as the options to the strip command.
4965ce9c38SMasahiro Yamadaifdef INSTALL_MOD_STRIP
5065ce9c38SMasahiro Yamada
5165ce9c38SMasahiro Yamadaifeq ($(INSTALL_MOD_STRIP),1)
5265ce9c38SMasahiro Yamadastrip-option := --strip-debug
5365ce9c38SMasahiro Yamadaelse
5465ce9c38SMasahiro Yamadastrip-option := $(INSTALL_MOD_STRIP)
5565ce9c38SMasahiro Yamadaendif
5665ce9c38SMasahiro Yamada
5765ce9c38SMasahiro Yamadaquiet_cmd_strip = STRIP   $@
5865ce9c38SMasahiro Yamada      cmd_strip = $(STRIP) $(strip-option) $@
5965ce9c38SMasahiro Yamada
6065ce9c38SMasahiro Yamadaelse
6165ce9c38SMasahiro Yamada
6265ce9c38SMasahiro Yamadaquiet_cmd_strip =
6365ce9c38SMasahiro Yamada      cmd_strip = :
6465ce9c38SMasahiro Yamada
6565ce9c38SMasahiro Yamadaendif
6665ce9c38SMasahiro Yamada
6765ce9c38SMasahiro Yamada#
6865ce9c38SMasahiro Yamada# Signing
6965ce9c38SMasahiro Yamada# Don't stop modules_install even if we can't sign external modules.
7065ce9c38SMasahiro Yamada#
7165ce9c38SMasahiro Yamadaifeq ($(CONFIG_MODULE_SIG_ALL),y)
7222e46f64SJan Luebbeifeq ($(filter pkcs11:%, $(CONFIG_MODULE_SIG_KEY)),)
734db9c2e3SMasahiro Yamadasig-key := $(if $(wildcard $(CONFIG_MODULE_SIG_KEY)),,$(srctree)/)$(CONFIG_MODULE_SIG_KEY)
7422e46f64SJan Luebbeelse
7522e46f64SJan Luebbesig-key := $(CONFIG_MODULE_SIG_KEY)
7622e46f64SJan Luebbeendif
7765ce9c38SMasahiro Yamadaquiet_cmd_sign = SIGN    $@
7822e46f64SJan Luebbe      cmd_sign = scripts/sign-file $(CONFIG_MODULE_SIG_HASH) "$(sig-key)" certs/signing_key.x509 $@ \
7965ce9c38SMasahiro Yamada                 $(if $(KBUILD_EXTMOD),|| true)
8065ce9c38SMasahiro Yamadaelse
8165ce9c38SMasahiro Yamadaquiet_cmd_sign :=
8265ce9c38SMasahiro Yamada      cmd_sign := :
8365ce9c38SMasahiro Yamadaendif
8465ce9c38SMasahiro Yamada
85961ab4a3SMasahiro Yamadaifeq ($(modules_sign_only),)
86961ab4a3SMasahiro Yamada
87*2dfec887SMasahiro Yamada# Create necessary directories
88*2dfec887SMasahiro Yamada$(shell mkdir -p $(sort $(dir $(install-y))))
89*2dfec887SMasahiro Yamada
9065ce9c38SMasahiro Yamada$(dst)/%.ko: $(extmod_prefix)%.ko FORCE
91ccae4cfaSMasahiro Yamada	$(call cmd,install)
9265ce9c38SMasahiro Yamada	$(call cmd,strip)
9365ce9c38SMasahiro Yamada	$(call cmd,sign)
9465ce9c38SMasahiro Yamada
9579b96c33SMasahiro Yamada__modinst: depmod
9679b96c33SMasahiro Yamada
9779b96c33SMasahiro YamadaPHONY += depmod
9879b96c33SMasahiro Yamadadepmod: $(modules)
9979b96c33SMasahiro Yamada	$(call cmd,depmod)
10079b96c33SMasahiro Yamada
10179b96c33SMasahiro Yamadaquiet_cmd_depmod = DEPMOD  $(MODLIB)
10279b96c33SMasahiro Yamada      cmd_depmod = $(srctree)/scripts/depmod.sh $(KERNELRELEASE)
10379b96c33SMasahiro Yamada
104961ab4a3SMasahiro Yamadaelse
105961ab4a3SMasahiro Yamada
106961ab4a3SMasahiro Yamada$(dst)/%.ko: FORCE
107961ab4a3SMasahiro Yamada	$(call cmd,sign)
108961ab4a3SMasahiro Yamada
109961ab4a3SMasahiro Yamadaendif
110961ab4a3SMasahiro Yamada
11165ce9c38SMasahiro Yamada#
11265ce9c38SMasahiro Yamada# Compression
11365ce9c38SMasahiro Yamada#
11465ce9c38SMasahiro Yamadaquiet_cmd_gzip = GZIP    $@
11565ce9c38SMasahiro Yamada      cmd_gzip = $(KGZIP) -n -f $<
11665ce9c38SMasahiro Yamadaquiet_cmd_xz = XZ      $@
11765ce9c38SMasahiro Yamada      cmd_xz = $(XZ) --lzma2=dict=2MiB -f $<
118c3d7ef37SPiotr Gorskiquiet_cmd_zstd = ZSTD    $@
119c3d7ef37SPiotr Gorski      cmd_zstd = $(ZSTD) -T0 --rm -f -q $<
12065ce9c38SMasahiro Yamada
12165ce9c38SMasahiro Yamada$(dst)/%.ko.gz: $(dst)/%.ko FORCE
12265ce9c38SMasahiro Yamada	$(call cmd,gzip)
12365ce9c38SMasahiro Yamada
12465ce9c38SMasahiro Yamada$(dst)/%.ko.xz: $(dst)/%.ko FORCE
12565ce9c38SMasahiro Yamada	$(call cmd,xz)
1261da177e4SLinus Torvalds
127c3d7ef37SPiotr Gorski$(dst)/%.ko.zst: $(dst)/%.ko FORCE
128c3d7ef37SPiotr Gorski	$(call cmd,zstd)
129c3d7ef37SPiotr Gorski
130ccae4cfaSMasahiro YamadaPHONY += FORCE
131ccae4cfaSMasahiro YamadaFORCE:
1324f193362SPaul Smith
1334f193362SPaul Smith.PHONY: $(PHONY)
134