xref: /linux/scripts/Makefile.modinst (revision 5e02797b8eb093ba73fcbdc6048d02a3f9fb7379)
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
122dfec887SMasahiro Yamadainstall-y :=
132dfec887SMasahiro Yamada
14*5e02797bSMasahiro Yamadaifeq ($(KBUILD_EXTMOD)$(modules_sign_only),)
15*5e02797bSMasahiro Yamada
16*5e02797bSMasahiro Yamada# remove the old directory and symlink
17*5e02797bSMasahiro Yamada$(shell rm -fr $(MODLIB)/kernel $(MODLIB)/build)
18*5e02797bSMasahiro Yamada
19*5e02797bSMasahiro Yamadainstall-$(CONFIG_MODULES) += $(addprefix $(MODLIB)/, build modules.order)
20*5e02797bSMasahiro Yamada
21*5e02797bSMasahiro Yamada$(MODLIB)/build: FORCE
22*5e02797bSMasahiro Yamada	$(call cmd,symlink)
23*5e02797bSMasahiro Yamada
24*5e02797bSMasahiro Yamadaquiet_cmd_symlink = SYMLINK $@
25*5e02797bSMasahiro Yamada      cmd_symlink = ln -s $(CURDIR) $@
26*5e02797bSMasahiro Yamada
27*5e02797bSMasahiro Yamada$(MODLIB)/modules.order: modules.order FORCE
28*5e02797bSMasahiro Yamada	$(call cmd,install_modorder)
29*5e02797bSMasahiro Yamada
30*5e02797bSMasahiro Yamadaquiet_cmd_install_modorder = INSTALL $@
31*5e02797bSMasahiro Yamada      cmd_install_modorder = sed 's:^\(.*\)\.o$$:kernel/\1.ko:' $< > $@
32*5e02797bSMasahiro Yamada
33*5e02797bSMasahiro Yamada# Install modules.builtin(.modinfo) even when CONFIG_MODULES is disabled.
34*5e02797bSMasahiro Yamadainstall-y += $(addprefix $(MODLIB)/, modules.builtin modules.builtin.modinfo)
35*5e02797bSMasahiro Yamada
36*5e02797bSMasahiro Yamada$(addprefix $(MODLIB)/, modules.builtin modules.builtin.modinfo): $(MODLIB)/%: % FORCE
37*5e02797bSMasahiro Yamada	$(call cmd,install)
38*5e02797bSMasahiro Yamada
39*5e02797bSMasahiro Yamadaendif
40*5e02797bSMasahiro Yamada
416768fa4bSMasahiro Yamadamodules := $(call read-file, $(MODORDER))
421da177e4SLinus Torvalds
43ccae4cfaSMasahiro Yamadaifeq ($(KBUILD_EXTMOD),)
44ccae4cfaSMasahiro Yamadadst := $(MODLIB)/kernel
45ccae4cfaSMasahiro Yamadaelse
46b74d7bb7SLuis ChamberlainINSTALL_MOD_DIR ?= updates
47ccae4cfaSMasahiro Yamadadst := $(MODLIB)/$(INSTALL_MOD_DIR)
48ccae4cfaSMasahiro Yamadaendif
49ccae4cfaSMasahiro Yamada
5084850dbbSMasahiro Yamada$(foreach x, % :, $(if $(findstring $x, $(dst)), \
5184850dbbSMasahiro Yamada	$(error module installation path cannot contain '$x')))
5284850dbbSMasahiro Yamada
5365ce9c38SMasahiro Yamadasuffix-y				:=
5465ce9c38SMasahiro Yamadasuffix-$(CONFIG_MODULE_COMPRESS_GZIP)	:= .gz
5565ce9c38SMasahiro Yamadasuffix-$(CONFIG_MODULE_COMPRESS_XZ)	:= .xz
56c3d7ef37SPiotr Gorskisuffix-$(CONFIG_MODULE_COMPRESS_ZSTD)	:= .zst
5765ce9c38SMasahiro Yamada
58f65a4868SMasahiro Yamadamodules := $(patsubst $(extmod_prefix)%.o, $(dst)/%.ko$(suffix-y), $(modules))
592dfec887SMasahiro Yamadainstall-$(CONFIG_MODULES) += $(modules)
60ccae4cfaSMasahiro Yamada
61*5e02797bSMasahiro Yamada__modinst: $(install-y)
621da177e4SLinus Torvalds	@:
631da177e4SLinus Torvalds
6465ce9c38SMasahiro Yamada#
6565ce9c38SMasahiro Yamada# Installation
6665ce9c38SMasahiro Yamada#
6765ce9c38SMasahiro Yamadaquiet_cmd_install = INSTALL $@
682dfec887SMasahiro Yamada      cmd_install = cp $< $@
6965ce9c38SMasahiro Yamada
7065ce9c38SMasahiro Yamada# Strip
7165ce9c38SMasahiro Yamada#
7265ce9c38SMasahiro Yamada# INSTALL_MOD_STRIP, if defined, will cause modules to be stripped after they
7365ce9c38SMasahiro Yamada# are installed. If INSTALL_MOD_STRIP is '1', then the default option
7465ce9c38SMasahiro Yamada# --strip-debug will be used. Otherwise, INSTALL_MOD_STRIP value will be used
7565ce9c38SMasahiro Yamada# as the options to the strip command.
7665ce9c38SMasahiro Yamadaifdef INSTALL_MOD_STRIP
7765ce9c38SMasahiro Yamada
7865ce9c38SMasahiro Yamadaifeq ($(INSTALL_MOD_STRIP),1)
7965ce9c38SMasahiro Yamadastrip-option := --strip-debug
8065ce9c38SMasahiro Yamadaelse
8165ce9c38SMasahiro Yamadastrip-option := $(INSTALL_MOD_STRIP)
8265ce9c38SMasahiro Yamadaendif
8365ce9c38SMasahiro Yamada
8465ce9c38SMasahiro Yamadaquiet_cmd_strip = STRIP   $@
8565ce9c38SMasahiro Yamada      cmd_strip = $(STRIP) $(strip-option) $@
8665ce9c38SMasahiro Yamada
8765ce9c38SMasahiro Yamadaelse
8865ce9c38SMasahiro Yamada
8965ce9c38SMasahiro Yamadaquiet_cmd_strip =
9065ce9c38SMasahiro Yamada      cmd_strip = :
9165ce9c38SMasahiro Yamada
9265ce9c38SMasahiro Yamadaendif
9365ce9c38SMasahiro Yamada
9465ce9c38SMasahiro Yamada#
9565ce9c38SMasahiro Yamada# Signing
9665ce9c38SMasahiro Yamada# Don't stop modules_install even if we can't sign external modules.
9765ce9c38SMasahiro Yamada#
9865ce9c38SMasahiro Yamadaifeq ($(CONFIG_MODULE_SIG_ALL),y)
9922e46f64SJan Luebbeifeq ($(filter pkcs11:%, $(CONFIG_MODULE_SIG_KEY)),)
1004db9c2e3SMasahiro Yamadasig-key := $(if $(wildcard $(CONFIG_MODULE_SIG_KEY)),,$(srctree)/)$(CONFIG_MODULE_SIG_KEY)
10122e46f64SJan Luebbeelse
10222e46f64SJan Luebbesig-key := $(CONFIG_MODULE_SIG_KEY)
10322e46f64SJan Luebbeendif
10465ce9c38SMasahiro Yamadaquiet_cmd_sign = SIGN    $@
10522e46f64SJan Luebbe      cmd_sign = scripts/sign-file $(CONFIG_MODULE_SIG_HASH) "$(sig-key)" certs/signing_key.x509 $@ \
10665ce9c38SMasahiro Yamada                 $(if $(KBUILD_EXTMOD),|| true)
10765ce9c38SMasahiro Yamadaelse
10865ce9c38SMasahiro Yamadaquiet_cmd_sign :=
10965ce9c38SMasahiro Yamada      cmd_sign := :
11065ce9c38SMasahiro Yamadaendif
11165ce9c38SMasahiro Yamada
112961ab4a3SMasahiro Yamadaifeq ($(modules_sign_only),)
113961ab4a3SMasahiro Yamada
1142dfec887SMasahiro Yamada# Create necessary directories
1152dfec887SMasahiro Yamada$(shell mkdir -p $(sort $(dir $(install-y))))
1162dfec887SMasahiro Yamada
11765ce9c38SMasahiro Yamada$(dst)/%.ko: $(extmod_prefix)%.ko FORCE
118ccae4cfaSMasahiro Yamada	$(call cmd,install)
11965ce9c38SMasahiro Yamada	$(call cmd,strip)
12065ce9c38SMasahiro Yamada	$(call cmd,sign)
12165ce9c38SMasahiro Yamada
122*5e02797bSMasahiro Yamadaifdef CONFIG_MODULES
12379b96c33SMasahiro Yamada__modinst: depmod
12479b96c33SMasahiro Yamada
12579b96c33SMasahiro YamadaPHONY += depmod
126*5e02797bSMasahiro Yamadadepmod: $(install-y)
12779b96c33SMasahiro Yamada	$(call cmd,depmod)
12879b96c33SMasahiro Yamada
12979b96c33SMasahiro Yamadaquiet_cmd_depmod = DEPMOD  $(MODLIB)
13079b96c33SMasahiro Yamada      cmd_depmod = $(srctree)/scripts/depmod.sh $(KERNELRELEASE)
131*5e02797bSMasahiro Yamadaendif
13279b96c33SMasahiro Yamada
133961ab4a3SMasahiro Yamadaelse
134961ab4a3SMasahiro Yamada
135961ab4a3SMasahiro Yamada$(dst)/%.ko: FORCE
136961ab4a3SMasahiro Yamada	$(call cmd,sign)
137961ab4a3SMasahiro Yamada
138961ab4a3SMasahiro Yamadaendif
139961ab4a3SMasahiro Yamada
14065ce9c38SMasahiro Yamada#
14165ce9c38SMasahiro Yamada# Compression
14265ce9c38SMasahiro Yamada#
14365ce9c38SMasahiro Yamadaquiet_cmd_gzip = GZIP    $@
14465ce9c38SMasahiro Yamada      cmd_gzip = $(KGZIP) -n -f $<
14565ce9c38SMasahiro Yamadaquiet_cmd_xz = XZ      $@
14665ce9c38SMasahiro Yamada      cmd_xz = $(XZ) --lzma2=dict=2MiB -f $<
147c3d7ef37SPiotr Gorskiquiet_cmd_zstd = ZSTD    $@
148c3d7ef37SPiotr Gorski      cmd_zstd = $(ZSTD) -T0 --rm -f -q $<
14965ce9c38SMasahiro Yamada
15065ce9c38SMasahiro Yamada$(dst)/%.ko.gz: $(dst)/%.ko FORCE
15165ce9c38SMasahiro Yamada	$(call cmd,gzip)
15265ce9c38SMasahiro Yamada
15365ce9c38SMasahiro Yamada$(dst)/%.ko.xz: $(dst)/%.ko FORCE
15465ce9c38SMasahiro Yamada	$(call cmd,xz)
1551da177e4SLinus Torvalds
156c3d7ef37SPiotr Gorski$(dst)/%.ko.zst: $(dst)/%.ko FORCE
157c3d7ef37SPiotr Gorski	$(call cmd,zstd)
158c3d7ef37SPiotr Gorski
159ccae4cfaSMasahiro YamadaPHONY += FORCE
160ccae4cfaSMasahiro YamadaFORCE:
1614f193362SPaul Smith
1624f193362SPaul Smith.PHONY: $(PHONY)
163