# SPDX-License-Identifier: GPL-2.0
# ==========================================================================
# Signing modules
# ==========================================================================

PHONY := __modsign
__modsign:

include scripts/Kbuild.include

__modules := $(sort $(shell grep -h '\.ko$$' /dev/null $(wildcard $(MODVERDIR)/*.mod)))
modules := $(patsubst %.o,%.ko,$(wildcard $(__modules:.ko=.o)))

PHONY += $(modules)
__modsign: $(modules)
	@:

#quiet_cmd_sign_ko = SIGN [M] $(2)/$(notdir $@)
#        cmd_sign_ko = $(mod_sign_cmd) $(2)/$(notdir $@)
# For temporary, change $(2)/$(notdir $@) to $@

quiet_cmd_sign_ko = SIGN [M] $@
        cmd_sign_ko = $(mod_sign_cmd) $@

# Modules built outside the kernel source tree go into extra by default
INSTALL_MOD_DIR ?= extra
ext-mod-dir = $(INSTALL_MOD_DIR)$(subst $(patsubst %/,%,$(KBUILD_EXTMOD)),,$(@D))

modinst_dir = $(if $(KBUILD_EXTMOD),$(ext-mod-dir),kernel/$(@D))

$(modules):
	$(call cmd,sign_ko,$(MODLIB)/$(modinst_dir))

# Declare the contents of the .PHONY variable as phony.  We keep that
# information in a variable se we can use it in if_changed and friends.

.PHONY: $(PHONY)
