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 335e02797bSMasahiro Yamada# Install modules.builtin(.modinfo) even when CONFIG_MODULES is disabled. 345e02797bSMasahiro Yamadainstall-y += $(addprefix $(MODLIB)/, modules.builtin modules.builtin.modinfo) 355e02797bSMasahiro Yamada 365e02797bSMasahiro Yamada$(addprefix $(MODLIB)/, modules.builtin modules.builtin.modinfo): $(MODLIB)/%: % FORCE 375e02797bSMasahiro Yamada $(call cmd,install) 385e02797bSMasahiro Yamada 395e02797bSMasahiro Yamadaendif 405e02797bSMasahiro 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 615e02797bSMasahiro 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# 9822e46f64SJan Luebbeifeq ($(filter pkcs11:%, $(CONFIG_MODULE_SIG_KEY)),) 994db9c2e3SMasahiro Yamadasig-key := $(if $(wildcard $(CONFIG_MODULE_SIG_KEY)),,$(srctree)/)$(CONFIG_MODULE_SIG_KEY) 10022e46f64SJan Luebbeelse 10122e46f64SJan Luebbesig-key := $(CONFIG_MODULE_SIG_KEY) 10222e46f64SJan Luebbeendif 10365ce9c38SMasahiro Yamadaquiet_cmd_sign = SIGN $@ 10422e46f64SJan Luebbe cmd_sign = scripts/sign-file $(CONFIG_MODULE_SIG_HASH) "$(sig-key)" certs/signing_key.x509 $@ \ 10565ce9c38SMasahiro Yamada $(if $(KBUILD_EXTMOD),|| true) 10602e8487bSMasahiro Yamada 107151aeca2SMasahiro Yamadaifeq ($(sign-only),) 10802e8487bSMasahiro Yamada 10902e8487bSMasahiro Yamada# During modules_install, modules are signed only when CONFIG_MODULE_SIG_ALL=y. 11002e8487bSMasahiro Yamadaifndef CONFIG_MODULE_SIG_ALL 11165ce9c38SMasahiro Yamadaquiet_cmd_sign := 11265ce9c38SMasahiro Yamada cmd_sign := : 11365ce9c38SMasahiro Yamadaendif 11465ce9c38SMasahiro Yamada 1152dfec887SMasahiro Yamada# Create necessary directories 116552c5013SMichal Kubecek$(foreach dir, $(sort $(dir $(install-y))), $(shell mkdir -p $(dir))) 1172dfec887SMasahiro Yamada 11865ce9c38SMasahiro Yamada$(dst)/%.ko: $(extmod_prefix)%.ko FORCE 119ccae4cfaSMasahiro Yamada $(call cmd,install) 12065ce9c38SMasahiro Yamada $(call cmd,strip) 12165ce9c38SMasahiro Yamada $(call cmd,sign) 12265ce9c38SMasahiro Yamada 1235e02797bSMasahiro Yamadaifdef CONFIG_MODULES 12479b96c33SMasahiro Yamada__modinst: depmod 12579b96c33SMasahiro Yamada 12679b96c33SMasahiro YamadaPHONY += depmod 1275e02797bSMasahiro Yamadadepmod: $(install-y) 12879b96c33SMasahiro Yamada $(call cmd,depmod) 12979b96c33SMasahiro Yamada 13079b96c33SMasahiro Yamadaquiet_cmd_depmod = DEPMOD $(MODLIB) 13179b96c33SMasahiro Yamada cmd_depmod = $(srctree)/scripts/depmod.sh $(KERNELRELEASE) 1325e02797bSMasahiro Yamadaendif 13379b96c33SMasahiro Yamada 134961ab4a3SMasahiro Yamadaelse 135961ab4a3SMasahiro Yamada 136961ab4a3SMasahiro Yamada$(dst)/%.ko: FORCE 137961ab4a3SMasahiro Yamada $(call cmd,sign) 138961ab4a3SMasahiro Yamada 139961ab4a3SMasahiro Yamadaendif 140961ab4a3SMasahiro Yamada 14165ce9c38SMasahiro Yamada# 14265ce9c38SMasahiro Yamada# Compression 14365ce9c38SMasahiro Yamada# 14465ce9c38SMasahiro Yamadaquiet_cmd_gzip = GZIP $@ 14565ce9c38SMasahiro Yamada cmd_gzip = $(KGZIP) -n -f $< 14665ce9c38SMasahiro Yamadaquiet_cmd_xz = XZ $@ 147*fbf5892dSMartin Nybo Andersen cmd_xz = $(XZ) --check=crc32 --lzma2=dict=1MiB -f $< 148c3d7ef37SPiotr Gorskiquiet_cmd_zstd = ZSTD $@ 149c3d7ef37SPiotr Gorski cmd_zstd = $(ZSTD) -T0 --rm -f -q $< 15065ce9c38SMasahiro Yamada 15165ce9c38SMasahiro Yamada$(dst)/%.ko.gz: $(dst)/%.ko FORCE 15265ce9c38SMasahiro Yamada $(call cmd,gzip) 15365ce9c38SMasahiro Yamada 15465ce9c38SMasahiro Yamada$(dst)/%.ko.xz: $(dst)/%.ko FORCE 15565ce9c38SMasahiro Yamada $(call cmd,xz) 1561da177e4SLinus Torvalds 157c3d7ef37SPiotr Gorski$(dst)/%.ko.zst: $(dst)/%.ko FORCE 158c3d7ef37SPiotr Gorski $(call cmd,zstd) 159c3d7ef37SPiotr Gorski 160ccae4cfaSMasahiro YamadaPHONY += FORCE 161ccae4cfaSMasahiro YamadaFORCE: 1624f193362SPaul Smith 1634f193362SPaul Smith.PHONY: $(PHONY) 164