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