Changeset 985 for trunk/kBuild/footer.kmk
- Timestamp:
- May 29, 2007, 3:16:10 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kBuild/footer.kmk
r984 r985 33 33 # 34 34 35 # All targets of each types. 36 _ALL_BLDPROGS := $(BLDPROGS) $(BLDPROGS.$(BUILD_PLATFORM)) $(BLDPROGS.$(BUILD_PLATFORM).$(BUILD_PLATFORM_ARCH)) $(BLDPROGS.$(BUILD_PLATFORM_ARCH)) $(BLDPROGS.$(BUILD_PLATFORM_CPU)) $(BLDPROGS.$(BUILD_TYPE)) 37 _ALL_LIBRARIES := $(LIBRARIES) $(LIBRARIES.$(BUILD_TARGET)) $(LIBRARIES.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) $(LIBRARIES.$(BUILD_TARGET_ARCH)) $(LIBRARIES.$(BUILD_TARGET_CPU)) $(LIBRARIES.$(BUILD_TYPE)) 38 _ALL_IMPORT_LIBS := $(IMPORT_LIBS) $(IMPORT_LIBS.$(BUILD_TARGET)) $(IMPORT_LIBS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) $(IMPORT_LIBS.$(BUILD_TARGET_ARCH)) $(IMPORT_LIBS.$(BUILD_TARGET_CPU)) $(IMPORT_LIBS.$(BUILD_TYPE)) 39 _ALL_DLLS := $(DLLS) $(DLLS.$(BUILD_TARGET)) $(DLLS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) $(DLLS.$(BUILD_TARGET_ARCH)) $(DLLS.$(BUILD_TARGET_CPU)) $(DLLS.$(BUILD_TYPE)) 40 _ALL_PROGRAMS := $(PROGRAMS) $(PROGRAMS.$(BUILD_TARGET)) $(PROGRAMS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) $(PROGRAMS.$(BUILD_TARGET_ARCH)) $(PROGRAMS.$(BUILD_TARGET_CPU)) $(PROGRAMS.$(BUILD_TYPE)) 41 _ALL_SYSMODS := $(SYSMODS) $(SYSMODS.$(BUILD_TARGET)) $(SYSMODS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) $(SYSMODS.$(BUILD_TARGET_ARCH)) $(SYSMODS.$(BUILD_TARGET_CPU)) $(SYSMODS.$(BUILD_TYPE)) 42 _ALL_OTHERS := $(OTHERS) $(OTHERS.$(BUILD_TARGET)) $(OTHERS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) $(OTHERS.$(BUILD_TARGET_ARCH)) $(OTHERS.$(BUILD_TARGET_CPU)) $(OTHERS.$(BUILD_TYPE)) 43 _ALL_INSTALLS := $(INSTALLS) $(INSTALLS.$(BUILD_TARGET)) $(INSTALLS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) $(INSTALLS.$(BUILD_TARGET_ARCH)) $(INSTALLS.$(BUILD_TARGET_CPU)) $(INSTALLS.$(BUILD_TYPE)) 44 _ALL_FETCHES := $(FETCHES) $(FETCHES.$(BUILD_TARGET)) $(FETCHES.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) $(FETCHES.$(BUILD_TARGET_ARCH)) $(FETCHES.$(BUILD_TARGET_CPU)) $(FETCHES.$(BUILD_TYPE)) 45 _ALL_PATCHES := $(PATCHES) $(PATCHES.$(BUILD_TARGET)) $(PATCHES.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) $(PATCHES.$(BUILD_TARGET_ARCH)) $(PATCHES.$(BUILD_TARGET_CPU)) $(PATCHES.$(BUILD_TYPE)) 46 35 47 # all targets. 36 _ALL_TARGETS := \37 $( FETCHES) $(FETCHES.$(BUILD_TARGET)) $(FETCHES.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \38 $( PATCHES) $(PATCHES.$(BUILD_TARGET)) $(PATCHES.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \39 $( BLDPROGS) $(BLDPROGS.$(BUILD_PLATFORM)) $(BLDPROGS.$(BUILD_PLATFORM).$(BUILD_PLATFORM_ARCH)) \40 $( LIBRARIES) $(LIBRARIES.$(BUILD_TARGET)) $(LIBRARIES.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \41 $( IMPORT_LIBS) $(IMPORT_LIBS.$(BUILD_TARGET)) $(IMPORT_LIBS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \42 $( DLLS) $(DLLS.$(BUILD_TARGET)) $(DLLS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \43 $( PROGRAMS) $(PROGRAMS.$(BUILD_TARGET)) $(PROGRAMS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \44 $( SYSMODS) $(SYSMODS.$(BUILD_TARGET)) $(SYSMODS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \45 $( INSTALLS) $(INSTALLS.$(BUILD_TARGET)) $(INSTALLS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \46 $( OTHERS) $(OTHERS.$(BUILD_TARGET)) $(OTHERS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH))48 _ALL_TARGETS = \ 49 $(_ALL_FETCHES) \ 50 $(_ALL_PATCHES) \ 51 $(_ALL_BLDPROGS) \ 52 $(_ALL_LIBRARIES) \ 53 $(_ALL_IMPORT_LIBS) \ 54 $(_ALL_DLLS) \ 55 $(_ALL_PROGRAMS) \ 56 $(_ALL_SYSMODS) \ 57 $(_ALL_INSTALLS) \ 58 $(_ALL_OTHERS) 47 59 48 60 # all $(BUILD_TARGET) targets. 49 _ALL_BUILD_TARGET_TARGETS := \ 50 $(FETCHES) $(FETCHES.$(BUILD_TARGET)) $(FETCHES.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \ 51 $(PATCHES) $(PATCHES.$(BUILD_TARGET)) $(PATCHES.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \ 52 $(LIBRARIES) $(LIBRARIES.$(BUILD_TARGET)) $(LIBRARIES.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \ 53 $(IMPORT_LIBS) $(IMPORT_LIBS.$(BUILD_TARGET)) $(IMPORT_LIBS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \ 54 $(DLLS) $(DLLS.$(BUILD_TARGET)) $(DLLS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \ 55 $(PROGRAMS) $(PROGRAMS.$(BUILD_TARGET)) $(PROGRAMS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \ 56 $(SYSMODS) $(SYSMODS.$(BUILD_TARGET)) $(SYSMODS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \ 57 $(INSTALLS) $(INSTALLS.$(BUILD_TARGET)) $(INSTALLS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \ 58 $(OTHERS) $(OTHERS.$(BUILD_TARGET)) $(OTHERS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) 59 60 # all $(BUILD_TARGET) targets. 61 _ALL_BUILD_PLATFORM_TARGETS := \ 62 $(BLDPROGS) $(BLDPROGS.$(BUILD_PLATFORM)) $(BLDPROGS.$(BUILD_PLATFORM).$(BUILD_PLATFORM_ARCH)) 63 64 ## all linkable targets. 65 #_ALL_LINKABLE_TARGETS := \ 66 # $(BLDPROGS) $(BLDPROGS.$(BUILD_PLATFORM)) $(BLDPROGS.$(BUILD_PLATFORM).$(BUILD_PLATFORM_ARCH)) \ 67 # $(DLLS) $(DLLS.$(BUILD_TARGET)) $(DLLS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \ 68 # $(PROGRAMS) $(PROGRAMS.$(BUILD_TARGET)) $(PROGRAMS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \ 69 # $(SYSMODS) $(SYSMODS.$(BUILD_TARGET)) $(SYSMODS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) 70 # 71 ## all library targets. 72 #_ALL_LIBRARY_TARGETS := \ 73 # $(LIBRARIES) $(LIBRARIES.$(BUILD_TARGET)) $(LIBRARIES.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \ 74 # $(IMPORT_LIBS) $(IMPORT_LIBS.$(BUILD_TARGET)) $(IMPORT_LIBS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \ 61 _ALL_BUILD_TARGET_TARGETS = \ 62 $(_ALL_FETCHES) \ 63 $(_ALL_PATCHES) \ 64 $(_ALL_LIBRARIES) \ 65 $(_ALL_IMPORT_LIBS) \ 66 $(_ALL_DLLS) \ 67 $(_ALL_PROGRAMS) \ 68 $(_ALL_SYSMODS) \ 69 $(_ALL_INSTALLS) \ 70 $(_ALL_OTHERS) 71 72 # all $(BUILD_PLATFORM) targets. 73 _ALL_BUILD_PLATFORM_TARGETS = \ 74 $(_ALL_BLDPROGS) 75 75 76 76 # all targets making use of srcname. 77 _ALL_SRCNAME_TARGETS := \78 $( FETCHES) $(FETCHES.$(BUILD_TARGET)) $(FETCHES.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \79 $( PATCHES) $(PATCHES.$(BUILD_TARGET)) $(PATCHES.$(BUILD_TARGET).$(BUILD_TARGET_ARCH))77 _ALL_SRCNAME_TARGETS = \ 78 $(_ALL_FETCHES) \ 79 $(_ALL_PATCHES) 80 80 81 81 # dependency files. … … 151 151 152 152 153 154 # 155 # Check syntax which leads to weird syntax errors. 156 # 157 158 ## Check 159 # @param $(target) Target name. 160 define def_check_target 161 ifneq ("$($(target)_TEMPLATE)","$(strip $($(target)_TEMPLATE))") 162 $$(error $(target) have an incorrect template name. Remove any tabs!) 163 endif 164 endef 165 $(foreach target, $(_ALL_TARGETS),$(eval $(def_check_target))) 166 167 168 # 169 # Target inheritance. 170 # 171 # $ (foreach ... 172 173 174 # 175 # Include templates 153 ## Inherit one template property in a non-accumulative manner. 154 # @param $(prop) Property name 155 # @param $(src) Source (parent) object. 156 # @param $(trg) Target (child) object. 157 # @remark Not all properties has all the variations, but making the correct 158 # exceptions will only complicate matters and probably not gain much speed. 159 define def_inherit_one 160 ifdef $(src)_$(prop) 161 ifndef $(trg)_$(prop) 162 $(trg)_$(prop) = $($(src)_$(prop)) 163 #$ (warning dbg-inherit: $(trg)_$(prop) = $($(src)_$(prop)) ) 164 endif 165 endif 166 endef # def_inherit_one 167 168 ## Inherit one template property in a non-accumulative manner. 169 # @param $(prop) Property name 170 # @param $(src) Source (parent) object. 171 # @param $(trg) Target (child) object. 172 # @remark Not all properties has all the variations, but making the correct 173 # exceptions will only complicate matters and probably not gain much speed. 174 # @todo Check how/if this differs from def_inherit_one. 175 define def_inherit_one_now 176 ifdef $(src)_$(prop) 177 ifndef $(trg)_$(prop) 178 $(trg)_$(prop) := $($(src)_$(prop)) 179 #$ (warning dbg-inherit-now: $(trg)_$(prop) = $($(src)_$(prop)) ) 180 endif 181 endif 182 endef # def_inherit_one_now 183 184 ## Inherit one template property in a non-accumulative manner, deferred expansion. 185 # @param $(prop) Property name 186 # @param $(src) Source 187 # @param $(trg) Target 188 # @remark This define relies on double evaluation 189 define def_inherit_one_deferred 190 ifdef $(src)_$(prop) 191 ifndef $(trg)_$(prop) 192 $(trg)_$(prop) = $$($(src)_$(prop)) 193 #$ (warning dbg-inherit-def: $(trg)_$(prop) = $($(src)_$(prop)) ) 194 endif 195 endif 196 endef # def_inherit_one_deferred 197 198 ## Generic inheritance for use with targets templates and tools. 199 # @param trg Object to consider for inheriting. 200 # @param src_prefix What to prefix the value found in EXTENDS with to get the object. 201 # @param properties List of the properties with straight expansion. 202 # @param properties_now List of the properties with immediate expansion. 203 # @param properties_deferred List of the properties with deferred expansion (e.g. function). 204 define def_inherit 205 src := $(strip $($(trg)_EXTENDS)) 206 ifneq ($(src),) 207 ifndef $(trg)_EXTENDS_STATUS_ 208 $(trg)_EXTENDS_STATUS_ := 0 209 src := $(src_prefix)$(src) 210 211 # Recursivly process the parent (src) if it's inherting from somebody too. 212 ifdef $(src)_EXTENDS 213 ifneq ($($(src)_EXTENDS_STATUS_),42) 214 # 'foreach' will create 'trg' in a new variable context hiding 215 # out current variable. 'src' OTOH will be overwritten. 216 #$ (warning def_inherit: recursing into $(src) from $(trg)) 217 $(foreach trg, $(src), $(eval $(value def_inherit))) 218 src := $(src_prefix)$(strip $($(trg)_EXTENDS)) 219 endif 220 endif 221 222 # Inherit the properties and mark the trg done. 223 #$ (warning def_inherit: trg=$(trg) src=$(src)) 224 $(foreach prop, $(properties), $(eval $(def_inherit_one))) 225 $(foreach prop, $(properties_now), $(eval $(def_inherit_one_now))) 226 $(foreach prop, $(properties_deferred), $(eval $(def_inherit_one_deferred))) 227 $(trg)_EXTENDS_STATUS_ := 42 228 else 229 # Check for inheritance loops. 230 ifneq ($(target)_EXTENDS_STATUS_),42) 231 $(error kBuild: Target inheritance loop! target=$(target)) 232 endif 233 endif 234 endif 235 endef # def_inherit 236 237 238 # 239 # Determin all the templates that is being used and make 240 # sure they are present. 176 241 # 177 242 _TEMPLATES := $(TEMPLATE) 178 243 define def_templates 179 244 ifdef $(target)_TEMPLATE 180 _TEMPLATES += $($(target)_TEMPLATE) 181 endif 182 endef 245 ifneq ("$($(target)_TEMPLATE)","$(strip $($(target)_TEMPLATE))") 246 $$(error kBuild: The template name of target '$(target)' contains tabs ($($(target)_TEMPLATE))). Please remove them) 247 endif 248 _TEMPLATES += $($(target)_TEMPLATE) 249 endif 250 endef # def_templates 183 251 $(foreach target, $(_ALL_TARGETS), $(eval $(def_templates))) 184 252 _TEMPLATES := $(sort $(_TEMPLATES)) 185 # $ (warning dbg: _TEMPLATES=$(_TEMPLATES))186 253 187 254 define def_templates_include 188 255 ifndef TEMPLATE_$(template) 189 include $(firstword $(foreach path, $(TEMPLATE_PATHS) $(PATH_KBUILD)/templates/, $(wildcard $(path)/$(template).kmk))) 190 endif 191 endef 256 TEMPLATE_$(template)_INCLUDE_FILE_ := $(firstword $(foreach path, $(TEMPLATE_PATHS) $(PATH_KBUILD)/templates/, $(wildcard $(path)/$(template).kmk))) 257 ifneq ($(TEMPLATE_$(template)_INCLUDE_FILE_),) 258 include $(TEMPLATE_$(template)_INCLUDE_FILE_) 259 else 260 $$(error kBuild: Cannot find template '$(template)') 261 endif 262 endif 263 endef # def_templates_include 192 264 $(foreach template, $(_TEMPLATES), $(eval $(def_templates))) 193 265 266 #$ (warning dbg _TEMPLATES := $(_TEMPLATES)) 267 268 269 # 270 # Determin the BLD_TRG_* keywords required for correct inherting. 271 # 272 # This means walking all the template and target lists in order to 273 # pick up all BLD_TRG_* attributes. 274 # 275 _BLD_TYPES := $(BUILD_TYPE) 276 _BLD_TARGETS := $(BUILD_TARGET) $(BUILD_PLATFORMS) 277 _BLD_ARCHES := $(BUILD_TARGET_ARCH) $(BUILD_PLATFORM_ARCH) 278 _BLD_CPUS := $(BUILD_TARGET_CPU) $(BUILD_PLATFORM_CPU) 279 280 define def_collect_bld_xyz 281 ifdef ($(src)_BLD_TYPE) 282 _BLD_TYPE += $($(src)_BLD_TYPE) 283 endif 284 ifdef ($(src)_BLD_TRG) 285 _BLD_TARGETS += $($(src)_BLD_TRG) 286 endif 287 ifdef ($(src)_BLD_TRG_ARCH) 288 _BLD_ARCHES += $($(src)_BLD_TRG_ARCH) 289 endif 290 ifdef ($(src)_BLD_TRG_CPU) 291 _BLD_CPU += $($(src)_BLD_TRG_CPU) 292 endif 293 endef # def_collect_bld_xyz 294 $(foreach src, $(addprefix TEMPLATE_, $(_TEMPLATES)) $(_ALL_TARGETS)\ 295 ,$(eval $(def_collect_bld_xyz))) 296 297 # drop duplicate values 298 _BLD_TYPES := $(sort $(_BLD_TYPES)) 299 _BLD_TARGETS := $(sort $(_BLD_TARGETS)) 300 _BLD_ARCHES := $(sort $(_BLD_ARCHES)) 301 _BLD_CPUS := $(sort $(_BLD_CPUS)) 302 303 # Construct all the possible keywords. 304 _KEYWORDS := $(_BLD_TYPES) $(_BLD_TARGETS) $(_BLD_ARCHES) $(_BLD_CPUS) \ 305 $(foreach bld_trg,$(_BLD_TARGETS),$(addprefix $(bld_trg).,$(_BLD_ARCHES))) 306 # $ (warning dbg _KEYWORDS := $(_KEYWORDS)) 307 308 309 # 310 # Target inheritance. 311 # 312 # This has to be done on a per target list basis as to avoid adding 313 # incorrect properties that will wast memory, time, and may confuse 314 # later strictness checks. This also has to be done *before* templates 315 # are applied to the targets. Since we're doing that part rather 316 # early on, the target inheritance feature is a bit restricted at 317 # the moment. However, this will be addressed in a little(?) while. 318 # 319 320 src_prefix := 321 ## combines the specified properties $(1) with the $(_KEYWORDS). 322 _COMB_KEY_PROP = $(1) $(foreach keyword,$(_KEYWORDS), $(addsuffix .$(keyword), $(1))) 323 324 # Fetches. 325 properties := $(call _COMB_KEY_PROP,$(PROPS_FETCHES_SINGLE)) 326 properties_now := $(call _COMB_KEY_PROP,$(PROPS_FETCHES_ACCUMULATE_R) $(PROPS_FETCHES_ACCUMULATE_L)) 327 properties_deferred := $(call _COMB_KEY_PROP,$(PROPS_FETCHES_DEFERRED)) 328 $(foreach trg, $(_ALL_FETCHES),$(eval $(value def_inherit))) 329 330 ## Patches. - not implemented yet. 331 #properties := $(call _COMB_KEY_PROP,$(PROPS_PATCHES_SINGLE)) 332 #properties_now := $(call _COMB_KEY_PROP,$(PROPS_PATCHES_ACCUMULATE_R) $(PROPS_PATCHES_ACCUMULATE_L)) 333 #properties_deferred := $(call _COMB_KEY_PROP,$(PROPS_PATCHES_DEFERRED)) 334 #$(foreach trg, $(_ALL_PATCHES),$(eval $(value def_inherit))) 335 336 # Programs and build programs. 337 properties := $(call _COMB_KEY_PROP,$(PROPS_PROGRAMS_SINGLE)) 338 properties_now := $(call _COMB_KEY_PROP,$(PROPS_PROGRAMS_ACCUMULATE_R) $(PROPS_PROGRAMS_ACCUMULATE_L)) 339 properties_deferred := $(call _COMB_KEY_PROP,$(PROPS_PROGRAMS_DEFERRED)) 340 $(foreach trg, $(_ALL_BLDPROGS) $(_ALL_PROGRAMS),$(eval $(value def_inherit))) 341 342 # Libraries and import libraries. 343 properties := $(call _COMB_KEY_PROP,$(PROPS_LIBRARIES_SINGLE)) 344 properties_now := $(call _COMB_KEY_PROP,$(PROPS_LIBRARIES_ACCUMULATE_R) $(PROPS_LIBRARIES_ACCUMULATE_L)) 345 properties_deferred := $(call _COMB_KEY_PROP,$(PROPS_LIBRARIES_DEFERRED)) 346 $(foreach trg, $(_ALL_LIBRARIES) $(_ALL_IMPORT_LIBS),$(eval $(value def_inherit))) 347 348 # DLLs. 349 properties := $(call _COMB_KEY_PROP,$(PROPS_DLLS_SINGLE)) 350 properties_now := $(call _COMB_KEY_PROP,$(PROPS_DLLS_ACCUMULATE_R) $(PROPS_DLLS_ACCUMULATE_L)) 351 properties_deferred := $(call _COMB_KEY_PROP,$(PROPS_DLLS_DEFERRED)) 352 $(foreach trg, $(_ALL_DLLS),$(eval $(value def_inherit))) 353 354 # Installs. 355 properties := $(call _COMB_KEY_PROP,$(PROPS_INSTALLS_SINGLE)) 356 properties_now := $(call _COMB_KEY_PROP,$(PROPS_INSTALLS_ACCUMULATE_R) $(PROPS_INSTALLS_ACCUMULATE_L)) 357 properties_deferred := $(call _COMB_KEY_PROP,$(PROPS_INSTALLS_DEFERRED)) 358 $(foreach trg, $(_ALL_INSTALLS),$(eval $(value def_inherit))) 359 194 360 195 361 # 196 362 # Template Inheritance. 197 363 # 198 define def_template_extends_prop 199 ifndef TEMPLATE_$(template)_$(prop) 200 ifdef TEMPLATE_$(parent)_$(prop) 201 TEMPLATE_$(template)_$(prop) = $$(TEMPLATE_$(parent)_$(prop)) 202 endif 203 endif 204 endef 205 206 207 define def_template_extends 208 ifdef TEMPLATE_$(template)_EXTENDS 209 ifndef TEMPLATE_$(template)_EXTENDS_STATUS_ 210 TEMPLATE_$(template)_EXTENDS_STATUS_ := 0 211 parent := $(strip $(TEMPLATE_$(template)_EXTENDS)) 212 213 # recursivly process the parent if it's inherting from somebody too. 214 ifdef TEMPLATE_$(parent)_EXTENDS 215 ifneq ($(TEMPLATE_$(parent)_EXTENDS_STATUS_),42) 216 # foreach will create 'template' in a new variable context hiding our current variable. 217 $(foreach template, $(parent), $(eval $(value def_template_extends))) 218 parent := $(strip $(TEMPLATE_$(template)_EXTENDS)) 219 endif 220 endif 221 222 # inherit properties. 223 $(foreach prop, $(PROPS_SINGLE) $(PROPS_ACCUMULATE_R) $(PROPS_ACCUMULATE_L) $(PROPS_DEFERRED)\ 224 $(addsuffix .$(BUILD_TARGET), $(PROPS_SINGLE) $(PROPS_ACCUMULATE_L) $(PROPS_ACCUMULATE_R) $(PROPS_DEFERRED))\ 225 $(addsuffix .$(BUILD_TARGET).$(BUILD_TARGET_ARCH), $(PROPS_SINGLE) $(PROPS_ACCUMULATE_L) $(PROPS_ACCUMULATE_R) $(PROPS_DEFERRED))\ 226 $(addsuffix .$(BUILD_TARGET_ARCH), $(PROPS_SINGLE) $(PROPS_ACCUMULATE_L) $(PROPS_ACCUMULATE_R) $(PROPS_DEFERRED))\ 227 $(addsuffix .$(BUILD_TARGET_CPU), $(PROPS_SINGLE) $(PROPS_ACCUMULATE_L) $(PROPS_ACCUMULATE_R) $(PROPS_DEFERRED))\ 228 $(addsuffix .$(BUILD_TYPE), $(PROPS_SINGLE) $(PROPS_ACCUMULATE_L) $(PROPS_ACCUMULATE_R) $(PROPS_DEFERRED))\ 229 ,$(eval $(def_template_extends_prop))) # exploits the 2 evaluation, so no value! 230 231 TEMPLATE_$(template)_EXTENDS_STATUS_ := 42 232 else 233 # protect against inheritance loops. 234 ifneq ($(TEMPLATE_$(template)_EXTENDS_STATUS_),42) 235 $(error kBuild: inheritance loop! template=$(template)) 236 endif 237 endif 238 endif 239 endef 240 241 # $ (foreach template, $(_TEMPLATES), $(if TEMPLATE_$(template)_EXTENDS, $(eval $(value def_template_extends)))) 242 $(foreach template, $(_TEMPLATES), $(eval $(value def_template_extends))) 364 # This is much the same as with target inheritance, except we cannot 365 # restrict the properties involved since we've got a clue which target 366 # types are using them. But, we can drop the instance expansion we're 367 # doing for targets since there won't be any more changes to either the 368 # source nor the target templates beyond this exercise. 369 # 370 371 src_prefix := TEMPLATE_ 372 properties := 373 properties_now := 374 properties_deferred := $(call _COMB_KEY_PROP,$(PROPS_ALL)) 375 $(foreach trg, $(addprefix TEMPLATE_,$(_TEMPLATES)),$(eval $(value def_inherit))) 376 377 # done. 378 src_prefix := 379 properties := 380 properties_now := 381 properties_deferred := 243 382 244 383 … … 423 562 # 424 563 # Include tools & sdks 564 # 565 # The first part of this exercise is to figure out which TOOLS and SDKS 566 # that should be included. 425 567 # 426 568 _TOOLS := $(TOOL.$(BUILD_TARGET)) $(TOOL.$(BUILD_TARGET_ARCH)) $(TOOL.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)) \ … … 452 594 $($(source)_SDKS) \ 453 595 $($(target)_$(source)_SDKS)) 454 endef 596 endef # def_tools_sdks_target_source 455 597 456 598 define def_tools_sdks_target 599 _bld_type := $(firstword $($(target)_BLD_TYPE) $(BUILD_TYPE)) 457 600 _bld_trg := $(firstword $($(target)_BLD_TRG) $(bld_trg)) 458 601 _bld_trg_arch := $(firstword $($(target)_BLD_TRG_ARCH) $(bld_trg_arch)) … … 474 617 $($(target)_SOURCES.$(_bld_trg).$(_bld_trg_arch)) \ 475 618 $($(target)_SOURCES.$(_bld_trg_cpu)) \ 476 $($(target)_SOURCES.$( BUILD_TYPE)) \619 $($(target)_SOURCES.$(_bld_type)) \ 477 620 $($(target)_SOURCES) \ 478 621 , $(eval $(value def_tools_sdks_target_source))) 479 endef 622 endef # def_tools_sdks_target 480 623 481 624 define def_tools_srcname_target 625 _bld_type := $(firstword $($(target)_BLD_TYPE) $(BUILD_TYPE)) 482 626 _bld_trg := $(firstword $($(target)_BLD_TRG) $(bld_trg)) 483 627 _bld_trg_arch := $(firstword $($(target)_BLD_TRG_ARCH) $(bld_trg_arch)) … … 489 633 $($(target)_SOURCES.$(_bld_trg).$(_bld_trg_arch)) \ 490 634 $($(target)_SOURCES.$(_bld_trg_cpu)) \ 491 $($(target)_SOURCES.$( BUILD_TYPE)) \635 $($(target)_SOURCES.$(_bld_type)) \ 492 636 $($(target)_SOURCES) \ 493 637 ), $(eval $(value def_tools_sdks_target_source))) 494 endef 638 endef # def_tools_srcname_target 495 639 496 640 bld_trg := $(BUILD_TARGET) … … 509 653 define def_tools_include 510 654 ifndef TOOL_$(tool) 511 TOOL_$(tool)_KMK_FILE := $(firstword $(foreach path, $(TOOL_PATHS) $(PATH_KBUILD)/tools, $(wildcard $(path)/$(tool).kmk)))512 ifeq ($(TOOL_$(tool)_KMK_FILE),)513 $(error kBuild: Cannot find include file for the tool '$(tool)'! Searched: $(TOOL_PATHS) $(PATH_KBUILD)/tools)514 endif515 include $(TOOL_$(tool)_KMK_FILE)516 ifndef TOOL_$(tool)517 $(warning kBuild: TOOL_$(tool) was not by $(TOOL_$(tool)_KMK_FILE)!)518 endif519 endif 520 endef 655 TOOL_$(tool)_KMK_FILE := $(firstword $(foreach path, $(TOOL_PATHS) $(PATH_KBUILD)/tools, $(wildcard $(path)/$(tool).kmk))) 656 ifeq ($(TOOL_$(tool)_KMK_FILE),) 657 $(error kBuild: Cannot find include file for the tool '$(tool)'! Searched: $(TOOL_PATHS) $(PATH_KBUILD)/tools) 658 endif 659 include $(TOOL_$(tool)_KMK_FILE) 660 ifndef TOOL_$(tool) 661 $(warning kBuild: TOOL_$(tool) was not by $(TOOL_$(tool)_KMK_FILE)!) 662 endif 663 endif 664 endef # def_tools_include 521 665 522 666 _TOOLS := $(sort $(_TOOLS)) … … 527 671 define def_sdks_include_one 528 672 ifndef SDK_$(sdk) 529 SDK_$(sdk)_KMK_FILE := $(firstword $(foreach path, $(SDK_PATHS) $(PATH_KBUILD)/sdks, $(wildcard $(path)/$(sdk).kmk)))530 ifeq ($(SDK_$(sdk)_KMK_FILE),)531 $(error kBuild: Cannot find include file for the SDK '$(sdk)'! Searched: $(SDK_PATHS) $(PATH_KBUILD)/sdks)532 endif533 include $(SDK_$(sdk)_KMK_FILE)534 ifndef SDK_$(sdk)535 $(warning kBuild: SDK_$(sdk) was not defined by $(SDK_$(sdk)_KMK_FILE)!)536 endif537 endif 538 endef 673 SDK_$(sdk)_KMK_FILE := $(firstword $(foreach path, $(SDK_PATHS) $(PATH_KBUILD)/sdks, $(wildcard $(path)/$(sdk).kmk))) 674 ifeq ($(SDK_$(sdk)_KMK_FILE),) 675 $(error kBuild: Cannot find include file for the SDK '$(sdk)'! Searched: $(SDK_PATHS) $(PATH_KBUILD)/sdks) 676 endif 677 include $(SDK_$(sdk)_KMK_FILE) 678 ifndef SDK_$(sdk) 679 $(warning kBuild: SDK_$(sdk) was not defined by $(SDK_$(sdk)_KMK_FILE)!) 680 endif 681 endif 682 endef # def_sdks_include_one 539 683 540 684 _SDKS := $(sort $(_SDKS)) 541 685 $(foreach sdk, $(_SDKS), $(eval $(value def_sdks_include_one))) 542 686 687 ## @todo Execute SDKS and TOOL inhertiance. 543 688 544 689 … … 715 860 # 716 861 define def_pass1_install 717 bld_type := $(firstword $($(target)_BLD_TYPE) $(BUILD_TYPE))718 bld_trg := $(firstword $($(target)_BLD_TRG) $(BUILD_TARGET))862 bld_type := $(firstword $($(target)_BLD_TYPE) $(BUILD_TYPE)) 863 bld_trg := $(firstword $($(target)_BLD_TRG) $(BUILD_TARGET)) 719 864 bld_trg_arch:= $(firstword $($(target)_BLD_TRG_ARCH) $(BUILD_TARGET_ARCH)) 720 865 bld_trg_cpu := $(firstword $($(target)_BLD_TRG_CPU) $(BUILD_TARGET_CPU))
Note:
See TracChangeset
for help on using the changeset viewer.