~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/scripts/Makefile.modfinal

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 # SPDX-License-Identifier: GPL-2.0-only
  2 # ===========================================================================
  3 # Module final link
  4 # ===========================================================================
  5 
  6 PHONY := __modfinal
  7 __modfinal:
  8 
  9 include include/config/auto.conf
 10 include $(srctree)/scripts/Kbuild.include
 11 
 12 # for c_flags
 13 include $(srctree)/scripts/Makefile.lib
 14 
 15 # find all modules listed in modules.order
 16 modules := $(call read-file, $(MODORDER))
 17 
 18 __modfinal: $(modules:%.o=%.ko)
 19         @:
 20 
 21 # modname and part-of-module are set to make c_flags define proper module flags
 22 modname = $(notdir $(@:.mod.o=))
 23 part-of-module = y
 24 GCOV_PROFILE := n
 25 KCSAN_SANITIZE := n
 26 
 27 quiet_cmd_cc_o_c = CC [M]  $@
 28       cmd_cc_o_c = $(CC) $(filter-out $(CC_FLAGS_CFI), $(c_flags)) -c -o $@ $<
 29 
 30 %.mod.o: %.mod.c FORCE
 31         $(call if_changed_dep,cc_o_c)
 32 
 33 quiet_cmd_ld_ko_o = LD [M]  $@
 34       cmd_ld_ko_o +=                                                    \
 35         $(LD) -r $(KBUILD_LDFLAGS)                                      \
 36                 $(KBUILD_LDFLAGS_MODULE) $(LDFLAGS_MODULE)              \
 37                 -T scripts/module.lds -o $@ $(filter %.o, $^)
 38 
 39 quiet_cmd_btf_ko = BTF [M] $@
 40       cmd_btf_ko =                                                      \
 41         if [ ! -f vmlinux ]; then                                       \
 42                 printf "Skipping BTF generation for %s due to unavailability of vmlinux\n" $@ 1>&2; \
 43         else                                                            \
 44                 LLVM_OBJCOPY="$(OBJCOPY)" $(PAHOLE) -J $(PAHOLE_FLAGS) $(MODULE_PAHOLE_FLAGS) --btf_base vmlinux $@; \
 45                 $(RESOLVE_BTFIDS) -b vmlinux $@;                        \
 46         fi;
 47 
 48 # Same as newer-prereqs, but allows to exclude specified extra dependencies
 49 newer_prereqs_except = $(filter-out $(PHONY) $(1),$?)
 50 
 51 # Same as if_changed, but allows to exclude specified extra dependencies
 52 if_changed_except = $(if $(call newer_prereqs_except,$(2))$(cmd-check),      \
 53         $(cmd);                                                              \
 54         printf '%s\n' 'savedcmd_$@ := $(make-cmd)' > $(dot-target).cmd, @:)
 55 
 56 # Re-generate module BTFs if either module's .ko or vmlinux changed
 57 %.ko: %.o %.mod.o scripts/module.lds $(and $(CONFIG_DEBUG_INFO_BTF_MODULES),$(KBUILD_BUILTIN),vmlinux) FORCE
 58         +$(call if_changed_except,ld_ko_o,vmlinux)
 59 ifdef CONFIG_DEBUG_INFO_BTF_MODULES
 60         +$(if $(newer-prereqs),$(call cmd,btf_ko))
 61 endif
 62 
 63 targets += $(modules:%.o=%.ko) $(modules:%.o=%.mod.o)
 64 
 65 # Add FORCE to the prerequisites of a target to force it to be always rebuilt.
 66 # ---------------------------------------------------------------------------
 67 
 68 PHONY += FORCE
 69 FORCE:
 70 
 71 # Read all saved command lines and dependencies for the $(targets) we
 72 # may be building above, using $(if_changed{,_dep}). As an
 73 # optimization, we don't need to read them if the target does not
 74 # exist, we will rebuild anyway in that case.
 75 
 76 existing-targets := $(wildcard $(sort $(targets)))
 77 
 78 -include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd)
 79 
 80 .PHONY: $(PHONY)

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php