source: trunk/kBuild/footer.kmk@ 3258

Last change on this file since 3258 was 3128, checked in by bird, 8 years ago

kBuild/footer-pass2-compiling-targets.kmk: Made PRE_CMDS and POST_CMDS accumulative.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 16.3 KB
RevLine 
[72]1# $Id: footer.kmk 3128 2017-12-25 13:33:14Z bird $
2## @file
[2521]3# kBuild - File included at bottom of a makefile.
[72]4#
[1547]5
6#
[3121]7# Copyright (c) 2004-2017 knut st. osmundsen <bird-kBuild-spam-xviiv@anduin.net>
[72]8#
9# This file is part of kBuild.
10#
11# kBuild is free software; you can redistribute it and/or modify
12# it under the terms of the GNU General Public License as published by
[106]13# the Free Software Foundation; either version source of the License, or
[72]14# (at your option) any later version.
15#
16# kBuild is distributed in the hope that it will be useful,
17# but WITHOUT ANY WARRANTY; without even the implied warranty of
18# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19# GNU General Public License for more details.
20#
21# You should have received a copy of the GNU General Public License
22# along with kBuild; if not, write to the Free Software
[353]23# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
[72]24#
25#
[1547]26# As a special exception you are granted permission to include this file, via
[1599]27# the kmk include directive, as you wish without this in itself causing the
28# resulting makefile, program or whatever to be covered by the GPL license.
[1547]29# This exception does not however invalidate any other reasons why the makefile,
30# program, whatever should not be covered the GPL.
31#
32#
[72]33
34ifndef __footer_kmk__
35# start-of-file-content
[988]36ifdef KBUILD_PROFILE_SELF
[2008]37 $(evalcall def_profile_self, start of footer.kmk)
38 _KBUILD_TS_FOOTER_START := $(_KBUILD_TS_PREV)
[988]39endif
[72]40
41#
42# Variables.
[73]43# (Some of these need initialization before including definitions using them.)
[72]44#
45
[985]46# All targets of each types.
[1504]47_ALL_BLDPROGS := $(BLDPROGS) $(BLDPROGS.$(KBUILD_HOST)) $(BLDPROGS.$(KBUILD_HOST).$(KBUILD_HOST_ARCH)) $(BLDPROGS.$(KBUILD_HOST_ARCH)) $(BLDPROGS.$(KBUILD_HOST_CPU)) $(BLDPROGS.$(KBUILD_TYPE))
48_ALL_LIBRARIES := $(LIBRARIES) $(LIBRARIES.$(KBUILD_TARGET)) $(LIBRARIES.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)) $(LIBRARIES.$(KBUILD_TARGET_ARCH)) $(LIBRARIES.$(KBUILD_TARGET_CPU)) $(LIBRARIES.$(KBUILD_TYPE))
49_ALL_IMPORT_LIBS := $(IMPORT_LIBS) $(IMPORT_LIBS.$(KBUILD_TARGET)) $(IMPORT_LIBS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)) $(IMPORT_LIBS.$(KBUILD_TARGET_ARCH)) $(IMPORT_LIBS.$(KBUILD_TARGET_CPU)) $(IMPORT_LIBS.$(KBUILD_TYPE))
50_ALL_DLLS := $(DLLS) $(DLLS.$(KBUILD_TARGET)) $(DLLS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)) $(DLLS.$(KBUILD_TARGET_ARCH)) $(DLLS.$(KBUILD_TARGET_CPU)) $(DLLS.$(KBUILD_TYPE))
51_ALL_PROGRAMS := $(PROGRAMS) $(PROGRAMS.$(KBUILD_TARGET)) $(PROGRAMS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)) $(PROGRAMS.$(KBUILD_TARGET_ARCH)) $(PROGRAMS.$(KBUILD_TARGET_CPU)) $(PROGRAMS.$(KBUILD_TYPE))
52_ALL_SYSMODS := $(SYSMODS) $(SYSMODS.$(KBUILD_TARGET)) $(SYSMODS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)) $(SYSMODS.$(KBUILD_TARGET_ARCH)) $(SYSMODS.$(KBUILD_TARGET_CPU)) $(SYSMODS.$(KBUILD_TYPE))
[2084]53_ALL_MISCBINS := $(MISCBINS) $(MISCBINS.$(KBUILD_TARGET)) $(MISCBINS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)) $(MISCBINS.$(KBUILD_TARGET_ARCH)) $(MISCBINS.$(KBUILD_TARGET_CPU)) $(MISCBINS.$(KBUILD_TYPE))
[1504]54_ALL_OTHERS := $(OTHERS) $(OTHERS.$(KBUILD_TARGET)) $(OTHERS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)) $(OTHERS.$(KBUILD_TARGET_ARCH)) $(OTHERS.$(KBUILD_TARGET_CPU)) $(OTHERS.$(KBUILD_TYPE))
55_ALL_INSTALLS := $(INSTALLS) $(INSTALLS.$(KBUILD_TARGET)) $(INSTALLS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)) $(INSTALLS.$(KBUILD_TARGET_ARCH)) $(INSTALLS.$(KBUILD_TARGET_CPU)) $(INSTALLS.$(KBUILD_TYPE))
56_ALL_FETCHES := $(FETCHES) $(FETCHES.$(KBUILD_TARGET)) $(FETCHES.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)) $(FETCHES.$(KBUILD_TARGET_ARCH)) $(FETCHES.$(KBUILD_TARGET_CPU)) $(FETCHES.$(KBUILD_TYPE))
57_ALL_PATCHES := $(PATCHES) $(PATCHES.$(KBUILD_TARGET)) $(PATCHES.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)) $(PATCHES.$(KBUILD_TARGET_ARCH)) $(PATCHES.$(KBUILD_TARGET_CPU)) $(PATCHES.$(KBUILD_TYPE))
[985]58
[72]59# all targets.
[985]60_ALL_TARGETS = \
61 $(_ALL_FETCHES) \
62 $(_ALL_PATCHES) \
63 $(_ALL_BLDPROGS) \
64 $(_ALL_LIBRARIES) \
65 $(_ALL_IMPORT_LIBS) \
66 $(_ALL_DLLS) \
67 $(_ALL_PROGRAMS) \
68 $(_ALL_SYSMODS) \
[2084]69 $(_ALL_MISCBINS) \
[985]70 $(_ALL_INSTALLS) \
71 $(_ALL_OTHERS)
[72]72
[1504]73# all $(KBUILD_TARGET) targets.
74_ALL_TARGET_TARGETS = \
[985]75 $(_ALL_FETCHES) \
76 $(_ALL_PATCHES) \
77 $(_ALL_LIBRARIES) \
78 $(_ALL_IMPORT_LIBS) \
79 $(_ALL_DLLS) \
80 $(_ALL_PROGRAMS) \
81 $(_ALL_SYSMODS) \
[2084]82 $(_ALL_MISCBINS) \
[985]83 $(_ALL_INSTALLS) \
84 $(_ALL_OTHERS)
[447]85
[1504]86# all $(KBUILD_HOST) targets.
87_ALL_HOST_TARGETS = \
[985]88 $(_ALL_BLDPROGS)
[447]89
[640]90# all targets making use of srcname.
[985]91_ALL_SRCNAME_TARGETS = \
92 $(_ALL_FETCHES) \
93 $(_ALL_PATCHES)
[640]94
[1696]95# Dependency files. (currently not on target level, only this global stuff)
96_DEPFILES := $(DEPFILES) $(DEPFILES.$(KBUILD_TARGET)) $(DEPFILES.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)) $(DEPFILES.$(KBUILD_TARGET_ARCH)) $(DEPFILES.$(KBUILD_TARGET_CPU)) $(DEPFILES.$(KBUILD_TYPE))
[75]97
[380]98# included dependency files.
99_DEPFILES_INCLUDED :=
100
101
[75]102# All kind of output files except for _OBJS and _DEPFILES.
103# Compiling or linking definition outputting other things that $@ and any
104# required dependency file must add those output files to this variable.
105_OUT_FILES :=
106
[353]107# Files which only requires cleaning up.
108_CLEAN_FILES :=
109
[72]110# all of a type
[219]111_OBJS :=
[640]112_FETCHES :=
113_DOWNLOADS:=
114_UNPACKS :=
115_PATCHES :=
[688]116_UNFETCHES:=
[222]117_BLDPROGS :=
[219]118_LIBS :=
119_DLLS :=
120_PROGRAMS :=
121_SYSMODS :=
[2084]122_MISCBINS :=
[2475]123_STAGE_FILES :=
124_STAGE_DIRS :=
[353]125_INSTALLS :=
[827]126_INSTALLS_FILES :=
[380]127_INSTALLS_DIRS :=
[2523]128_DEBUG_STAGE_FILES :=
129_DEBUG_STAGE_DIRS :=
130_DEBUG_INSTALL_FILES :=
131_DEBUG_INSTALL_DIRS :=
[353]132_OTHERS :=
[417]133_PACKING :=
[897]134_DIRS := $(PATH_TARGET)/ $(PATH_TARGET) $(BLDDIRS)
[189]135_IMPORT_LIBS :=
[72]136
[2479]137# Implicit targets added while processing other targets (usually by units).
138_ALL_INSTALLS_IMPLICIT :=
139
[220]140# misc
141pass_prev :=
142
143
[984]144
[72]145#
[984]146# Footer macros
[73]147#
148
[78]149## Figure out the tool for a target.
[753]150# @param $1 normalized target.
151# @param $2 tooltype.
[222]152# @param bld_trg build target.
[481]153# @param bld_trg_arch build target architecture.
[2433]154# @param bld_type build target type.
155if 0
[79]156_TARGET_TOOL = $(strip $(firstword \
[753]157 $($(1)_$(2)TOOL.$(bld_trg).$(bld_trg_arch)) \
158 $($(1)_$(2)TOOL.$(bld_trg)) \
159 $($(1)_$(2)TOOL) \
160 $($(1)_TOOL.$(bld_trg).$(bld_trg_arch)) \
161 $($(1)_TOOL.$(bld_trg)) \
162 $($(1)_TOOL) \
163 $($(2)TOOL.$(bld_trg).$(bld_trg_arch)) \
164 $($(2)TOOL.$(bld_trg)) \
165 $($(2)TOOL) \
[481]166 $(TOOL.$(bld_trg).$(bld_trg_arch)) \
[222]167 $(TOOL.$(bld_trg)) \
[106]168 $(TOOL) \
[2434]169))
[2433]170else
171_TARGET_TOOL = $(strip $(firstword \
172 $($(1)_$(2)TOOL.$(bld_trg).$(bld_trg_arch).$(bld_type)) \
173 $($(1)_$(2)TOOL.$(bld_trg).$(bld_trg_arch)) \
174 $($(1)_$(2)TOOL.$(bld_trg).$(bld_type)) \
175 $($(1)_$(2)TOOL.$(bld_trg_arch)) \
176 $($(1)_$(2)TOOL.$(bld_trg)) \
177 $($(1)_$(2)TOOL.$(bld_type)) \
178 $($(1)_$(2)TOOL) \
179 $($(1)_TOOL.$(bld_trg).$(bld_trg_arch).$(bld_type)) \
180 $($(1)_TOOL.$(bld_trg).$(bld_trg_arch)) \
181 $($(1)_TOOL.$(bld_trg).$(bld_type)) \
182 $($(1)_TOOL.$(bld_trg_arch)) \
183 $($(1)_TOOL.$(bld_trg)) \
184 $($(1)_TOOL.$(bld_type)) \
185 $($(1)_TOOL) \
186 $($(2)TOOL.$(bld_trg).$(bld_trg_arch).$(bld_type)) \
187 $($(2)TOOL.$(bld_trg).$(bld_trg_arch)) \
188 $($(2)TOOL.$(bld_trg).$(bld_type)) \
189 $($(2)TOOL.$(bld_trg_arch)) \
190 $($(2)TOOL.$(bld_trg)) \
191 $($(2)TOOL.$(bld_type)) \
192 $($(2)TOOL) \
193 $(TOOL.$(bld_trg).$(bld_trg_arch).$(bld_type)) \
194 $(TOOL.$(bld_trg).$(bld_trg_arch)) \
195 $(TOOL.$(bld_trg).$(bld_type)) \
196 $(TOOL.$(bld_trg_arch)) \
197 $(TOOL.$(bld_trg)) \
198 $(TOOL.$(bld_type)) \
199 $(TOOL) \
[2434]200))
[2433]201endif
[183]202
[353]203## Figure out the actual name of an installed file.
204# @param $1 The file to install.
205# @param $2 The target name.
206# @param $3 The _INST value (can be empty).
[2477]207# @param $4 The installation root directory.
208_INSTALL_FILE = $(patsubst %/,%/$(notdir $(1)),$(if $(3),$(4)/$(3),$(4)/))
[353]209
210
[2537]211##
212# Function for getting the first defined propert value.
213#
214# @param 1 The property name.
215# @param 2 The default property name, empty if none.
216# @param 3 What to return if all variables are empty. (optional)
217# @note Implicit parameters: target, bld_trg, bld_trg_arch, bld_trg_cpu, bld_type.
218# @returns Expanded property value.
219#
220define def_fn_prop_get_first_defined
221local .RETURN := $(firstdefined \
222 $(target)_$(1).$(bld_trg).$(bld_trg_arch).$(bld_type) \
223 $(target)_$(1).$(bld_trg).$(bld_trg_arch) \
224 $(target)_$(1).$(bld_trg).$(bld_type) \
225 $(target)_$(1).$(bld_trg_cpu) \
226 $(target)_$(1).$(bld_trg_arch) \
227 $(target)_$(1).$(bld_trg) \
228 $(target)_$(1).$(bld_type) \
229 $(target)_$(1) \
230)
231ifeq ($(.RETURN),)
232 ifneq ($(2),)
233 local .RETURN := $(firstdefined \
234 $(2).$(bld_trg).$(bld_trg_arch).$(bld_type) \
235 $(2).$(bld_trg).$(bld_trg_arch) \
236 $(2).$(bld_trg).$(bld_type) \
237 $(2).$(bld_trg_cpu) \
238 $(2).$(bld_trg_arch) \
239 $(2).$(bld_trg) \
240 $(2).$(bld_type) \
241 $(2) \
242 3 \
243 )
244 else
245 local .RETURN := $(firstdefined \
246 kBuildGlobalDefaults_$(1).$(bld_trg).$(bld_trg_arch).$(bld_type) \
247 kBuildGlobalDefaults_$(1).$(bld_trg).$(bld_trg_arch) \
248 kBuildGlobalDefaults_$(1).$(bld_trg).$(bld_type) \
249 kBuildGlobalDefaults_$(1).$(bld_trg_cpu) \
250 kBuildGlobalDefaults_$(1).$(bld_trg_arch) \
251 kBuildGlobalDefaults_$(1).$(bld_trg) \
252 kBuildGlobalDefaults_$(1).$(bld_type) \
253 kBuildGlobalDefaults_$(1) \
254 3 \
255 )
256 endif
257endif
258local .RETURN := $(strip $($(.RETURN)))
259endef # def_fn_prop_get_first_defined
[1413]260
[2537]261##
262# Function for getting the first property value (ignoring empty defines).
263#
264# @param 1 The property name.
265# @param 2 The default property name, empty if none.
266# @param 3 What to return if all variables are empty. (optional)
267# @note Implicit parameters: target, bld_trg, bld_trg_arch, bld_trg_cpu, bld_type.
268# @returns First word.
269#
270define def_fn_prop_get_first_word
271local .RETURN := $(firstword \
272 $($(target)_$(1).$(bld_trg).$(bld_trg_arch).$(bld_type)) \
273 $($(target)_$(1).$(bld_trg).$(bld_trg_arch)) \
274 $($(target)_$(1).$(bld_trg).$(bld_type)) \
275 $($(target)_$(1).$(bld_trg_cpu)) \
276 $($(target)_$(1).$(bld_trg_arch)) \
277 $($(target)_$(1).$(bld_trg)) \
278 $($(target)_$(1).$(bld_type)) \
279 $($(target)_$(1)) \
280)
281ifeq ($(.RETURN),)
282 ifneq ($(2),)
283 local .RETURN := $(firstword \
284 $($(2).$(bld_trg).$(bld_trg_arch).$(bld_type)) \
285 $($(2).$(bld_trg).$(bld_trg_arch)) \
286 $($(2).$(bld_trg).$(bld_type)) \
287 $($(2).$(bld_trg_cpu)) \
288 $($(2).$(bld_trg_arch)) \
289 $($(2).$(bld_trg)) \
290 $($(2).$(bld_type)) \
291 $($(2)) \
292 $(3) \
293 )
294 else
295 local .RETURN := $(firstword \
296 $(kBuildGlobalDefaults_$(1).$(bld_trg).$(bld_trg_arch).$(bld_type)) \
297 $(kBuildGlobalDefaults_$(1).$(bld_trg).$(bld_trg_arch)) \
298 $(kBuildGlobalDefaults_$(1).$(bld_trg).$(bld_type)) \
299 $(kBuildGlobalDefaults_$(1).$(bld_trg_cpu)) \
300 $(kBuildGlobalDefaults_$(1).$(bld_trg_arch)) \
301 $(kBuildGlobalDefaults_$(1).$(bld_trg)) \
302 $(kBuildGlobalDefaults_$(1).$(bld_type)) \
303 $(kBuildGlobalDefaults_$(1)) \
304 $(3) \
305 )
306 endif
307endif
308endef # def_fn_prop_get_first_word
309
310
[3128]311##
312# Function for collecting properties, priority ones last.
[2537]313#
[3128]314# @param 1 The property name.
315# @param 2 The default property name, empty if none.
316# @note Implicit parameters: target, bld_trg, bld_trg_arch, bld_trg_cpu, bld_type.
317# @returns All properties.
318#
319define def_fn_prop_get_all_priority_last
320local .RETURN := \
321 $($(target)_$(1)) \
322 $($(target)_$(1).$(bld_type)) \
323 $($(target)_$(1).$(bld_trg)) \
324 $($(target)_$(1).$(bld_trg_arch)) \
325 $($(target)_$(1).$(bld_trg_cpu)) \
326 $($(target)_$(1).$(bld_trg).$(bld_type)) \
327 $($(target)_$(1).$(bld_trg).$(bld_trg_arch)) \
328 $($(target)_$(1).$(bld_trg).$(bld_trg_arch).$(bld_type))
329endef # def_fn_prop_get_all_priority_last
330
331
332##
333# Function for collecting properties with prefixing, priority ones last.
334#
335# @param 1 The property name.
336# @param 2 Something like $(NLTAB).
337# @note Implicit parameters: target, bld_trg, bld_trg_arch, bld_trg_cpu, bld_type.
338# @returns All properties.
339#
340define def_fn_prop_get_all_prefixed_priority_last
341local .RETURN := \
342 $(if $($(target)_$(1)),$(2),)$($(target)_$(1)) \
343 $(if $($(target)_$(1).$(bld_type)),$(2),)$($(target)_$(1).$(bld_type)) \
344 $(if $($(target)_$(1).$(bld_trg)),$(2),)$($(target)_$(1).$(bld_trg)) \
345 $(if $($(target)_$(1).$(bld_trg_arch)),$(2),)$($(target)_$(1).$(bld_trg_arch)) \
346 $(if $($(target)_$(1).$(bld_trg_cpu)),$(2),)$($(target)_$(1).$(bld_trg_cpu)) \
347 $(if $($(target)_$(1).$(bld_trg).$(bld_type)),$(2),)$($(target)_$(1).$(bld_trg).$(bld_type)) \
348 $(if $($(target)_$(1).$(bld_trg).$(bld_trg_arch)),$(2),)$($(target)_$(1).$(bld_trg).$(bld_trg_arch)) \
349 $(if $($(target)_$(1).$(bld_trg).$(bld_trg_arch).$(bld_type)),$(2),)$($(target)_$(1).$(bld_trg).$(bld_trg_arch).$(bld_type))
350endef # def_fn_prop_get_all_prefixed_priority_last
351
352
353#
[2537]354# The main body.
355#
[2521]356include $(KBUILD_PATH)/footer-inherit-uses-tools.kmk
357include $(KBUILD_PATH)/footer-pass1.kmk
358include $(KBUILD_PATH)/footer-pass2-fetches.kmk
359include $(KBUILD_PATH)/footer-pass2-patches.kmk
360include $(KBUILD_PATH)/footer-pass2-compiling-targets.kmk
[2522]361include $(KBUILD_PATH)/footer-pass2-installs.kmk
[2521]362include $(KBUILD_PATH)/footer-misc.kmk
363include $(KBUILD_PATH)/footer-passes.kmk
[2007]364
[2537]365
[984]366#
[75]367# THE MAIN RULES
368#
[219]369all_recursive: $(pass_prev)
[75]370
[130]371rebuild: clean
[219]372 + $(MAKE) -f $(firstword $(MAKEFILE_LIST)) all_recursive
[78]373
[412]374# @todo make this a non-default pass!
[2106]375uninstall::
[1599]376 $(RM) -f -- $(_INSTALLS_FILES)
[412]377
[2106]378install:: pass_installs
[78]379
[1919]380# misc shortcuts (use secondary expansion here to save strcache[file] space).
[2084]381targets: bldprogs libraries dlls programs sysmods miscbins others installs
[1919]382objects: $$(_OBJS)
383bldprogs: $$(_BLDPROGS)
384libraries: $$(_LIBS) $$(_IMPORT_LIBS) $$(_OTHER_LIBRARIES)
385dlls: $$(_DLLS)
386programs: $$(_PROGRAMS)
387sysmods: $$(_SYSMODS)
[2084]388miscbins: $$(_MISCBINS)
[1919]389others: $$(_OTHERS)
[2475]390stagings: $$(_INSTALLS) $$(_STAGE_DIRS) $$(_STAGE_FILES)
391installs: $$(_INSTALLS_DIRS) $$(_INSTALLS_FILES)
[75]392
[2523]393install-debug: $$(_DEBUG_INSTALL_DIRS) $$(_DEBUG_INSTALL_FILES)
[75]394
[897]395
[2523]396
[353]397#
398# kBuild debugging stuff.
399#
[1667]400## @todo this doesn't work. Move to a debug unit and expand it.
[353]401show_targets:
[984]402 @$(foreach target, $(_ALL_TARGETS),\
[353]403 @$(ECHO) "target: $(target)" $(NLTAB)\
[2239]404 @$(ECHO) " $(target)_0_OUTDIR=$($(target)_0_OUTDIR)" $(NLTAB)\
[2238]405 @$(ECHO) " $(target)_1_TARGET=$($(target)_1_TARGET)" $(NLTAB)\
[353]406 @$(ECHO) " INSTARGET_$(target)=$(INSTARGET_$(target))" $(NLTAB)\
[2236]407$(foreach prop,$(PROPS_SINGLE) $(PROPS_ACCUMULATE_L) $(PROPS_ACCUMULATE_R) 2_OBJS CLEAN, \
[1504]408 $(eval _tmp:=$(firstword $($(target)_BLD_TRG) $(KBUILD_TARGET))) \
[353]409 $(if $($(target)_$(prop).$(_tmp)),\
410 @$(ECHO) " $(target)_$(prop).$(_tmp)=$($(target)_$(prop).$(_tmp))" $(NLTAB)) \
411 $(if $($(target)_$(prop)), $(NLTAB)@$(ECHO) " $(target)_$(prop)=$($(target)_$(prop))" $(NLTAB)) \
412)\
413$(foreach prop,$(PROPS_DEFERRED), \
[1504]414 $(eval _tmp:=$(firstword $($(target)_BLD_TRG) $(KBUILD_TARGET))) \
[353]415 $(if $(value $(target)_$(prop).$(_tmp)),\
416 @$(ECHO) ' $(target)_$(prop).$(_tmp)=$(value $(TARGET)_$(prop).$(_tmp))' $(NLTAB)) \
417 $(if $(value $(target)_$(prop)), $(NLTAB)@$(ECHO) ' $(target)_$(prop)=$(value $(target)_$(prop))' $(NLTAB)) \
418))
419
420
421
422#
423# Include dependency files.
424#
[1798]425ifdef _DEPFILES
426 # TODO: first works the second doesn't, provided _KB_INCLUDE_DEPS is undefined:
427 # if "$(_KB_INCLUDE_DEPS)" == "1"
428 # if $(_KB_INCLUDE_DEPS) == "1"
429
430 ifdef KB_HAVE_INCLUDEDEP_QUEUE
431 includedep-queue $(_DEPFILES)
432 else
433 $(foreach dep, $(_DEPFILES), $(eval includedep $(dep)))
434 endif
[893]435endif
[353]436
437
[988]438ifdef KBUILD_PROFILE_SELF
[2008]439 $(evalcall def_profile_self, end of footer.kmk)
440 _KBUILD_TS_FOOTER_END := $(_KBUILD_TS_PREV)
441
442 ifneq ($(KBUILD_PROFILE_SELF),0)
443 $(info prof: ALL=$(words $(_ALL_TARGETS)) BLDPROGS=$(words $(_ALL_BLDPROGS)) LIBRARIES=$(words $(_ALL_LIBRARIES)) IMPORT_LIBS=$(words $(IMPORT_LIBS)) DLLS=$(words $(DLLS)) PROGRAMS=$(words $(_ALL_PROGRAMS)) )
[2084]444 $(info prof: SYSMODS=$(words $(_ALL_SYSMODS)) MISCBINS=$(words $(_ALL_MISCBINS)) OTHERS=$(words $(_ALL_OTHERS)) INSTALLS=$(words $(_ALL_INSTALLS)) FETCHES=$(words $(_ALL_FETCHES)) PACKING=$(words $(_PACKING)) TESTING=$(words $(TESTING)) )
[2008]445 $(info prof: DIRS=$(words $(_DIR_ALL)) TOOLS=$(words $(_TOOLS)) SDKS=$(words $(_SDKS)) USES=$(words $(_USES)) OUT_FILES=$(words $(_OUT_FILES)) OBJS=$(words $(_OBJS)) CLEAN_FILES=$(words $(CLEAN_FILES) $(OTHER_CLEAN)) )
446 $(info prof: DEPFILES_INCLUDED=$(words $(_DEPFILES_INCLUDED)) DEPFILES=$(words $(_DEPFILES)) MAKEFILES=$(words $(MAKEFILE_LIST)) )
447 endif
[988]448endif
449
[1781]450
[72]451# end-of-file-content
[106]452__footer_kmk__ := target
[2475]453endif # !defined(__footer_kmk__)
[438]454
Note: See TracBrowser for help on using the repository browser.