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

PHONY := __default
__default: vmlinux.a

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

# Link of built-in-fixup.a
# ---------------------------------------------------------------------------

quiet_cmd_ar_builtin_fixup = AR      $@
      cmd_ar_builtin_fixup = \
	rm -f $@; \
	$(AR) cDPrST $@ $(KBUILD_VMLINUX_OBJS); \
	$(AR) mPi $$($(AR) t $@ | sed -n 1p) $@ $$($(AR) t $@ | grep -F -f $(srctree)/scripts/head-object-list.txt)

targets += built-in-fixup.a
built-in-fixup.a: $(KBUILD_VMLINUX_OBJS) scripts/head-object-list.txt FORCE
	$(call if_changed,ar_builtin_fixup)

ifdef CONFIG_LTO_CLANG_THIN_DIST

quiet_cmd_builtin.order = GEN     $@
      cmd_builtin.order = $(AR) t $< > $@

targets += builtin.order
builtin.order: built-in-fixup.a FORCE
	$(call if_changed,builtin.order)

quiet_cmd_ld_thinlto_index = LD      $@
      cmd_ld_thinlto_index = \
	$(LD) $(KBUILD_LDFLAGS) -r --thinlto-index-only=$@ @$<

targets += vmlinux.thinlto-index
vmlinux.thinlto-index: builtin.order FORCE
	$(call if_changed,ld_thinlto_index)

quiet_cmd_ar_vmlinux.a = GEN     $@
      cmd_ar_vmlinux.a =					\
	rm -f $@;						\
	while read -r obj; do					\
		if grep -Fqx $${obj} $(word 2, $^); then	\
			echo $${obj%.o}.thinlto-native.o;	\
		else						\
			echo $${obj};				\
		fi;						\
	done < $< | xargs $(AR) cDPrS --thin $@

targets += vmlinux.a
vmlinux.a: builtin.order vmlinux.thinlto-index FORCE
	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.thinlto
	$(call if_changed,ar_vmlinux.a)

else

# vmlinux.a
# ---------------------------------------------------------------------------

targets += vmlinux.a
vmlinux.a: built-in-fixup.a FORCE
	$(call if_changed,copy)

endif

# 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)
