123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- # SPDX-License-Identifier: GPL-2.0
- # ==========================================================================
- # Installing modules
- # ==========================================================================
- PHONY := __modinst
- __modinst:
- include include/config/auto.conf
- include $(srctree)/scripts/Kbuild.include
- modules := $(sort $(shell cat $(MODORDER)))
- ifeq ($(KBUILD_EXTMOD),)
- dst := $(MODLIB)/kernel
- else
- INSTALL_MOD_DIR ?= extra
- dst := $(MODLIB)/$(INSTALL_MOD_DIR)
- endif
- $(foreach x, % :, $(if $(findstring $x, $(dst)), \
- $(error module installation path cannot contain '$x')))
- suffix-y :=
- suffix-$(CONFIG_MODULE_COMPRESS_GZIP) := .gz
- suffix-$(CONFIG_MODULE_COMPRESS_XZ) := .xz
- suffix-$(CONFIG_MODULE_COMPRESS_ZSTD) := .zst
- modules := $(patsubst $(extmod_prefix)%, $(dst)/%$(suffix-y), $(modules))
- ifneq ($(KBUILD_EXTMOD),)
- extmod_suffix := $(shell echo "${KBUILD_EXTMOD}" | md5sum | cut -d " " -f 1)
- modules += $(dst)/modules.order.$(extmod_suffix)
- endif
- __modinst: $(modules)
- @:
- #
- # Installation
- #
- quiet_cmd_install = INSTALL $@
- cmd_install = mkdir -p $(dir $@); cp $< $@
- # Strip
- #
- # INSTALL_MOD_STRIP, if defined, will cause modules to be stripped after they
- # are installed. If INSTALL_MOD_STRIP is '1', then the default option
- # --strip-debug will be used. Otherwise, INSTALL_MOD_STRIP value will be used
- # as the options to the strip command.
- ifdef INSTALL_MOD_STRIP
- ifeq ($(INSTALL_MOD_STRIP),1)
- strip-option := --strip-debug
- else
- strip-option := $(INSTALL_MOD_STRIP)
- endif
- quiet_cmd_strip = STRIP $@
- cmd_strip = $(STRIP) $(strip-option) $@
- else
- quiet_cmd_strip =
- cmd_strip = :
- endif
- #
- # Signing
- # Don't stop modules_install even if we can't sign external modules.
- #
- ifeq ($(CONFIG_MODULE_SIG_ALL),y)
- ifeq ($(filter pkcs11:%, $(CONFIG_MODULE_SIG_KEY)),)
- sig-key := $(if $(wildcard $(CONFIG_MODULE_SIG_KEY)),,$(srctree)/)$(CONFIG_MODULE_SIG_KEY)
- else
- sig-key := $(CONFIG_MODULE_SIG_KEY)
- endif
- quiet_cmd_sign = SIGN $@
- cmd_sign = scripts/sign-file $(CONFIG_MODULE_SIG_HASH) "$(sig-key)" certs/signing_key.x509 $@ \
- $(if $(KBUILD_EXTMOD),|| true)
- else
- quiet_cmd_sign :=
- cmd_sign := :
- endif
- ifeq ($(modules_sign_only),)
- $(dst)/%.ko: $(extmod_prefix)%.ko FORCE
- $(call cmd,install)
- $(call cmd,strip)
- $(call cmd,sign)
- ifneq ($(KBUILD_EXTMOD),)
- $(dst)/modules.order.$(extmod_suffix): $(MODORDER) FORCE
- $(call cmd,install)
- @sed -i "s:^$(KBUILD_EXTMOD):$(INSTALL_MOD_DIR):g" $@
- endif
- else
- $(dst)/%.ko: FORCE
- $(call cmd,sign)
- endif
- #
- # Compression
- #
- quiet_cmd_gzip = GZIP $@
- cmd_gzip = $(KGZIP) -n -f $<
- quiet_cmd_xz = XZ $@
- cmd_xz = $(XZ) --lzma2=dict=2MiB -f $<
- quiet_cmd_zstd = ZSTD $@
- cmd_zstd = $(ZSTD) -T0 --rm -f -q $<
- $(dst)/%.ko.gz: $(dst)/%.ko FORCE
- $(call cmd,gzip)
- $(dst)/%.ko.xz: $(dst)/%.ko FORCE
- $(call cmd,xz)
- $(dst)/%.ko.zst: $(dst)/%.ko FORCE
- $(call cmd,zstd)
- PHONY += FORCE
- FORCE:
- .PHONY: $(PHONY)
|