# SPDX-License-Identifier: GPL-2.0-only

PHONY := __default
__default: vmlinux.o

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

# for objtool
include $(srctree)/scripts/Makefile.lib

# Generate a linker script to ensure correct ordering of initcalls for Clang LTO
# ---------------------------------------------------------------------------

quiet_cmd_gen_initcalls_lds = GEN     $@
      cmd_gen_initcalls_lds = \
	$(PYTHON3) $(srctree)/scripts/jobserver-exec \
	$(PERL) $(real-prereqs) > $@

.tmp_initcalls.lds: $(srctree)/scripts/generate_initcall_order.pl \
		vmlinux.a $(KBUILD_VMLINUX_LIBS) FORCE
	$(call if_changed,gen_initcalls_lds)

targets := .tmp_initcalls.lds

ifdef CONFIG_LTO_CLANG
initcalls-lds := .tmp_initcalls.lds
endif

# objtool for vmlinux.o
# ---------------------------------------------------------------------------
#
# For delay-objtool (IBT or LTO), objtool doesn't run on individual translation
# units.  Instead it runs on vmlinux.o.
#
# For !delay-objtool + CONFIG_NOINSTR_VALIDATION, it runs on both translation
# units and vmlinux.o, with the latter only used for noinstr/unret validation.

objtool-enabled := $(or $(delay-objtool),$(CONFIG_NOINSTR_VALIDATION))

ifeq ($(delay-objtool),y)
vmlinux-objtool-args-y					+= $(objtool-args-y)
else
vmlinux-objtool-args-$(CONFIG_OBJTOOL_WERROR)		+= --Werror
endif

vmlinux-objtool-args-$(CONFIG_NOINSTR_VALIDATION)	+= --noinstr \
							   $(if $(or $(CONFIG_MITIGATION_UNRET_ENTRY),$(CONFIG_MITIGATION_SRSO)), --unret)

objtool-args = $(vmlinux-objtool-args-y) --link

# Link of vmlinux.o used for section mismatch analysis
# ---------------------------------------------------------------------------

vmlinux-o-ld-args-$(CONFIG_BUILTIN_MODULE_RANGES)	+= -Map=$@.map

quiet_cmd_ld_vmlinux.o = LD      $@
      cmd_ld_vmlinux.o = \
	$(LD) ${KBUILD_LDFLAGS} -r -o $@ \
	$(vmlinux-o-ld-args-y) \
	$(addprefix -T , $(initcalls-lds)) \
	--whole-archive vmlinux.a --no-whole-archive \
	--start-group $(KBUILD_VMLINUX_LIBS) --end-group \
	$(cmd_objtool)

define rule_ld_vmlinux.o
	$(call cmd_and_savecmd,ld_vmlinux.o)
	$(call cmd,gen_objtooldep)
endef

vmlinux.o: $(initcalls-lds) vmlinux.a $(KBUILD_VMLINUX_LIBS) FORCE
	$(call if_changed_rule,ld_vmlinux.o)

targets += vmlinux.o

# Add FORCE to the prerequisites 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)
