PHONY := __default
__default:

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

native-objs := $(patsubst %.o,%.thinlto-native.o,$(call read-file, vmlinux.thinlto-index))

__default: $(native-objs)

# Generate .thinlto-native.o (obj) from .o (bitcode) and .thinlto.bc (summary) files
# ---------------------------------------------------------------------------
quiet_cmd_cc_o_bc = CC $(quiet_modtag)  $@
      be_flags = $(shell sed -n '/saved_c_flags_/s/.*:= //p' \
                $(dir $(<)).$(notdir $(<)).cmd)
      cmd_cc_o_bc = \
      $(CC) $(be_flags) -x ir -fno-lto -Wno-unused-command-line-argument \
      -fthinlto-index=$(word 2, $^) -c -o $@ $<

targets += $(native-objs)
$(native-objs): %.thinlto-native.o: %.o %.o.thinlto.bc   FORCE
	$(call if_changed,cc_o_bc)

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