linux/scripts/Makefile.modfinal
<<
>>
Prefs
   1# SPDX-License-Identifier: GPL-2.0-only
   2# ===========================================================================
   3# Module final link
   4# ===========================================================================
   5
   6PHONY := __modfinal
   7__modfinal:
   8
   9include $(srctree)/scripts/Kbuild.include
  10
  11# for c_flags
  12include $(srctree)/scripts/Makefile.lib
  13
  14# find all modules listed in modules.order
  15modules := $(sort $(shell cat $(MODORDER)))
  16
  17__modfinal: $(modules)
  18        @:
  19
  20# modname and part-of-module are set to make c_flags define proper module flags
  21modname = $(notdir $(@:.mod.o=))
  22part-of-module = y
  23
  24quiet_cmd_cc_o_c = CC [M]  $@
  25      cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
  26
  27%.mod.o: %.mod.c FORCE
  28        $(call if_changed_dep,cc_o_c)
  29
  30ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink)
  31
  32quiet_cmd_ld_ko_o = LD [M]  $@
  33      cmd_ld_ko_o =                                                     \
  34        $(LD) -r $(KBUILD_LDFLAGS)                                      \
  35                $(KBUILD_LDFLAGS_MODULE) $(LDFLAGS_MODULE)              \
  36                $(addprefix -T , $(KBUILD_LDS_MODULE))                  \
  37                -o $@ $(filter %.o, $^);                                \
  38        $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)
  39
  40$(modules): %.ko: %.o %.mod.o $(KBUILD_LDS_MODULE) FORCE
  41        +$(call if_changed,ld_ko_o)
  42
  43targets += $(modules) $(modules:.ko=.mod.o)
  44
  45# Add FORCE to the prequisites of a target to force it to be always rebuilt.
  46# ---------------------------------------------------------------------------
  47
  48PHONY += FORCE
  49FORCE:
  50
  51# Read all saved command lines and dependencies for the $(targets) we
  52# may be building above, using $(if_changed{,_dep}). As an
  53# optimization, we don't need to read them if the target does not
  54# exist, we will rebuild anyway in that case.
  55
  56existing-targets := $(wildcard $(sort $(targets)))
  57
  58-include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd)
  59
  60.PHONY: $(PHONY)
  61