]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | # SPDX-License-Identifier: GPL-2.0 |
1da177e4 LT |
2 | # ========================================================================== |
3 | # Installing modules | |
4 | # ========================================================================== | |
5 | ||
4f193362 | 6 | PHONY := __modinst |
1da177e4 LT |
7 | __modinst: |
8 | ||
65ce9c38 | 9 | include include/config/auto.conf |
3204a7fb | 10 | include $(srctree)/scripts/Kbuild.include |
1da177e4 | 11 | |
ccae4cfa MY |
12 | modules := $(sort $(shell cat $(MODORDER))) |
13 | ||
14 | ifeq ($(KBUILD_EXTMOD),) | |
15 | dst := $(MODLIB)/kernel | |
16 | else | |
17 | INSTALL_MOD_DIR ?= extra | |
18 | dst := $(MODLIB)/$(INSTALL_MOD_DIR) | |
19 | endif | |
20 | ||
65ce9c38 MY |
21 | suffix-y := |
22 | suffix-$(CONFIG_MODULE_COMPRESS_GZIP) := .gz | |
23 | suffix-$(CONFIG_MODULE_COMPRESS_XZ) := .xz | |
c3d7ef37 | 24 | suffix-$(CONFIG_MODULE_COMPRESS_ZSTD) := .zst |
65ce9c38 MY |
25 | |
26 | modules := $(patsubst $(extmod_prefix)%, $(dst)/%$(suffix-y), $(modules)) | |
1da177e4 | 27 | |
1da177e4 LT |
28 | __modinst: $(modules) |
29 | @: | |
30 | ||
65ce9c38 MY |
31 | quiet_cmd_none = |
32 | cmd_none = : | |
33 | ||
34 | # | |
35 | # Installation | |
36 | # | |
ccae4cfa | 37 | quiet_cmd_install = INSTALL $@ |
65ce9c38 MY |
38 | cmd_install = mkdir -p $(dir $@); cp $< $@ |
39 | ||
40 | # Strip | |
41 | # | |
42 | # INSTALL_MOD_STRIP, if defined, will cause modules to be stripped after they | |
43 | # are installed. If INSTALL_MOD_STRIP is '1', then the default option | |
44 | # --strip-debug will be used. Otherwise, INSTALL_MOD_STRIP value will be used | |
45 | # as the options to the strip command. | |
46 | ifdef INSTALL_MOD_STRIP | |
47 | ||
48 | ifeq ($(INSTALL_MOD_STRIP),1) | |
49 | strip-option := --strip-debug | |
50 | else | |
51 | strip-option := $(INSTALL_MOD_STRIP) | |
52 | endif | |
53 | ||
54 | quiet_cmd_strip = STRIP $@ | |
55 | cmd_strip = $(STRIP) $(strip-option) $@ | |
56 | ||
57 | else | |
ccae4cfa | 58 | |
65ce9c38 MY |
59 | quiet_cmd_strip = |
60 | cmd_strip = : | |
61 | ||
62 | endif | |
63 | ||
64 | # | |
65 | # Signing | |
66 | # Don't stop modules_install even if we can't sign external modules. | |
67 | # | |
68 | ifeq ($(CONFIG_MODULE_SIG_ALL),y) | |
4db9c2e3 | 69 | sig-key := $(if $(wildcard $(CONFIG_MODULE_SIG_KEY)),,$(srctree)/)$(CONFIG_MODULE_SIG_KEY) |
65ce9c38 | 70 | quiet_cmd_sign = SIGN $@ |
4db9c2e3 | 71 | cmd_sign = scripts/sign-file $(CONFIG_MODULE_SIG_HASH) $(sig-key) certs/signing_key.x509 $@ \ |
65ce9c38 MY |
72 | $(if $(KBUILD_EXTMOD),|| true) |
73 | else | |
74 | quiet_cmd_sign := | |
75 | cmd_sign := : | |
76 | endif | |
77 | ||
961ab4a3 MY |
78 | ifeq ($(modules_sign_only),) |
79 | ||
65ce9c38 | 80 | $(dst)/%.ko: $(extmod_prefix)%.ko FORCE |
ccae4cfa | 81 | $(call cmd,install) |
65ce9c38 MY |
82 | $(call cmd,strip) |
83 | $(call cmd,sign) | |
84 | ||
961ab4a3 MY |
85 | else |
86 | ||
87 | $(dst)/%.ko: FORCE | |
88 | $(call cmd,sign) | |
89 | ||
90 | endif | |
91 | ||
65ce9c38 MY |
92 | # |
93 | # Compression | |
94 | # | |
95 | quiet_cmd_gzip = GZIP $@ | |
96 | cmd_gzip = $(KGZIP) -n -f $< | |
97 | quiet_cmd_xz = XZ $@ | |
98 | cmd_xz = $(XZ) --lzma2=dict=2MiB -f $< | |
c3d7ef37 PG |
99 | quiet_cmd_zstd = ZSTD $@ |
100 | cmd_zstd = $(ZSTD) -T0 --rm -f -q $< | |
65ce9c38 MY |
101 | |
102 | $(dst)/%.ko.gz: $(dst)/%.ko FORCE | |
103 | $(call cmd,gzip) | |
104 | ||
105 | $(dst)/%.ko.xz: $(dst)/%.ko FORCE | |
106 | $(call cmd,xz) | |
ccae4cfa | 107 | |
c3d7ef37 PG |
108 | $(dst)/%.ko.zst: $(dst)/%.ko FORCE |
109 | $(call cmd,zstd) | |
110 | ||
ccae4cfa MY |
111 | PHONY += FORCE |
112 | FORCE: | |
4f193362 | 113 | |
4f193362 | 114 | .PHONY: $(PHONY) |