| [72] | 1 | # $Id: footer.kmk 3305 2020-01-14 15:11:48Z 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 | 
 | 
|---|
 | 34 | ifndef __footer_kmk__
 | 
|---|
 | 35 | # start-of-file-content
 | 
|---|
| [988] | 36 | ifdef KBUILD_PROFILE_SELF
 | 
|---|
| [2008] | 37 |  $(evalcall def_profile_self, start of footer.kmk)
 | 
|---|
 | 38 |  _KBUILD_TS_FOOTER_START := $(_KBUILD_TS_PREV)
 | 
|---|
| [988] | 39 | endif
 | 
|---|
| [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 | 
 | 
|---|
| [75] | 99 | # All kind of output files except for _OBJS and _DEPFILES.
 | 
|---|
 | 100 | # Compiling or linking definition outputting other things that $@ and any
 | 
|---|
 | 101 | # required dependency file must add those output files to this variable.
 | 
|---|
 | 102 | _OUT_FILES :=
 | 
|---|
 | 103 | 
 | 
|---|
| [353] | 104 | # Files which only requires cleaning up.
 | 
|---|
 | 105 | _CLEAN_FILES :=
 | 
|---|
 | 106 | 
 | 
|---|
| [72] | 107 | # all of a type
 | 
|---|
| [219] | 108 | _OBJS     :=
 | 
|---|
| [640] | 109 | _FETCHES  :=
 | 
|---|
 | 110 | _DOWNLOADS:=
 | 
|---|
 | 111 | _UNPACKS  :=
 | 
|---|
 | 112 | _PATCHES  :=
 | 
|---|
| [688] | 113 | _UNFETCHES:=
 | 
|---|
| [222] | 114 | _BLDPROGS :=
 | 
|---|
| [219] | 115 | _LIBS     :=
 | 
|---|
 | 116 | _DLLS     :=
 | 
|---|
 | 117 | _PROGRAMS :=
 | 
|---|
 | 118 | _SYSMODS  :=
 | 
|---|
| [2084] | 119 | _MISCBINS :=
 | 
|---|
| [2475] | 120 | _STAGE_FILES :=
 | 
|---|
 | 121 | _STAGE_DIRS :=
 | 
|---|
| [353] | 122 | _INSTALLS :=
 | 
|---|
| [827] | 123 | _INSTALLS_FILES :=
 | 
|---|
| [380] | 124 | _INSTALLS_DIRS :=
 | 
|---|
| [2523] | 125 | _DEBUG_STAGE_FILES :=
 | 
|---|
 | 126 | _DEBUG_STAGE_DIRS :=
 | 
|---|
 | 127 | _DEBUG_INSTALL_FILES :=
 | 
|---|
 | 128 | _DEBUG_INSTALL_DIRS :=
 | 
|---|
| [353] | 129 | _OTHERS   :=
 | 
|---|
| [417] | 130 | _PACKING  :=
 | 
|---|
| [897] | 131 | _DIRS     := $(PATH_TARGET)/ $(PATH_TARGET) $(BLDDIRS)
 | 
|---|
| [189] | 132 | _IMPORT_LIBS :=
 | 
|---|
| [72] | 133 | 
 | 
|---|
| [2479] | 134 | # Implicit targets added while processing other targets (usually by units).
 | 
|---|
 | 135 | _ALL_INSTALLS_IMPLICIT :=
 | 
|---|
 | 136 | 
 | 
|---|
| [220] | 137 | # misc
 | 
|---|
 | 138 | pass_prev :=
 | 
|---|
 | 139 | 
 | 
|---|
 | 140 | 
 | 
|---|
| [984] | 141 | 
 | 
|---|
| [72] | 142 | #
 | 
|---|
| [984] | 143 | # Footer macros
 | 
|---|
| [73] | 144 | #
 | 
|---|
 | 145 | 
 | 
|---|
| [78] | 146 | ## Figure out the tool for a target.
 | 
|---|
| [753] | 147 | # @param    $1           normalized target.
 | 
|---|
 | 148 | # @param    $2           tooltype.
 | 
|---|
| [222] | 149 | # @param    bld_trg      build target.
 | 
|---|
| [481] | 150 | # @param    bld_trg_arch build target architecture.
 | 
|---|
| [2433] | 151 | # @param    bld_type     build target type.
 | 
|---|
 | 152 | if 0
 | 
|---|
| [79] | 153 | _TARGET_TOOL = $(strip $(firstword \
 | 
|---|
| [753] | 154 |         $($(1)_$(2)TOOL.$(bld_trg).$(bld_trg_arch)) \
 | 
|---|
 | 155 |         $($(1)_$(2)TOOL.$(bld_trg)) \
 | 
|---|
 | 156 |         $($(1)_$(2)TOOL) \
 | 
|---|
 | 157 |         $($(1)_TOOL.$(bld_trg).$(bld_trg_arch)) \
 | 
|---|
 | 158 |         $($(1)_TOOL.$(bld_trg)) \
 | 
|---|
 | 159 |         $($(1)_TOOL) \
 | 
|---|
 | 160 |         $($(2)TOOL.$(bld_trg).$(bld_trg_arch)) \
 | 
|---|
 | 161 |         $($(2)TOOL.$(bld_trg)) \
 | 
|---|
 | 162 |         $($(2)TOOL) \
 | 
|---|
| [481] | 163 |         $(TOOL.$(bld_trg).$(bld_trg_arch)) \
 | 
|---|
| [222] | 164 |         $(TOOL.$(bld_trg)) \
 | 
|---|
| [106] | 165 |         $(TOOL) \
 | 
|---|
| [2434] | 166 | ))
 | 
|---|
| [2433] | 167 | else
 | 
|---|
 | 168 | _TARGET_TOOL = $(strip $(firstword \
 | 
|---|
 | 169 |         $($(1)_$(2)TOOL.$(bld_trg).$(bld_trg_arch).$(bld_type)) \
 | 
|---|
 | 170 |         $($(1)_$(2)TOOL.$(bld_trg).$(bld_trg_arch)) \
 | 
|---|
 | 171 |         $($(1)_$(2)TOOL.$(bld_trg).$(bld_type)) \
 | 
|---|
 | 172 |         $($(1)_$(2)TOOL.$(bld_trg_arch)) \
 | 
|---|
 | 173 |         $($(1)_$(2)TOOL.$(bld_trg)) \
 | 
|---|
 | 174 |         $($(1)_$(2)TOOL.$(bld_type)) \
 | 
|---|
 | 175 |         $($(1)_$(2)TOOL) \
 | 
|---|
 | 176 |         $($(1)_TOOL.$(bld_trg).$(bld_trg_arch).$(bld_type)) \
 | 
|---|
 | 177 |         $($(1)_TOOL.$(bld_trg).$(bld_trg_arch)) \
 | 
|---|
 | 178 |         $($(1)_TOOL.$(bld_trg).$(bld_type)) \
 | 
|---|
 | 179 |         $($(1)_TOOL.$(bld_trg_arch)) \
 | 
|---|
 | 180 |         $($(1)_TOOL.$(bld_trg)) \
 | 
|---|
 | 181 |         $($(1)_TOOL.$(bld_type)) \
 | 
|---|
 | 182 |         $($(1)_TOOL) \
 | 
|---|
 | 183 |         $($(2)TOOL.$(bld_trg).$(bld_trg_arch).$(bld_type)) \
 | 
|---|
 | 184 |         $($(2)TOOL.$(bld_trg).$(bld_trg_arch)) \
 | 
|---|
 | 185 |         $($(2)TOOL.$(bld_trg).$(bld_type)) \
 | 
|---|
 | 186 |         $($(2)TOOL.$(bld_trg_arch)) \
 | 
|---|
 | 187 |         $($(2)TOOL.$(bld_trg)) \
 | 
|---|
 | 188 |         $($(2)TOOL.$(bld_type)) \
 | 
|---|
 | 189 |         $($(2)TOOL) \
 | 
|---|
 | 190 |         $(TOOL.$(bld_trg).$(bld_trg_arch).$(bld_type)) \
 | 
|---|
 | 191 |         $(TOOL.$(bld_trg).$(bld_trg_arch)) \
 | 
|---|
 | 192 |         $(TOOL.$(bld_trg).$(bld_type)) \
 | 
|---|
 | 193 |         $(TOOL.$(bld_trg_arch)) \
 | 
|---|
 | 194 |         $(TOOL.$(bld_trg)) \
 | 
|---|
 | 195 |         $(TOOL.$(bld_type)) \
 | 
|---|
 | 196 |         $(TOOL) \
 | 
|---|
| [2434] | 197 | ))
 | 
|---|
| [2433] | 198 | endif
 | 
|---|
| [183] | 199 | 
 | 
|---|
| [353] | 200 | ## Figure out the actual name of an installed file.
 | 
|---|
 | 201 | # @param        $1              The file to install.
 | 
|---|
 | 202 | # @param        $2              The target name.
 | 
|---|
 | 203 | # @param        $3              The _INST value (can be empty).
 | 
|---|
| [2477] | 204 | # @param        $4              The installation root directory.
 | 
|---|
 | 205 | _INSTALL_FILE = $(patsubst %/,%/$(notdir $(1)),$(if $(3),$(4)/$(3),$(4)/))
 | 
|---|
| [353] | 206 | 
 | 
|---|
 | 207 | 
 | 
|---|
| [2537] | 208 | ##
 | 
|---|
 | 209 | # Function for getting the first defined propert value.
 | 
|---|
 | 210 | #
 | 
|---|
 | 211 | # @param   1            The property name.
 | 
|---|
 | 212 | # @param   2            The default property name, empty if none.
 | 
|---|
 | 213 | # @param   3            What to return if all variables are empty. (optional)
 | 
|---|
 | 214 | # @note    Implicit parameters: target, bld_trg, bld_trg_arch, bld_trg_cpu, bld_type.
 | 
|---|
 | 215 | # @returns Expanded property value.
 | 
|---|
 | 216 | #
 | 
|---|
 | 217 | define def_fn_prop_get_first_defined
 | 
|---|
 | 218 | local .RETURN := $(firstdefined \
 | 
|---|
 | 219 |     $(target)_$(1).$(bld_trg).$(bld_trg_arch).$(bld_type) \
 | 
|---|
 | 220 |     $(target)_$(1).$(bld_trg).$(bld_trg_arch) \
 | 
|---|
 | 221 |     $(target)_$(1).$(bld_trg).$(bld_type) \
 | 
|---|
 | 222 |     $(target)_$(1).$(bld_trg_cpu) \
 | 
|---|
 | 223 |     $(target)_$(1).$(bld_trg_arch) \
 | 
|---|
 | 224 |     $(target)_$(1).$(bld_trg) \
 | 
|---|
 | 225 |     $(target)_$(1).$(bld_type) \
 | 
|---|
 | 226 |     $(target)_$(1) \
 | 
|---|
 | 227 | )
 | 
|---|
 | 228 | ifeq ($(.RETURN),)
 | 
|---|
 | 229 |  ifneq ($(2),)
 | 
|---|
 | 230 |   local .RETURN := $(firstdefined \
 | 
|---|
 | 231 |     $(2).$(bld_trg).$(bld_trg_arch).$(bld_type) \
 | 
|---|
 | 232 |     $(2).$(bld_trg).$(bld_trg_arch) \
 | 
|---|
 | 233 |     $(2).$(bld_trg).$(bld_type) \
 | 
|---|
 | 234 |     $(2).$(bld_trg_cpu) \
 | 
|---|
 | 235 |     $(2).$(bld_trg_arch) \
 | 
|---|
 | 236 |     $(2).$(bld_trg) \
 | 
|---|
 | 237 |     $(2).$(bld_type) \
 | 
|---|
 | 238 |     $(2) \
 | 
|---|
 | 239 |     3 \
 | 
|---|
 | 240 |   )
 | 
|---|
 | 241 |  else
 | 
|---|
 | 242 |   local .RETURN := $(firstdefined \
 | 
|---|
 | 243 |     kBuildGlobalDefaults_$(1).$(bld_trg).$(bld_trg_arch).$(bld_type) \
 | 
|---|
 | 244 |     kBuildGlobalDefaults_$(1).$(bld_trg).$(bld_trg_arch) \
 | 
|---|
 | 245 |     kBuildGlobalDefaults_$(1).$(bld_trg).$(bld_type) \
 | 
|---|
 | 246 |     kBuildGlobalDefaults_$(1).$(bld_trg_cpu) \
 | 
|---|
 | 247 |     kBuildGlobalDefaults_$(1).$(bld_trg_arch) \
 | 
|---|
 | 248 |     kBuildGlobalDefaults_$(1).$(bld_trg) \
 | 
|---|
 | 249 |     kBuildGlobalDefaults_$(1).$(bld_type) \
 | 
|---|
 | 250 |     kBuildGlobalDefaults_$(1) \
 | 
|---|
 | 251 |     3 \
 | 
|---|
 | 252 |   )
 | 
|---|
 | 253 |  endif
 | 
|---|
 | 254 | endif
 | 
|---|
 | 255 | local .RETURN := $(strip $($(.RETURN)))
 | 
|---|
 | 256 | endef # def_fn_prop_get_first_defined
 | 
|---|
| [1413] | 257 | 
 | 
|---|
| [2537] | 258 | ##
 | 
|---|
 | 259 | # Function for getting the first property value (ignoring empty defines).
 | 
|---|
 | 260 | #
 | 
|---|
 | 261 | # @param   1            The property name.
 | 
|---|
 | 262 | # @param   2            The default property name, empty if none.
 | 
|---|
 | 263 | # @param   3            What to return if all variables are empty. (optional)
 | 
|---|
 | 264 | # @note    Implicit parameters: target, bld_trg, bld_trg_arch, bld_trg_cpu, bld_type.
 | 
|---|
 | 265 | # @returns First word.
 | 
|---|
 | 266 | #
 | 
|---|
 | 267 | define def_fn_prop_get_first_word
 | 
|---|
 | 268 | local .RETURN := $(firstword \
 | 
|---|
 | 269 |     $($(target)_$(1).$(bld_trg).$(bld_trg_arch).$(bld_type)) \
 | 
|---|
 | 270 |     $($(target)_$(1).$(bld_trg).$(bld_trg_arch)) \
 | 
|---|
 | 271 |     $($(target)_$(1).$(bld_trg).$(bld_type)) \
 | 
|---|
 | 272 |     $($(target)_$(1).$(bld_trg_cpu)) \
 | 
|---|
 | 273 |     $($(target)_$(1).$(bld_trg_arch)) \
 | 
|---|
 | 274 |     $($(target)_$(1).$(bld_trg)) \
 | 
|---|
 | 275 |     $($(target)_$(1).$(bld_type)) \
 | 
|---|
 | 276 |     $($(target)_$(1)) \
 | 
|---|
 | 277 | )
 | 
|---|
 | 278 | ifeq ($(.RETURN),)
 | 
|---|
 | 279 |  ifneq ($(2),)
 | 
|---|
 | 280 |   local .RETURN := $(firstword \
 | 
|---|
 | 281 |     $($(2).$(bld_trg).$(bld_trg_arch).$(bld_type)) \
 | 
|---|
 | 282 |     $($(2).$(bld_trg).$(bld_trg_arch)) \
 | 
|---|
 | 283 |     $($(2).$(bld_trg).$(bld_type)) \
 | 
|---|
 | 284 |     $($(2).$(bld_trg_cpu)) \
 | 
|---|
 | 285 |     $($(2).$(bld_trg_arch)) \
 | 
|---|
 | 286 |     $($(2).$(bld_trg)) \
 | 
|---|
 | 287 |     $($(2).$(bld_type)) \
 | 
|---|
 | 288 |     $($(2)) \
 | 
|---|
 | 289 |     $(3) \
 | 
|---|
 | 290 |   )
 | 
|---|
 | 291 |  else
 | 
|---|
 | 292 |   local .RETURN := $(firstword \
 | 
|---|
 | 293 |     $(kBuildGlobalDefaults_$(1).$(bld_trg).$(bld_trg_arch).$(bld_type)) \
 | 
|---|
 | 294 |     $(kBuildGlobalDefaults_$(1).$(bld_trg).$(bld_trg_arch)) \
 | 
|---|
 | 295 |     $(kBuildGlobalDefaults_$(1).$(bld_trg).$(bld_type)) \
 | 
|---|
 | 296 |     $(kBuildGlobalDefaults_$(1).$(bld_trg_cpu)) \
 | 
|---|
 | 297 |     $(kBuildGlobalDefaults_$(1).$(bld_trg_arch)) \
 | 
|---|
 | 298 |     $(kBuildGlobalDefaults_$(1).$(bld_trg)) \
 | 
|---|
 | 299 |     $(kBuildGlobalDefaults_$(1).$(bld_type)) \
 | 
|---|
 | 300 |     $(kBuildGlobalDefaults_$(1)) \
 | 
|---|
 | 301 |     $(3) \
 | 
|---|
 | 302 |   )
 | 
|---|
 | 303 |  endif
 | 
|---|
 | 304 | endif
 | 
|---|
 | 305 | endef # def_fn_prop_get_first_word
 | 
|---|
 | 306 | 
 | 
|---|
 | 307 | 
 | 
|---|
| [3128] | 308 | ##
 | 
|---|
 | 309 | # Function for collecting properties, priority ones last.
 | 
|---|
| [2537] | 310 | #
 | 
|---|
| [3128] | 311 | # @param   1            The property name.
 | 
|---|
 | 312 | # @param   2            The default property name, empty if none.
 | 
|---|
 | 313 | # @note    Implicit parameters: target, bld_trg, bld_trg_arch, bld_trg_cpu, bld_type.
 | 
|---|
 | 314 | # @returns All properties.
 | 
|---|
 | 315 | #
 | 
|---|
 | 316 | define def_fn_prop_get_all_priority_last
 | 
|---|
 | 317 | local .RETURN := \
 | 
|---|
 | 318 |     $($(target)_$(1)) \
 | 
|---|
 | 319 |     $($(target)_$(1).$(bld_type)) \
 | 
|---|
 | 320 |     $($(target)_$(1).$(bld_trg)) \
 | 
|---|
 | 321 |     $($(target)_$(1).$(bld_trg_arch)) \
 | 
|---|
 | 322 |     $($(target)_$(1).$(bld_trg_cpu)) \
 | 
|---|
 | 323 |     $($(target)_$(1).$(bld_trg).$(bld_type)) \
 | 
|---|
 | 324 |     $($(target)_$(1).$(bld_trg).$(bld_trg_arch)) \
 | 
|---|
 | 325 |     $($(target)_$(1).$(bld_trg).$(bld_trg_arch).$(bld_type))
 | 
|---|
 | 326 | endef # def_fn_prop_get_all_priority_last
 | 
|---|
 | 327 | 
 | 
|---|
 | 328 | 
 | 
|---|
 | 329 | ##
 | 
|---|
 | 330 | # Function for collecting properties with prefixing, priority ones last.
 | 
|---|
 | 331 | #
 | 
|---|
 | 332 | # @param   1            The property name.
 | 
|---|
 | 333 | # @param   2            Something like $(NLTAB).
 | 
|---|
 | 334 | # @note    Implicit parameters: target, bld_trg, bld_trg_arch, bld_trg_cpu, bld_type.
 | 
|---|
 | 335 | # @returns All properties.
 | 
|---|
 | 336 | #
 | 
|---|
 | 337 | define def_fn_prop_get_all_prefixed_priority_last
 | 
|---|
 | 338 | local .RETURN := \
 | 
|---|
 | 339 |     $(if $($(target)_$(1)),$(2),)$($(target)_$(1)) \
 | 
|---|
 | 340 |     $(if $($(target)_$(1).$(bld_type)),$(2),)$($(target)_$(1).$(bld_type)) \
 | 
|---|
 | 341 |     $(if $($(target)_$(1).$(bld_trg)),$(2),)$($(target)_$(1).$(bld_trg)) \
 | 
|---|
 | 342 |     $(if $($(target)_$(1).$(bld_trg_arch)),$(2),)$($(target)_$(1).$(bld_trg_arch)) \
 | 
|---|
 | 343 |     $(if $($(target)_$(1).$(bld_trg_cpu)),$(2),)$($(target)_$(1).$(bld_trg_cpu)) \
 | 
|---|
 | 344 |     $(if $($(target)_$(1).$(bld_trg).$(bld_type)),$(2),)$($(target)_$(1).$(bld_trg).$(bld_type)) \
 | 
|---|
 | 345 |     $(if $($(target)_$(1).$(bld_trg).$(bld_trg_arch)),$(2),)$($(target)_$(1).$(bld_trg).$(bld_trg_arch)) \
 | 
|---|
 | 346 |     $(if $($(target)_$(1).$(bld_trg).$(bld_trg_arch).$(bld_type)),$(2),)$($(target)_$(1).$(bld_trg).$(bld_trg_arch).$(bld_type))
 | 
|---|
 | 347 | endef # def_fn_prop_get_all_prefixed_priority_last
 | 
|---|
 | 348 | 
 | 
|---|
 | 349 | 
 | 
|---|
 | 350 | #
 | 
|---|
| [2537] | 351 | # The main body.
 | 
|---|
 | 352 | #
 | 
|---|
| [2521] | 353 | include $(KBUILD_PATH)/footer-inherit-uses-tools.kmk
 | 
|---|
 | 354 | include $(KBUILD_PATH)/footer-pass1.kmk
 | 
|---|
 | 355 | include $(KBUILD_PATH)/footer-pass2-fetches.kmk
 | 
|---|
 | 356 | include $(KBUILD_PATH)/footer-pass2-patches.kmk
 | 
|---|
 | 357 | include $(KBUILD_PATH)/footer-pass2-compiling-targets.kmk
 | 
|---|
| [2522] | 358 | include $(KBUILD_PATH)/footer-pass2-installs.kmk
 | 
|---|
| [2521] | 359 | include $(KBUILD_PATH)/footer-misc.kmk
 | 
|---|
 | 360 | include $(KBUILD_PATH)/footer-passes.kmk
 | 
|---|
| [2007] | 361 | 
 | 
|---|
| [2537] | 362 | 
 | 
|---|
| [984] | 363 | #
 | 
|---|
| [75] | 364 | # THE MAIN RULES
 | 
|---|
 | 365 | #
 | 
|---|
| [219] | 366 | all_recursive: $(pass_prev)
 | 
|---|
| [75] | 367 | 
 | 
|---|
| [130] | 368 | rebuild: clean
 | 
|---|
| [219] | 369 |         + $(MAKE) -f $(firstword $(MAKEFILE_LIST)) all_recursive
 | 
|---|
| [78] | 370 | 
 | 
|---|
| [412] | 371 | # @todo make this a non-default pass!
 | 
|---|
| [2106] | 372 | uninstall::
 | 
|---|
| [1599] | 373 |         $(RM) -f -- $(_INSTALLS_FILES)
 | 
|---|
| [412] | 374 | 
 | 
|---|
| [2106] | 375 | install:: pass_installs
 | 
|---|
| [78] | 376 | 
 | 
|---|
| [1919] | 377 | # misc shortcuts (use secondary expansion here to save strcache[file] space).
 | 
|---|
| [2084] | 378 | targets:   bldprogs libraries dlls programs sysmods miscbins others installs
 | 
|---|
| [1919] | 379 | objects:   $$(_OBJS)
 | 
|---|
 | 380 | bldprogs:  $$(_BLDPROGS)
 | 
|---|
 | 381 | libraries: $$(_LIBS) $$(_IMPORT_LIBS) $$(_OTHER_LIBRARIES)
 | 
|---|
 | 382 | dlls:      $$(_DLLS)
 | 
|---|
 | 383 | programs:  $$(_PROGRAMS)
 | 
|---|
 | 384 | sysmods:   $$(_SYSMODS)
 | 
|---|
| [2084] | 385 | miscbins:  $$(_MISCBINS)
 | 
|---|
| [1919] | 386 | others:    $$(_OTHERS)
 | 
|---|
| [2475] | 387 | stagings:  $$(_INSTALLS) $$(_STAGE_DIRS) $$(_STAGE_FILES)
 | 
|---|
 | 388 | installs:  $$(_INSTALLS_DIRS) $$(_INSTALLS_FILES)
 | 
|---|
| [75] | 389 | 
 | 
|---|
| [2523] | 390 | install-debug:  $$(_DEBUG_INSTALL_DIRS) $$(_DEBUG_INSTALL_FILES)
 | 
|---|
| [75] | 391 | 
 | 
|---|
| [897] | 392 | 
 | 
|---|
| [2523] | 393 | 
 | 
|---|
| [353] | 394 | #
 | 
|---|
 | 395 | # kBuild debugging stuff.
 | 
|---|
 | 396 | #
 | 
|---|
| [1667] | 397 | ## @todo this doesn't work. Move to a debug unit and expand it.
 | 
|---|
| [353] | 398 | show_targets:
 | 
|---|
| [984] | 399 |         @$(foreach target, $(_ALL_TARGETS),\
 | 
|---|
| [353] | 400 |         @$(ECHO) "target: $(target)" $(NLTAB)\
 | 
|---|
| [2239] | 401 |         @$(ECHO) "  $(target)_0_OUTDIR=$($(target)_0_OUTDIR)" $(NLTAB)\
 | 
|---|
| [2238] | 402 |         @$(ECHO) "  $(target)_1_TARGET=$($(target)_1_TARGET)" $(NLTAB)\
 | 
|---|
| [353] | 403 |         @$(ECHO) "  INSTARGET_$(target)=$(INSTARGET_$(target))" $(NLTAB)\
 | 
|---|
| [2236] | 404 | $(foreach prop,$(PROPS_SINGLE) $(PROPS_ACCUMULATE_L) $(PROPS_ACCUMULATE_R) 2_OBJS CLEAN, \
 | 
|---|
| [1504] | 405 |         $(eval _tmp:=$(firstword $($(target)_BLD_TRG) $(KBUILD_TARGET))) \
 | 
|---|
| [353] | 406 |         $(if $($(target)_$(prop).$(_tmp)),\
 | 
|---|
 | 407 |                 @$(ECHO) "  $(target)_$(prop).$(_tmp)=$($(target)_$(prop).$(_tmp))" $(NLTAB)) \
 | 
|---|
 | 408 |         $(if $($(target)_$(prop)), $(NLTAB)@$(ECHO) "  $(target)_$(prop)=$($(target)_$(prop))" $(NLTAB)) \
 | 
|---|
 | 409 | )\
 | 
|---|
 | 410 | $(foreach prop,$(PROPS_DEFERRED), \
 | 
|---|
| [1504] | 411 |         $(eval _tmp:=$(firstword $($(target)_BLD_TRG) $(KBUILD_TARGET))) \
 | 
|---|
| [353] | 412 |         $(if $(value $(target)_$(prop).$(_tmp)),\
 | 
|---|
 | 413 |                 @$(ECHO) '  $(target)_$(prop).$(_tmp)=$(value $(TARGET)_$(prop).$(_tmp))' $(NLTAB)) \
 | 
|---|
 | 414 |         $(if $(value $(target)_$(prop)), $(NLTAB)@$(ECHO) '  $(target)_$(prop)=$(value $(target)_$(prop))' $(NLTAB)) \
 | 
|---|
 | 415 | ))
 | 
|---|
 | 416 | 
 | 
|---|
 | 417 | 
 | 
|---|
 | 418 | 
 | 
|---|
 | 419 | #
 | 
|---|
 | 420 | # Include dependency files.
 | 
|---|
 | 421 | #
 | 
|---|
| [1798] | 422 | ifdef _DEPFILES
 | 
|---|
 | 423 |  # TODO: first works the second doesn't, provided _KB_INCLUDE_DEPS is undefined:
 | 
|---|
 | 424 |  #   if "$(_KB_INCLUDE_DEPS)" == "1"
 | 
|---|
 | 425 |  #   if $(_KB_INCLUDE_DEPS) == "1"
 | 
|---|
 | 426 | 
 | 
|---|
 | 427 |  ifdef KB_HAVE_INCLUDEDEP_QUEUE
 | 
|---|
 | 428 |   includedep-queue $(_DEPFILES)
 | 
|---|
 | 429 |  else
 | 
|---|
 | 430 |   $(foreach dep, $(_DEPFILES), $(eval includedep $(dep)))
 | 
|---|
 | 431 |  endif
 | 
|---|
| [893] | 432 | endif
 | 
|---|
| [353] | 433 | 
 | 
|---|
 | 434 | 
 | 
|---|
| [988] | 435 | ifdef KBUILD_PROFILE_SELF
 | 
|---|
| [2008] | 436 |  $(evalcall def_profile_self, end of footer.kmk)
 | 
|---|
 | 437 |  _KBUILD_TS_FOOTER_END := $(_KBUILD_TS_PREV)
 | 
|---|
 | 438 | 
 | 
|---|
 | 439 |  ifneq ($(KBUILD_PROFILE_SELF),0)
 | 
|---|
 | 440 |   $(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] | 441 |   $(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] | 442 |   $(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)) )
 | 
|---|
 | 443 |   $(info prof: DEPFILES_INCLUDED=$(words $(_DEPFILES_INCLUDED)) DEPFILES=$(words $(_DEPFILES)) MAKEFILES=$(words $(MAKEFILE_LIST)) )
 | 
|---|
 | 444 |  endif
 | 
|---|
| [988] | 445 | endif
 | 
|---|
 | 446 | 
 | 
|---|
| [1781] | 447 | 
 | 
|---|
| [72] | 448 | # end-of-file-content
 | 
|---|
| [106] | 449 | __footer_kmk__ := target
 | 
|---|
| [2475] | 450 | endif # !defined(__footer_kmk__)
 | 
|---|
| [438] | 451 | 
 | 
|---|