# $Id: gnumake-footer.kmk 782 2007-01-24 20:19:57Z bird $ ## @file # # kBuild - Additional footer for use when bootstrapping kBuild using Vanilla GNU Make. # # Copyright (c) 2004-2007 knut st. osmundsen # # # This file is part of kBuild. # # kBuild is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # kBuild is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with kBuild; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ## Converts an relative path to an absolute path using the given CWD. # @returns absolute path. # @param $1 The path to fixup. # @param $2 The CWD to use. abspathex = $(foreach _fix_path,$1\ ,$(if $(subst :$(call no-root-slash,$(call no-drive,$(_fix_path))):,,:$(_fix_path):),$(_fix_path),$(abspath $2/$(_fix_path)))) ## Figure out the tool for a source # @param target source file # @param source normalized main target # @param type tooltype # @param bld_trg build target. # @param bld_trg_arch build target architecture. # @remark Obsoleted by kBuild helpers in kmk. Only required for gmake compatbility. _SOURCE_TOOL = $(strip $(firstword \ $($(target)_$(source)_$(type)TOOL.$(bld_trg).$(bld_trg_arch)) \ $($(target)_$(source)_$(type)TOOL.$(bld_trg)) \ $($(target)_$(source)_$(type)TOOL) \ $($(target)_$(source)_TOOL.$(bld_trg).$(bld_trg_arch)) \ $($(target)_$(source)_TOOL.$(bld_trg)) \ $($(target)_$(source)_TOOL) \ $($(source)_$(type)TOOL.$(bld_trg).$(bld_trg_arch)) \ $($(source)_$(type)TOOL.$(bld_trg)) \ $($(source)_$(type)TOOL) \ $($(source)_TOOL.$(bld_trg).$(bld_trg_arch)) \ $($(source)_TOOL.$(bld_trg)) \ $($(source)_TOOL) \ $($(target)_$(type)TOOL.$(bld_trg).$(bld_trg_arch)) \ $($(target)_$(type)TOOL.$(bld_trg)) \ $($(target)_$(type)TOOL) \ $($(target)_TOOL.$(bld_trg).$(bld_trg_arch)) \ $($(target)_TOOL.$(bld_trg)) \ $($(target)_TOOL) \ $($(type)TOOL.$(bld_trg).$(bld_trg_arch)) \ $($(type)TOOL.$(bld_trg)) \ $($(type)TOOL) \ $(TOOL.$(bld_trg).$(bld_trg_arch)) \ $(TOOL.$(bld_trg)) \ $(TOOL) )) ## Figure out where to put object files. # @param $1 source file # @param $2 normalized main target # @remark There are two major hacks here: # 1. Source files in the output directory are translated into a gen/ subdir. # 2. Catch anyone specifying $(PATH_SUB_CURRENT)/sourcefile.c. # @remark obsoleted by kBuild helpers in kmk. Only required for gmake compatbility. _OBJECT_BASE = $(PATH_TARGET)/$(2)/$(call no-root-slash,$(call no-drive,$(basename \ $(patsubst $(PATH_ROOT)/%,%,$(patsubst $(PATH_SUB_CURRENT)/%,%,$(patsubst $(PATH_TARGET)/$(2)/%,gen/%,$(1))))))) ## Generic macro for processing C, C++ and Assembly sources. # @param $(target) Normalized target name. # @param $(source) Source file name. # @param $(type) Source type. {C,CXX,AS} # @param bld_type Build type. # @param bld_trg Build target. # @param bld_trg_arch Build target arch. # @param bld_trg_cpu Build target cpu. # @remark obsoleted by kBuild helpers in kmk. Only required for limited gmake compatbility. # define def_target_source_c_cpp_asm_rc_old #$ (warning dbg: def_target_source_c_cpp_asm_rc_old: source='$(source)' target='$(target)' type='$(type)') tool := $(call _SOURCE_TOOL,$(source),$(target),$(type)) outbase := $(call _OBJECT_BASE,$(source),$(target)) PATH_$(target)_$(source) := $(patsubst %/,%,$(dir $(outbase))) dirdep := $(call DIRDEP,$(dir $(outbase))) defs :=\ $(TOOL_$(tool)_DEFS)\ $(TOOL_$(tool)_DEFS.$(bld_type))\ $(TOOL_$(tool)_DEFS.$(bld_trg))\ $(TOOL_$(tool)_DEFS.$(bld_trg_arch))\ $(TOOL_$(tool)_DEFS.$(bld_trg).$(bld_trg_arch))\ $(TOOL_$(tool)_DEFS.$(bld_trg_cpu))\ $(TOOL_$(tool)_$(type)DEFS)\ $(TOOL_$(tool)_$(type)DEFS.$(bld_type))\ $(foreach sdk, $(SDKS.$(bld_trg).$(bld_trg_arch)) \ $(SDKS.$(bld_trg_arch)) \ $(SDKS.$(bld_trg)) \ $(SDKS.$(bld_type)) \ $(SDKS),\ $(SDK_$(sdk)_DEFS)\ $(SDK_$(sdk)_DEFS.$(bld_type))\ $(SDK_$(sdk)_DEFS.$(bld_trg))\ $(SDK_$(sdk)_DEFS.$(bld_trg_arch))\ $(SDK_$(sdk)_DEFS.$(bld_trg).$(bld_trg_arch))\ $(SDK_$(sdk)_DEFS.$(bld_trg_cpu))\ $(SDK_$(sdk)_$(type)DEFS)\ $(SDK_$(sdk)_$(type)DEFS.$(bld_type))\ $(SDK_$(sdk)_$(type)DEFS.$(bld_trg))\ $(SDK_$(sdk)_$(type)DEFS.$(bld_trg_arch))\ $(SDK_$(sdk)_$(type)DEFS.$(bld_trg).$(bld_trg_arch))\ $(SDK_$(sdk)_$(type)DEFS.$(bld_trg_cpu)))\ $(DEFS)\ $(DEFS.$(bld_type))\ $(DEFS.$(bld_trg))\ $(DEFS.$(bld_trg_arch))\ $(DEFS.$(bld_trg).$(bld_trg_arch))\ $(DEFS.$(bld_trg_cpu))\ $($(type)DEFS)\ $($(type)DEFS.$(bld_type))\ $($(type)DEFS.$(bld_trg))\ $($(type)DEFS.$(bld_trg_arch))\ $($(type)DEFS.$(bld_trg).$(bld_trg_arch))\ $($(type)DEFS.$(bld_trg_cpu))\ $(foreach sdk, $($(target)_SDKS.$(bld_trg).$(bld_trg_arch)) \ $($(target)_SDKS.$(bld_trg_arch)) \ $($(target)_SDKS.$(bld_trg)) \ $($(target)_SDKS.$(bld_type)) \ $($(target)_SDKS),\ $(SDK_$(sdk)_DEFS)\ $(SDK_$(sdk)_DEFS.$(bld_type))\ $(SDK_$(sdk)_DEFS.$(bld_trg))\ $(SDK_$(sdk)_DEFS.$(bld_trg_arch))\ $(SDK_$(sdk)_DEFS.$(bld_trg).$(bld_trg_arch))\ $(SDK_$(sdk)_DEFS.$(bld_trg_cpu))\ $(SDK_$(sdk)_$(type)DEFS)\ $(SDK_$(sdk)_$(type)DEFS.$(bld_type))\ $(SDK_$(sdk)_$(type)DEFS.$(bld_trg))\ $(SDK_$(sdk)_$(type)DEFS.$(bld_trg_arch))\ $(SDK_$(sdk)_$(type)DEFS.$(bld_trg).$(bld_trg_arch))\ $(SDK_$(sdk)_$(type)DEFS.$(bld_trg_cpu)))\ $($(target)_DEFS)\ $($(target)_DEFS.$(bld_type))\ $($(target)_DEFS.$(bld_trg))\ $($(target)_DEFS.$(bld_trg_arch))\ $($(target)_DEFS.$(bld_trg).$(bld_trg_arch))\ $($(target)_DEFS.$(bld_trg_cpu))\ $($(target)_$(type)DEFS)\ $($(target)_$(type)DEFS.$(bld_type))\ $($(target)_$(type)DEFS.$(bld_trg))\ $($(target)_$(type)DEFS.$(bld_trg_arch))\ $($(target)_$(type)DEFS.$(bld_trg).$(bld_trg_arch))\ $($(target)_$(type)DEFS.$(bld_trg_cpu))\ $(foreach sdk, $($(source)_SDKS.$(bld_trg).$(bld_trg_arch)) \ $($(source)_SDKS.$(bld_trg_arch)) \ $($(source)_SDKS.$(bld_trg)) \ $($(source)_SDKS.$(bld_type)) \ $($(source)_SDKS),\ $(SDK_$(sdk)_DEFS)\ $(SDK_$(sdk)_DEFS.$(bld_type))\ $(SDK_$(sdk)_DEFS.$(bld_trg))\ $(SDK_$(sdk)_DEFS.$(bld_trg_arch))\ $(SDK_$(sdk)_DEFS.$(bld_trg).$(bld_trg_arch))\ $(SDK_$(sdk)_DEFS.$(bld_trg_cpu))\ $(SDK_$(sdk)_$(type)DEFS)\ $(SDK_$(sdk)_$(type)DEFS.$(bld_type))\ $(SDK_$(sdk)_$(type)DEFS.$(bld_trg))\ $(SDK_$(sdk)_$(type)DEFS.$(bld_trg_arch))\ $(SDK_$(sdk)_$(type)DEFS.$(bld_trg).$(bld_trg_arch))\ $(SDK_$(sdk)_$(type)DEFS.$(bld_trg_cpu)))\ $($(source)_DEFS)\ $($(source)_DEFS.$(bld_type))\ $($(source)_DEFS.$(bld_trg))\ $($(source)_DEFS.$(bld_trg_arch))\ $($(source)_DEFS.$(bld_trg).$(bld_trg_arch))\ $($(source)_DEFS.$(bld_trg_cpu))\ $($(source)_$(type)DEFS)\ $($(source)_$(type)DEFS.$(bld_type))\ $($(source)_$(type)DEFS.$(bld_trg))\ $($(source)_$(type)DEFS.$(bld_trg_arch))\ $($(source)_$(type)DEFS.$(bld_trg).$(bld_trg_arch))\ $($(source)_$(type)DEFS.$(bld_trg_cpu))\ $(foreach sdk, $($(target)_$(source)_SDKS.$(bld_trg).$(bld_trg_arch)) \ $($(target)_$(source)_SDKS.$(bld_trg_arch)) \ $($(target)_$(source)_SDKS.$(bld_trg)) \ $($(target)_$(source)_SDKS.$(bld_type)) \ $($(target)_$(source)_SDKS),\ $(SDK_$(sdk)_DEFS)\ $(SDK_$(sdk)_DEFS.$(bld_type))\ $(SDK_$(sdk)_DEFS.$(bld_trg))\ $(SDK_$(sdk)_DEFS.$(bld_trg_arch))\ $(SDK_$(sdk)_DEFS.$(bld_trg).$(bld_trg_arch))\ $(SDK_$(sdk)_DEFS.$(bld_trg_cpu))\ $(SDK_$(sdk)_$(type)DEFS)\ $(SDK_$(sdk)_$(type)DEFS.$(bld_type))\ $(SDK_$(sdk)_$(type)DEFS.$(bld_trg))\ $(SDK_$(sdk)_$(type)DEFS.$(bld_trg_arch))\ $(SDK_$(sdk)_$(type)DEFS.$(bld_trg).$(bld_trg_arch))\ $(SDK_$(sdk)_$(type)DEFS.$(bld_trg_cpu)))\ $($(target)_$(source)_DEFS)\ $($(target)_$(source)_DEFS.$(bld_type))\ $($(target)_$(source)_DEFS.$(bld_trg))\ $($(target)_$(source)_DEFS.$(bld_trg_arch))\ $($(target)_$(source)_DEFS.$(bld_trg).$(bld_trg_arch))\ $($(target)_$(source)_DEFS.$(bld_trg_cpu))\ $($(target)_$(source)_$(type)DEFS)\ $($(target)_$(source)_$(type)DEFS.$(bld_type))\ $($(target)_$(source)_$(type)DEFS.$(bld_trg))\ $($(target)_$(source)_$(type)DEFS.$(bld_trg_arch))\ $($(target)_$(source)_$(type)DEFS.$(bld_trg).$(bld_trg_arch))\ $($(target)_$(source)_$(type)DEFS.$(bld_trg_cpu)) incs :=\ $($(target)_$(source)_$(type)INCS.$(bld_trg_cpu))\ $($(target)_$(source)_$(type)INCS.$(bld_trg).$(bld_trg_arch))\ $($(target)_$(source)_$(type)INCS.$(bld_trg_arch))\ $($(target)_$(source)_$(type)INCS.$(bld_trg))\ $($(target)_$(source)_$(type)INCS.$(bld_type))\ $($(target)_$(source)_$(type)INCS)\ $($(target)_$(source)_INCS.$(bld_trg_cpu))\ $($(target)_$(source)_INCS.$(bld_trg).$(bld_trg_arch))\ $($(target)_$(source)_INCS.$(bld_trg_arch))\ $($(target)_$(source)_INCS.$(bld_trg))\ $($(target)_$(source)_INCS.$(bld_type))\ $($(target)_$(source)_INCS)\ $(foreach sdk, $($(target)_$(source)_SDKS.$(bld_trg).$(bld_trg_arch)) \ $($(target)_$(source)_SDKS.$(bld_trg_arch)) \ $($(target)_$(source)_SDKS.$(bld_trg)) \ $($(target)_$(source)_SDKS.$(bld_type)) \ $($(target)_$(source)_SDKS),\ $(SDK_$(sdk)_$(type)INCS.$(bld_trg_cpu))\ $(SDK_$(sdk)_$(type)INCS.$(bld_trg).$(bld_trg_arch))\ $(SDK_$(sdk)_$(type)INCS.$(bld_trg_arch))\ $(SDK_$(sdk)_$(type)INCS.$(bld_trg))\ $(SDK_$(sdk)_$(type)INCS.$(bld_type))\ $(SDK_$(sdk)_$(type)INCS)\ $(SDK_$(sdk)_INCS.$(bld_trg_cpu))\ $(SDK_$(sdk)_INCS.$(bld_trg).$(bld_trg_arch))\ $(SDK_$(sdk)_INCS.$(bld_trg_arch))\ $(SDK_$(sdk)_INCS.$(bld_trg))\ $(SDK_$(sdk)_INCS.$(bld_type))\ $(SDK_$(sdk)_INCS))\ $($(source)_$(type)INCS.$(bld_trg_cpu))\ $($(source)_$(type)INCS.$(bld_trg).$(bld_trg_arch))\ $($(source)_$(type)INCS.$(bld_trg_arch))\ $($(source)_$(type)INCS.$(bld_trg))\ $($(source)_$(type)INCS.$(bld_type))\ $($(source)_$(type)INCS)\ $($(source)_INCS.$(bld_trg_cpu))\ $($(source)_INCS.$(bld_trg).$(bld_trg_arch))\ $($(source)_INCS.$(bld_trg_arch))\ $($(source)_INCS.$(bld_trg))\ $($(source)_INCS.$(bld_type))\ $($(source)_INCS)\ $(foreach sdk, $($(source)_SDKS.$(bld_trg).$(bld_trg_arch)) \ $($(source)_SDKS.$(bld_trg_arch)) \ $($(source)_SDKS.$(bld_trg)) \ $($(source)_SDKS.$(bld_type)) \ $($(source)_SDKS),\ $(SDK_$(sdk)_$(type)INCS.$(bld_trg_cpu))\ $(SDK_$(sdk)_$(type)INCS.$(bld_trg).$(bld_trg_arch))\ $(SDK_$(sdk)_$(type)INCS.$(bld_trg_arch))\ $(SDK_$(sdk)_$(type)INCS.$(bld_trg))\ $(SDK_$(sdk)_$(type)INCS.$(bld_type))\ $(SDK_$(sdk)_$(type)INCS)\ $(SDK_$(sdk)_INCS.$(bld_trg_cpu))\ $(SDK_$(sdk)_INCS.$(bld_trg).$(bld_trg_arch))\ $(SDK_$(sdk)_INCS.$(bld_trg_arch))\ $(SDK_$(sdk)_INCS.$(bld_trg))\ $(SDK_$(sdk)_INCS.$(bld_type))\ $(SDK_$(sdk)_INCS))\ $($(target)_$(type)INCS.$(bld_trg_cpu))\ $($(target)_$(type)INCS.$(bld_trg).$(bld_trg_arch))\ $($(target)_$(type)INCS.$(bld_trg_arch))\ $($(target)_$(type)INCS.$(bld_trg))\ $($(target)_$(type)INCS.$(bld_type))\ $($(target)_$(type)INCS)\ $($(target)_INCS.$(bld_trg_cpu))\ $($(target)_INCS.$(bld_trg).$(bld_trg_arch))\ $($(target)_INCS.$(bld_trg_arch))\ $($(target)_INCS.$(bld_trg))\ $($(target)_INCS.$(bld_type))\ $($(target)_INCS)\ $(foreach sdk, $($(target)_SDKS.$(bld_trg).$(bld_trg_arch)) \ $($(target)_SDKS.$(bld_trg_arch)) \ $($(target)_SDKS.$(bld_trg)) \ $($(target)_SDKS.$(bld_type)) \ $($(target)_SDKS),\ $(SDK_$(sdk)_$(type)INCS.$(bld_trg_cpu))\ $(SDK_$(sdk)_$(type)INCS.$(bld_trg).$(bld_trg_arch))\ $(SDK_$(sdk)_$(type)INCS.$(bld_trg_arch))\ $(SDK_$(sdk)_$(type)INCS.$(bld_trg))\ $(SDK_$(sdk)_$(type)INCS.$(bld_type))\ $(SDK_$(sdk)_$(type)INCS)\ $(SDK_$(sdk)_INCS.$(bld_trg_cpu))\ $(SDK_$(sdk)_INCS.$(bld_trg).$(bld_trg_arch))\ $(SDK_$(sdk)_INCS.$(bld_trg_arch))\ $(SDK_$(sdk)_INCS.$(bld_trg))\ $(SDK_$(sdk)_INCS.$(bld_type))\ $(SDK_$(sdk)_INCS))\ $(INCS.$(bld_trg_cpu))\ $(INCS.$(bld_trg).$(bld_trg_arch))\ $(INCS.$(bld_trg_arch))\ $(INCS.$(bld_trg))\ $(INCS.$(bld_type))\ $(INCS)\ $(foreach sdk, $(SDKS.$(bld_trg).$(bld_trg_arch)) \ $(SDKS.$(bld_trg_arch)) \ $(SDKS.$(bld_trg)) \ $(SDKS.$(bld_type)) \ $(SDKS),\ $(SDK_$(sdk)_$(type)INCS.$(bld_trg_cpu))\ $(SDK_$(sdk)_$(type)INCS.$(bld_trg).$(bld_trg_arch))\ $(SDK_$(sdk)_$(type)INCS.$(bld_trg_arch))\ $(SDK_$(sdk)_$(type)INCS.$(bld_trg))\ $(SDK_$(sdk)_$(type)INCS.$(bld_type))\ $(SDK_$(sdk)_$(type)INCS)\ $(SDK_$(sdk)_INCS.$(bld_trg_cpu))\ $(SDK_$(sdk)_INCS.$(bld_trg).$(bld_trg_arch))\ $(SDK_$(sdk)_INCS.$(bld_trg_arch))\ $(SDK_$(sdk)_INCS.$(bld_trg))\ $(SDK_$(sdk)_INCS.$(bld_type))\ $(SDK_$(sdk)_INCS))\ $(TOOL_$(tool)_$(type)INCS.$(bld_trg_cpu))\ $(TOOL_$(tool)_$(type)INCS.$(bld_trg).$(bld_trg_arch))\ $(TOOL_$(tool)_$(type)INCS.$(bld_trg_arch))\ $(TOOL_$(tool)_$(type)INCS.$(bld_trg))\ $(TOOL_$(tool)_$(type)INCS.$(bld_type))\ $(TOOL_$(tool)_$(type)INCS) flags :=\ $(TOOL_$(tool)_$(type)FLAGS)\ $(TOOL_$(tool)_$(type)FLAGS.$(bld_type))\ $(TOOL_$(tool)_$(type)FLAGS.$(bld_trg))\ $(TOOL_$(tool)_$(type)FLAGS.$(bld_trg_arch))\ $(TOOL_$(tool)_$(type)FLAGS.$(bld_trg).$(bld_trg_arch))\ $(TOOL_$(tool)_$(type)FLAGS.$(bld_trg_cpu))\ $($(type)FLAGS)\ $($(type)FLAGS.$(bld_type))\ $($(type)FLAGS.$(bld_trg))\ $($(type)FLAGS.$(bld_trg_arch))\ $($(type)FLAGS.$(bld_trg).$(bld_trg_arch))\ $($(type)FLAGS.$(bld_trg_cpu))\ $($(target)_$(type)FLAGS)\ $($(target)_$(type)FLAGS.$(bld_type))\ $($(target)_$(type)FLAGS.$(bld_trg))\ $($(target)_$(type)FLAGS.$(bld_trg_arch))\ $($(target)_$(type)FLAGS.$(bld_trg).$(bld_trg_arch))\ $($(target)_$(type)FLAGS.$(bld_trg_cpu))\ $($(source)_$(type)FLAGS)\ $($(source)_$(type)FLAGS.$(bld_type))\ $($(source)_$(type)FLAGS.$(bld_trg))\ $($(source)_$(type)FLAGS.$(bld_trg_arch))\ $($(source)_$(type)FLAGS.$(bld_trg).$(bld_trg_arch))\ $($(source)_$(type)FLAGS.$(bld_trg_cpu))\ $($(target)_$(source)_$(type)FLAGS)\ $($(target)_$(source)_$(type)FLAGS.$(bld_type))\ $($(target)_$(source)_$(type)FLAGS.$(bld_trg))\ $($(target)_$(source)_$(type)FLAGS.$(bld_trg_arch))\ $($(target)_$(source)_$(type)FLAGS.$(bld_trg).$(bld_trg_arch))\ $($(target)_$(source)_$(type)FLAGS.$(bld_trg_cpu)) # this isn't 100% in sync with kBuild, but it doesn't matter as it's only for gmake now. objsuff := $(firstword \ $($(target)_$(source)_OBJSUFF.$(bld_trg).$(bld_trg_arch))\ $($(target)_$(source)_OBJSUFF.$(bld_trg))\ $($(target)_$(source)_OBJSUFF)\ $($(source)_OBJSUFF.$(bld_trg).$(bld_trg_arch))\ $($(source)_OBJSUFF.$(bld_trg))\ $($(source)_OBJSUFF)\ $($(target)_OBJSUFF.$(bld_trg).$(bld_trg_arch))\ $($(target)_OBJSUFF.$(bld_trg))\ $($(target)_OBJSUFF)\ $(TOOL_$(tool)_$(type)OBJSUFF.$(bld_trg).$(bld_trg_arch))\ $(TOOL_$(tool)_$(type)OBJSUFF.$(bld_trg))\ $(TOOL_$(tool)_$(type)OBJSUFF)\ $(SUFF_OBJ)) obj := $(outbase)$(objsuff) deps := \ $($(target)_$(source)_DEPS)\ $($(target)_$(source)_DEPS.$(bld_type))\ $($(target)_$(source)_DEPS.$(bld_trg))\ $($(target)_$(source)_DEPS.$(bld_trg_arch))\ $($(target)_$(source)_DEPS.$(bld_trg).$(bld_trg_arch))\ $($(target)_$(source)_DEPS.$(bld_trg_cpu))\ $($(source)_DEPS)\ $($(source)_DEPS.$(bld_type))\ $($(source)_DEPS.$(bld_trg))\ $($(source)_DEPS.$(bld_trg_arch))\ $($(source)_DEPS.$(bld_trg).$(bld_trg_arch))\ $($(source)_DEPS.$(bld_trg_cpu))\ $($(target)_DEPS)\ $($(target)_DEPS.$(bld_type))\ $($(target)_DEPS.$(bld_trg))\ $($(target)_DEPS.$(bld_trg_arch))\ $($(target)_DEPS.$(bld_trg).$(bld_trg_arch))\ $($(target)_DEPS.$(bld_trg_cpu)) # dependencies dep := $(obj)$(SUFF_DEP) ifndef NO_COMPILE_CMDS_DEPS _DEPFILES_INCLUDED += $(dep) $(if $(wildcard $(dep)),$(eval include $(dep))) endif #$ (warning dbg: target=$(target) source=$(source) tool=$(tool) obj=$(obj) dep=$(dep) flags=$(flags) defs=$(defs) incs=$(incs) dirdep=$(dirdep) outbase=$(outbase) objsuff=$(objsuff) deps=$(deps)) ifndef TOOL_$(tool)_COMPILE_$(type)_CMDS $(warning kBuild: tools: \ 1 $($(target)_$(source)_$(type)TOOL.$(bld_trg).$(bld_trg_arch)) \ 2 $($(target)_$(source)_$(type)TOOL.$(bld_trg)) \ 3 $($(target)_$(source)_$(type)TOOL) \ 4 $($(target)_$(source)_TOOL.$(bld_trg).$(bld_trg_arch)) \ 5 $($(target)_$(source)_TOOL.$(bld_trg)) \ 6 $($(target)_$(source)_TOOL) \ 7 $($(target)_$(type)TOOL.$(bld_trg).$(bld_trg_arch)) \ 8 $($(target)_$(type)TOOL.$(bld_trg)) \ 9 $($(target)_$(type)TOOL) \ 10 $($(target)_TOOL.$(bld_trg).$(bld_trg_arch)) \ 11 $($(target)_TOOL.$(bld_trg)) \ 12 $($(target)_TOOL) \ 13 $($(source)_$(type)TOOL.$(bld_trg).$(bld_trg_arch)) \ 14 $($(source)_$(type)TOOL.$(bld_trg)) \ 15 $($(source)_$(type)TOOL) \ 16 $($(source)_TOOL.$(bld_trg).$(bld_trg_arch)) \ 17 $($(source)_TOOL.$(bld_trg)) \ 18 $($(source)_TOOL) \ 19 $($(type)TOOL.$(bld_trg).$(bld_trg_arch)) \ 20 $($(type)TOOL.$(bld_trg)) \ 21 $($(type)TOOL) \ 22 $(TOOL.$(bld_trg).$(bld_trg_arch)) \ 23 $(TOOL.$(bld_trg)) \ 24 $(TOOL) ) $(error kBuild: TOOL_$(tool)_COMPILE_$(type)_CMDS is not defined. source=$(source) target=$(target) ) endif # call the tool $(target)_$(source)_CMDS_ := $(TOOL_$(tool)_COMPILE_$(type)_CMDS) $(target)_$(source)_OUTPUT_ := $(TOOL_$(tool)_COMPILE_$(type)_OUTPUT) $(target)_$(source)_DEPEND_ := $(TOOL_$(tool)_COMPILE_$(type)_DEPEND) $(deps) $(source) $(target)_$(source)_DEPORD_ := $(TOOL_$(tool)_COMPILE_$(type)_DEPORD) $(dirdep) # generate the compile rule. $(eval $(def_target_source_rule)) _OUT_FILES += $($(target)_$(source)_OUTPUT_) $(target)_OBJS_ += $(obj) endef