xref: /openbmc/linux/scripts/Makefile.modfinal (revision eb27ea5c)
19b9a3f20SMasahiro Yamada# SPDX-License-Identifier: GPL-2.0-only
29b9a3f20SMasahiro Yamada# ===========================================================================
39b9a3f20SMasahiro Yamada# Module final link
49b9a3f20SMasahiro Yamada# ===========================================================================
59b9a3f20SMasahiro Yamada
69b9a3f20SMasahiro YamadaPHONY := __modfinal
79b9a3f20SMasahiro Yamada__modfinal:
89b9a3f20SMasahiro Yamada
99b9a3f20SMasahiro Yamadainclude $(srctree)/scripts/Kbuild.include
109b9a3f20SMasahiro Yamada
119b9a3f20SMasahiro Yamada# for c_flags
129b9a3f20SMasahiro Yamadainclude $(srctree)/scripts/Makefile.lib
139b9a3f20SMasahiro Yamada
149b9a3f20SMasahiro Yamada# find all modules listed in modules.order
159b9a3f20SMasahiro Yamadamodules := $(sort $(shell cat $(MODORDER)))
169b9a3f20SMasahiro Yamada
179b9a3f20SMasahiro Yamada__modfinal: $(modules)
189b9a3f20SMasahiro Yamada	@:
199b9a3f20SMasahiro Yamada
20eb27ea5cSMasahiro Yamada# modname and part-of-module are set to make c_flags define proper module flags
219b9a3f20SMasahiro Yamadamodname = $(notdir $(@:.mod.o=))
22eb27ea5cSMasahiro Yamadapart-of-module = y
239b9a3f20SMasahiro Yamada
249b9a3f20SMasahiro Yamadaquiet_cmd_cc_o_c = CC [M]  $@
25eb27ea5cSMasahiro Yamada      cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
269b9a3f20SMasahiro Yamada
279b9a3f20SMasahiro Yamada%.mod.o: %.mod.c FORCE
289b9a3f20SMasahiro Yamada	$(call if_changed_dep,cc_o_c)
299b9a3f20SMasahiro Yamada
309b9a3f20SMasahiro YamadaARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink)
319b9a3f20SMasahiro Yamada
329b9a3f20SMasahiro Yamadaquiet_cmd_ld_ko_o = LD [M]  $@
339b9a3f20SMasahiro Yamada      cmd_ld_ko_o =                                                     \
349b9a3f20SMasahiro Yamada	$(LD) -r $(KBUILD_LDFLAGS)					\
359b9a3f20SMasahiro Yamada		$(KBUILD_LDFLAGS_MODULE) $(LDFLAGS_MODULE)		\
369b9a3f20SMasahiro Yamada		$(addprefix -T , $(KBUILD_LDS_MODULE))			\
379b9a3f20SMasahiro Yamada		-o $@ $(filter %.o, $^);				\
389b9a3f20SMasahiro Yamada	$(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)
399b9a3f20SMasahiro Yamada
409b9a3f20SMasahiro Yamada$(modules): %.ko: %.o %.mod.o $(KBUILD_LDS_MODULE) FORCE
419b9a3f20SMasahiro Yamada	+$(call if_changed,ld_ko_o)
429b9a3f20SMasahiro Yamada
439b9a3f20SMasahiro Yamadatargets += $(modules) $(modules:.ko=.mod.o)
449b9a3f20SMasahiro Yamada
459b9a3f20SMasahiro Yamada# Add FORCE to the prequisites of a target to force it to be always rebuilt.
469b9a3f20SMasahiro Yamada# ---------------------------------------------------------------------------
479b9a3f20SMasahiro Yamada
489b9a3f20SMasahiro YamadaPHONY += FORCE
499b9a3f20SMasahiro YamadaFORCE:
509b9a3f20SMasahiro Yamada
519b9a3f20SMasahiro Yamada# Read all saved command lines and dependencies for the $(targets) we
529b9a3f20SMasahiro Yamada# may be building above, using $(if_changed{,_dep}). As an
539b9a3f20SMasahiro Yamada# optimization, we don't need to read them if the target does not
549b9a3f20SMasahiro Yamada# exist, we will rebuild anyway in that case.
559b9a3f20SMasahiro Yamada
569b9a3f20SMasahiro Yamadaexisting-targets := $(wildcard $(sort $(targets)))
579b9a3f20SMasahiro Yamada
589b9a3f20SMasahiro Yamada-include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd)
599b9a3f20SMasahiro Yamada
609b9a3f20SMasahiro Yamada.PHONY: $(PHONY)
61