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