Changeset 1410 in kBuild
- Timestamp:
- Mar 18, 2008 4:00:56 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kBuild/footer.kmk
r1407 r1410 452 452 453 453 # 454 # Determin the BLD_TRG_* keywords required for correct inherting. 454 # Determin the BLD_TRG_* and BLD_TYPE keywords required for correct 455 # inherting, and then check for inheritance. 455 456 # 456 457 # This means walking all the template and target lists in order to … … 463 464 464 465 define def_collect_bld_xyz 465 ifdef ($(src)_BLD_TYPE) 466 ifdef $(src)_BLD_TYPE 467 ifn1of ($($(src)_BLD_TYPE), $(KBUILD_BLD_TYPES)) 468 $(error kBuild: $(src)_BLD_TYPE=$($(src)_BLD_TYPE) not in KBUILD_BLD_TYPES={$(KBUILD_BLD_TYPES)}!) 469 endif 466 470 _BLD_TYPES += $($(src)_BLD_TYPE) 467 471 endif 468 ifdef ($(src)_BLD_TRG) 472 ifdef $(src)_BLD_TRG 473 ifn1of ($($(src)_BLD_TRG), $(KBUILD_OSES)) 474 $(error kBuild: $(src)_BLD_TRG=$($(src)_BLD_TRG) not in KBUILD_OSES={$(KBUILD_OSES)}!) 475 endif 469 476 _BLD_TARGETS += $($(src)_BLD_TRG) 470 477 endif 471 ifdef ($(src)_BLD_TRG_ARCH) 478 ifdef $(src)_BLD_TRG_ARCH 479 ifn1of ($($(src)_BLD_TRG_ARCH), $(KBUILD_ARCHES)) 480 $(error kBuild: $(src)_BLD_TRG_ARCH=$($(src)_BLD_TRG_ARCH) not in KBUILD_ARCHES={$(KBUILD_ARCHES)}!) 481 endif 472 482 _BLD_ARCHES += $($(src)_BLD_TRG_ARCH) 473 483 endif 474 ifdef ($(src)_BLD_TRG_CPU) 484 ifdef $(src)_BLD_TRG_CPU 485 if1of ($($(src)_BLD_CPU), $(KBUILD_ARCHES) $(KBUILD_OSES) $(KBUILD_BLD_TYPES)) 486 $(error kBuild: $(src)_BLD_TRG_CPU=$($(src)_BLD_TRG_CPU) found in KBUILD_ARCHES, KBUILD_OSES or KBUILD_BLD_TYPES!) 487 endif 475 488 _BLD_CPUS += $($(src)_BLD_TRG_CPU) 476 489 endif 477 490 endef # def_collect_bld_xyz 478 $(foreach src, $(addprefix TEMPLATE_, $(_TEMPLATES)) $(_ALL_TARGETS) \479 ,$(eval $( def_collect_bld_xyz)))480 481 # drop duplicate values491 $(foreach src, $(addprefix TEMPLATE_, $(_TEMPLATES)) $(_ALL_TARGETS) \ 492 ,$(eval $(value def_collect_bld_xyz))) 493 494 # Drop duplicate values. 482 495 _BLD_TYPES := $(sort $(_BLD_TYPES)) 483 496 _BLD_TARGETS := $(sort $(_BLD_TARGETS)) … … 488 501 _KEYWORDS := $(_BLD_TYPES) $(_BLD_TARGETS) $(_BLD_ARCHES) $(_BLD_CPUS) \ 489 502 $(foreach bld_trg,$(_BLD_TARGETS),$(addprefix $(bld_trg).,$(_BLD_ARCHES))) 490 # $ (warning dbg _KEYWORDS := $(_KEYWORDS)) 503 504 # Look for keywords which extends others and order them. 505 _KEYWORDS_ORDERED := 506 define def_keyword_ordering 507 src := $(strip $($(prefix)_$(keyword)_EXTENDS)) 508 ifneq ($(src),) 509 ifndef $(prefix)_$(keyword)_EXTENDS_STATUS_ 510 $(prefix)_$(keyword)_EXTENDS_STATUS_ := 0 511 512 # Validate src. 513 ifn1of ($(src), $(valid)) 514 $(error kBuild: $(keyword) tries to extend unknown keyword '$(src)'! (known = $(valid))) 515 endif 516 517 # Recursivly process the parent (src) if it's inherting from somebody too. 518 # If it isn't, then we'll have to add it to the ordered keyword list here. 519 ifneq ($($(prefix)_$(src)_EXTENDS_STATUS_),42) 520 ifneq ($($(prefix)_$(src)_EXTENDS_STATUS_),) 521 $(error kBuild: Keyword inheritance loop! keyword=$(src) $(prefix)_$(src)_EXTENDS_STATUS_=$($(prefix)_$(src)_EXTENDS_STATUS_)) 522 endif 523 ifdef $(prefix)_$(src)_EXTENDS 524 # 'foreach' will create 'keyword' in a new variable context hiding 525 # out current variable. 'src' OTOH will be overwritten. 526 $(foreach keyword, $(src), $(eval $(value def_keyword_ordering))) 527 src := $(strip $($(keyword)_EXTENDS)) 528 else 529 # Add it to the list and mark it as done. 530 _KEYWORDS_ORDERED += $(src) 531 $(prefix)_$(src)_EXTENDS_STATUS_ := 42 532 endif 533 endif 534 535 # Check EXTENDS_BY. 536 by = $(strip $($(trg)_EXTENDS_BY)) 537 ifeq ($(by),) 538 by = overriding 539 else ifn1of ($(by), overriding appending prepending) 540 $(error kBuild: Invalid EXTENDS_BY value '$(by)' on '$(keyword)'!) 541 endif 542 543 # Add it to the list and mark it as done. 544 _KEYWORDS_ORDERED += $(keyword) 545 $(prefix)_$(keyword)_EXTENDS_STATUS_ := 42 546 else 547 # Check for inheritance loops. 548 ifneq ($($(trg)_EXTENDS_STATUS_),42) 549 $(error kBuild: Keyword inheritance loop! keyword=$(keyword) $(prefix)_$(keyword)_EXTENDS_STATUS_=$($(prefix)_$(keyword)_EXTENDS_STATUS_)) 550 endif 551 endif 552 endif 553 554 endef 555 556 prefix := BLD_TYPE 557 valid := $(KBUILD_BLD_TYPES) 558 $(foreach keyword, $(_BLD_TYPES) , $(eval $(value def_keyword_ordering))) 559 560 prefix := BLD_ARCH 561 valid := $(KBUILD_ARCHES) 562 $(foreach keyword, $(_BLD_ARCHES), $(eval $(value def_keyword_ordering))) 563 564 prefix := BLD_CPU 565 valid := $(KBUILD_CPUS) 566 $(foreach keyword, $(_BLD_CPUS) , $(eval $(value def_keyword_ordering))) 567 568 # Update _KEYWORDS to the ordered list making sure parent keywords are included too. 569 _KEYWORDS := $(_KEYWORDS_ORDERED) $(filter-out $(_KEYWORDS_ORDERED), $(_KEYWORDS)) 491 570 492 571 ifdef KBUILD_PROFILE_SELF
Note:
See TracChangeset
for help on using the changeset viewer.