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 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 33*ae70d708SKris 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 36*ae70d708SKris Van Heesinstall-$(CONFIG_BUILTIN_MODULE_RANGES) += $(MODLIB)/modules.builtin.ranges 37*ae70d708SKris Van Hees 38*ae70d708SKris 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 436768fa4bSMasahiro Yamadamodules := $(call read-file, $(MODORDER)) 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 := 5665ce9c38SMasahiro Yamadasuffix-$(CONFIG_MODULE_COMPRESS_GZIP) := .gz 5765ce9c38SMasahiro Yamadasuffix-$(CONFIG_MODULE_COMPRESS_XZ) := .xz 58c3d7ef37SPiotr Gorskisuffix-$(CONFIG_MODULE_COMPRESS_ZSTD) := .zst 5965ce9c38SMasahiro Yamada 60f65a4868SMasahiro Yamadamodules := $(patsubst $(extmod_prefix)%.o, $(dst)/%.ko$(suffix-y), $(modules)) 612dfec887SMasahiro Yamadainstall-$(CONFIG_MODULES) += $(modules) 62ccae4cfaSMasahiro Yamada 635e02797bSMasahiro Yamada__modinst: $(install-y) 641da177e4SLinus Torvalds @: 651da177e4SLinus Torvalds 6665ce9c38SMasahiro Yamada# 6765ce9c38SMasahiro Yamada# Installation 6865ce9c38SMasahiro Yamada# 6965ce9c38SMasahiro Yamadaquiet_cmd_install = INSTALL $@ 702dfec887SMasahiro Yamada cmd_install = cp $< $@ 7165ce9c38SMasahiro Yamada 7265ce9c38SMasahiro Yamada# Strip 7365ce9c38SMasahiro Yamada# 7465ce9c38SMasahiro Yamada# INSTALL_MOD_STRIP, if defined, will cause modules to be stripped after they 7565ce9c38SMasahiro Yamada# are installed. If INSTALL_MOD_STRIP is '1', then the default option 7665ce9c38SMasahiro Yamada# --strip-debug will be used. Otherwise, INSTALL_MOD_STRIP value will be used 7765ce9c38SMasahiro Yamada# as the options to the strip command. 7865ce9c38SMasahiro Yamadaifdef INSTALL_MOD_STRIP 7965ce9c38SMasahiro Yamada 8065ce9c38SMasahiro Yamadaifeq ($(INSTALL_MOD_STRIP),1) 8165ce9c38SMasahiro Yamadastrip-option := --strip-debug 8265ce9c38SMasahiro Yamadaelse 8365ce9c38SMasahiro Yamadastrip-option := $(INSTALL_MOD_STRIP) 8465ce9c38SMasahiro Yamadaendif 8565ce9c38SMasahiro Yamada 8665ce9c38SMasahiro Yamadaquiet_cmd_strip = STRIP $@ 8765ce9c38SMasahiro Yamada cmd_strip = $(STRIP) $(strip-option) $@ 8865ce9c38SMasahiro Yamada 8965ce9c38SMasahiro Yamadaelse 9065ce9c38SMasahiro Yamada 9165ce9c38SMasahiro Yamadaquiet_cmd_strip = 9265ce9c38SMasahiro Yamada cmd_strip = : 9365ce9c38SMasahiro Yamada 9465ce9c38SMasahiro Yamadaendif 9565ce9c38SMasahiro Yamada 9665ce9c38SMasahiro Yamada# 9765ce9c38SMasahiro Yamada# Signing 9865ce9c38SMasahiro Yamada# Don't stop modules_install even if we can't sign external modules. 9965ce9c38SMasahiro Yamada# 10022e46f64SJan Luebbeifeq ($(filter pkcs11:%, $(CONFIG_MODULE_SIG_KEY)),) 1014db9c2e3SMasahiro Yamadasig-key := $(if $(wildcard $(CONFIG_MODULE_SIG_KEY)),,$(srctree)/)$(CONFIG_MODULE_SIG_KEY) 10222e46f64SJan Luebbeelse 10322e46f64SJan Luebbesig-key := $(CONFIG_MODULE_SIG_KEY) 10422e46f64SJan Luebbeendif 10565ce9c38SMasahiro Yamadaquiet_cmd_sign = SIGN $@ 10622e46f64SJan Luebbe cmd_sign = scripts/sign-file $(CONFIG_MODULE_SIG_HASH) "$(sig-key)" certs/signing_key.x509 $@ \ 10765ce9c38SMasahiro Yamada $(if $(KBUILD_EXTMOD),|| true) 10802e8487bSMasahiro Yamada 109151aeca2SMasahiro Yamadaifeq ($(sign-only),) 11002e8487bSMasahiro Yamada 11102e8487bSMasahiro Yamada# During modules_install, modules are signed only when CONFIG_MODULE_SIG_ALL=y. 11202e8487bSMasahiro Yamadaifndef CONFIG_MODULE_SIG_ALL 11365ce9c38SMasahiro Yamadaquiet_cmd_sign := 11465ce9c38SMasahiro Yamada cmd_sign := : 11565ce9c38SMasahiro Yamadaendif 11665ce9c38SMasahiro Yamada 1172dfec887SMasahiro Yamada# Create necessary directories 118552c5013SMichal Kubecek$(foreach dir, $(sort $(dir $(install-y))), $(shell mkdir -p $(dir))) 1192dfec887SMasahiro Yamada 12065ce9c38SMasahiro Yamada$(dst)/%.ko: $(extmod_prefix)%.ko FORCE 121ccae4cfaSMasahiro Yamada $(call cmd,install) 12265ce9c38SMasahiro Yamada $(call cmd,strip) 12365ce9c38SMasahiro Yamada $(call cmd,sign) 12465ce9c38SMasahiro Yamada 1255e02797bSMasahiro Yamadaifdef CONFIG_MODULES 12679b96c33SMasahiro Yamada__modinst: depmod 12779b96c33SMasahiro Yamada 12879b96c33SMasahiro YamadaPHONY += depmod 1295e02797bSMasahiro Yamadadepmod: $(install-y) 13079b96c33SMasahiro Yamada $(call cmd,depmod) 13179b96c33SMasahiro Yamada 13279b96c33SMasahiro Yamadaquiet_cmd_depmod = DEPMOD $(MODLIB) 13379b96c33SMasahiro Yamada cmd_depmod = $(srctree)/scripts/depmod.sh $(KERNELRELEASE) 1345e02797bSMasahiro Yamadaendif 13579b96c33SMasahiro Yamada 136961ab4a3SMasahiro Yamadaelse 137961ab4a3SMasahiro Yamada 138961ab4a3SMasahiro Yamada$(dst)/%.ko: FORCE 139961ab4a3SMasahiro Yamada $(call cmd,sign) 140961ab4a3SMasahiro Yamada 141961ab4a3SMasahiro Yamadaendif 142961ab4a3SMasahiro Yamada 14365ce9c38SMasahiro Yamada# 14465ce9c38SMasahiro Yamada# Compression 14565ce9c38SMasahiro Yamada# 14665ce9c38SMasahiro Yamadaquiet_cmd_gzip = GZIP $@ 14765ce9c38SMasahiro Yamada cmd_gzip = $(KGZIP) -n -f $< 14865ce9c38SMasahiro Yamadaquiet_cmd_xz = XZ $@ 149fbf5892dSMartin Nybo Andersen cmd_xz = $(XZ) --check=crc32 --lzma2=dict=1MiB -f $< 150c3d7ef37SPiotr Gorskiquiet_cmd_zstd = ZSTD $@ 1510c4beffbSMasahiro Yamada cmd_zstd = $(ZSTD) --rm -f -q $< 15265ce9c38SMasahiro Yamada 15365ce9c38SMasahiro Yamada$(dst)/%.ko.gz: $(dst)/%.ko FORCE 15465ce9c38SMasahiro Yamada $(call cmd,gzip) 15565ce9c38SMasahiro Yamada 15665ce9c38SMasahiro Yamada$(dst)/%.ko.xz: $(dst)/%.ko FORCE 15765ce9c38SMasahiro Yamada $(call cmd,xz) 1581da177e4SLinus Torvalds 159c3d7ef37SPiotr Gorski$(dst)/%.ko.zst: $(dst)/%.ko FORCE 160c3d7ef37SPiotr Gorski $(call cmd,zstd) 161c3d7ef37SPiotr Gorski 162ccae4cfaSMasahiro YamadaPHONY += FORCE 163ccae4cfaSMasahiro YamadaFORCE: 1644f193362SPaul Smith 1654f193362SPaul Smith.PHONY: $(PHONY) 166