VirtualBox

Changeset 828 in kBuild


Ignore:
Timestamp:
Feb 3, 2007 2:26:03 AM (18 years ago)
Author:
bird
Message:

Split the target list processing up into two passes so that it's possible to make use of the TARGET_xxxx and INSTARGET_xxxx variables in the properties of any other target.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kBuild/footer.kmk

    r827 r828  
    561561$(foreach sdk, $(_SDKS), $(eval $(value def_sdks_include_one)))
    562562
     563
     564
     565#
     566#
     567# Target lists - Pass 1
     568#
     569#       This pass is for defining variables that might be referenced in
     570#       properties of other targets.
     571#
     572#
     573
     574# Don't do anything for fetch targets (yet).
     575
     576##
     577# Link prolog for Pass 1.
     578#
     579# @param    $(target)           Normalized target name.
     580# @param    $(EXT)              EXE,DLL,SYS,LIB.
     581# @param    $(EXTPRE)           HOST or nothing.
     582# @param    $(definst)          The default _INST value.
     583# @param    $(tool_prefix)      LD or AR.
     584# @param    $(bld_trg_base_var) TARGET or PLATFORM.
     585define def_pass1_link_common
     586
     587bld_type    := $(firstword $($(target)_BLD_TYPE)     $(BUILD_TYPE))
     588bld_trg     := $(firstword $($(target)_BLD_TRG)      $(BUILD_$(bld_trg_base_var)))
     589bld_trg_arch:= $(firstword $($(target)_BLD_TRG_ARCH) $(BUILD_$(bld_trg_base_var)_ARCH))
     590bld_trg_cpu := $(firstword $($(target)_BLD_TRG_CPU)  $(BUILD_$(bld_trg_base_var)_CPU))
     591
     592tool := $(call _TARGET_TOOL,$(target),$(tool_prefix))
     593outbase := $(call TARGET_BASE,$(target),$(target))
     594ifndef PATH_$(target)
     595 PATH_$(target) := $(patsubst %/,%,$(dir $(outbase)))
     596else ifneq ($(PATH_$(target)),$(patsubst %/,%,$(dir $(outbase))))
     597  $(error kBuild internal error: PATH_$(target)=$(PATH_$(target)) expected $(patsubst %/,%,$(dir $(outbase))))
     598endif
     599ifeq ($(tool_prefix),AR) ## @todo fix this mess!
     600suff := $(firstword\
     601        $($(target)_$(EXT)SUFF.$(bld_trg).$(bld_trg_arch))\
     602        $($(target)_$(EXT)SUFF.$(bld_trg))\
     603        $($(target)_$(EXT)SUFF)\
     604        $(TOOL_$(tool)_$(tool_prefix)$(EXT)SUFF.$(bld_trg).$(bld_trg_arch))\
     605        $(TOOL_$(tool)_$(tool_prefix)$(EXT)SUFF.$(bld_trg))\
     606        $(TOOL_$(tool)_$(tool_prefix)$(EXT)SUFF)\
     607        $(SUFF_LIB))
     608else
     609suff := $(firstword \
     610        $($(target)_$(EXT)SUFF) \
     611        $($(target)_$(EXT)SUFF) \
     612        $(TOOL_$(tool)_$(tool_prefix)$(EXT)SUFF) \
     613        $($(EXTPRE)SUFF_$(EXT)))
     614endif
     615out := $(outbase)$(suff)
     616
     617# TARGET_*
     618TARGET_$(target) := $(out)
     619
     620# INSTARGET_*
     621ifndef $(target)_NOINST
     622INSTARGET_$(target) := $(patsubst %/,%/$(notdir $(out)), \
     623        $(if $($(target)_INST), $(addprefix $(PATH_INS)/,$($(target)_INST)), $(definst)/))
     624
     625else # NOINST
     626INSTARGET_$(target) :=
     627endif # NOINST
     628
     629endef
     630
     631
     632#
     633# BLDPROGS (Pass 1)
     634#
     635define def_pass1_bldprog
     636# set NOINST if not forced installation before doing the usual stuff.
     637ifndef $(target)_INST
     638$(target)_NOINST := 1
     639endif
     640$(eval $(value def_pass1_link_common))
     641endef
     642
     643EXT     := EXE
     644EXTPRE  := HOST
     645definst := $(PATH_BIN)
     646tool_prefix := LD
     647bld_trg_base_var := PLATFORM
     648$(foreach target, $(BLDPROGS) $(BLDPROGS.$(BUILD_PLATFORM)) $(BLDPROGS.$(BUILD_PLATFORM).$(BUILD_PLATFORM_ARCH)), \
     649        $(eval $(value def_pass1_bldprog)))
     650
     651
     652#
     653# LIBRARIES (Pass 1)
     654#
     655EXT     := LIB
     656EXTPRE  :=
     657definst := $(PATH_LIB)
     658tool_prefix := AR
     659bld_trg_base_var := TARGET
     660$(foreach target, $(LIBRARIES) $(LIBRARIES.$(BUILD_TARGET)) $(LIBRARIES.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)), \
     661        $(eval $(value def_pass1_link_common)))
     662
     663
     664#
     665# DLLS  (Pass 1)
     666#
     667EXT     := DLL
     668EXTPRE  :=
     669definst := $(PATH_DLL)
     670tool_prefix := LD
     671bld_trg_base_var := TARGET
     672$(foreach target, $(DLLS) $(DLLS.$(BUILD_TARGET)) $(DLLS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)), \
     673        $(eval $(value def_pass1_link_common)))
     674
     675
     676#
     677# IMPORT LIBRARIES (Pass 1)
     678#
     679#   - On OS/2 and windows these are libraries.
     680#   - On other platforms they are fake DLLs.
     681#
     682ifeq ($(filter-out nt os2 win win64 win32,$(BUILD_TARGET)),)
     683 EXT     := LIB
     684 EXTPRE  :=
     685 definst := $(PATH_LIB)
     686 tool_prefix := AR
     687 bld_trg_base_var := TARGET
     688 $(foreach target, $(IMPORT_LIBS) $(IMPORT_LIBS.$(BUILD_TARGET)) $(IMPORT_LIBS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)), \
     689        $(eval $(value def_pass1_lib)))
     690else
     691 EXT     := DLL
     692 EXTPRE  :=
     693 definst := $(PATH_DLL)
     694 tool_prefix := LD
     695 bld_trg_base_var := TARGET
     696 $(foreach target, $(IMPORT_LIBS) $(IMPORT_LIBS.$(BUILD_TARGET)) $(IMPORT_LIBS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)), \
     697        $(eval $(value def_pass1_link_common)))
     698endif
     699
     700
     701#
     702# PROGRAMS (Pass 1)
     703#
     704EXT     := EXE
     705EXTPRE  :=
     706definst := $(PATH_BIN)
     707tool_prefix := LD
     708bld_trg_base_var := TARGET
     709$(foreach target, $(PROGRAMS) $(PROGRAMS.$(BUILD_TARGET)) $(PROGRAMS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)), \
     710        $(eval $(value def_pass1_link_common)))
     711
     712
     713#
     714# SYSMODS (Pass 1)
     715#
     716EXT     := SYS
     717EXTPRE  :=
     718definst := $(PATH_SYS)
     719tool_prefix := LD
     720bld_trg_base_var := TARGET
     721$(foreach target, $(SYSMODS) $(SYSMODS.$(BUILD_TARGET)) $(SYSMODS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)), \
     722        $(eval $(value def_pass1_link_common)))
     723
     724
     725#
     726# INSTALLS (Pass 1)
     727#       Note! INSTARGET_* for INSTALLS aren't available until later.
     728#
     729define def_pass1_install
     730bld_type  := $(firstword $($(target)_BLD_TYPE)     $(BUILD_TYPE))
     731bld_trg   := $(firstword $($(target)_BLD_TRG)      $(BUILD_TARGET))
     732bld_trg_arch:= $(firstword $($(target)_BLD_TRG_ARCH) $(BUILD_TARGET_ARCH))
     733bld_trg_cpu := $(firstword $($(target)_BLD_TRG_CPU)  $(BUILD_TARGET_CPU))
     734# TARGET_*
     735TARGET_$(target) := $(PATH_TARGET)/$(target).ins
     736# INSTARGET_ later.
     737endef
     738$(foreach target, $(INSTALLS) $(INSTALLS.$(BUILD_TARGET)) $(INSTALLS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH)), \
     739        $(eval $(value def_pass1_install)))
     740
     741
     742
     743
     744#
     745#
     746# Target lists - Pass 2
     747#
     748#
    563749
    564750
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