Ignore:
Timestamp:
Dec 5, 2006, 3:36:19 PM (19 years ago)
Author:
bird
Message:

Target properties has precedence over template properties. Grouped accumulative props by where the 'most significan item' is and target <- template inheritance respect this. Fixes #11.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kBuild/footer.kmk

    r659 r660  
    271271
    272272  # inherit properties.
    273   $(foreach prop, $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED)\
    274     $(addsuffix .$(BUILD_TARGET),                      $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED))\
    275     $(addsuffix .$(BUILD_TARGET).$(BUILD_TARGET_ARCH), $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED))\
    276     $(addsuffix .$(BUILD_TARGET_ARCH),                 $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED))\
    277     $(addsuffix .$(BUILD_TARGET_CPU),                  $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED))\
    278     $(addsuffix .$(BUILD_TYPE),                        $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED))\
     273  $(foreach prop, $(PROPS_SINGLE) $(PROPS_ACCUMULATE_R) $(PROPS_ACCUMULATE_L) $(PROPS_DEFERRED)\
     274    $(addsuffix .$(BUILD_TARGET),                      $(PROPS_SINGLE) $(PROPS_ACCUMULATE_L) $(PROPS_ACCUMULATE_R) $(PROPS_DEFERRED))\
     275    $(addsuffix .$(BUILD_TARGET).$(BUILD_TARGET_ARCH), $(PROPS_SINGLE) $(PROPS_ACCUMULATE_L) $(PROPS_ACCUMULATE_R) $(PROPS_DEFERRED))\
     276    $(addsuffix .$(BUILD_TARGET_ARCH),                 $(PROPS_SINGLE) $(PROPS_ACCUMULATE_L) $(PROPS_ACCUMULATE_R) $(PROPS_DEFERRED))\
     277    $(addsuffix .$(BUILD_TARGET_CPU),                  $(PROPS_SINGLE) $(PROPS_ACCUMULATE_L) $(PROPS_ACCUMULATE_R) $(PROPS_DEFERRED))\
     278    $(addsuffix .$(BUILD_TYPE),                        $(PROPS_SINGLE) $(PROPS_ACCUMULATE_L) $(PROPS_ACCUMULATE_R) $(PROPS_DEFERRED))\
    279279    ,$(eval $(def_template_extends_prop))) # exploits the 2 evaluation, so no value!
    280280
     
    372372endef
    373373
    374 ## Inherit one template property.
     374## Inherit one acculumlative template property where the 'most significant' items are at the left end.
    375375# @param    $(prop)     Property name
    376376# @param    $(target)   Target name
    377 define def_inherit_template_one_accumulate
     377define def_inherit_template_one_accumulate_l
    378378ifdef TEMPLATE_$($(target)_TEMPLATE)_$(prop)
    379379#$ (warning dbgtype: TEMPLATE_$($(target)_TEMPLATE)_$(prop) $(target)_$(prop)=$($(target)_$(prop)) $(TEMPLATE_$($(target)_TEMPLATE)_$(prop)))
     
    402402endif
    403403endef
     404
     405## Inherit one acculumlative template property where the 'most significant' items are at the right end.
     406# First pass, $(value) referenced.
     407# @param    $(prop)     Property name
     408# @param    $(target)   Target name
     409define def_inherit_template_one_accumulate_r1
     410ifdef TEMPLATE_$($(target)_TEMPLATE)_$(prop)
     411_$(target)_$(prop)_R := $(value $(target)_$(prop))
     412endif
     413ifdef TEMPLATE_$($(target)_TEMPLATE)_$(prop).$(BUILD_TYPE)
     414_$(target)_$(prop).$(BUILD_TYPE)_R := $(value $(target)_$(prop).$(BUILD_TYPE))
     415endif
     416ifdef TEMPLATE_$($(target)_TEMPLATE)_$(prop).$(bld_trg)
     417_$(target)_$(prop).$(bld_trg)_R := $(value $(target)_$(prop).$(bld_trg))
     418endif
     419ifdef TEMPLATE_$($(target)_TEMPLATE)_$(prop).$(bld_trg).$(bld_trg_arch)
     420_$(target)_$(prop).$(bld_trg).$(bld_trg_arch)_R := $(value $(target)_$(prop).$(bld_trg).$(bld_trg_arch))
     421endif
     422ifdef TEMPLATE_$($(target)_TEMPLATE)_$(prop).$(bld_trg_cpu)
     423_$(target)_$(prop).$(bld_trg_cpu)_R := $(value $(target)_$(prop).$(bld_trg_cpu))
     424endif
     425ifdef TEMPLATE_$($(target)_TEMPLATE)_$(prop).$(bld_trg_arch)
     426_$(target)_$(prop).$(bld_trg_arch)_R := $(value $(target)_$(prop).$(bld_trg_arch))
     427endif
     428endef
     429
     430## Inherit one template property the other way around.
     431# Second pass, not $(value) referenced.
     432# @param    $(prop)     Property name
     433# @param    $(target)   Target name
     434define def_inherit_template_one_accumulate_r2
     435ifdef TEMPLATE_$($(target)_TEMPLATE)_$(prop)
     436$(target)_$(prop) = $$(TEMPLATE_$($(target)_TEMPLATE)_$(prop)) $$(_$(target)_$(prop)_R)
     437endif
     438ifdef TEMPLATE_$($(target)_TEMPLATE)_$(prop).$(BUILD_TYPE)
     439$(target)_$(prop).$(BUILD_TYPE) = $$(TEMPLATE_$($(target)_TEMPLATE)_$(prop).$(BUILD_TYPE)) $$(_$(target)_$(prop).$(BUILD_TYPE)_R)
     440endif
     441ifdef TEMPLATE_$($(target)_TEMPLATE)_$(prop).$(bld_trg)
     442$(target)_$(prop).$(bld_trg) = $$(TEMPLATE_$($(target)_TEMPLATE)_$(prop).$(bld_trg)) $$(_$(target)_$(prop).$(bld_trg)_R)
     443endif
     444ifdef TEMPLATE_$($(target)_TEMPLATE)_$(prop).$(bld_trg).$(bld_trg_arch)
     445$(target)_$(prop).$(bld_trg).$(bld_trg_arch) = $$(TEMPLATE_$($(target)_TEMPLATE)_$(prop).$(bld_trg).$(bld_trg_arch)) $$(_$(target)_$(prop).$(bld_trg).$(bld_trg_arch)_R)
     446endif
     447ifdef TEMPLATE_$($(target)_TEMPLATE)_$(prop).$(bld_trg_cpu)
     448$(target)_$(prop).$(bld_trg_cpu) = $$(TEMPLATE_$($(target)_TEMPLATE)_$(prop).$(bld_trg_cpu)) $$(_$(target)_$(prop).$(bld_trg_cpu)_R)
     449endif
     450ifdef TEMPLATE_$($(target)_TEMPLATE)_$(prop).$(bld_trg_arch)
     451$(target)_$(prop).$(bld_trg_arch) = $$(TEMPLATE_$($(target)_TEMPLATE)_$(prop).$(bld_trg_arch)) $$(_$(target)_$(prop).$(bld_trg_arch)_R)
     452endif
     453endef
     454
    404455
    405456## Inherit template properties for on target.
     
    416467$(foreach prop,$(PROPS_SINGLE),$(eval $(value def_inherit_template_one)))
    417468$(foreach prop,$(PROPS_DEFERRED),$(eval $(def_inherit_template_one_deferred))) # exploits the 2 evaluation, so no value!
    418 $(foreach prop,$(PROPS_ACCUMULATE),$(eval $(def_inherit_template_one_accumulate))) # += works fine (better) without value.
     469$(foreach prop,$(PROPS_ACCUMULATE_L),$(eval $(def_inherit_template_one_accumulate_l))) # += works fine (better) without value.
     470$(foreach prop,$(PROPS_ACCUMULATE_R),\
     471$(eval $(value def_inherit_template_one_accumulate_r1))\
     472$(eval $(def_inherit_template_one_accumulate_r2))\
     473) # This is a hack! (but it appears to work)
    419474endif
    420475endef
     
    23502405        @$(ECHO) "  TARGET_$(target)=$(TARGET_$(target))" $(NLTAB)\
    23512406        @$(ECHO) "  INSTARGET_$(target)=$(INSTARGET_$(target))" $(NLTAB)\
    2352 $(foreach prop,$(PROPS_SINGLE) $(PROPS_ACCUMULATE) OBJS_ CLEAN, \
     2407$(foreach prop,$(PROPS_SINGLE) $(PROPS_ACCUMULATE_L) $(PROPS_ACCUMULATE_R) OBJS_ CLEAN, \
    23532408        $(eval _tmp:=$(firstword $($(target)_BLD_TRG) $(BUILD_TARGET))) \
    23542409        $(if $($(target)_$(prop).$(_tmp)),\
Note: See TracChangeset for help on using the changeset viewer.