xref: /linux/scripts/Makefile.modinst (revision 4db9c2e3d055cc11e64b5c9bbaa70b5a552adf0f)
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
12ccae4cfaSMasahiro Yamadamodules := $(sort $(shell cat $(MODORDER)))
131da177e4SLinus Torvalds
14ccae4cfaSMasahiro Yamadaifeq ($(KBUILD_EXTMOD),)
15ccae4cfaSMasahiro Yamadadst := $(MODLIB)/kernel
16ccae4cfaSMasahiro Yamadaelse
17ccae4cfaSMasahiro YamadaINSTALL_MOD_DIR ?= extra
18ccae4cfaSMasahiro Yamadadst := $(MODLIB)/$(INSTALL_MOD_DIR)
19ccae4cfaSMasahiro Yamadaendif
20ccae4cfaSMasahiro Yamada
2165ce9c38SMasahiro Yamadasuffix-y				:=
2265ce9c38SMasahiro Yamadasuffix-$(CONFIG_MODULE_COMPRESS_GZIP)	:= .gz
2365ce9c38SMasahiro Yamadasuffix-$(CONFIG_MODULE_COMPRESS_XZ)	:= .xz
24c3d7ef37SPiotr Gorskisuffix-$(CONFIG_MODULE_COMPRESS_ZSTD)	:= .zst
2565ce9c38SMasahiro Yamada
2665ce9c38SMasahiro Yamadamodules := $(patsubst $(extmod_prefix)%, $(dst)/%$(suffix-y), $(modules))
27ccae4cfaSMasahiro Yamada
281da177e4SLinus Torvalds__modinst: $(modules)
291da177e4SLinus Torvalds	@:
301da177e4SLinus Torvalds
3165ce9c38SMasahiro Yamadaquiet_cmd_none =
3265ce9c38SMasahiro Yamada      cmd_none = :
331da177e4SLinus Torvalds
3465ce9c38SMasahiro Yamada#
3565ce9c38SMasahiro Yamada# Installation
3665ce9c38SMasahiro Yamada#
3765ce9c38SMasahiro Yamadaquiet_cmd_install = INSTALL $@
3865ce9c38SMasahiro Yamada      cmd_install = mkdir -p $(dir $@); cp $< $@
3965ce9c38SMasahiro Yamada
4065ce9c38SMasahiro Yamada# Strip
4165ce9c38SMasahiro Yamada#
4265ce9c38SMasahiro Yamada# INSTALL_MOD_STRIP, if defined, will cause modules to be stripped after they
4365ce9c38SMasahiro Yamada# are installed. If INSTALL_MOD_STRIP is '1', then the default option
4465ce9c38SMasahiro Yamada# --strip-debug will be used. Otherwise, INSTALL_MOD_STRIP value will be used
4565ce9c38SMasahiro Yamada# as the options to the strip command.
4665ce9c38SMasahiro Yamadaifdef INSTALL_MOD_STRIP
4765ce9c38SMasahiro Yamada
4865ce9c38SMasahiro Yamadaifeq ($(INSTALL_MOD_STRIP),1)
4965ce9c38SMasahiro Yamadastrip-option := --strip-debug
5065ce9c38SMasahiro Yamadaelse
5165ce9c38SMasahiro Yamadastrip-option := $(INSTALL_MOD_STRIP)
5265ce9c38SMasahiro Yamadaendif
5365ce9c38SMasahiro Yamada
5465ce9c38SMasahiro Yamadaquiet_cmd_strip = STRIP   $@
5565ce9c38SMasahiro Yamada      cmd_strip = $(STRIP) $(strip-option) $@
5665ce9c38SMasahiro Yamada
5765ce9c38SMasahiro Yamadaelse
5865ce9c38SMasahiro Yamada
5965ce9c38SMasahiro Yamadaquiet_cmd_strip =
6065ce9c38SMasahiro Yamada      cmd_strip = :
6165ce9c38SMasahiro Yamada
6265ce9c38SMasahiro Yamadaendif
6365ce9c38SMasahiro Yamada
6465ce9c38SMasahiro Yamada#
6565ce9c38SMasahiro Yamada# Signing
6665ce9c38SMasahiro Yamada# Don't stop modules_install even if we can't sign external modules.
6765ce9c38SMasahiro Yamada#
6865ce9c38SMasahiro Yamadaifeq ($(CONFIG_MODULE_SIG_ALL),y)
69*4db9c2e3SMasahiro YamadaCONFIG_MODULE_SIG_KEY := $(CONFIG_MODULE_SIG_KEY:"%"=%)
70*4db9c2e3SMasahiro Yamadasig-key := $(if $(wildcard $(CONFIG_MODULE_SIG_KEY)),,$(srctree)/)$(CONFIG_MODULE_SIG_KEY)
7165ce9c38SMasahiro Yamadaquiet_cmd_sign = SIGN    $@
72*4db9c2e3SMasahiro Yamada      cmd_sign = scripts/sign-file $(CONFIG_MODULE_SIG_HASH) $(sig-key) certs/signing_key.x509 $@ \
7365ce9c38SMasahiro Yamada                 $(if $(KBUILD_EXTMOD),|| true)
7465ce9c38SMasahiro Yamadaelse
7565ce9c38SMasahiro Yamadaquiet_cmd_sign :=
7665ce9c38SMasahiro Yamada      cmd_sign := :
7765ce9c38SMasahiro Yamadaendif
7865ce9c38SMasahiro Yamada
79961ab4a3SMasahiro Yamadaifeq ($(modules_sign_only),)
80961ab4a3SMasahiro Yamada
8165ce9c38SMasahiro Yamada$(dst)/%.ko: $(extmod_prefix)%.ko FORCE
82ccae4cfaSMasahiro Yamada	$(call cmd,install)
8365ce9c38SMasahiro Yamada	$(call cmd,strip)
8465ce9c38SMasahiro Yamada	$(call cmd,sign)
8565ce9c38SMasahiro Yamada
86961ab4a3SMasahiro Yamadaelse
87961ab4a3SMasahiro Yamada
88961ab4a3SMasahiro Yamada$(dst)/%.ko: FORCE
89961ab4a3SMasahiro Yamada	$(call cmd,sign)
90961ab4a3SMasahiro Yamada
91961ab4a3SMasahiro Yamadaendif
92961ab4a3SMasahiro Yamada
9365ce9c38SMasahiro Yamada#
9465ce9c38SMasahiro Yamada# Compression
9565ce9c38SMasahiro Yamada#
9665ce9c38SMasahiro Yamadaquiet_cmd_gzip = GZIP    $@
9765ce9c38SMasahiro Yamada      cmd_gzip = $(KGZIP) -n -f $<
9865ce9c38SMasahiro Yamadaquiet_cmd_xz = XZ      $@
9965ce9c38SMasahiro Yamada      cmd_xz = $(XZ) --lzma2=dict=2MiB -f $<
100c3d7ef37SPiotr Gorskiquiet_cmd_zstd = ZSTD    $@
101c3d7ef37SPiotr Gorski      cmd_zstd = $(ZSTD) -T0 --rm -f -q $<
10265ce9c38SMasahiro Yamada
10365ce9c38SMasahiro Yamada$(dst)/%.ko.gz: $(dst)/%.ko FORCE
10465ce9c38SMasahiro Yamada	$(call cmd,gzip)
10565ce9c38SMasahiro Yamada
10665ce9c38SMasahiro Yamada$(dst)/%.ko.xz: $(dst)/%.ko FORCE
10765ce9c38SMasahiro Yamada	$(call cmd,xz)
1081da177e4SLinus Torvalds
109c3d7ef37SPiotr Gorski$(dst)/%.ko.zst: $(dst)/%.ko FORCE
110c3d7ef37SPiotr Gorski	$(call cmd,zstd)
111c3d7ef37SPiotr Gorski
112ccae4cfaSMasahiro YamadaPHONY += FORCE
113ccae4cfaSMasahiro YamadaFORCE:
1144f193362SPaul Smith
1154f193362SPaul Smith.PHONY: $(PHONY)
116