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