# SPDX-License-Identifier: GPL-2.0-only
# ===========================================================================
# Module final link
# ===========================================================================

PHONY := __modfinal
__modfinal:

include $(objtree)/include/config/auto.conf
include $(srctree)/scripts/Kbuild.include

# for c_flags and mod-prelink-ext
include $(srctree)/scripts/Makefile.lib

# find all modules listed in modules.order
modules := $(sort $(shell cat $(MODORDER)))

__modfinal: $(modules)
	@:

# modname and part-of-module are set to make c_flags define proper module flags
modname = $(notdir $(@:.mod.o=))
part-of-module = y

quiet_cmd_cc_o_c = CC [M]  $@
      cmd_cc_o_c =							\
		$(CC) $(filter-out $(CC_FLAGS_CFI) $(CC_FLAGS_FTRACE),	\
			$(c_flags)) -c -o $@ $<

%.mod.o: %.mod.c FORCE
	$(call if_changed_dep,cc_o_c)

ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink)

quiet_cmd_ld_ko_o = LD [M]  $@
      cmd_ld_ko_o +=							\
	$(LD) -r $(KBUILD_LDFLAGS)					\
		$(KBUILD_LDFLAGS_MODULE) $(LDFLAGS_MODULE)		\
		-T scripts/module.lds -o $@ $(filter %.o, $^);		\
	$(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)

ifdef CONFIG_CFI_CLANG
# LLVM can drops jump table symbols from the final binary. Add them
# back to make stack traces and other symbol output readable.
cmd_ld_ko_o += ;							\
	$(srctree)/scripts/generate_cfi_kallsyms.pl --module		\
		$@ > $(@:.ko=.lds);					\
	if [ -s $(@:.ko=.lds) ]; then					\
		$(LD) -r $(KBUILD_LDFLAGS) 				\
			$(KBUILD_LDFLAGS_MODULE) $(LDFLAGS_MODULE)	\
			-T $(@:.ko=.lds)				\
			-o $(@:.ko=.tmp.ko) $@;				\
		mv -f $(@:.ko=.tmp.ko) $@;				\
	else								\
		rm -f $(@:.ko=.lds);					\
	fi
endif

$(modules): %.ko: %$(mod-prelink-ext).o %.mod.o scripts/module.lds FORCE
	+$(call if_changed,ld_ko_o)

targets += $(modules) $(modules:.ko=.mod.o)

# Add FORCE to the prequisites of a target to force it to be always rebuilt.
# ---------------------------------------------------------------------------

PHONY += FORCE
FORCE:

# Read all saved command lines and dependencies for the $(targets) we
# may be building above, using $(if_changed{,_dep}). As an
# optimization, we don't need to read them if the target does not
# exist, we will rebuild anyway in that case.

existing-targets := $(wildcard $(sort $(targets)))

-include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd)

.PHONY: $(PHONY)
