VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   33 Branches   55 Tags
b24413180f560 (Greg Kroah-Hartman  2017-11-01 15:07:57 +0100   1) # SPDX-License-Identifier: GPL-2.0
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   2) # ==========================================================================
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   3) # Building
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   4) # ==========================================================================
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   5) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   6) src := $(obj)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   7) 
4f1933620f571 (Paul Smith          2006-03-05 17:14:10 -0500   8) PHONY := __build
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   9) __build:
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  10) 
d72e5edbf4d13 (Sam Ravnborg        2007-05-28 22:47:48 +0200  11) # Init all relevant variables used in kbuild files so
d72e5edbf4d13 (Sam Ravnborg        2007-05-28 22:47:48 +0200  12) # 1) they have correct type
d72e5edbf4d13 (Sam Ravnborg        2007-05-28 22:47:48 +0200  13) # 2) they do not inherit any value from the environment
d72e5edbf4d13 (Sam Ravnborg        2007-05-28 22:47:48 +0200  14) obj-y :=
d72e5edbf4d13 (Sam Ravnborg        2007-05-28 22:47:48 +0200  15) obj-m :=
d72e5edbf4d13 (Sam Ravnborg        2007-05-28 22:47:48 +0200  16) lib-y :=
d72e5edbf4d13 (Sam Ravnborg        2007-05-28 22:47:48 +0200  17) lib-m :=
5f2fb52fac15a (Masahiro Yamada     2020-02-02 01:49:24 +0900  18) always-y :=
5f2fb52fac15a (Masahiro Yamada     2020-02-02 01:49:24 +0900  19) always-m :=
d72e5edbf4d13 (Sam Ravnborg        2007-05-28 22:47:48 +0200  20) targets :=
d72e5edbf4d13 (Sam Ravnborg        2007-05-28 22:47:48 +0200  21) subdir-y :=
d72e5edbf4d13 (Sam Ravnborg        2007-05-28 22:47:48 +0200  22) subdir-m :=
d72e5edbf4d13 (Sam Ravnborg        2007-05-28 22:47:48 +0200  23) EXTRA_AFLAGS   :=
d72e5edbf4d13 (Sam Ravnborg        2007-05-28 22:47:48 +0200  24) EXTRA_CFLAGS   :=
d72e5edbf4d13 (Sam Ravnborg        2007-05-28 22:47:48 +0200  25) EXTRA_CPPFLAGS :=
d72e5edbf4d13 (Sam Ravnborg        2007-05-28 22:47:48 +0200  26) EXTRA_LDFLAGS  :=
f77bf01425b11 (Sam Ravnborg        2007-10-15 22:25:06 +0200  27) asflags-y  :=
f77bf01425b11 (Sam Ravnborg        2007-10-15 22:25:06 +0200  28) ccflags-y  :=
f77bf01425b11 (Sam Ravnborg        2007-10-15 22:25:06 +0200  29) cppflags-y :=
f77bf01425b11 (Sam Ravnborg        2007-10-15 22:25:06 +0200  30) ldflags-y  :=
d72e5edbf4d13 (Sam Ravnborg        2007-05-28 22:47:48 +0200  31) 
720097d895956 (Sam Ravnborg        2009-04-19 11:04:26 +0200  32) subdir-asflags-y :=
720097d895956 (Sam Ravnborg        2009-04-19 11:04:26 +0200  33) subdir-ccflags-y :=
720097d895956 (Sam Ravnborg        2009-04-19 11:04:26 +0200  34) 
3156fd0529b52 (Robert P. J. Day    2008-02-18 04:48:20 -0500  35) # Read auto.conf if it exists, otherwise ignore
c955ccafc38e7 (Roman Zippel        2006-06-08 22:12:39 -0700  36) -include include/config/auto.conf
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  37) 
3204a7fb98a3b (Masahiro Yamada     2021-02-28 15:10:26 +0900  38) include $(srctree)/scripts/Kbuild.include
57fd251c78964 (Masahiro Yamada     2021-02-28 15:10:27 +0900  39) include $(srctree)/scripts/Makefile.compiler
20a468b51325b (Sam Ravnborg        2006-01-22 13:34:15 +0100  40) 
2a691470345a0 (Sam Ravnborg        2005-07-25 20:26:04 +0000  41) # The filename Kbuild has precedence over Makefile
db8c1a7b2ca25 (Sam Ravnborg        2005-07-27 22:11:01 +0200  42) kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
0c53c8e6eb456 (Sam Ravnborg        2007-10-14 22:26:53 +0200  43) kbuild-file := $(if $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Kbuild,$(kbuild-dir)/Makefile)
0c53c8e6eb456 (Sam Ravnborg        2007-10-14 22:26:53 +0200  44) include $(kbuild-file)
0c53c8e6eb456 (Sam Ravnborg        2007-10-14 22:26:53 +0200  45) 
3204a7fb98a3b (Masahiro Yamada     2021-02-28 15:10:26 +0900  46) include $(srctree)/scripts/Makefile.lib
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  47) 
85569d19d0f57 (Masahiro Yamada     2020-07-29 12:15:37 +0900  48) # Do not include hostprogs rules unless needed.
85569d19d0f57 (Masahiro Yamada     2020-07-29 12:15:37 +0900  49) # $(sort ...) is used here to remove duplicated words and excessive spaces.
85569d19d0f57 (Masahiro Yamada     2020-07-29 12:15:37 +0900  50) hostprogs := $(sort $(hostprogs))
42640b134bf44 (Masahiro Yamada     2020-07-29 12:15:36 +0900  51) ifneq ($(hostprogs),)
3204a7fb98a3b (Masahiro Yamada     2021-02-28 15:10:26 +0900  52) include $(srctree)/scripts/Makefile.host
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  53) endif
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  54) 
7f3a59db274c3 (Masahiro Yamada     2020-04-29 12:45:14 +0900  55) # Do not include userprogs rules unless needed.
85569d19d0f57 (Masahiro Yamada     2020-07-29 12:15:37 +0900  56) # $(sort ...) is used here to remove duplicated words and excessive spaces.
7f3a59db274c3 (Masahiro Yamada     2020-04-29 12:45:14 +0900  57) userprogs := $(sort $(userprogs))
7f3a59db274c3 (Masahiro Yamada     2020-04-29 12:45:14 +0900  58) ifneq ($(userprogs),)
3204a7fb98a3b (Masahiro Yamada     2021-02-28 15:10:26 +0900  59) include $(srctree)/scripts/Makefile.userprogs
7f3a59db274c3 (Masahiro Yamada     2020-04-29 12:45:14 +0900  60) endif
7f3a59db274c3 (Masahiro Yamada     2020-04-29 12:45:14 +0900  61) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  62) ifndef obj
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  63) $(warning kbuild: Makefile.build is included improperly)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  64) endif
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  65) 
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900  66) ifeq ($(need-modorder),)
c07d8d47bca1b (Masahiro Yamada     2019-08-08 20:21:11 +0900  67) ifneq ($(obj-m),)
c07d8d47bca1b (Masahiro Yamada     2019-08-08 20:21:11 +0900  68) $(warning $(patsubst %.o,'%.ko',$(obj-m)) will not be built even though obj-m is specified.)
c07d8d47bca1b (Masahiro Yamada     2019-08-08 20:21:11 +0900  69) $(warning You cannot use subdir-y/m to visit a module Makefile. Use obj-y/m instead.)
c07d8d47bca1b (Masahiro Yamada     2019-08-08 20:21:11 +0900  70) endif
c07d8d47bca1b (Masahiro Yamada     2019-08-08 20:21:11 +0900  71) endif
c07d8d47bca1b (Masahiro Yamada     2019-08-08 20:21:11 +0900  72) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  73) # ===========================================================================
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  74) 
454753d9f67ae (Masahiro Yamada     2020-05-22 11:00:02 +0900  75) # subdir-builtin and subdir-modorder may contain duplications. Use $(sort ...)
aaa385ba9afe7 (Masahiro Yamada     2020-05-22 11:00:01 +0900  76) subdir-builtin := $(sort $(filter %/built-in.a, $(real-obj-y)))
b2c8855491226 (Masahiro Yamada     2020-06-01 14:57:00 +0900  77) subdir-modorder := $(sort $(filter %/modules.order, $(obj-m)))
6ba3bcb013937 (Masahiro Yamada     2020-05-22 11:00:00 +0900  78) 
f3908ab3ffd92 (Masahiro Yamada     2020-06-01 14:56:56 +0900  79) targets-for-builtin := $(extra-y)
f3908ab3ffd92 (Masahiro Yamada     2020-06-01 14:56:56 +0900  80) 
a4954fd7724c0 (Masahiro Yamada     2014-09-09 19:26:21 +0900  81) ifneq ($(strip $(lib-y) $(lib-m) $(lib-)),)
f3908ab3ffd92 (Masahiro Yamada     2020-06-01 14:56:56 +0900  82) targets-for-builtin += $(obj)/lib.a
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  83) endif
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  84) 
56d5893615727 (Masahiro Yamada     2019-12-19 01:04:28 +0900  85) ifdef need-builtin
f3908ab3ffd92 (Masahiro Yamada     2020-06-01 14:56:56 +0900  86) targets-for-builtin += $(obj)/built-in.a
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  87) endif
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  88) 
b2c8855491226 (Masahiro Yamada     2020-06-01 14:57:00 +0900  89) targets-for-modules := $(patsubst %.o, %.mod, $(filter %.o, $(obj-m)))
f3908ab3ffd92 (Masahiro Yamada     2020-06-01 14:56:56 +0900  90) 
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700  91) ifdef CONFIG_LTO_CLANG
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700  92) targets-for-modules += $(patsubst %.o, %.lto.o, $(filter %.o, $(obj-m)))
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700  93) endif
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700  94) 
b480fec988b05 (Masahiro Yamada     2020-05-22 10:59:59 +0900  95) ifdef need-modorder
f3908ab3ffd92 (Masahiro Yamada     2020-06-01 14:56:56 +0900  96) targets-for-modules += $(obj)/modules.order
1d8001ef358da (Masahiro Yamada     2019-02-14 12:05:15 +0900  97) endif
551559e13af1c (Tejun Heo           2007-12-07 21:04:30 +0900  98) 
f3908ab3ffd92 (Masahiro Yamada     2020-06-01 14:56:56 +0900  99) targets += $(targets-for-builtin) $(targets-for-modules)
9f69a496f1001 (Masahiro Yamada     2019-07-17 15:18:00 +0900 100) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 101) # Linus' kernel sanity checking tool
7d0ea2524202d (Masahiro Yamada     2018-10-10 00:05:39 +0900 102) ifeq ($(KBUILD_CHECKSRC),1)
7d0ea2524202d (Masahiro Yamada     2018-10-10 00:05:39 +0900 103)   quiet_cmd_checksrc       = CHECK   $<
e5d289100d3ae (Masahiro Yamada     2018-11-30 10:05:28 +0900 104)         cmd_checksrc       = $(CHECK) $(CHECKFLAGS) $(c_flags) $<
7d0ea2524202d (Masahiro Yamada     2018-10-10 00:05:39 +0900 105) else ifeq ($(KBUILD_CHECKSRC),2)
7d0ea2524202d (Masahiro Yamada     2018-10-10 00:05:39 +0900 106)   quiet_cmd_force_checksrc = CHECK   $<
e5d289100d3ae (Masahiro Yamada     2018-11-30 10:05:28 +0900 107)         cmd_force_checksrc = $(CHECK) $(CHECKFLAGS) $(c_flags) $<
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 108) endif
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 109) 
e27128db62834 (Masahiro Yamada     2019-09-01 01:25:55 +0900 110) ifneq ($(KBUILD_EXTRA_WARN),)
e5d289100d3ae (Masahiro Yamada     2018-11-30 10:05:28 +0900 111)   cmd_checkdoc = $(srctree)/scripts/kernel-doc -none $<
3a025e1d1c2ea (Matthew Wilcox      2017-11-20 10:40:40 -0800 112) endif
3a025e1d1c2ea (Matthew Wilcox      2017-11-20 10:40:40 -0800 113) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 114) # Compile C sources (.c)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 115) # ---------------------------------------------------------------------------
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 116) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 117) quiet_cmd_cc_s_c = CC $(quiet_modtag)  $@
dc5723b02e523 (Sami Tolvanen       2020-12-11 10:46:19 -0800 118)       cmd_cc_s_c = $(CC) $(filter-out $(DEBUG_CFLAGS) $(CC_FLAGS_LTO), $(c_flags)) -fverbose-asm -S -o $@ $<
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 119) 
767e581d759fe (Sam Ravnborg        2007-05-06 09:23:45 +0200 120) $(obj)/%.s: $(src)/%.c FORCE
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 121) 	$(call if_changed_dep,cc_s_c)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 122) 
23d43848708af (Masahiro Yamada     2016-04-08 11:24:47 +0900 123) quiet_cmd_cpp_i_c = CPP $(quiet_modtag) $@
23d43848708af (Masahiro Yamada     2016-04-08 11:24:47 +0900 124) cmd_cpp_i_c       = $(CPP) $(c_flags) -o $@ $<
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 125) 
767e581d759fe (Sam Ravnborg        2007-05-06 09:23:45 +0200 126) $(obj)/%.i: $(src)/%.c FORCE
23d43848708af (Masahiro Yamada     2016-04-08 11:24:47 +0900 127) 	$(call if_changed_dep,cpp_i_c)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 128) 
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 129) # These mirror gensymtypes_S and co below, keep them in synch.
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 130) cmd_gensymtypes_c =                                                         \
37a8d9f67f18d (Sam Ravnborg        2008-12-19 21:38:09 +0100 131)     $(CPP) -D__GENKSYMS__ $(c_flags) $< |                                   \
88110713ca9df (Masahiro Yamada     2019-02-20 12:38:31 +0900 132)     scripts/genksyms/genksyms $(if $(1), -T $(2))                           \
56067812d5b0e (Ard Biesheuvel      2017-02-03 09:54:05 +0000 133)      $(patsubst y,-R,$(CONFIG_MODULE_REL_CRCS))                             \
37a8d9f67f18d (Sam Ravnborg        2008-12-19 21:38:09 +0100 134)      $(if $(KBUILD_PRESERVE),-p)                                            \
e26d6b834cc4a (Don Zickus          2010-05-24 17:07:24 -0400 135)      -r $(firstword $(wildcard $(2:.symtypes=.symref) /dev/null))
37a8d9f67f18d (Sam Ravnborg        2008-12-19 21:38:09 +0100 136) 
15fde6751886f (Andreas Gruenbacher 2006-05-09 20:37:30 +0200 137) quiet_cmd_cc_symtypes_c = SYM $(quiet_modtag) $@
37a8d9f67f18d (Sam Ravnborg        2008-12-19 21:38:09 +0100 138) cmd_cc_symtypes_c =                                                         \
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 139)     $(call cmd_gensymtypes_c,true,$@) >/dev/null;                           \
37a8d9f67f18d (Sam Ravnborg        2008-12-19 21:38:09 +0100 140)     test -s $@ || rm -f $@
15fde6751886f (Andreas Gruenbacher 2006-05-09 20:37:30 +0200 141) 
767e581d759fe (Sam Ravnborg        2007-05-06 09:23:45 +0200 142) $(obj)/%.symtypes : $(src)/%.c FORCE
64e6c1e123728 (Andreas Gruenbacher 2008-12-01 14:21:01 -0800 143) 	$(call cmd,cc_symtypes_c)
15fde6751886f (Andreas Gruenbacher 2006-05-09 20:37:30 +0200 144) 
433db3e260bc8 (Vinícius Tinti      2017-04-24 13:04:58 -0700 145) # LLVM assembly
433db3e260bc8 (Vinícius Tinti      2017-04-24 13:04:58 -0700 146) # Generate .ll files from .c
433db3e260bc8 (Vinícius Tinti      2017-04-24 13:04:58 -0700 147) quiet_cmd_cc_ll_c = CC $(quiet_modtag)  $@
433db3e260bc8 (Vinícius Tinti      2017-04-24 13:04:58 -0700 148)       cmd_cc_ll_c = $(CC) $(c_flags) -emit-llvm -S -o $@ $<
433db3e260bc8 (Vinícius Tinti      2017-04-24 13:04:58 -0700 149) 
433db3e260bc8 (Vinícius Tinti      2017-04-24 13:04:58 -0700 150) $(obj)/%.ll: $(src)/%.c FORCE
433db3e260bc8 (Vinícius Tinti      2017-04-24 13:04:58 -0700 151) 	$(call if_changed_dep,cc_ll_c)
433db3e260bc8 (Vinícius Tinti      2017-04-24 13:04:58 -0700 152) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 153) # C (.c) files
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 154) # The C file is compiled and updated dependency information is generated.
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 155) # (See cmd_cc_o_c + relevant part of rule_cc_o_c)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 156) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 157) quiet_cmd_cc_o_c = CC $(quiet_modtag)  $@
ee3e46b7efd29 (Masahiro Yamada     2018-11-30 10:05:25 +0900 158)       cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 159) 
ee3e46b7efd29 (Masahiro Yamada     2018-11-30 10:05:25 +0900 160) ifdef CONFIG_MODVERSIONS
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 161) # When module versioning is enabled the following steps are executed:
ee3e46b7efd29 (Masahiro Yamada     2018-11-30 10:05:25 +0900 162) # o compile a <file>.o from <file>.c
ee3e46b7efd29 (Masahiro Yamada     2018-11-30 10:05:25 +0900 163) # o if <file>.o doesn't contain a __ksymtab version, i.e. does
ee3e46b7efd29 (Masahiro Yamada     2018-11-30 10:05:25 +0900 164) #   not export symbols, it's done.
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 165) # o otherwise, we calculate symbol versions using the good old
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 166) #   genksyms on the preprocessed source and postprocess them in a way
2ea038917bbdd (Sam Ravnborg        2009-01-14 21:38:20 +0100 167) #   that they are usable as a linker script
ee3e46b7efd29 (Masahiro Yamada     2018-11-30 10:05:25 +0900 168) # o generate .tmp_<file>.o from <file>.o using the linker to
2ea038917bbdd (Sam Ravnborg        2009-01-14 21:38:20 +0100 169) #   replace the unresolved symbols __crc_exported_symbol with
2ea038917bbdd (Sam Ravnborg        2009-01-14 21:38:20 +0100 170) #   the actual value of the checksum generated by genksyms
ee3e46b7efd29 (Masahiro Yamada     2018-11-30 10:05:25 +0900 171) # o remove .tmp_<file>.o to <file>.o
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 172) 
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 173) ifdef CONFIG_LTO_CLANG
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 174) # Generate .o.symversions files for each .o with exported symbols, and link these
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 175) # to the kernel and/or modules at the end.
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 176) cmd_modversions_c =								\
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 177) 	if $(NM) $@ 2>/dev/null | grep -q __ksymtab; then			\
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 178) 		$(call cmd_gensymtypes_c,$(KBUILD_SYMTYPES),$(@:.o=.symtypes))	\
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 179) 		    > $@.symversions;						\
a8390ba9ddce1 (Masahiro Yamada     2021-08-19 09:57:36 +0900 180) 	else									\
a8390ba9ddce1 (Masahiro Yamada     2021-08-19 09:57:36 +0900 181) 		rm -f $@.symversions;						\
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 182) 	fi;
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 183) else
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 184) cmd_modversions_c =								\
ee3e46b7efd29 (Masahiro Yamada     2018-11-30 10:05:25 +0900 185) 	if $(OBJDUMP) -h $@ | grep -q __ksymtab; then				\
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 186) 		$(call cmd_gensymtypes_c,$(KBUILD_SYMTYPES),$(@:.o=.symtypes))	\
e26d6b834cc4a (Don Zickus          2010-05-24 17:07:24 -0400 187) 		    > $(@D)/.tmp_$(@F:.o=.ver);					\
e26d6b834cc4a (Don Zickus          2010-05-24 17:07:24 -0400 188) 										\
ee3e46b7efd29 (Masahiro Yamada     2018-11-30 10:05:25 +0900 189) 		$(LD) $(KBUILD_LDFLAGS) -r -o $(@D)/.tmp_$(@F) $@ 		\
e26d6b834cc4a (Don Zickus          2010-05-24 17:07:24 -0400 190) 			-T $(@D)/.tmp_$(@F:.o=.ver);				\
e26d6b834cc4a (Don Zickus          2010-05-24 17:07:24 -0400 191) 		mv -f $(@D)/.tmp_$(@F) $@;					\
ee3e46b7efd29 (Masahiro Yamada     2018-11-30 10:05:25 +0900 192) 		rm -f $(@D)/.tmp_$(@F:.o=.ver);					\
e5d289100d3ae (Masahiro Yamada     2018-11-30 10:05:28 +0900 193) 	fi
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 194) endif
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 195) endif
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 196) 
3b15cdc159566 (Sami Tolvanen       2020-12-11 10:46:18 -0800 197) ifdef CONFIG_FTRACE_MCOUNT_USE_RECORDMCOUNT
07d0408120216 (Vasily Gorbik       2018-08-06 15:17:44 +0200 198) # compiler will not generate __mcount_loc use recordmcount or recordmcount.pl
72441cb1fd77d (Steven Rostedt      2010-10-13 17:12:30 -0400 199) ifdef BUILD_C_RECORDMCOUNT
85356f802225f (Steven Rostedt      2011-04-12 18:59:10 -0400 200) ifeq ("$(origin RECORDMCOUNT_WARN)", "command line")
85356f802225f (Steven Rostedt      2011-04-12 18:59:10 -0400 201)   RECORDMCOUNT_FLAGS = -w
85356f802225f (Steven Rostedt      2011-04-12 18:59:10 -0400 202) endif
d7b4d6de57d41 (Steven Rostedt      2010-10-18 14:42:00 -0400 203) # Due to recursion, we must skip empty.o.
d7b4d6de57d41 (Steven Rostedt      2010-10-18 14:42:00 -0400 204) # The empty.o file is created in the make process in order to determine
312a3d0918bb7 (Cao jin             2017-08-02 10:31:06 +0800 205) # the target endianness and word size. It is made before all other C
312a3d0918bb7 (Cao jin             2017-08-02 10:31:06 +0800 206) # files, including recordmcount.
45677454dd6d1 (Wu Zhangjin         2010-10-28 00:24:34 +0800 207) sub_cmd_record_mcount =					\
45677454dd6d1 (Wu Zhangjin         2010-10-28 00:24:34 +0800 208) 	if [ $(@) != "scripts/mod/empty.o" ]; then	\
85356f802225f (Steven Rostedt      2011-04-12 18:59:10 -0400 209) 		$(objtree)/scripts/recordmcount $(RECORDMCOUNT_FLAGS) "$(@)";	\
45677454dd6d1 (Wu Zhangjin         2010-10-28 00:24:34 +0800 210) 	fi;
d6971822c288c (Michal Marek        2011-05-17 15:36:46 +0200 211) recordmcount_source := $(srctree)/scripts/recordmcount.c \
d6971822c288c (Michal Marek        2011-05-17 15:36:46 +0200 212) 		    $(srctree)/scripts/recordmcount.h
72441cb1fd77d (Steven Rostedt      2010-10-13 17:12:30 -0400 213) else
4317ee3b6a5e8 (Masahiro Yamada     2018-11-30 10:05:24 +0900 214) sub_cmd_record_mcount = perl $(srctree)/scripts/recordmcount.pl "$(ARCH)" \
e6299d2677e60 (Wu Zhangjin         2009-11-20 20:34:31 +0800 215) 	"$(if $(CONFIG_CPU_BIG_ENDIAN),big,little)" \
b3acf29afda06 (Steven Rostedt      2008-10-29 15:30:26 -0400 216) 	"$(if $(CONFIG_64BIT),64,32)" \
5a4630aadb9a9 (Joel Stanley        2018-09-17 17:07:54 +0930 217) 	"$(OBJDUMP)" "$(OBJCOPY)" "$(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS)" \
d503ac531a524 (Masahiro Yamada     2018-08-24 08:20:39 +0900 218) 	"$(LD) $(KBUILD_LDFLAGS)" "$(NM)" "$(RM)" "$(MV)" \
18c167fd6d8fe (Shaohua Li          2009-01-12 10:00:51 +0800 219) 	"$(if $(part-of-module),1,0)" "$(@)";
d6971822c288c (Michal Marek        2011-05-17 15:36:46 +0200 220) recordmcount_source := $(srctree)/scripts/recordmcount.pl
312a3d0918bb7 (Cao jin             2017-08-02 10:31:06 +0800 221) endif # BUILD_C_RECORDMCOUNT
1a49b2fd8f58d (Joe Lawrence        2019-03-26 10:50:28 -0400 222) cmd_record_mcount = $(if $(findstring $(strip $(CC_FLAGS_FTRACE)),$(_c_flags)),	\
1a49b2fd8f58d (Joe Lawrence        2019-03-26 10:50:28 -0400 223) 	$(sub_cmd_record_mcount))
3b15cdc159566 (Sami Tolvanen       2020-12-11 10:46:18 -0800 224) endif # CONFIG_FTRACE_MCOUNT_USE_RECORDMCOUNT
8da3821ba5634 (Steven Rostedt      2008-08-14 15:45:07 -0400 225) 
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 226) ifdef CONFIG_STACK_VALIDATION
b1a1a1a09b460 (Sami Tolvanen       2020-04-13 16:10:13 -0700 227) ifndef CONFIG_LTO_CLANG
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 228) 
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 229) __objtool_obj := $(objtree)/tools/objtool/objtool
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 230) 
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 231) # 'OBJECT_FILES_NON_STANDARD := y': skip objtool checking for a directory
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 232) # 'OBJECT_FILES_NON_STANDARD_foo.o := 'y': skip objtool checking for a file
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 233) # 'OBJECT_FILES_NON_STANDARD_foo.o := 'n': override directory skip for a file
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 234) cmd_objtool = $(if $(patsubst y%,, \
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 235) 	$(OBJECT_FILES_NON_STANDARD_$(basetarget).o)$(OBJECT_FILES_NON_STANDARD)n), \
e5d289100d3ae (Masahiro Yamada     2018-11-30 10:05:28 +0900 236) 	$(__objtool_obj) $(objtool_args) $@)
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 237) objtool_obj = $(if $(patsubst y%,, \
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 238) 	$(OBJECT_FILES_NON_STANDARD_$(basetarget).o)$(OBJECT_FILES_NON_STANDARD)n), \
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 239) 	$(__objtool_obj))
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 240) 
b1a1a1a09b460 (Sami Tolvanen       2020-04-13 16:10:13 -0700 241) endif # CONFIG_LTO_CLANG
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 242) endif # CONFIG_STACK_VALIDATION
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 243) 
ee9f8fce99640 (Josh Poimboeuf      2017-07-24 18:36:57 -0500 244) # Rebuild all objects when objtool changes, or is enabled/disabled.
ee9f8fce99640 (Josh Poimboeuf      2017-07-24 18:36:57 -0500 245) objtool_dep = $(objtool_obj)					\
0e0345b77ac46 (Alexey Dobriyan     2021-04-15 20:36:07 +0300 246) 	      $(wildcard include/config/ORC_UNWINDER		\
0e0345b77ac46 (Alexey Dobriyan     2021-04-15 20:36:07 +0300 247) 			 include/config/STACK_VALIDATION)
ee9f8fce99640 (Josh Poimboeuf      2017-07-24 18:36:57 -0500 248) 
bbda5ec671d3f (Masahiro Yamada     2018-11-30 10:05:26 +0900 249) ifdef CONFIG_TRIM_UNUSED_KSYMS
bbda5ec671d3f (Masahiro Yamada     2018-11-30 10:05:26 +0900 250) cmd_gen_ksymdeps = \
e5d289100d3ae (Masahiro Yamada     2018-11-30 10:05:28 +0900 251) 	$(CONFIG_SHELL) $(srctree)/scripts/gen_ksymdeps.sh $@ >> $(dot-target).cmd
7d32358be8acb (Masahiro Yamada     2020-12-04 02:55:51 +0900 252) 
7d32358be8acb (Masahiro Yamada     2020-12-04 02:55:51 +0900 253) # List module undefined symbols
7d32358be8acb (Masahiro Yamada     2020-12-04 02:55:51 +0900 254) undefined_syms = $(NM) $< | $(AWK) '$$1 == "U" { printf("%s%s", x++ ? " " : "", $$2) }';
bbda5ec671d3f (Masahiro Yamada     2018-11-30 10:05:26 +0900 255) endif
bbda5ec671d3f (Masahiro Yamada     2018-11-30 10:05:26 +0900 256) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 257) define rule_cc_o_c
3a2429e1faf40 (Masahiro Yamada     2018-11-30 10:05:27 +0900 258) 	$(call cmd_and_fixdep,cc_o_c)
3a2429e1faf40 (Masahiro Yamada     2018-11-30 10:05:27 +0900 259) 	$(call cmd,gen_ksymdeps)
0c33f125732d0 (Luc Van Oostenryck  2020-06-22 17:45:12 +0200 260) 	$(call cmd,checksrc)
3a2429e1faf40 (Masahiro Yamada     2018-11-30 10:05:27 +0900 261) 	$(call cmd,checkdoc)
3a2429e1faf40 (Masahiro Yamada     2018-11-30 10:05:27 +0900 262) 	$(call cmd,objtool)
3a2429e1faf40 (Masahiro Yamada     2018-11-30 10:05:27 +0900 263) 	$(call cmd,modversions_c)
3a2429e1faf40 (Masahiro Yamada     2018-11-30 10:05:27 +0900 264) 	$(call cmd,record_mcount)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 265) endef
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 266) 
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 267) define rule_as_o_S
3a2429e1faf40 (Masahiro Yamada     2018-11-30 10:05:27 +0900 268) 	$(call cmd_and_fixdep,as_o_S)
3a2429e1faf40 (Masahiro Yamada     2018-11-30 10:05:27 +0900 269) 	$(call cmd,gen_ksymdeps)
3a2429e1faf40 (Masahiro Yamada     2018-11-30 10:05:27 +0900 270) 	$(call cmd,objtool)
3a2429e1faf40 (Masahiro Yamada     2018-11-30 10:05:27 +0900 271) 	$(call cmd,modversions_S)
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 272) endef
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 273) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 274) # Built-in and composite module parts
8852c55240297 (Josh Poimboeuf      2021-05-18 18:59:15 -0500 275) .SECONDEXPANSION:
8852c55240297 (Josh Poimboeuf      2021-05-18 18:59:15 -0500 276) $(obj)/%.o: $(src)/%.c $(recordmcount_source) $$(objtool_dep) FORCE
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 277) 	$(call if_changed_rule,cc_o_c)
0c33f125732d0 (Luc Van Oostenryck  2020-06-22 17:45:12 +0200 278) 	$(call cmd,force_checksrc)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 279) 
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 280) ifdef CONFIG_LTO_CLANG
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 281) # Module .o files may contain LLVM bitcode, compile them into native code
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 282) # before ELF processing
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 283) quiet_cmd_cc_lto_link_modules = LTO [M] $@
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 284) cmd_cc_lto_link_modules =						\
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 285) 	$(LD) $(ld_flags) -r -o $@					\
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 286) 		$(shell [ -s $(@:.lto.o=.o.symversions) ] &&		\
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 287) 			echo -T $(@:.lto.o=.o.symversions))		\
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 288) 		--whole-archive $(filter-out FORCE,$^)
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 289) 
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 290) ifdef CONFIG_STACK_VALIDATION
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 291) # objtool was skipped for LLVM bitcode, run it now that we have compiled
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 292) # modules into native code
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 293) cmd_cc_lto_link_modules += ;						\
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 294) 	$(objtree)/tools/objtool/objtool $(objtool_args) --module $@
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 295) endif
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 296) 
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 297) $(obj)/%.lto.o: $(obj)/%.o FORCE
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 298) 	$(call if_changed,cc_lto_link_modules)
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 299) endif
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 300) 
9f69a496f1001 (Masahiro Yamada     2019-07-17 15:18:00 +0900 301) cmd_mod = { \
9f69a496f1001 (Masahiro Yamada     2019-07-17 15:18:00 +0900 302) 	echo $(if $($*-objs)$($*-y)$($*-m), $(addprefix $(obj)/, $($*-objs) $($*-y) $($*-m)), $(@:.mod=.o)); \
7d32358be8acb (Masahiro Yamada     2020-12-04 02:55:51 +0900 303) 	$(undefined_syms) echo; \
9f69a496f1001 (Masahiro Yamada     2019-07-17 15:18:00 +0900 304) 	} > $@
9f69a496f1001 (Masahiro Yamada     2019-07-17 15:18:00 +0900 305) 
850ded46c6429 (Sami Tolvanen       2021-08-16 11:05:19 -0700 306) $(obj)/%.mod: $(obj)/%$(mod-prelink-ext).o FORCE
9f69a496f1001 (Masahiro Yamada     2019-07-17 15:18:00 +0900 307) 	$(call if_changed,mod)
9f69a496f1001 (Masahiro Yamada     2019-07-17 15:18:00 +0900 308) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 309) quiet_cmd_cc_lst_c = MKLST   $@
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 310)       cmd_cc_lst_c = $(CC) $(c_flags) -g -c -o $*.o $< && \
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 311) 		     $(CONFIG_SHELL) $(srctree)/scripts/makelst $*.o \
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 312) 				     System.map $(OBJDUMP) > $@
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 313) 
767e581d759fe (Sam Ravnborg        2007-05-06 09:23:45 +0200 314) $(obj)/%.lst: $(src)/%.c FORCE
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 315) 	$(call if_changed_dep,cc_lst_c)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 316) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 317) # Compile assembler sources (.S)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 318) # ---------------------------------------------------------------------------
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 319) 
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 320) # .S file exports must have their C prototypes defined in asm/asm-prototypes.h
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 321) # or a file that it includes, in order to get versioned symbols. We build a
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 322) # dummy C file that includes asm-prototypes and the EXPORT_SYMBOL lines from
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 323) # the .S file (with trailing ';'), and run genksyms on that, to extract vers.
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 324) #
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 325) # This is convoluted. The .S file must first be preprocessed to run guards and
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 326) # expand names, then the resulting exports must be constructed into plain
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 327) # EXPORT_SYMBOL(symbol); to build our dummy C file, and that gets preprocessed
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 328) # to make the genksyms input.
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 329) #
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 330) # These mirror gensymtypes_c and co above, keep them in synch.
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 331) cmd_gensymtypes_S =                                                         \
b79c6aa6a1f11 (Masahiro Yamada     2019-01-17 19:02:44 +0900 332)    { echo "\#include <linux/kernel.h>" ;                                    \
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 333)      echo "\#include <asm/asm-prototypes.h>" ;                              \
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 334)     $(CPP) $(a_flags) $< |                                                  \
cc6acc11cad1e (Nicholas Piggin     2016-11-09 15:34:05 +1100 335)      grep "\<___EXPORT_SYMBOL\>" |                                          \
b79c6aa6a1f11 (Masahiro Yamada     2019-01-17 19:02:44 +0900 336)      sed 's/.*___EXPORT_SYMBOL[[:space:]]*\([a-zA-Z0-9_]*\)[[:space:]]*,.*/EXPORT_SYMBOL(\1);/' ; } | \
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 337)     $(CPP) -D__GENKSYMS__ $(c_flags) -xc - |                                \
88110713ca9df (Masahiro Yamada     2019-02-20 12:38:31 +0900 338)     scripts/genksyms/genksyms $(if $(1), -T $(2))                           \
56067812d5b0e (Ard Biesheuvel      2017-02-03 09:54:05 +0000 339)      $(patsubst y,-R,$(CONFIG_MODULE_REL_CRCS))                             \
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 340)      $(if $(KBUILD_PRESERVE),-p)                                            \
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 341)      -r $(firstword $(wildcard $(2:.symtypes=.symref) /dev/null))
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 342) 
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 343) quiet_cmd_cc_symtypes_S = SYM $(quiet_modtag) $@
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 344) cmd_cc_symtypes_S =                                                         \
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 345)     $(call cmd_gensymtypes_S,true,$@) >/dev/null;                           \
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 346)     test -s $@ || rm -f $@
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 347) 
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 348) $(obj)/%.symtypes : $(src)/%.S FORCE
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 349) 	$(call cmd,cc_symtypes_S)
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 350) 
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 351) 
e0f41e52ddf5d (Masahiro Yamada     2016-04-08 11:24:48 +0900 352) quiet_cmd_cpp_s_S = CPP $(quiet_modtag) $@
e0f41e52ddf5d (Masahiro Yamada     2016-04-08 11:24:48 +0900 353) cmd_cpp_s_S       = $(CPP) $(a_flags) -o $@ $<
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 354) 
767e581d759fe (Sam Ravnborg        2007-05-06 09:23:45 +0200 355) $(obj)/%.s: $(src)/%.S FORCE
e0f41e52ddf5d (Masahiro Yamada     2016-04-08 11:24:48 +0900 356) 	$(call if_changed_dep,cpp_s_S)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 357) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 358) quiet_cmd_as_o_S = AS $(quiet_modtag)  $@
ee3e46b7efd29 (Masahiro Yamada     2018-11-30 10:05:25 +0900 359)       cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $<
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 360) 
2ff2b7ec65dce (Masahiro Yamada     2019-08-19 14:54:20 +0900 361) ifdef CONFIG_ASM_MODVERSIONS
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 362) 
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 363) # versioning matches the C process described above, with difference that
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 364) # we parse asm-prototypes.h C header to get function definitions.
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 365) 
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 366) cmd_modversions_S =								\
ee3e46b7efd29 (Masahiro Yamada     2018-11-30 10:05:25 +0900 367) 	if $(OBJDUMP) -h $@ | grep -q __ksymtab; then				\
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 368) 		$(call cmd_gensymtypes_S,$(KBUILD_SYMTYPES),$(@:.o=.symtypes))	\
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 369) 		    > $(@D)/.tmp_$(@F:.o=.ver);					\
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 370) 										\
ee3e46b7efd29 (Masahiro Yamada     2018-11-30 10:05:25 +0900 371) 		$(LD) $(KBUILD_LDFLAGS) -r -o $(@D)/.tmp_$(@F) $@ 		\
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 372) 			-T $(@D)/.tmp_$(@F:.o=.ver);				\
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 373) 		mv -f $(@D)/.tmp_$(@F) $@;					\
ee3e46b7efd29 (Masahiro Yamada     2018-11-30 10:05:25 +0900 374) 		rm -f $(@D)/.tmp_$(@F:.o=.ver);					\
e5d289100d3ae (Masahiro Yamada     2018-11-30 10:05:28 +0900 375) 	fi
4efca4ed05cbd (Nicholas Piggin     2016-11-01 12:46:19 +1100 376) endif
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 377) 
8852c55240297 (Josh Poimboeuf      2021-05-18 18:59:15 -0500 378) $(obj)/%.o: $(src)/%.S $$(objtool_dep) FORCE
b9ab5ebb14ec3 (Josh Poimboeuf      2016-02-28 22:22:42 -0600 379) 	$(call if_changed_rule,as_o_S)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 380) 
b2c8855491226 (Masahiro Yamada     2020-06-01 14:57:00 +0900 381) targets += $(filter-out $(subdir-builtin), $(real-obj-y))
b2c8855491226 (Masahiro Yamada     2020-06-01 14:57:00 +0900 382) targets += $(filter-out $(subdir-modorder), $(real-obj-m))
bcf0c66428336 (Masahiro Yamada     2021-05-03 03:09:56 +0900 383) targets += $(real-dtb-y) $(lib-y) $(always-y) $(MAKECMDGOALS)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 384) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 385) # Linker scripts preprocessor (.lds.S -> .lds)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 386) # ---------------------------------------------------------------------------
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 387) quiet_cmd_cpp_lds_S = LDS     $@
5cb0512c02ecd (Linus Torvalds      2017-11-02 14:10:37 -0700 388)       cmd_cpp_lds_S = $(CPP) $(cpp_flags) -P -U$(ARCH) \
42f29a25207dc (Tim Abbott          2009-09-20 18:14:12 -0400 389) 	                     -D__ASSEMBLY__ -DLINKER_SCRIPT -o $@ $<
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 390) 
767e581d759fe (Sam Ravnborg        2007-05-06 09:23:45 +0200 391) $(obj)/%.lds: $(src)/%.lds.S FORCE
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 392) 	$(call if_changed_dep,cpp_lds_S)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 393) 
4520c6a49af83 (David Howells       2012-09-21 23:31:13 +0100 394) # ASN.1 grammar
4520c6a49af83 (David Howells       2012-09-21 23:31:13 +0100 395) # ---------------------------------------------------------------------------
49d5089d926c2 (Masahiro Yamada     2019-07-21 01:27:38 +0900 396) quiet_cmd_asn1_compiler = ASN.1   $(basename $@).[ch]
4520c6a49af83 (David Howells       2012-09-21 23:31:13 +0100 397)       cmd_asn1_compiler = $(objtree)/scripts/asn1_compiler $< \
49d5089d926c2 (Masahiro Yamada     2019-07-21 01:27:38 +0900 398) 				$(basename $@).c $(basename $@).h
4520c6a49af83 (David Howells       2012-09-21 23:31:13 +0100 399) 
4fa8bc949de11 (Masahiro Yamada     2018-03-23 22:04:37 +0900 400) $(obj)/%.asn1.c $(obj)/%.asn1.h: $(src)/%.asn1 $(objtree)/scripts/asn1_compiler
4520c6a49af83 (David Howells       2012-09-21 23:31:13 +0100 401) 	$(call cmd,asn1_compiler)
4520c6a49af83 (David Howells       2012-09-21 23:31:13 +0100 402) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 403) # Build the compiled-in targets
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 404) # ---------------------------------------------------------------------------
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 405) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 406) # To build objects in subdirs, we need to descend into the directories
aaa385ba9afe7 (Masahiro Yamada     2020-05-22 11:00:01 +0900 407) $(subdir-builtin): $(obj)/%/built-in.a: $(obj)/% ;
454753d9f67ae (Masahiro Yamada     2020-05-22 11:00:02 +0900 408) $(subdir-modorder): $(obj)/%/modules.order: $(obj)/% ;
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 409) 
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 410) # combine symversions for later processing
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 411) ifeq ($(CONFIG_LTO_CLANG) $(CONFIG_MODVERSIONS),y y)
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 412)       cmd_update_lto_symversions =					\
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 413) 	rm -f $@.symversions						\
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 414) 	$(foreach n, $(filter-out FORCE,$^),				\
1d11053dc6309 (Lecopzer Chen       2021-07-15 15:37:16 +0800 415) 		$(if $(shell test -s $(n).symversions && echo y),	\
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 416) 			; cat $(n).symversions >> $@.symversions))
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 417) else
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 418)       cmd_update_lto_symversions = echo >/dev/null
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 419) endif
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 420) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 421) #
dee9495303f2c (Masahiro Yamada     2019-01-17 09:10:03 +0900 422) # Rule to compile a set of .o files into one .a file (without symbol table)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 423) #
a5967db9af51a (Stephen Rothwell    2016-08-24 22:29:19 +1000 424) 
5e18f0290f2ec (Masahiro Yamada     2018-03-19 20:26:12 +0900 425) quiet_cmd_ar_builtin = AR      $@
13dc8c029cabf (Masahiro Yamada     2019-09-21 15:49:54 +0900 426)       cmd_ar_builtin = rm -f $@; $(AR) cDPrST $@ $(real-prereqs)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 427) 
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 428) quiet_cmd_ar_and_symver = AR      $@
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 429)       cmd_ar_and_symver = $(cmd_update_lto_symversions); $(cmd_ar_builtin)
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 430) 
e578edc722762 (Masahiro Yamada     2020-05-22 10:59:58 +0900 431) $(obj)/built-in.a: $(real-obj-y) FORCE
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 432) 	$(call if_changed,ar_and_symver)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 433) 
551559e13af1c (Tejun Heo           2007-12-07 21:04:30 +0900 434) #
551559e13af1c (Tejun Heo           2007-12-07 21:04:30 +0900 435) # Rule to create modules.order file
551559e13af1c (Tejun Heo           2007-12-07 21:04:30 +0900 436) #
551559e13af1c (Tejun Heo           2007-12-07 21:04:30 +0900 437) # Create commands to either record .ko file or cat modules.order from
551559e13af1c (Tejun Heo           2007-12-07 21:04:30 +0900 438) # a subdirectory
b2c8855491226 (Masahiro Yamada     2020-06-01 14:57:00 +0900 439) # Add $(obj-m) as the prerequisite to avoid updating the timestamp of
b2c8855491226 (Masahiro Yamada     2020-06-01 14:57:00 +0900 440) # modules.order unless contained modules are updated.
b2c8855491226 (Masahiro Yamada     2020-06-01 14:57:00 +0900 441) 
b2c8855491226 (Masahiro Yamada     2020-06-01 14:57:00 +0900 442) cmd_modules_order = { $(foreach m, $(real-prereqs), \
b2c8855491226 (Masahiro Yamada     2020-06-01 14:57:00 +0900 443) 	$(if $(filter %/modules.order, $m), cat $m, echo $(patsubst %.o,%.ko,$m));) :; } \
e0e1b1ec397e1 (Masahiro Yamada     2019-07-17 15:17:51 +0900 444) 	| $(AWK) '!x[$$0]++' - > $@
551559e13af1c (Tejun Heo           2007-12-07 21:04:30 +0900 445) 
b2c8855491226 (Masahiro Yamada     2020-06-01 14:57:00 +0900 446) $(obj)/modules.order: $(obj-m) FORCE
b2c8855491226 (Masahiro Yamada     2020-06-01 14:57:00 +0900 447) 	$(call if_changed,modules_order)
b2c8855491226 (Masahiro Yamada     2020-06-01 14:57:00 +0900 448) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 449) #
dee9495303f2c (Masahiro Yamada     2019-01-17 09:10:03 +0900 450) # Rule to compile a set of .o files into one .a file (with symbol table)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 451) #
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 452) quiet_cmd_ar_lib = AR      $@
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 453)       cmd_ar_lib = $(cmd_update_lto_symversions); $(cmd_ar)
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 454) 
e578edc722762 (Masahiro Yamada     2020-05-22 10:59:58 +0900 455) $(obj)/lib.a: $(lib-y) FORCE
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 456) 	$(call if_changed,ar_lib)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 457) 
afa974b771281 (Masahiro Yamada     2019-01-17 19:02:43 +0900 458) # NOTE:
afa974b771281 (Masahiro Yamada     2019-01-17 19:02:43 +0900 459) # Do not replace $(filter %.o,^) with $(real-prereqs). When a single object
afa974b771281 (Masahiro Yamada     2019-01-17 19:02:43 +0900 460) # module is turned into a multi object module, $^ will contain header file
afa974b771281 (Masahiro Yamada     2019-01-17 19:02:43 +0900 461) # dependencies recorded in the .*.cmd file.
dc5723b02e523 (Sami Tolvanen       2020-12-11 10:46:19 -0800 462) ifdef CONFIG_LTO_CLANG
dc5723b02e523 (Sami Tolvanen       2020-12-11 10:46:19 -0800 463) quiet_cmd_link_multi-m = AR [M]  $@
dc5723b02e523 (Sami Tolvanen       2020-12-11 10:46:19 -0800 464) cmd_link_multi-m =						\
38e8918490038 (Sami Tolvanen       2020-12-11 10:46:20 -0800 465) 	$(cmd_update_lto_symversions);				\
dc5723b02e523 (Sami Tolvanen       2020-12-11 10:46:19 -0800 466) 	rm -f $@; 						\
dc5723b02e523 (Sami Tolvanen       2020-12-11 10:46:19 -0800 467) 	$(AR) cDPrsT $@ $(filter %.o,$^)
dc5723b02e523 (Sami Tolvanen       2020-12-11 10:46:19 -0800 468) else
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 469) quiet_cmd_link_multi-m = LD [M]  $@
b7dca6dd1e591 (Masahiro Yamada     2019-07-17 15:17:57 +0900 470)       cmd_link_multi-m = $(LD) $(ld_flags) -r -o $@ $(filter %.o,$^)
dc5723b02e523 (Sami Tolvanen       2020-12-11 10:46:19 -0800 471) endif
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 472) 
a6601e01cd548 (Masahiro Yamada     2021-03-06 15:11:20 +0900 473) $(multi-obj-m): FORCE
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 474) 	$(call if_changed,link_multi-m)
a6601e01cd548 (Masahiro Yamada     2021-03-06 15:11:20 +0900 475) $(call multi_depend, $(multi-obj-m), .o, -objs -y -m)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 476) 
a6601e01cd548 (Masahiro Yamada     2021-03-06 15:11:20 +0900 477) targets += $(multi-obj-m)
591f66899784a (Masahiro Yamada     2017-11-13 19:29:36 +0900 478) targets := $(filter-out $(PHONY), $(targets))
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 479) 
b23d1a241f4eb (Masahiro Yamada     2018-03-23 22:04:33 +0900 480) # Add intermediate targets:
b23d1a241f4eb (Masahiro Yamada     2018-03-23 22:04:33 +0900 481) # When building objects with specific suffix patterns, add intermediate
b23d1a241f4eb (Masahiro Yamada     2018-03-23 22:04:33 +0900 482) # targets that the final targets are derived from.
b23d1a241f4eb (Masahiro Yamada     2018-03-23 22:04:33 +0900 483) intermediate_targets = $(foreach sfx, $(2), \
b23d1a241f4eb (Masahiro Yamada     2018-03-23 22:04:33 +0900 484) 				$(patsubst %$(strip $(1)),%$(sfx), \
b23d1a241f4eb (Masahiro Yamada     2018-03-23 22:04:33 +0900 485) 					$(filter %$(strip $(1)), $(targets))))
54a702f705899 (Masahiro Yamada     2018-03-23 22:04:39 +0900 486) # %.asn1.o <- %.asn1.[ch] <- %.asn1
a7f9241909247 (Masahiro Yamada     2018-03-23 22:04:34 +0900 487) # %.dtb.o <- %.dtb.S <- %.dtb <- %.dts
b23d1a241f4eb (Masahiro Yamada     2018-03-23 22:04:33 +0900 488) # %.lex.o <- %.lex.c <- %.l
b23d1a241f4eb (Masahiro Yamada     2018-03-23 22:04:33 +0900 489) # %.tab.o <- %.tab.[ch] <- %.y
54a702f705899 (Masahiro Yamada     2018-03-23 22:04:39 +0900 490) targets += $(call intermediate_targets, .asn1.o, .asn1.c .asn1.h) \
54a702f705899 (Masahiro Yamada     2018-03-23 22:04:39 +0900 491) 	   $(call intermediate_targets, .dtb.o, .dtb.S .dtb) \
a7f9241909247 (Masahiro Yamada     2018-03-23 22:04:34 +0900 492) 	   $(call intermediate_targets, .lex.o, .lex.c) \
b23d1a241f4eb (Masahiro Yamada     2018-03-23 22:04:33 +0900 493) 	   $(call intermediate_targets, .tab.o, .tab.c .tab.h)
b23d1a241f4eb (Masahiro Yamada     2018-03-23 22:04:33 +0900 494) 
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 495) # Build
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 496) # ---------------------------------------------------------------------------
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 497) 
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 498) ifdef single-build
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 499) 
203126293cd78 (Masahiro Yamada     2019-10-16 14:15:46 +0900 500) KBUILD_SINGLE_TARGETS := $(filter $(obj)/%, $(KBUILD_SINGLE_TARGETS))
203126293cd78 (Masahiro Yamada     2019-10-16 14:15:46 +0900 501) 
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 502) curdir-single := $(sort $(foreach x, $(KBUILD_SINGLE_TARGETS), \
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 503) 			$(if $(filter $(x) $(basename $(x)).o, $(targets)), $(x))))
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 504) 
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 505) # Handle single targets without any rule: show "Nothing to be done for ..." or
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 506) # "No rule to make target ..." depending on whether the target exists.
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 507) unknown-single := $(filter-out $(addsuffix /%, $(subdir-ym)), \
203126293cd78 (Masahiro Yamada     2019-10-16 14:15:46 +0900 508) 			$(filter-out $(curdir-single), $(KBUILD_SINGLE_TARGETS)))
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 509) 
2dffd23f81a36 (Masahiro Yamada     2019-10-16 14:15:47 +0900 510) single-subdirs := $(foreach d, $(subdir-ym), \
2dffd23f81a36 (Masahiro Yamada     2019-10-16 14:15:47 +0900 511) 			$(if $(filter $(d)/%, $(KBUILD_SINGLE_TARGETS)), $(d)))
2dffd23f81a36 (Masahiro Yamada     2019-10-16 14:15:47 +0900 512) 
2dffd23f81a36 (Masahiro Yamada     2019-10-16 14:15:47 +0900 513) __build: $(curdir-single) $(single-subdirs)
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 514) ifneq ($(unknown-single),)
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 515) 	$(Q)$(MAKE) -f /dev/null $(unknown-single)
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 516) endif
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 517) 	@:
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 518) 
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 519) ifeq ($(curdir-single),)
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 520) # Nothing to do in this directory. Do not include any .*.cmd file for speed-up
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 521) targets :=
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 522) else
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 523) targets += $(curdir-single)
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 524) endif
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 525) 
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 526) else
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 527) 
f3908ab3ffd92 (Masahiro Yamada     2020-06-01 14:56:56 +0900 528) __build: $(if $(KBUILD_BUILTIN), $(targets-for-builtin)) \
f3908ab3ffd92 (Masahiro Yamada     2020-06-01 14:56:56 +0900 529) 	 $(if $(KBUILD_MODULES), $(targets-for-modules)) \
5f2fb52fac15a (Masahiro Yamada     2020-02-02 01:49:24 +0900 530) 	 $(subdir-ym) $(always-y)
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 531) 	@:
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 532) 
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 533) endif
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 534) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 535) # Descending
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 536) # ---------------------------------------------------------------------------
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 537) 
4f1933620f571 (Paul Smith          2006-03-05 17:14:10 -0500 538) PHONY += $(subdir-ym)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 539) $(subdir-ym):
d9f78edfd81b9 (Masahiro Yamada     2019-08-06 19:03:21 +0900 540) 	$(Q)$(MAKE) $(build)=$@ \
394053f4a4b3e (Masahiro Yamada     2019-08-15 00:19:18 +0900 541) 	$(if $(filter $@/, $(KBUILD_SINGLE_TARGETS)),single-build=) \
aaa385ba9afe7 (Masahiro Yamada     2020-05-22 11:00:01 +0900 542) 	need-builtin=$(if $(filter $@/built-in.a, $(subdir-builtin)),1) \
454753d9f67ae (Masahiro Yamada     2020-05-22 11:00:02 +0900 543) 	need-modorder=$(if $(filter $@/modules.order, $(subdir-modorder)),1)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 544) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 545) # Add FORCE to the prequisites of a target to force it to be always rebuilt.
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 546) # ---------------------------------------------------------------------------
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 547) 
4f1933620f571 (Paul Smith          2006-03-05 17:14:10 -0500 548) PHONY += FORCE
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 549) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 550) FORCE:
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 551) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 552) # Read all saved command lines and dependencies for the $(targets) we
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 553) # may be building above, using $(if_changed{,_dep}). As an
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 554) # optimization, we don't need to read them if the target does not
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 555) # exist, we will rebuild anyway in that case.
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 556) 
392885ee82d35 (Masahiro Yamada     2018-11-30 10:05:22 +0900 557) existing-targets := $(wildcard $(sort $(targets)))
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 558) 
392885ee82d35 (Masahiro Yamada     2018-11-30 10:05:22 +0900 559) -include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd)
4f1933620f571 (Paul Smith          2006-03-05 17:14:10 -0500 560) 
8a78756eb545a (Masahiro Yamada     2017-11-13 19:29:37 +0900 561) # Create directories for object files if they do not exist
cc8a51ca6f05a (Masahiro Yamada     2020-07-01 12:29:51 +0900 562) obj-dirs := $(sort $(patsubst %/,%, $(dir $(targets))))
392885ee82d35 (Masahiro Yamada     2018-11-30 10:05:22 +0900 563) # If targets exist, their directories apparently exist. Skip mkdir.
392885ee82d35 (Masahiro Yamada     2018-11-30 10:05:22 +0900 564) existing-dirs := $(sort $(patsubst %/,%, $(dir $(existing-targets))))
392885ee82d35 (Masahiro Yamada     2018-11-30 10:05:22 +0900 565) obj-dirs := $(strip $(filter-out $(existing-dirs), $(obj-dirs)))
c4da7ed0e7d71 (Masahiro Yamada     2017-11-13 19:29:38 +0900 566) ifneq ($(obj-dirs),)
8a78756eb545a (Masahiro Yamada     2017-11-13 19:29:37 +0900 567) $(shell mkdir -p $(obj-dirs))
8a78756eb545a (Masahiro Yamada     2017-11-13 19:29:37 +0900 568) endif
8a78756eb545a (Masahiro Yamada     2017-11-13 19:29:37 +0900 569) 
4f1933620f571 (Paul Smith          2006-03-05 17:14:10 -0500 570) .PHONY: $(PHONY)