Blame view

scripts/Makefile.build 11.9 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
  # ==========================================================================
  # Building
  # ==========================================================================
  
  src := $(obj)
4f1933620   Paul Smith   kbuild: change kb...
6
  PHONY := __build
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
7
  __build:
d72e5edbf   Sam Ravnborg   kbuild: avoid env...
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  # Init all relevant variables used in kbuild files so
  # 1) they have correct type
  # 2) they do not inherit any value from the environment
  obj-y :=
  obj-m :=
  lib-y :=
  lib-m :=
  always :=
  targets :=
  subdir-y :=
  subdir-m :=
  EXTRA_AFLAGS   :=
  EXTRA_CFLAGS   :=
  EXTRA_CPPFLAGS :=
  EXTRA_LDFLAGS  :=
f77bf0142   Sam Ravnborg   kbuild: introduce...
23
24
25
26
  asflags-y  :=
  ccflags-y  :=
  cppflags-y :=
  ldflags-y  :=
d72e5edbf   Sam Ravnborg   kbuild: avoid env...
27

720097d89   Sam Ravnborg   kbuild: introduce...
28
29
  subdir-asflags-y :=
  subdir-ccflags-y :=
3156fd052   Robert P. J. Day   kbuild: fix some ...
30
  # Read auto.conf if it exists, otherwise ignore
c955ccafc   Roman Zippel   kconfig: fix .con...
31
  -include include/config/auto.conf
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
32

20a468b51   Sam Ravnborg   kbuild: make cc-v...
33
  include scripts/Kbuild.include
3156fd052   Robert P. J. Day   kbuild: fix some ...
34
  # For backward compatibility check that these variables do not change
0c53c8e6e   Sam Ravnborg   kbuild: check for...
35
  save-cflags := $(CFLAGS)
2a6914703   Sam Ravnborg   kbuild: fix make ...
36
  # The filename Kbuild has precedence over Makefile
db8c1a7b2   Sam Ravnborg   kbuild: fix build...
37
  kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
0c53c8e6e   Sam Ravnborg   kbuild: check for...
38
39
40
41
42
43
44
45
46
  kbuild-file := $(if $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Kbuild,$(kbuild-dir)/Makefile)
  include $(kbuild-file)
  
  # If the save-* variables changed error out
  ifeq ($(KBUILD_NOPEDANTIC),)
          ifneq ("$(save-cflags)","$(CFLAGS)")
                  $(error CFLAGS was changed in "$(kbuild-file)". Fix it to use EXTRA_CFLAGS)
          endif
  endif
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
47
48
49
50
51
52
53
54
  include scripts/Makefile.lib
  
  ifdef host-progs
  ifneq ($(hostprogs-y),$(host-progs))
  $(warning kbuild: $(obj)/Makefile - Usage of host-progs is deprecated. Please replace with hostprogs-y!)
  hostprogs-y += $(host-progs)
  endif
  endif
3156fd052   Robert P. J. Day   kbuild: fix some ...
55
  # Do not include host rules unless needed
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
56
57
58
59
60
61
62
63
64
65
66
67
  ifneq ($(hostprogs-y)$(hostprogs-m),)
  include scripts/Makefile.host
  endif
  
  ifneq ($(KBUILD_SRC),)
  # Create output directory if not already present
  _dummy := $(shell [ -d $(obj) ] || mkdir -p $(obj))
  
  # Create directories for object files if directory does not exist
  # Needed when obj-y := dir/file.o syntax is used
  _dummy := $(foreach d,$(obj-dirs), $(shell [ -d $(d) ] || mkdir -p $(d)))
  endif
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
68
69
70
71
72
73
74
75
76
77
78
79
80
  ifndef obj
  $(warning kbuild: Makefile.build is included improperly)
  endif
  
  # ===========================================================================
  
  ifneq ($(strip $(lib-y) $(lib-m) $(lib-n) $(lib-)),)
  lib-target := $(obj)/lib.a
  endif
  
  ifneq ($(strip $(obj-y) $(obj-m) $(obj-n) $(obj-) $(lib-target)),)
  builtin-target := $(obj)/built-in.o
  endif
551559e13   Tejun Heo   kbuild: implement...
81
  modorder-target := $(obj)/modules.order
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
82
83
84
  # We keep a list of all modules in $(MODVERDIR)
  
  __build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \
551559e13   Tejun Heo   kbuild: implement...
85
  	 $(if $(KBUILD_MODULES),$(obj-m) $(modorder-target)) \
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
86
87
88
89
90
91
92
93
94
95
96
97
98
  	 $(subdir-ym) $(always)
  	@:
  
  # Linus' kernel sanity checking tool
  ifneq ($(KBUILD_CHECKSRC),0)
    ifeq ($(KBUILD_CHECKSRC),2)
      quiet_cmd_force_checksrc = CHECK   $<
            cmd_force_checksrc = $(CHECK) $(CHECKFLAGS) $(c_flags) $< ;
    else
        quiet_cmd_checksrc     = CHECK   $<
              cmd_checksrc     = $(CHECK) $(CHECKFLAGS) $(c_flags) $< ;
    endif
  endif
91341d4b2   Sam Ravnborg   kbuild: introduce...
99
100
101
102
  # Do section mismatch analysis for each module/built-in.o
  ifdef CONFIG_DEBUG_SECTION_MISMATCH
    cmd_secanalysis = ; scripts/mod/modpost $@
  endif
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
103
104
105
106
107
  
  # Compile C sources (.c)
  # ---------------------------------------------------------------------------
  
  # Default is built-in, unless we know otherwise
18c167fd6   Shaohua Li   ftrace, ia64: mak...
108
  modkern_cflags = $(if $(part-of-module), $(CFLAGS_MODULE), $(CFLAGS_KERNEL))
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
109
  quiet_modtag := $(empty)   $(empty)
18c167fd6   Shaohua Li   ftrace, ia64: mak...
110
111
112
113
  $(real-objs-m)        : part-of-module := y
  $(real-objs-m:.o=.i)  : part-of-module := y
  $(real-objs-m:.o=.s)  : part-of-module := y
  $(real-objs-m:.o=.lst): part-of-module := y
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
114
115
116
117
118
119
120
121
122
  
  $(real-objs-m)        : quiet_modtag := [M]
  $(real-objs-m:.o=.i)  : quiet_modtag := [M]
  $(real-objs-m:.o=.s)  : quiet_modtag := [M]
  $(real-objs-m:.o=.lst): quiet_modtag := [M]
  
  $(obj-m)              : quiet_modtag := [M]
  
  # Default for not multi-part modules
5e8d780d7   Sam Ravnborg   kbuild: fix ia64 ...
123
  modname = $(basetarget)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
124
125
126
127
128
129
130
131
132
133
134
  
  $(multi-objs-m)         : modname = $(modname-multi)
  $(multi-objs-m:.o=.i)   : modname = $(modname-multi)
  $(multi-objs-m:.o=.s)   : modname = $(modname-multi)
  $(multi-objs-m:.o=.lst) : modname = $(modname-multi)
  $(multi-objs-y)         : modname = $(modname-multi)
  $(multi-objs-y:.o=.i)   : modname = $(modname-multi)
  $(multi-objs-y:.o=.s)   : modname = $(modname-multi)
  $(multi-objs-y:.o=.lst) : modname = $(modname-multi)
  
  quiet_cmd_cc_s_c = CC $(quiet_modtag)  $@
7d1859835   Chuck Ebbert   kbuild: add -fver...
135
  cmd_cc_s_c       = $(CC) $(c_flags) -fverbose-asm -S -o $@ $<
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
136

767e581d7   Sam Ravnborg   kbuild: enable us...
137
  $(obj)/%.s: $(src)/%.c FORCE
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
138
139
140
141
  	$(call if_changed_dep,cc_s_c)
  
  quiet_cmd_cc_i_c = CPP $(quiet_modtag) $@
  cmd_cc_i_c       = $(CPP) $(c_flags)   -o $@ $<
767e581d7   Sam Ravnborg   kbuild: enable us...
142
  $(obj)/%.i: $(src)/%.c FORCE
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
143
  	$(call if_changed_dep,cc_i_c)
2ea038917   Sam Ravnborg   Revert "kbuild: s...
144
  cmd_gensymtypes =                                                           \
37a8d9f67   Sam Ravnborg   kbuild: simplify ...
145
      $(CPP) -D__GENKSYMS__ $(c_flags) $< |                                   \
2ea038917   Sam Ravnborg   Revert "kbuild: s...
146
      $(GENKSYMS) -T $@ -a $(ARCH)                                            \
37a8d9f67   Sam Ravnborg   kbuild: simplify ...
147
148
       $(if $(KBUILD_PRESERVE),-p)                                            \
       $(if $(1),-r $(firstword $(wildcard $(@:.symtypes=.symref) /dev/null)))
15fde6751   Andreas Gruenbacher   kbuild: support f...
149
  quiet_cmd_cc_symtypes_c = SYM $(quiet_modtag) $@
37a8d9f67   Sam Ravnborg   kbuild: simplify ...
150
151
  cmd_cc_symtypes_c =                                                         \
      set -e;                                                                 \
2ea038917   Sam Ravnborg   Revert "kbuild: s...
152
      $(call cmd_gensymtypes, true) >/dev/null;                               \
37a8d9f67   Sam Ravnborg   kbuild: simplify ...
153
      test -s $@ || rm -f $@
15fde6751   Andreas Gruenbacher   kbuild: support f...
154

767e581d7   Sam Ravnborg   kbuild: enable us...
155
  $(obj)/%.symtypes : $(src)/%.c FORCE
64e6c1e12   Andreas Gruenbacher   genksyms: track s...
156
  	$(call cmd,cc_symtypes_c)
15fde6751   Andreas Gruenbacher   kbuild: support f...
157

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
158
159
160
161
162
163
164
165
166
167
168
  # C (.c) files
  # The C file is compiled and updated dependency information is generated.
  # (See cmd_cc_o_c + relevant part of rule_cc_o_c)
  
  quiet_cmd_cc_o_c = CC $(quiet_modtag)  $@
  
  ifndef CONFIG_MODVERSIONS
  cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
  
  else
  # When module versioning is enabled the following steps are executed:
2ea038917   Sam Ravnborg   Revert "kbuild: s...
169
170
171
  # o compile a .tmp_<file>.o from <file>.c
  # o if .tmp_<file>.o doesn't contain a __ksymtab version, i.e. does
  #   not export symbols, we just rename .tmp_<file>.o to <file>.o and
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
172
173
174
  #   are done.
  # o otherwise, we calculate symbol versions using the good old
  #   genksyms on the preprocessed source and postprocess them in a way
2ea038917   Sam Ravnborg   Revert "kbuild: s...
175
176
177
178
  #   that they are usable as a linker script
  # o generate <file>.o from .tmp_<file>.o using the linker to
  #   replace the unresolved symbols __crc_exported_symbol with
  #   the actual value of the checksum generated by genksyms
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
179

2ea038917   Sam Ravnborg   Revert "kbuild: s...
180
  cmd_cc_o_c = $(CC) $(c_flags) -c -o $(@D)/.tmp_$(@F) $<
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
181
  cmd_modversions =							\
2ea038917   Sam Ravnborg   Revert "kbuild: s...
182
183
184
185
186
187
188
  	if $(OBJDUMP) -h $(@D)/.tmp_$(@F) | grep -q __ksymtab; then	\
  		$(call cmd_gensymtypes, $(KBUILD_SYMTYPES))		\
  		    > $(@D)/.tmp_$(@F:.o=.ver);				\
  									\
  		$(LD) $(LDFLAGS) -r -o $@ $(@D)/.tmp_$(@F) 		\
  			-T $(@D)/.tmp_$(@F:.o=.ver);			\
  		rm -f $(@D)/.tmp_$(@F) $(@D)/.tmp_$(@F:.o=.ver);	\
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
189
  	else								\
2ea038917   Sam Ravnborg   Revert "kbuild: s...
190
  		mv -f $(@D)/.tmp_$(@F) $@;				\
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
191
192
  	fi;
  endif
8da3821ba   Steven Rostedt   ftrace: create __...
193
  ifdef CONFIG_FTRACE_MCOUNT_RECORD
66a570623   Andi Kleen   kbuild: fail buil...
194
  cmd_record_mcount = set -e ; perl $(srctree)/scripts/recordmcount.pl "$(ARCH)" \
e6299d267   Wu Zhangjin   MIPS: Tracing: Ad...
195
  	"$(if $(CONFIG_CPU_BIG_ENDIAN),big,little)" \
b3acf29af   Steven Rostedt   ftrace, kbuild: c...
196
  	"$(if $(CONFIG_64BIT),64,32)" \
18c167fd6   Shaohua Li   ftrace, ia64: mak...
197
198
  	"$(OBJDUMP)" "$(OBJCOPY)" "$(CC)" "$(LD)" "$(NM)" "$(RM)" "$(MV)" \
  	"$(if $(part-of-module),1,0)" "$(@)";
8da3821ba   Steven Rostedt   ftrace: create __...
199
  endif
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
200
  define rule_cc_o_c
6176aa9ae   Jan Beulich   kbuild: consolida...
201
202
  	$(call echo-cmd,checksrc) $(cmd_checksrc)			  \
  	$(call echo-cmd,cc_o_c) $(cmd_cc_o_c);				  \
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
203
  	$(cmd_modversions)						  \
c3c63b6be   Andi Kleen   kbuild: echo the ...
204
  	$(call echo-cmd,record_mcount)					  \
8da3821ba   Steven Rostedt   ftrace: create __...
205
  	$(cmd_record_mcount)						  \
48f1f0589   Sam Ravnborg   kbuild: consisten...
206
207
  	scripts/basic/fixdep $(depfile) $@ '$(call make-cmd,cc_o_c)' >    \
  	                                              $(dot-target).tmp;  \
2ea038917   Sam Ravnborg   Revert "kbuild: s...
208
  	rm -f $(depfile);						  \
48f1f0589   Sam Ravnborg   kbuild: consisten...
209
  	mv -f $(dot-target).tmp $(dot-target).cmd
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
210
211
212
  endef
  
  # Built-in and composite module parts
767e581d7   Sam Ravnborg   kbuild: enable us...
213
  $(obj)/%.o: $(src)/%.c FORCE
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
214
215
216
217
  	$(call cmd,force_checksrc)
  	$(call if_changed_rule,cc_o_c)
  
  # Single-part modules are special since we need to mark them in $(MODVERDIR)
767e581d7   Sam Ravnborg   kbuild: enable us...
218
  $(single-used-m): $(obj)/%.o: $(src)/%.c FORCE
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
219
220
221
222
223
224
225
226
  	$(call cmd,force_checksrc)
  	$(call if_changed_rule,cc_o_c)
  	@{ echo $(@:.o=.ko); echo $@; } > $(MODVERDIR)/$(@F:.o=.mod)
  
  quiet_cmd_cc_lst_c = MKLST   $@
        cmd_cc_lst_c = $(CC) $(c_flags) -g -c -o $*.o $< && \
  		     $(CONFIG_SHELL) $(srctree)/scripts/makelst $*.o \
  				     System.map $(OBJDUMP) > $@
767e581d7   Sam Ravnborg   kbuild: enable us...
227
  $(obj)/%.lst: $(src)/%.c FORCE
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
228
229
230
231
232
233
234
235
236
237
238
239
  	$(call if_changed_dep,cc_lst_c)
  
  # Compile assembler sources (.S)
  # ---------------------------------------------------------------------------
  
  modkern_aflags := $(AFLAGS_KERNEL)
  
  $(real-objs-m)      : modkern_aflags := $(AFLAGS_MODULE)
  $(real-objs-m:.o=.s): modkern_aflags := $(AFLAGS_MODULE)
  
  quiet_cmd_as_s_S = CPP $(quiet_modtag) $@
  cmd_as_s_S       = $(CPP) $(a_flags)   -o $@ $< 
767e581d7   Sam Ravnborg   kbuild: enable us...
240
  $(obj)/%.s: $(src)/%.S FORCE
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
241
242
243
244
  	$(call if_changed_dep,as_s_S)
  
  quiet_cmd_as_o_S = AS $(quiet_modtag)  $@
  cmd_as_o_S       = $(CC) $(a_flags) -c -o $@ $<
767e581d7   Sam Ravnborg   kbuild: enable us...
245
  $(obj)/%.o: $(src)/%.S FORCE
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
246
247
248
249
250
251
252
253
  	$(call if_changed_dep,as_o_S)
  
  targets += $(real-objs-y) $(real-objs-m) $(lib-y)
  targets += $(extra-y) $(MAKECMDGOALS) $(always)
  
  # Linker scripts preprocessor (.lds.S -> .lds)
  # ---------------------------------------------------------------------------
  quiet_cmd_cpp_lds_S = LDS     $@
51b563fc9   Sam Ravnborg   arm, cris, mips, ...
254
        cmd_cpp_lds_S = $(CPP) $(cpp_flags) -P -C -U$(ARCH) \
42f29a252   Tim Abbott   kbuild: Don't def...
255
  	                     -D__ASSEMBLY__ -DLINKER_SCRIPT -o $@ $<
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
256

767e581d7   Sam Ravnborg   kbuild: enable us...
257
  $(obj)/%.lds: $(src)/%.lds.S FORCE
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
  	$(call if_changed_dep,cpp_lds_S)
  
  # Build the compiled-in targets
  # ---------------------------------------------------------------------------
  
  # To build objects in subdirs, we need to descend into the directories
  $(sort $(subdir-obj-y)): $(subdir-ym) ;
  
  #
  # Rule to compile a set of .o files into one .o file
  #
  ifdef builtin-target
  quiet_cmd_link_o_target = LD      $@
  # If the list of objects to link is empty, just create an empty built-in.o
  cmd_link_o_target = $(if $(strip $(obj-y)),\
91341d4b2   Sam Ravnborg   kbuild: introduce...
273
274
  		      $(LD) $(ld_flags) -r -o $@ $(filter $(obj-y), $^) \
  		      $(cmd_secanalysis),\
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
275
276
277
278
279
280
281
282
283
  		      rm -f $@; $(AR) rcs $@)
  
  $(builtin-target): $(obj-y) FORCE
  	$(call if_changed,link_o_target)
  
  targets += $(builtin-target)
  endif # builtin-target
  
  #
551559e13   Tejun Heo   kbuild: implement...
284
285
286
287
288
289
290
291
292
293
294
295
296
  # Rule to create modules.order file
  #
  # Create commands to either record .ko file or cat modules.order from
  # a subdirectory
  modorder-cmds =						\
  	$(foreach m, $(modorder),			\
  		$(if $(filter %/modules.order, $m),	\
  			cat $m;, echo kernel/$m;))
  
  $(modorder-target): $(subdir-ym) FORCE
  	$(Q)(cat /dev/null; $(modorder-cmds)) > $@
  
  #
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
297
298
299
300
  # Rule to compile a set of .o files into one .a file
  #
  ifdef lib-target
  quiet_cmd_link_l_target = AR      $@
5e54d5e5f   Sam Ravnborg   kbuild: kill EXTR...
301
  cmd_link_l_target = rm -f $@; $(AR) rcs $@ $(lib-y)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
  
  $(lib-target): $(lib-y) FORCE
  	$(call if_changed,link_l_target)
  
  targets += $(lib-target)
  endif
  
  #
  # Rule to link composite objects
  #
  #  Composite objects are specified in kbuild makefile as follows:
  #    <composite-object>-objs := <list of .o files>
  #  or
  #    <composite-object>-y    := <list of .o files>
  link_multi_deps =                     \
  $(filter $(addprefix $(obj)/,         \
  $($(subst $(obj)/,,$(@:.o=-objs)))    \
  $($(subst $(obj)/,,$(@:.o=-y)))), $^)
   
  quiet_cmd_link_multi-y = LD      $@
91341d4b2   Sam Ravnborg   kbuild: introduce...
322
  cmd_link_multi-y = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps) $(cmd_secanalysis)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
323
324
  
  quiet_cmd_link_multi-m = LD [M]  $@
114f51577   Roland McGrath   kbuild: use LDFLA...
325
  cmd_link_multi-m = $(cmd_link_multi-y)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
  
  # We would rather have a list of rules like
  # 	foo.o: $(foo-objs)
  # but that's not so easy, so we rather make all composite objects depend
  # on the set of all their parts
  $(multi-used-y) : %.o: $(multi-objs-y) FORCE
  	$(call if_changed,link_multi-y)
  
  $(multi-used-m) : %.o: $(multi-objs-m) FORCE
  	$(call if_changed,link_multi-m)
  	@{ echo $(@:.o=.ko); echo $(link_multi_deps); } > $(MODVERDIR)/$(@F:.o=.mod)
  
  targets += $(multi-used-y) $(multi-used-m)
  
  
  # Descending
  # ---------------------------------------------------------------------------
4f1933620   Paul Smith   kbuild: change kb...
343
  PHONY += $(subdir-ym)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
344
345
346
347
348
  $(subdir-ym):
  	$(Q)$(MAKE) $(build)=$@
  
  # Add FORCE to the prequisites of a target to force it to be always rebuilt.
  # ---------------------------------------------------------------------------
4f1933620   Paul Smith   kbuild: change kb...
349
  PHONY += FORCE
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
350
351
352
353
354
355
356
357
358
359
360
361
362
363
  
  FORCE:
  
  # Read all saved command lines and dependencies for the $(targets) we
  # may be building above, using $(if_changed{,_dep}). As an
  # optimization, we don't need to read them if the target does not
  # exist, we will rebuild anyway in that case.
  
  targets := $(wildcard $(sort $(targets)))
  cmd_files := $(wildcard $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
  
  ifneq ($(cmd_files),)
    include $(cmd_files)
  endif
4f1933620   Paul Smith   kbuild: change kb...
364
365
366
367
368
369
  
  
  # Declare the contents of the .PHONY variable as phony.  We keep that
  # information in a variable se we can use it in if_changed and friends.
  
  .PHONY: $(PHONY)