| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- # SPDX-License-Identifier: GPL-2.0
- # ==========================================================================
- # Installing modules
- # ==========================================================================
- PHONY := __modinst
- __modinst:
- include $(objtree)/include/config/auto.conf
- include $(srctree)/scripts/Kbuild.include
- install-y :=
- ifeq ($(KBUILD_EXTMOD)$(sign-only),)
- # remove the old directory and symlink
- $(shell rm -fr $(MODLIB)/kernel $(MODLIB)/build)
- install-$(CONFIG_MODULES) += $(addprefix $(MODLIB)/, build modules.order)
- $(MODLIB)/build: FORCE
- $(call cmd,symlink)
- quiet_cmd_symlink = SYMLINK $@
- cmd_symlink = ln -s $(CURDIR) $@
- $(MODLIB)/modules.order: modules.order FORCE
- $(call cmd,install_modorder)
- quiet_cmd_install_modorder = INSTALL $@
- cmd_install_modorder = sed 's:^\(.*\)\.o$$:kernel/\1.ko:' $< > $@
- # Install modules.builtin(.modinfo,.ranges) even when CONFIG_MODULES is disabled.
- install-y += $(addprefix $(MODLIB)/, modules.builtin modules.builtin.modinfo)
- install-$(CONFIG_BUILTIN_MODULE_RANGES) += $(MODLIB)/modules.builtin.ranges
- $(addprefix $(MODLIB)/, modules.builtin modules.builtin.modinfo modules.builtin.ranges): $(MODLIB)/%: % FORCE
- $(call cmd,install)
- endif
- modules := $(call read-file, modules.order)
- ifeq ($(KBUILD_EXTMOD),)
- dst := $(MODLIB)/kernel
- else
- INSTALL_MOD_DIR ?= updates
- dst := $(MODLIB)/$(INSTALL_MOD_DIR)
- endif
- $(foreach x, % :, $(if $(findstring $x, $(dst)), \
- $(error module installation path cannot contain '$x')))
- suffix-y :=
- ifdef CONFIG_MODULE_COMPRESS_ALL
- suffix-$(CONFIG_MODULE_COMPRESS_GZIP) := .gz
- suffix-$(CONFIG_MODULE_COMPRESS_XZ) := .xz
- suffix-$(CONFIG_MODULE_COMPRESS_ZSTD) := .zst
- endif
- modules := $(patsubst %.o, $(dst)/%.ko$(suffix-y), $(modules))
- install-$(CONFIG_MODULES) += $(modules)
- __modinst: $(install-y)
- @:
- #
- # Installation
- #
- quiet_cmd_install = INSTALL $@
- cmd_install = 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 ($(filter pkcs11:%, $(CONFIG_MODULE_SIG_KEY)),)
- sig-key := $(if $(wildcard $(CONFIG_MODULE_SIG_KEY)),,$(objtree)/)$(CONFIG_MODULE_SIG_KEY)
- else
- sig-key := $(CONFIG_MODULE_SIG_KEY)
- endif
- quiet_cmd_sign = SIGN $@
- cmd_sign = $(objtree)/scripts/sign-file $(CONFIG_MODULE_SIG_HASH) "$(sig-key)" $(objtree)/certs/signing_key.x509 $@ \
- $(if $(KBUILD_EXTMOD),|| true)
- ifeq ($(sign-only),)
- # During modules_install, modules are signed only when CONFIG_MODULE_SIG_ALL=y.
- ifndef CONFIG_MODULE_SIG_ALL
- quiet_cmd_sign :=
- cmd_sign := :
- endif
- # Create necessary directories
- $(foreach dir, $(sort $(dir $(install-y))), $(shell mkdir -p $(dir)))
- $(dst)/%.ko: %.ko FORCE
- $(call cmd,install)
- $(call cmd,strip)
- $(call cmd,sign)
- ifdef CONFIG_MODULES
- __modinst: depmod
- PHONY += depmod
- depmod: $(install-y)
- $(call cmd,depmod)
- quiet_cmd_depmod = DEPMOD $(MODLIB)
- cmd_depmod = $(srctree)/scripts/depmod.sh $(KERNELRELEASE)
- 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) --check=crc32 --lzma2=dict=1MiB -f $<
- quiet_cmd_zstd = ZSTD $@
- cmd_zstd = $(ZSTD) --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)
|