162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciPHONY := __default
462306a36Sopenharmony_ci__default: vmlinux
562306a36Sopenharmony_ci
662306a36Sopenharmony_ciinclude include/config/auto.conf
762306a36Sopenharmony_ciinclude $(srctree)/scripts/Kbuild.include
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci# for c_flags
1062306a36Sopenharmony_ciinclude $(srctree)/scripts/Makefile.lib
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_citargets :=
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ciquiet_cmd_cc_o_c = CC      $@
1562306a36Sopenharmony_ci      cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci%.o: %.c FORCE
1862306a36Sopenharmony_ci	$(call if_changed_dep,cc_o_c)
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciifdef CONFIG_MODULES
2162306a36Sopenharmony_ciKASAN_SANITIZE_.vmlinux.export.o := n
2262306a36Sopenharmony_ciKCSAN_SANITIZE_.vmlinux.export.o := n
2362306a36Sopenharmony_ciGCOV_PROFILE_.vmlinux.export.o := n
2462306a36Sopenharmony_citargets += .vmlinux.export.o
2562306a36Sopenharmony_civmlinux: .vmlinux.export.o
2662306a36Sopenharmony_ciendif
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink)
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci# Final link of vmlinux with optional arch pass after final link
3162306a36Sopenharmony_cicmd_link_vmlinux =							\
3262306a36Sopenharmony_ci	$< "$(LD)" "$(KBUILD_LDFLAGS)" "$(LDFLAGS_vmlinux)";		\
3362306a36Sopenharmony_ci	$(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_citargets += vmlinux
3662306a36Sopenharmony_civmlinux: scripts/link-vmlinux.sh vmlinux.o $(KBUILD_LDS) FORCE
3762306a36Sopenharmony_ci	+$(call if_changed_dep,link_vmlinux)
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci# Add FORCE to the prequisites of a target to force it to be always rebuilt.
4062306a36Sopenharmony_ci# ---------------------------------------------------------------------------
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ciPHONY += FORCE
4362306a36Sopenharmony_ciFORCE:
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci# Read all saved command lines and dependencies for the $(targets) we
4662306a36Sopenharmony_ci# may be building above, using $(if_changed{,_dep}). As an
4762306a36Sopenharmony_ci# optimization, we don't need to read them if the target does not
4862306a36Sopenharmony_ci# exist, we will rebuild anyway in that case.
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ciexisting-targets := $(wildcard $(sort $(targets)))
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci-include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd)
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci.PHONY: $(PHONY)
55