Commit | Line | Data |
---|---|---|
7b453719 MY |
1 | # SPDX-License-Identifier: GPL-2.0-only |
2 | ||
5d4aeffb MY |
3 | PHONY := __default |
4 | __default: vmlinux | |
5 | ||
7b453719 MY |
6 | include include/config/auto.conf |
7 | include $(srctree)/scripts/Kbuild.include | |
8 | ||
9 | # for c_flags | |
10 | include $(srctree)/scripts/Makefile.lib | |
11 | ||
5d4aeffb MY |
12 | targets := |
13 | ||
7b453719 MY |
14 | quiet_cmd_cc_o_c = CC $@ |
15 | cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< | |
16 | ||
17 | %.o: %.c FORCE | |
18 | $(call if_changed_dep,cc_o_c) | |
19 | ||
5d4aeffb | 20 | ifdef CONFIG_MODULES |
42633ed8 | 21 | KASAN_SANITIZE_.vmlinux.export.o := n |
5d4aeffb MY |
22 | targets += .vmlinux.export.o |
23 | vmlinux: .vmlinux.export.o | |
24 | endif | |
25 | ||
26 | ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink) | |
27 | ||
28 | # Final link of vmlinux with optional arch pass after final link | |
29 | cmd_link_vmlinux = \ | |
30 | $< "$(LD)" "$(KBUILD_LDFLAGS)" "$(LDFLAGS_vmlinux)"; \ | |
31 | $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true) | |
32 | ||
33 | targets += vmlinux | |
34 | vmlinux: scripts/link-vmlinux.sh vmlinux.o $(KBUILD_LDS) FORCE | |
35 | +$(call if_changed_dep,link_vmlinux) | |
7b453719 MY |
36 | |
37 | # Add FORCE to the prequisites of a target to force it to be always rebuilt. | |
38 | # --------------------------------------------------------------------------- | |
39 | ||
40 | PHONY += FORCE | |
41 | FORCE: | |
42 | ||
43 | # Read all saved command lines and dependencies for the $(targets) we | |
44 | # may be building above, using $(if_changed{,_dep}). As an | |
45 | # optimization, we don't need to read them if the target does not | |
46 | # exist, we will rebuild anyway in that case. | |
47 | ||
48 | existing-targets := $(wildcard $(sort $(targets))) | |
49 | ||
50 | -include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd) | |
51 | ||
52 | .PHONY: $(PHONY) |