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