xref: /linux/scripts/Makefile.modinst (revision 65ce9c38326e2588fcd1a3a4817c14b4660f430b)
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
9*65ce9c38SMasahiro 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
21*65ce9c38SMasahiro Yamadasuffix-y				:=
22*65ce9c38SMasahiro Yamadasuffix-$(CONFIG_MODULE_COMPRESS_GZIP)	:= .gz
23*65ce9c38SMasahiro Yamadasuffix-$(CONFIG_MODULE_COMPRESS_XZ)	:= .xz
24*65ce9c38SMasahiro Yamada
25*65ce9c38SMasahiro Yamadamodules := $(patsubst $(extmod_prefix)%, $(dst)/%$(suffix-y), $(modules))
26ccae4cfaSMasahiro Yamada
271da177e4SLinus Torvalds__modinst: $(modules)
281da177e4SLinus Torvalds	@:
291da177e4SLinus Torvalds
30*65ce9c38SMasahiro Yamadaquiet_cmd_none =
31*65ce9c38SMasahiro Yamada      cmd_none = :
321da177e4SLinus Torvalds
33*65ce9c38SMasahiro Yamada#
34*65ce9c38SMasahiro Yamada# Installation
35*65ce9c38SMasahiro Yamada#
36*65ce9c38SMasahiro Yamadaquiet_cmd_install = INSTALL $@
37*65ce9c38SMasahiro Yamada      cmd_install = mkdir -p $(dir $@); cp $< $@
38*65ce9c38SMasahiro Yamada
39*65ce9c38SMasahiro Yamada# Strip
40*65ce9c38SMasahiro Yamada#
41*65ce9c38SMasahiro Yamada# INSTALL_MOD_STRIP, if defined, will cause modules to be stripped after they
42*65ce9c38SMasahiro Yamada# are installed. If INSTALL_MOD_STRIP is '1', then the default option
43*65ce9c38SMasahiro Yamada# --strip-debug will be used. Otherwise, INSTALL_MOD_STRIP value will be used
44*65ce9c38SMasahiro Yamada# as the options to the strip command.
45*65ce9c38SMasahiro Yamadaifdef INSTALL_MOD_STRIP
46*65ce9c38SMasahiro Yamada
47*65ce9c38SMasahiro Yamadaifeq ($(INSTALL_MOD_STRIP),1)
48*65ce9c38SMasahiro Yamadastrip-option := --strip-debug
49*65ce9c38SMasahiro Yamadaelse
50*65ce9c38SMasahiro Yamadastrip-option := $(INSTALL_MOD_STRIP)
51*65ce9c38SMasahiro Yamadaendif
52*65ce9c38SMasahiro Yamada
53*65ce9c38SMasahiro Yamadaquiet_cmd_strip = STRIP   $@
54*65ce9c38SMasahiro Yamada      cmd_strip = $(STRIP) $(strip-option) $@
55*65ce9c38SMasahiro Yamada
56*65ce9c38SMasahiro Yamadaelse
57*65ce9c38SMasahiro Yamada
58*65ce9c38SMasahiro Yamadaquiet_cmd_strip =
59*65ce9c38SMasahiro Yamada      cmd_strip = :
60*65ce9c38SMasahiro Yamada
61*65ce9c38SMasahiro Yamadaendif
62*65ce9c38SMasahiro Yamada
63*65ce9c38SMasahiro Yamada#
64*65ce9c38SMasahiro Yamada# Signing
65*65ce9c38SMasahiro Yamada# Don't stop modules_install even if we can't sign external modules.
66*65ce9c38SMasahiro Yamada#
67*65ce9c38SMasahiro Yamadaifeq ($(CONFIG_MODULE_SIG_ALL),y)
68*65ce9c38SMasahiro Yamadaquiet_cmd_sign = SIGN    $@
69*65ce9c38SMasahiro Yamada$(eval $(call config_filename,MODULE_SIG_KEY))
70*65ce9c38SMasahiro Yamada      cmd_sign = scripts/sign-file $(CONFIG_MODULE_SIG_HASH) $(MODULE_SIG_KEY_SRCPREFIX)$(CONFIG_MODULE_SIG_KEY) certs/signing_key.x509 $@ \
71*65ce9c38SMasahiro Yamada                 $(if $(KBUILD_EXTMOD),|| true)
72*65ce9c38SMasahiro Yamadaelse
73*65ce9c38SMasahiro Yamadaquiet_cmd_sign :=
74*65ce9c38SMasahiro Yamada      cmd_sign := :
75*65ce9c38SMasahiro Yamadaendif
76*65ce9c38SMasahiro Yamada
77*65ce9c38SMasahiro Yamada$(dst)/%.ko: $(extmod_prefix)%.ko FORCE
78ccae4cfaSMasahiro Yamada	$(call cmd,install)
79*65ce9c38SMasahiro Yamada	$(call cmd,strip)
80*65ce9c38SMasahiro Yamada	$(call cmd,sign)
81*65ce9c38SMasahiro Yamada
82*65ce9c38SMasahiro Yamada#
83*65ce9c38SMasahiro Yamada# Compression
84*65ce9c38SMasahiro Yamada#
85*65ce9c38SMasahiro Yamadaquiet_cmd_gzip = GZIP    $@
86*65ce9c38SMasahiro Yamada      cmd_gzip = $(KGZIP) -n -f $<
87*65ce9c38SMasahiro Yamadaquiet_cmd_xz = XZ      $@
88*65ce9c38SMasahiro Yamada      cmd_xz = $(XZ) --lzma2=dict=2MiB -f $<
89*65ce9c38SMasahiro Yamada
90*65ce9c38SMasahiro Yamada$(dst)/%.ko.gz: $(dst)/%.ko FORCE
91*65ce9c38SMasahiro Yamada	$(call cmd,gzip)
92*65ce9c38SMasahiro Yamada
93*65ce9c38SMasahiro Yamada$(dst)/%.ko.xz: $(dst)/%.ko FORCE
94*65ce9c38SMasahiro Yamada	$(call cmd,xz)
951da177e4SLinus Torvalds
96ccae4cfaSMasahiro YamadaPHONY += FORCE
97ccae4cfaSMasahiro YamadaFORCE:
984f193362SPaul Smith
994f193362SPaul Smith.PHONY: $(PHONY)
100