VirtualBox

Changeset 1413 in kBuild


Ignore:
Timestamp:
Mar 18, 2008 9:22:32 PM (17 years ago)
Author:
bird
Message:

keyword inheritance.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kBuild/footer.kmk

    r1410 r1413  
    156156
    157157
     158
     159## Inherit one keyword in a non-accumulative manner.
     160# @param    $(trg)          Target object.
     161# @param    $(prop)             The property.
     162# @param    $(src_key)      Source keyword.
     163# @param    $(trg_key)      Target keyword.
     164define def_inherit_one_keyword
     165ifdef $(trg)_$(prop).$(src_key)
     166 ifndef $(trg)_$(prop).$(trg_key)
     167  $(trg)_$(prop).$(trg_key) = $($(trg)_$(prop).$(src_key))
     168 endif
     169endif
     170endef
     171
     172
     173# EXPAND_BY = overriding
     174
     175## Inherit one keyword in a non-accumulative manner.
     176# @param    $(trg)          Target object.
     177# @param    $(prop)             The property.
     178# @param    $(src_key)      Source keyword.
     179# @param    $(trg_key)      Target keyword.
     180define def_inherit_one_keyword_overriding_now_l
     181ifdef $(trg)_$(prop).$(src_key)
     182 ifndef $(trg)_$(prop).$(trg_key)
     183  $(trg)_$(prop).$(trg_key) := $($(trg)_$(prop).$(src_key))
     184 endif
     185endif
     186endef
     187
     188## @copydoc def_inherit_one_overriding_now_l
     189define def_inherit_one_keyword_overriding_now_r
     190ifdef $(trg)_$(prop).$(src_key)
     191 ifndef $(trg)_$(prop).$(trg_key)
     192  $(trg)_$(prop).$(trg_key) := $($(trg)_$(prop).$(src_key))
     193 endif
     194endif
     195endef
     196
     197## Inherit one keyword in a non-accumulative manner, deferred expansion.
     198# @param    $(trg)          Target object.
     199# @param    $(prop)             The property.
     200# @param    $(src_key)      Source keyword.
     201# @param    $(trg_key)      Target keyword.
     202# @remark This define relies on double evaluation
     203define def_inherit_one_keyword_overriding_deferred
     204ifdef $(trg)_$(prop).$(src_key)
     205 ifndef $(trg)_$(prop).$(trg_key)
     206  $(trg)_$(prop).$(trg_key) = $$($(trg)_$(prop).$(src_key))
     207 endif
     208endif
     209endef
     210
     211## @copydoc def_inherit_one_overriding_deferred
     212define def_inherit_one_keyword_overriding_deferred_l
     213ifdef $(trg)_$(prop).$(src_key)
     214 ifndef $(trg)_$(prop).$(trg_key)
     215  $(trg)_$(prop).$(trg_key) = $$($(trg)_$(prop).$(src_key))
     216 endif
     217endif
     218endef
     219
     220## @copydoc def_inherit_one_overriding_deferred
     221define def_inherit_one_keyword_overriding_deferred_r
     222ifdef $(trg)_$(prop).$(src_key)
     223 ifndef $(trg)_$(prop).$(trg_key)
     224  $(trg)_$(prop).$(trg_key) = $$($(trg)_$(prop).$(src_key))
     225 endif
     226endif
     227endef
     228
     229
     230# EXPAND_BY = prepending
     231
     232## Inherit one keyword in a prepending manner.
     233# @param    $(trg)          Target object.
     234# @param    $(prop)             The property.
     235# @param    $(src_key)      Source keyword.
     236# @param    $(trg_key)      Target keyword.
     237define def_inherit_one_keyword_prepending_now_l
     238ifdef $(trg)_$(prop).$(src_key)
     239 $(trg)_$(prop).$(trg_key) := $($(trg)_$(prop).$(src_key)) $($(trg)_$(prop).$(trg_key))
     240endif
     241endef
     242
     243## @copydoc def_inherit_one_prepending_now_l
     244define def_inherit_one_keyword_prepending_now_r
     245ifdef $(trg)_$(prop).$(src_key)
     246 $(trg)_$(prop).$(trg_key) := $($(trg)_$(prop).$(trg_key)) $($(trg)_$(prop).$(src_key))
     247endif
     248endef
     249
     250## Inherit one keyword in a non-accumulative manner, deferred expansion.
     251# @param    $(trg)          Target object.
     252# @param    $(prop)             The property.
     253# @param    $(src_key)      Source keyword.
     254# @param    $(trg_key)      Target keyword.
     255# @remark This define relies on double evaluation
     256define def_inherit_one_keyword_prepending_deferred
     257ifdef $(trg)_$(prop).$(src_key)
     258 ifndef $(trg)_$(prop).$(trg_key)
     259  $(trg)_$(prop).$(trg_key) = $$($(trg)_$(prop).$(src_key))
     260 endif
     261endif
     262endef
     263
     264## Inherit one keyword in a prepending manner, deferred expansion.
     265# @param    $(trg)          Target object.
     266# @param    $(prop)             The property.
     267# @param    $(src_key)      Source keyword.
     268# @param    $(trg_key)      Target keyword.
     269define def_inherit_one_keyword_prepending_deferred_l
     270ifdef $(trg)_$(prop).$(src_key)
     271 $(trg)_$(prop).$(trg_key) <= $$($(trg)_$(prop).$(src_key))
     272endif
     273endef
     274
     275## @copydoc def_inherit_one_prepending_deferred_l
     276define def_inherit_one_keyword_prepending_deferred_r
     277ifdef $(trg)_$(prop).$(src_key)
     278  $(trg)_$(prop).$(trg_key) += $$($(trg)_$(prop).$(src_key))
     279endif
     280endef
     281
     282
     283# EXPAND_BY = appending
     284
     285## Inherit one keyword in an appending manner.
     286# @param    $(trg)          Target object.
     287# @param    $(prop)             The property.
     288# @param    $(src_key)      Source keyword.
     289# @param    $(trg_key)      Target keyword.
     290define def_inherit_one_keyword_appending_now_l
     291ifdef $(trg)_$(prop).$(src_key)
     292 $(trg)_$(prop).$(trg_key) := $($(trg)_$(prop).$(trg_key)) $($(trg)_$(prop).$(src_key))
     293endif
     294endef
     295
     296## @copydoc def_inherit_one_appending_now_l
     297define def_inherit_one_keyword_appending_now_r
     298ifdef $(trg)_$(prop).$(src_key)
     299 $(trg)_$(prop).$(trg_key) := $($(trg)_$(prop).$(src_key)) $($(trg)_$(prop).$(trg_key))
     300endif
     301endef
     302
     303## Inherit one keyword in a non-accumulative manner, deferred expansion.
     304# @param    $(trg)          Target object.
     305# @param    $(prop)             The property.
     306# @param    $(src_key)      Source keyword.
     307# @param    $(trg_key)      Target keyword.
     308# @remark This define relies on double evaluation
     309define def_inherit_one_keyword_appending_deferred
     310ifdef $(trg)_$(prop).$(src_key)
     311 ifndef $(trg)_$(prop).$(trg_key)
     312  $(trg)_$(prop).$(trg_key) = $$($(trg)_$(prop).$(src_key))
     313 endif
     314endif
     315endef
     316
     317## Inherit one keyword in an appending manner, deferred expansion.
     318# @param    $(trg)          Target object.
     319# @param    $(prop)             The property.
     320# @param    $(src_key)      Source keyword.
     321# @param    $(trg_key)      Target keyword.
     322define def_inherit_one_keyword_appending_deferred_l
     323ifdef $(trg)_$(prop).$(src_key)
     324 $(trg)_$(prop).$(trg_key) += $$($(trg)_$(prop).$(src_key))
     325endif
     326endef
     327
     328## @copydoc def_inherit_one_appending_deferred_l
     329define def_inherit_one_keyword_appending_deferred_r
     330ifdef $(trg)_$(prop).$(src_key)
     331  $(trg)_$(prop).$(trg_key) <= $$($(trg)_$(prop).$(src_key))
     332endif
     333endef
     334
     335
     336## Worker fro def_inherit that deals with one keyword that makes
     337# use of inheritance.
     338# @param    prefix_keyword        key_prefix:keyword. The cool join/split game as usual.
     339# @param    trg                   Object to consider for inheriting.
     340# @param    properties            List of the properties with straight expansion.
     341# @param    properties_now_l      List of the properties with immediate expansion, accumulating on the left side.
     342# @param    properties_now_r      List of the properties with immediate expansion, accumulating on the right side.
     343# @param    properties_deferred   List of the properties with deferred expansion (e.g. function), non-accumulative .
     344# @param    properties_deferred_l List of the properties with deferred expansion (e.g. function), accumulating on the left side.
     345# @param    properties_deferred_r List of the properties with deferred expansion (e.g. function), accumulating on the right side.
     346define def_inherit_keyword
     347prefix   := $(word 1,$(subst :, ,$(prefix_keyword)))
     348trg_key  := $(word 2,$(subst :, ,$(prefix_keyword)))
     349src_key  := $($(prefix)_$(trg_key)_EXTENDS)
     350by       := $($(prefix)_$(trg_key)_EXTENDS_BY)
     351
     352# Inherit the properties.
     353$(foreach prop, $(properties),            $(eval $(def_inherit_one_keyword)))
     354$(foreach prop, $(properties_now_l),      $(eval $(def_inherit_one_keyword_$(by)_now_l)))
     355$(foreach prop, $(properties_now_r),      $(eval $(def_inherit_one_keyword_$(by)_now_r)))
     356$(foreach prop, $(properties_deferred),   $(eval $(def_inherit_one_keyword_$(by)_deferred)))
     357$(foreach prop, $(properties_deferred_l), $(eval $(def_inherit_one_keyword_$(by)_deferred_l)))
     358$(foreach prop, $(properties_deferred_r), $(eval $(def_inherit_one_keyword_$(by)_deferred_r)))
     359
     360endef # def_inherit_keyword
     361
     362
    158363## Inherit one template property in a non-accumulative manner.
    159364# @param    $(prop)         Property name
     
    164369 ifndef $(trg)_$(prop)
    165370  $(trg)_$(prop) = $($(src)_$(prop))
    166   #$ (warning def_inherit_one: $(trg)_$(prop) = $($(src)_$(prop)) )
    167371 endif
    168372endif
    169 endef # def_inherit_one
     373endef
    170374
    171375
     
    180384 ifndef $(trg)_$(prop)
    181385  $(trg)_$(prop) := $($(src)_$(prop))
    182   #$ (warning def_inherit_one_overriding_now_l: $(trg)_$(prop) = $($(src)_$(prop)) )
    183386 endif
    184387endif
    185 endef # def_inherit_one_overriding_now_l
     388endef
    186389
    187390## @copydoc def_inherit_one_overriding_now_l
     
    190393 ifndef $(trg)_$(prop)
    191394  $(trg)_$(prop) := $($(src)_$(prop))
    192   #$ (warning def_inherit_one_overriding_now_r: $(trg)_$(prop) = $($(src)_$(prop)) )
    193395 endif
    194396endif
    195 endef # def_inherit_one_overriding_now_r
     397endef
    196398
    197399## Inherit one template property in a non-accumulative manner, deferred expansion.
     
    204406 ifndef $(trg)_$(prop)
    205407  $(trg)_$(prop) = $$($(src)_$(prop))
    206   #$ (warning def_inherit_one_overriding_deferred: $(trg)_$(prop) = $($(src)_$(prop)) )
    207408 endif
    208409endif
    209 endef # def_inherit_one_overriding_deferred
     410endef
    210411
    211412## @copydoc def_inherit_one_overriding_deferred
     
    214415 ifndef $(trg)_$(prop)
    215416  $(trg)_$(prop) = $$($(src)_$(prop))
    216   #$ (warning def_inherit_one_overriding_deferred_l: $(trg)_$(prop) = $($(src)_$(prop)) )
    217417 endif
    218418endif
    219 endef # def_inherit_one_overriding_deferred_l
     419endef
    220420
    221421## @copydoc def_inherit_one_overriding_deferred
     
    224424 ifndef $(trg)_$(prop)
    225425  $(trg)_$(prop) = $$($(src)_$(prop))
    226   #$ (warning def_inherit_one_overriding_deferred_r: $(trg)_$(prop) = $($(src)_$(prop)) )
    227426 endif
    228427endif
    229 endef # def_inherit_one_overriding_deferred_r
     428endef
    230429
    231430
     
    238437define def_inherit_one_prepending_now_l
    239438ifdef $(src)_$(prop)
    240  $(trg)_$(prop) := $(trg)_$(prop) $($(src)_$(prop))
    241  #$ (warning def_inherit_one_prepending_now_l: $(trg)_$(prop) = $($(trg)_$(prop)) )
    242 endif
    243 endef # def_inherit_one_prepending_now_l
     439 $(trg)_$(prop) := $($(src)_$(prop)) $($(trg)_$(prop))
     440endif
     441endef
    244442
    245443## @copydoc def_inherit_one_prepending_now_l
    246444define def_inherit_one_prepending_now_r
    247445ifdef $(src)_$(prop)
    248  $(trg)_$(prop) := $($(src)_$(prop)) $(trg)_$(prop)
    249  #$ (warning def_inherit_one_prepending_now_r: $(trg)_$(prop) = $($(trg)_$(prop)) )
    250 endif
    251 endef # def_inherit_one_prepending_now_r
     446 $(trg)_$(prop) := $($(trg)_$(prop)) $($(src)_$(prop))
     447endif
     448endef
    252449
    253450## Inherit one template property in a non-accumulative manner, deferred expansion.
     
    260457 ifndef $(trg)_$(prop)
    261458  $(trg)_$(prop) = $$($(src)_$(prop))
    262   #$ (warning def_inherit_one_prepending_deferred: $(trg)_$(prop) = $($(src)_$(prop)) )
    263459 endif
    264460endif
    265 endef # def_inherit_one_prepending_deferred
     461endef
    266462
    267463## Inherit one template property in a prepending manner, deferred expansion.
     
    272468ifdef $(src)_$(prop)
    273469 $(trg)_$(prop) <= $$($(src)_$(prop))
    274  #$ (warning def_inherit_one_prepending_deferred_l: $(trg)_$(prop) = $($(trg)_$(prop)) )
    275 endif
    276 endef # def_inherit_one_prepending_deferred_l
     470endif
     471endef
    277472
    278473## @copydoc def_inherit_one_prepending_deferred_l
     
    280475ifdef $(src)_$(prop)
    281476  $(trg)_$(prop) += $$($(src)_$(prop))
    282   #$ (warning def_inherit_one_prepending_deferred_r: $(trg)_$(prop) = $($(trg)_$(prop)) )
    283 endif
    284 endef # def_inherit_one_prepending_deferred_r
     477endif
     478endef
    285479
    286480
    287481# EXPAND_BY = appending
    288482
    289 ## Inherit one template property in a appending manner.
     483## Inherit one template property in an appending manner.
    290484# @param    $(prop)         Property name
    291485# @param    $(src)          Source (parent) object.
     
    293487define def_inherit_one_appending_now_l
    294488ifdef $(src)_$(prop)
    295  $(trg)_$(prop) := $($(src)_$(prop)) $(trg)_$(prop)
    296  #$ (warning def_inherit_one_appending_now_l: $(trg)_$(prop) = $($(trg)_$(prop)) )
    297 endif
    298 endef # def_inherit_one_appending_now_l
     489 $(trg)_$(prop) := $($(trg)_$(prop)) $($(src)_$(prop))
     490endif
     491endef
    299492
    300493## @copydoc def_inherit_one_appending_now_l
    301494define def_inherit_one_appending_now_r
    302495ifdef $(src)_$(prop)
    303  $(trg)_$(prop) := $(trg)_$(prop) $($(src)_$(prop))
    304  #$ (warning def_inherit_one_appending_now_r: $(trg)_$(prop) = $($(trg)_$(prop)) )
    305 endif
    306 endef # def_inherit_one_appending_now_r
     496 $(trg)_$(prop) := $($(src)_$(prop)) $($(trg)_$(prop))
     497endif
     498endef
    307499
    308500## Inherit one template property in a non-accumulative manner, deferred expansion.
     
    315507 ifndef $(trg)_$(prop)
    316508  $(trg)_$(prop) = $$($(src)_$(prop))
    317   #$ (warning def_inherit_one_appending_deferred: $(trg)_$(prop) = $($(src)_$(prop)) )
    318509 endif
    319510endif
    320 endef # def_inherit_one_appending_deferred
    321 
    322 ## Inherit one template property in a appending manner, deferred expansion.
     511endef
     512
     513## Inherit one template property in an appending manner, deferred expansion.
    323514# @param    $(prop)         Property name
    324515# @param    $(src)          Source (parent) object.
     
    327518ifdef $(src)_$(prop)
    328519 $(trg)_$(prop) += $$($(src)_$(prop))
    329  #$ (warning def_inherit_one_appending_deferred_l: $(trg)_$(prop) = $($(trg)_$(prop)) )
    330 endif
    331 endef # def_inherit_one_appending_deferred_l
     520endif
     521endef
    332522
    333523## @copydoc def_inherit_one_appending_deferred_l
     
    335525ifdef $(src)_$(prop)
    336526  $(trg)_$(prop) <= $$($(src)_$(prop))
    337   #$ (warning def_inherit_one_appending_deferred_r: $(trg)_$(prop) = $($(trg)_$(prop)) )
    338 endif
    339 endef # def_inherit_one_appending_deferred_r
    340 
     527endif
     528endef
     529
     530
     531## combines the specified properties $(1) with the $(_KEYWORDS) list.
     532_INHERIT_JOIN_KEYWORDS = $(1)  $(foreach keyword,$(_KEYWORDS), $(addsuffix .$(keyword), $(1)))
    341533
    342534
     
    377569
    378570  # Inherit the properties.
    379   #$ (warning def_inherit: trg=$(trg) src=$(src))
    380   $(foreach prop, $(properties),            $(eval $(def_inherit_one)))
    381   $(foreach prop, $(properties_now_l),      $(eval $(def_inherit_one_$(by)_now_l)))
    382   $(foreach prop, $(properties_now_r),      $(eval $(def_inherit_one_$(by)_now_r)))
    383   $(foreach prop, $(properties_deferred),   $(eval $(def_inherit_one_$(by)_deferred)))
    384   $(foreach prop, $(properties_deferred_l), $(eval $(def_inherit_one_$(by)_deferred_l)))
    385   $(foreach prop, $(properties_deferred_r), $(eval $(def_inherit_one_$(by)_deferred_r)))
     571  $(foreach prop, $(call _INHERIT_JOIN_KEYWORDS,$(properties)),            $(eval $(def_inherit_one)))
     572  $(foreach prop, $(call _INHERIT_JOIN_KEYWORDS,$(properties_now_l)),      $(eval $(def_inherit_one_$(by)_now_l)))
     573  $(foreach prop, $(call _INHERIT_JOIN_KEYWORDS,$(properties_now_r)),      $(eval $(def_inherit_one_$(by)_now_r)))
     574  $(foreach prop, $(call _INHERIT_JOIN_KEYWORDS,$(properties_deferred)),   $(eval $(def_inherit_one_$(by)_deferred)))
     575  $(foreach prop, $(call _INHERIT_JOIN_KEYWORDS,$(properties_deferred_l)), $(eval $(def_inherit_one_$(by)_deferred_l)))
     576  $(foreach prop, $(call _INHERIT_JOIN_KEYWORDS,$(properties_deferred_r)), $(eval $(def_inherit_one_$(by)_deferred_r)))
    386577
    387578  # Mark the target as done.
     
    394585 endif
    395586endif
     587
     588# Keyword inheritance.
     589$(foreach prefix_keyword, $(join $(_KEYWORDS_PREFIX), $(addprefix :,$(_KEYWORDS_EXTENDS))), $(eval $(value def_inherit_keyword)))
     590
    396591endef # def_inherit
    397 
    398 
    399 ##
    400 # Function for $(call)'ing.
    401 # @param    1   trg                   Object to consider for inheriting.
    402 # @param    2   src_prefix            What to prefix the value found in EXTENDS with to get the object.
    403 # @param    3   properties            List of the properties with straight expansion.
    404 # @param    4   properties_now_l      List of the properties with immediate expansion, accumulating on the left side.
    405 # @param    5   properties_now_r      List of the properties with immediate expansion, accumulating on the right side.
    406 # @param    6   properties_deferred   List of the properties with deferred expansion (e.g. function), non-accumulative .
    407 # @param    7   properties_deferred_l List of the properties with deferred expansion (e.g. function), accumulating on the left side.
    408 # @param    8   properties_deferred_r List of the properties with deferred expansion (e.g. function), accumulating on the right side.
    409 define fn_inherit
    410 src_prefix := $(2)
    411 properties := $(3)
    412 properties_now_l := $(4)
    413 properties_now_r := $(5)
    414 properties_deferred := $(6)
    415 properties_deferred_l := $(7)
    416 properties_deferred_r := $(8)
    417 $(foreach trg, $(1),$(eval $(value def_inherit)))
    418 endef
    419 
    420592
    421593
     
    493665
    494666# Drop duplicate values.
     667# WARNING! These list might not include keywords only involved in inheritance.
    495668_BLD_TYPES   := $(sort $(_BLD_TYPES))
    496669_BLD_TARGETS := $(sort $(_BLD_TARGETS))
     
    498671_BLD_CPUS    := $(sort $(_BLD_CPUS))
    499672
    500 # Construct all the possible keywords.
    501 _KEYWORDS := $(_BLD_TYPES) $(_BLD_TARGETS) $(_BLD_ARCHES) $(_BLD_CPUS) \
    502         $(foreach bld_trg,$(_BLD_TARGETS),$(addprefix $(bld_trg).,$(_BLD_ARCHES)))
    503 
    504 # Look for keywords which extends others and order them.
    505 _KEYWORDS_ORDERED :=
     673## Look for keywords which extends others and order them.
     674# @param    keyword
     675# @param    prefix
     676# @param    valid
    506677define def_keyword_ordering
     678# Check for EXTENDS, fix and validate it if found.
    507679src := $(strip $($(prefix)_$(keyword)_EXTENDS))
    508680ifneq ($(src),)
    509681 ifndef $(prefix)_$(keyword)_EXTENDS_STATUS_
    510   $(prefix)_$(keyword)_EXTENDS_STATUS_ := 0
    511 
    512   # Validate src.
    513682  ifn1of ($(src), $(valid))
    514683   $(error kBuild: $(keyword) tries to extend unknown keyword '$(src)'! (known = $(valid)))
    515684  endif
    516685
    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.
     686  # Recursivly process the parent (src).
    519687  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
     688   $(prefix)_$(keyword)_EXTENDS_STATUS_ := 0
     689   # 'foreach' will create 'keyword' in a new variable context hiding
     690   # out current variable. 'src' OTOH will be overwritten.
     691   $(foreach keyword, $(src), $(eval $(value def_keyword_ordering)))
     692   src := $(strip $($(prefix)_$(keyword)_EXTENDS))
    533693  endif
    534694
    535   # Check EXTENDS_BY.
    536   by = $(strip $($(trg)_EXTENDS_BY))
     695  # Check and strip EXTENDS_BY.
     696  by = $(strip $($(prefix)_$(keyword)_EXTENDS_BY))
    537697  ifeq ($(by),)
    538698   by = overriding
     
    541701  endif
    542702
     703  # Update the attributes with stripped
     704  $(prefix)_$(keyword)_EXTENDS_BY := $(by)
     705  $(prefix)_$(keyword)_EXTENDS := $(src)
     706
    543707  # Add it to the list and mark it as done.
    544   _KEYWORDS_ORDERED += $(keyword)
     708  _KEYWORDS_EXTENDS += $(keyword)
     709  _KEYWORDS_PREFIX  += $(prefix)
    545710  $(prefix)_$(keyword)_EXTENDS_STATUS_ := 42
    546711 else
     
    550715  endif
    551716 endif
    552 endif
    553 
    554 endef
     717else
     718 # Add it to the ordered list and mark it as done.
     719 _KEYWORDS_ORDERED += $(keyword)
     720 $(prefix)_$(src)_EXTENDS_STATUS_ := 42
     721endif
     722endef # def_keyword_ordering
     723
     724# Look for keywords which extends others and their parents, and from this
     725# construct two lists.
     726_KEYWORDS_ORDERED :=
     727_KEYWORDS_EXTENDS :=
     728_KEYWORDS_PREFIX  :=
    555729
    556730prefix := BLD_TYPE
    557731valid := $(KBUILD_BLD_TYPES)
    558 $(foreach keyword, $(_BLD_TYPES) , $(eval $(value def_keyword_ordering)))
     732$(foreach keyword, $(_BLD_TYPES)  , $(eval $(value def_keyword_ordering)))
     733
     734prefix := BLD_TRG
     735valid := $(KBUILD_OSES)
     736$(foreach keyword, $(_BLD_TARGETS), $(eval $(value def_keyword_ordering)))
    559737
    560738prefix := BLD_ARCH
    561739valid := $(KBUILD_ARCHES)
    562 $(foreach keyword, $(_BLD_ARCHES), $(eval $(value def_keyword_ordering)))
     740$(foreach keyword, $(_BLD_ARCHES) , $(eval $(value def_keyword_ordering)))
    563741
    564742prefix := BLD_CPU
    565743valid := $(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))
     744$(foreach keyword, $(_BLD_CPUS)   , $(eval $(value def_keyword_ordering)))
     745
     746## @todo Inherit bld_trg.bld_arch for too?
     747
     748# Construct all the possible keywords.
     749_KEYWORDS := $(_KEYWORDS_ORDERED) $(_KEYWORDS_EXTENDS) \
     750        $(foreach bld_trg,$(_BLD_TARGETS),$(addprefix $(bld_trg).,$(_BLD_ARCHES)))
    570751
    571752ifdef KBUILD_PROFILE_SELF
     
    591772properties_deferred_r :=
    592773
    593 ## combines the specified properties $(1) with the $(_KEYWORDS).
    594 _COMB_KEY_PROP = $(1)  $(foreach keyword,$(_KEYWORDS), $(addsuffix .$(keyword), $(1)))
    595 
    596774# Fetches.
    597 properties          := $(call _COMB_KEY_PROP,$(PROPS_FETCHES_SINGLE))
    598 properties_now_l    := $(call _COMB_KEY_PROP,$(PROPS_FETCHES_ACCUMULATE_L))
    599 properties_now_r    := $(call _COMB_KEY_PROP,$(PROPS_FETCHES_ACCUMULATE_R))
    600 properties_deferred := $(call _COMB_KEY_PROP,$(PROPS_FETCHES_DEFERRED))
     775properties          := $(PROPS_FETCHES_SINGLE)
     776properties_now_l    := $(PROPS_FETCHES_ACCUMULATE_L)
     777properties_now_r    := $(PROPS_FETCHES_ACCUMULATE_R)
     778properties_deferred := $(PROPS_FETCHES_DEFERRED)
    601779$(foreach trg, $(_ALL_FETCHES),$(eval $(value def_inherit)))
    602780
    603781## Patches. - not implemented yet.
    604 #properties          := $(call _COMB_KEY_PROP,$(PROPS_PATCHES_SINGLE))
    605 #properties_now_l    := $(call _COMB_KEY_PROP,$(PROPS_PATCHES_ACCUMULATE_L))
    606 #properties_now_r    := $(call _COMB_KEY_PROP,$(PROPS_PATCHES_ACCUMULATE_R))
    607 #properties_deferred := $(call _COMB_KEY_PROP,$(PROPS_PATCHES_DEFERRED))
     782#properties          := $(PROPS_PATCHES_SINGLE)
     783#properties_now_l    := $(PROPS_PATCHES_ACCUMULATE_L)
     784#properties_now_r    := $(PROPS_PATCHES_ACCUMULATE_R)
     785#properties_deferred := $(PROPS_PATCHES_DEFERRED)
    608786#$(foreach trg, $(_ALL_PATCHES),$(eval $(value def_inherit)))
    609787
    610788# Programs and build programs.
    611 properties          := $(call _COMB_KEY_PROP,$(PROPS_PROGRAMS_SINGLE))
    612 properties_now_l    := $(call _COMB_KEY_PROP,$(PROPS_PROGRAMS_ACCUMULATE_L))
    613 properties_now_r    := $(call _COMB_KEY_PROP,$(PROPS_PROGRAMS_ACCUMULATE_R))
    614 properties_deferred := $(call _COMB_KEY_PROP,$(PROPS_PROGRAMS_DEFERRED))
     789properties          := $(PROPS_PROGRAMS_SINGLE)
     790properties_now_l    := $(PROPS_PROGRAMS_ACCUMULATE_L)
     791properties_now_r    := $(PROPS_PROGRAMS_ACCUMULATE_R)
     792properties_deferred := $(PROPS_PROGRAMS_DEFERRED)
    615793$(foreach trg, $(_ALL_BLDPROGS) $(_ALL_PROGRAMS),$(eval $(value def_inherit)))
    616794
    617795# Libraries and import libraries.
    618 properties          := $(call _COMB_KEY_PROP,$(PROPS_LIBRARIES_SINGLE))
    619 properties_now_l    := $(call _COMB_KEY_PROP,$(PROPS_LIBRARIES_ACCUMULATE_L))
    620 properties_now_r    := $(call _COMB_KEY_PROP,$(PROPS_LIBRARIES_ACCUMULATE_R))
    621 properties_deferred := $(call _COMB_KEY_PROP,$(PROPS_LIBRARIES_DEFERRED))
     796properties          := $(PROPS_LIBRARIES_SINGLE)
     797properties_now_l    := $(PROPS_LIBRARIES_ACCUMULATE_L)
     798properties_now_r    := $(PROPS_LIBRARIES_ACCUMULATE_R)
     799properties_deferred := $(PROPS_LIBRARIES_DEFERRED)
    622800if1of ($(BUILD_TARGET), nt os2 win)
    623801 $(foreach trg, $(_ALL_LIBRARIES) $(_ALL_IMPORT_LIBS),$(eval $(value def_inherit)))
     
    627805
    628806# DLLs.
    629 properties          := $(call _COMB_KEY_PROP,$(PROPS_DLLS_SINGLE))
    630 properties_now_l    := $(call _COMB_KEY_PROP,$(PROPS_DLLS_ACCUMULATE_L))
    631 properties_now_r    := $(call _COMB_KEY_PROP,$(PROPS_DLLS_ACCUMULATE_R))
    632 properties_deferred := $(call _COMB_KEY_PROP,$(PROPS_DLLS_DEFERRED))
     807properties          := $(PROPS_DLLS_SINGLE)
     808properties_now_l    := $(PROPS_DLLS_ACCUMULATE_L)
     809properties_now_r    := $(PROPS_DLLS_ACCUMULATE_R)
     810properties_deferred := $(PROPS_DLLS_DEFERRED)
    633811if1of ($(BUILD_TARGET), nt os2 win)
    634812 $(foreach trg, $(_ALL_DLLS),$(eval $(value def_inherit)))
     
    638816
    639817# System modules.
    640 properties          := $(call _COMB_KEY_PROP,$(PROPS_SYSMODS_SINGLE))
    641 properties_now_l    := $(call _COMB_KEY_PROP,$(PROPS_SYSMODS_ACCUMULATE_L))
    642 properties_now_r    := $(call _COMB_KEY_PROP,$(PROPS_SYSMODS_ACCUMULATE_R))
    643 properties_deferred := $(call _COMB_KEY_PROP,$(PROPS_SYSMODS_DEFERRED))
     818properties          := $(PROPS_SYSMODS_SINGLE)
     819properties_now_l    := $(PROPS_SYSMODS_ACCUMULATE_L)
     820properties_now_r    := $(PROPS_SYSMODS_ACCUMULATE_R)
     821properties_deferred := $(PROPS_SYSMODS_DEFERRED)
    644822$(foreach trg, $(_ALL_SYSMODS),$(eval $(value def_inherit)))
    645823
    646824# Installs.
    647 properties          := $(call _COMB_KEY_PROP,$(PROPS_INSTALLS_SINGLE))
    648 properties_now_l    := $(call _COMB_KEY_PROP,$(PROPS_INSTALLS_ACCUMULATE_L))
    649 properties_now_r    := $(call _COMB_KEY_PROP,$(PROPS_INSTALLS_ACCUMULATE_R))
    650 properties_deferred := $(call _COMB_KEY_PROP,$(PROPS_INSTALLS_DEFERRED))
     825properties          := $(PROPS_INSTALLS_SINGLE)
     826properties_now_l    := $(PROPS_INSTALLS_ACCUMULATE_L)
     827properties_now_r    := $(PROPS_INSTALLS_ACCUMULATE_R)
     828properties_deferred := $(PROPS_INSTALLS_DEFERRED)
    651829$(foreach trg, $(_ALL_INSTALLS),$(eval $(value def_inherit)))
    652830
     
    673851properties_now_l :=
    674852properties_now_r :=
    675 properties_deferred   := $(call _COMB_KEY_PROP,$(PROPS_SINGLE) $(PROPS_DEFERRED))
    676 properties_deferred_l := $(call _COMB_KEY_PROP,$(PROPS_ACCUMULATE_L))
    677 properties_deferred_r := $(call _COMB_KEY_PROP,$(PROPS_ACCUMULATE_R))
     853properties_deferred   := $(PROPS_SINGLE) $(PROPS_DEFERRED)
     854properties_deferred_l := $(PROPS_ACCUMULATE_L)
     855properties_deferred_r := $(PROPS_ACCUMULATE_R)
    678856$(foreach trg, $(addprefix TEMPLATE_,$(_TEMPLATES)),$(eval $(value def_inherit)))
    679857
     
    8781056ifdef KBUILD_PROFILE_SELF
    8791057 _KBUILD_TS_NOW := $(nanots )
    880  $(info prof: $(int-sub $(_KBUILD_TS_NOW), $(_KBUILD_TS_HEADER_START)) - $(int-sub $(_KBUILD_TS_NOW), $(_KBUILD_TS_PREV)) - done common inheritance)
     1058 $(info prof: $(int-sub $(_KBUILD_TS_NOW), $(_KBUILD_TS_HEADER_START)) - $(int-sub $(_KBUILD_TS_NOW), $(_KBUILD_TS_PREV)) - done template/target expansion)
    8811059 _KBUILD_TS_PREV := $(_KBUILD_TS_NOW)
    8821060endif
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette