1ceec4c87SMasahiro Yamada#### 2ceec4c87SMasahiro Yamada# kbuild: Generic definitions 3ceec4c87SMasahiro Yamada 4ceec4c87SMasahiro Yamada# Convenient variables 5ceec4c87SMasahiro Yamadacomma := , 6598e2d33SMasahiro Yamadaquote := " 7ceec4c87SMasahiro Yamadasquote := ' 8ceec4c87SMasahiro Yamadaempty := 9ceec4c87SMasahiro Yamadaspace := $(empty) $(empty) 10ceec4c87SMasahiro Yamada 11ceec4c87SMasahiro Yamada### 12ceec4c87SMasahiro Yamada# Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o 13ceec4c87SMasahiro Yamadadot-target = $(dir $@).$(notdir $@) 14ceec4c87SMasahiro Yamada 15ceec4c87SMasahiro Yamada### 16ceec4c87SMasahiro Yamada# The temporary file to save gcc -MD generated dependencies must not 17ceec4c87SMasahiro Yamada# contain a comma 18ceec4c87SMasahiro Yamadadepfile = $(subst $(comma),_,$(dot-target).d) 19ceec4c87SMasahiro Yamada 20ceec4c87SMasahiro Yamada### 21ceec4c87SMasahiro Yamada# filename of target with directory and extension stripped 22ceec4c87SMasahiro Yamadabasetarget = $(basename $(notdir $@)) 23ceec4c87SMasahiro Yamada 24ceec4c87SMasahiro Yamada### 25ceec4c87SMasahiro Yamada# filename of first prerequisite with directory and extension stripped 26ceec4c87SMasahiro Yamadabaseprereq = $(basename $(notdir $<)) 27ceec4c87SMasahiro Yamada 28ceec4c87SMasahiro Yamada### 29ceec4c87SMasahiro Yamada# Escape single quote for use in echo statements 30ceec4c87SMasahiro Yamadaescsq = $(subst $(squote),'\$(squote)',$1) 31ceec4c87SMasahiro Yamada 32ceec4c87SMasahiro Yamada### 33ceec4c87SMasahiro Yamada# Easy method for doing a status message 34ceec4c87SMasahiro Yamada kecho := : 35ceec4c87SMasahiro Yamada quiet_kecho := echo 36ceec4c87SMasahiro Yamadasilent_kecho := : 37ceec4c87SMasahiro Yamadakecho := $($(quiet)kecho) 38ceec4c87SMasahiro Yamada 39ceec4c87SMasahiro Yamada### 40ceec4c87SMasahiro Yamada# filechk is used to check if the content of a generated file is updated. 41ceec4c87SMasahiro Yamada# Sample usage: 42ceec4c87SMasahiro Yamada# define filechk_sample 43ceec4c87SMasahiro Yamada# echo $KERNELRELEASE 44ceec4c87SMasahiro Yamada# endef 45ceec4c87SMasahiro Yamada# version.h : Makefile 46ceec4c87SMasahiro Yamada# $(call filechk,sample) 47ceec4c87SMasahiro Yamada# The rule defined shall write to stdout the content of the new file. 48ceec4c87SMasahiro Yamada# The existing file will be compared with the new one. 49ceec4c87SMasahiro Yamada# - If no file exist it is created 50ceec4c87SMasahiro Yamada# - If the content differ the new file is used 51ceec4c87SMasahiro Yamada# - If they are equal no change, and no timestamp update 52ceec4c87SMasahiro Yamada# - stdin is piped in from the first prerequisite ($<) so one has 53ceec4c87SMasahiro Yamada# to specify a valid file as first prerequisite (often the kbuild file) 54ceec4c87SMasahiro Yamadadefine filechk 55ceec4c87SMasahiro Yamada $(Q)set -e; \ 56ceec4c87SMasahiro Yamada $(kecho) ' CHK $@'; \ 57ceec4c87SMasahiro Yamada mkdir -p $(dir $@); \ 58ceec4c87SMasahiro Yamada $(filechk_$(1)) < $< > $@.tmp; \ 59ceec4c87SMasahiro Yamada if [ -r $@ ] && cmp -s $@ $@.tmp; then \ 60ceec4c87SMasahiro Yamada rm -f $@.tmp; \ 61ceec4c87SMasahiro Yamada else \ 62ceec4c87SMasahiro Yamada $(kecho) ' UPD $@'; \ 63ceec4c87SMasahiro Yamada mv -f $@.tmp $@; \ 64ceec4c87SMasahiro Yamada fi 65ceec4c87SMasahiro Yamadaendef 66ceec4c87SMasahiro Yamada 67ceec4c87SMasahiro Yamada###### 68ceec4c87SMasahiro Yamada# gcc support functions 69ceec4c87SMasahiro Yamada# See documentation in Documentation/kbuild/makefiles.txt 70ceec4c87SMasahiro Yamada 71ceec4c87SMasahiro Yamada# cc-cross-prefix 72ceec4c87SMasahiro Yamada# Usage: CROSS_COMPILE := $(call cc-cross-prefix, m68k-linux-gnu- m68k-linux-) 73ceec4c87SMasahiro Yamada# Return first prefix where a prefix$(CC) is found in PATH. 74ceec4c87SMasahiro Yamada# If no $(CC) found in PATH with listed prefixes return nothing 75ceec4c87SMasahiro Yamadacc-cross-prefix = \ 76ceec4c87SMasahiro Yamada $(word 1, $(foreach c,$(1), \ 77ceec4c87SMasahiro Yamada $(shell set -e; \ 78ceec4c87SMasahiro Yamada if (which $(strip $(c))$(CC)) > /dev/null 2>&1 ; then \ 79ceec4c87SMasahiro Yamada echo $(c); \ 80ceec4c87SMasahiro Yamada fi))) 81ceec4c87SMasahiro Yamada 82ceec4c87SMasahiro Yamada# output directory for tests below 83ceec4c87SMasahiro YamadaTMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/) 84ceec4c87SMasahiro Yamada 85ceec4c87SMasahiro Yamada# try-run 86ceec4c87SMasahiro Yamada# Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise) 87ceec4c87SMasahiro Yamada# Exit code chooses option. "$$TMP" is can be used as temporary file and 88ceec4c87SMasahiro Yamada# is automatically cleaned up. 899a368d0fSMasahiro Yamada# modifed for U-Boot: prevent cc-option from leaving .*.su files 90ceec4c87SMasahiro Yamadatry-run = $(shell set -e; \ 91ceec4c87SMasahiro Yamada TMP="$(TMPOUT).$$$$.tmp"; \ 92ceec4c87SMasahiro Yamada TMPO="$(TMPOUT).$$$$.o"; \ 939a368d0fSMasahiro Yamada TMPSU="$(TMPOUT).$$$$.su"; \ 94ceec4c87SMasahiro Yamada if ($(1)) >/dev/null 2>&1; \ 95ceec4c87SMasahiro Yamada then echo "$(2)"; \ 96ceec4c87SMasahiro Yamada else echo "$(3)"; \ 97ceec4c87SMasahiro Yamada fi; \ 989a368d0fSMasahiro Yamada rm -f "$$TMP" "$$TMPO" "$$TMPSU") 99ceec4c87SMasahiro Yamada 100ceec4c87SMasahiro Yamada# as-option 101ceec4c87SMasahiro Yamada# Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,) 102ceec4c87SMasahiro Yamada 103ceec4c87SMasahiro Yamadaas-option = $(call try-run,\ 104ceec4c87SMasahiro Yamada $(CC) $(KBUILD_CFLAGS) $(1) -c -x assembler /dev/null -o "$$TMP",$(1),$(2)) 105ceec4c87SMasahiro Yamada 106ceec4c87SMasahiro Yamada# as-instr 107ceec4c87SMasahiro Yamada# Usage: cflags-y += $(call as-instr,instr,option1,option2) 108ceec4c87SMasahiro Yamada 109ceec4c87SMasahiro Yamadaas-instr = $(call try-run,\ 110ceec4c87SMasahiro Yamada printf "%b\n" "$(1)" | $(CC) $(KBUILD_AFLAGS) -c -x assembler -o "$$TMP" -,$(2),$(3)) 111ceec4c87SMasahiro Yamada 112ceec4c87SMasahiro Yamada# cc-option 113ceec4c87SMasahiro Yamada# Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586) 114ceec4c87SMasahiro Yamada 115ceec4c87SMasahiro Yamadacc-option = $(call try-run,\ 1161401d87bSJeroen Hofstee $(CC) -Werror $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2)) 117ceec4c87SMasahiro Yamada 118ceec4c87SMasahiro Yamada# cc-option-yn 119ceec4c87SMasahiro Yamada# Usage: flag := $(call cc-option-yn,-march=winchip-c6) 120ceec4c87SMasahiro Yamadacc-option-yn = $(call try-run,\ 1211401d87bSJeroen Hofstee $(CC) -Werror $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",y,n) 122ceec4c87SMasahiro Yamada 123ceec4c87SMasahiro Yamada# cc-option-align 124ceec4c87SMasahiro Yamada# Prefix align with either -falign or -malign 125ceec4c87SMasahiro Yamadacc-option-align = $(subst -functions=0,,\ 126ceec4c87SMasahiro Yamada $(call cc-option,-falign-functions=0,-malign-functions=0)) 127ceec4c87SMasahiro Yamada 128ceec4c87SMasahiro Yamada# cc-disable-warning 129ceec4c87SMasahiro Yamada# Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable) 130ceec4c87SMasahiro Yamadacc-disable-warning = $(call try-run,\ 131ceec4c87SMasahiro Yamada $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1))) 132ceec4c87SMasahiro Yamada 13329c4d281STom Rini# cc-name 13429c4d281STom Rini# Expands to either gcc or clang 13529c4d281STom Rinicc-name = $(shell $(CC) -v 2>&1 | grep -q "clang version" && echo clang || echo gcc) 13629c4d281STom Rini 137ceec4c87SMasahiro Yamada# cc-version 138ceec4c87SMasahiro Yamadacc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC)) 139ceec4c87SMasahiro Yamada 140ceec4c87SMasahiro Yamada# cc-fullversion 141ceec4c87SMasahiro Yamadacc-fullversion = $(shell $(CONFIG_SHELL) \ 142ceec4c87SMasahiro Yamada $(srctree)/scripts/gcc-version.sh -p $(CC)) 143ceec4c87SMasahiro Yamada 144ceec4c87SMasahiro Yamada# cc-ifversion 145ceec4c87SMasahiro Yamada# Usage: EXTRA_CFLAGS += $(call cc-ifversion, -lt, 0402, -O1) 14698bd0e0dSMasahiro Yamadacc-ifversion = $(shell [ $(cc-version) $(1) $(2) ] && echo $(3) || echo $(4)) 147ceec4c87SMasahiro Yamada 148bf4b3de1SMasahiro Yamada# added for U-Boot 149bf4b3de1SMasahiro Yamadabinutils-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/binutils-version.sh $(AS)) 150bf4b3de1SMasahiro Yamadadtc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/dtc-version.sh $(DTC)) 151bf4b3de1SMasahiro Yamada 152ceec4c87SMasahiro Yamada# cc-ldoption 153ceec4c87SMasahiro Yamada# Usage: ldflags += $(call cc-ldoption, -Wl$(comma)--hash-style=both) 154ceec4c87SMasahiro Yamadacc-ldoption = $(call try-run,\ 155ceec4c87SMasahiro Yamada $(CC) $(1) -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2)) 156ceec4c87SMasahiro Yamada 157ceec4c87SMasahiro Yamada# ld-option 158ceec4c87SMasahiro Yamada# Usage: LDFLAGS += $(call ld-option, -X) 159ceec4c87SMasahiro Yamadald-option = $(call try-run,\ 160ceec4c87SMasahiro Yamada $(CC) -x c /dev/null -c -o "$$TMPO" ; $(LD) $(1) "$$TMPO" -o "$$TMP",$(1),$(2)) 161ceec4c87SMasahiro Yamada 162ceec4c87SMasahiro Yamada# ar-option 163ceec4c87SMasahiro Yamada# Usage: KBUILD_ARFLAGS := $(call ar-option,D) 164ceec4c87SMasahiro Yamada# Important: no spaces around options 165ceec4c87SMasahiro Yamadaar-option = $(call try-run, $(AR) rc$(1) "$$TMP",$(1),$(2)) 166ceec4c87SMasahiro Yamada 167598e2d33SMasahiro Yamada# ld-version 168598e2d33SMasahiro Yamada# Note this is mainly for HJ Lu's 3 number binutil versions 169598e2d33SMasahiro Yamadald-version = $(shell $(LD) --version | $(srctree)/scripts/ld-version.sh) 170598e2d33SMasahiro Yamada 171598e2d33SMasahiro Yamada# ld-ifversion 172598e2d33SMasahiro Yamada# Usage: $(call ld-ifversion, -ge, 22252, y) 17398bd0e0dSMasahiro Yamadald-ifversion = $(shell [ $(ld-version) $(1) $(2) ] && echo $(3) || echo $(4)) 174598e2d33SMasahiro Yamada 1754b83f0d9SMasahiro Yamada# dtc-option 1764b83f0d9SMasahiro Yamada# Usage: DTC_FLAGS += $(call dtc-option,-Wno-unit_address_vs_reg) 1774b83f0d9SMasahiro Yamadadtc-option = $(call try-run,\ 1784b83f0d9SMasahiro Yamada echo '/dts-v1/; / {};' | $(DTC) $(1),$(1),$(2)) 1794b83f0d9SMasahiro Yamada 180ceec4c87SMasahiro Yamada###### 181ceec4c87SMasahiro Yamada 182ceec4c87SMasahiro Yamada### 183ceec4c87SMasahiro Yamada# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj= 184ceec4c87SMasahiro Yamada# Usage: 185ceec4c87SMasahiro Yamada# $(Q)$(MAKE) $(build)=dir 186176d0982SMasahiro Yamadabuild := -f $(srctree)/scripts/Makefile.build obj 187ceec4c87SMasahiro Yamada 188ceec4c87SMasahiro Yamada### 189ceec4c87SMasahiro Yamada# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.modbuiltin obj= 190ceec4c87SMasahiro Yamada# Usage: 191ceec4c87SMasahiro Yamada# $(Q)$(MAKE) $(modbuiltin)=dir 192176d0982SMasahiro Yamadamodbuiltin := -f $(srctree)/scripts/Makefile.modbuiltin obj 193ceec4c87SMasahiro Yamada 19498bd0e0dSMasahiro Yamada### 19598bd0e0dSMasahiro Yamada# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.dtbinst obj= 19698bd0e0dSMasahiro Yamada# Usage: 19798bd0e0dSMasahiro Yamada# $(Q)$(MAKE) $(dtbinst)=dir 19898bd0e0dSMasahiro Yamadadtbinst := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.dtbinst obj 19998bd0e0dSMasahiro Yamada 20098bd0e0dSMasahiro Yamada### 20198bd0e0dSMasahiro Yamada# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj= 20298bd0e0dSMasahiro Yamada# Usage: 20398bd0e0dSMasahiro Yamada# $(Q)$(MAKE) $(clean)=dir 20498bd0e0dSMasahiro Yamadaclean := -f $(srctree)/scripts/Makefile.clean obj 20598bd0e0dSMasahiro Yamada 20698bd0e0dSMasahiro Yamada### 20798bd0e0dSMasahiro Yamada# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.headersinst obj= 20898bd0e0dSMasahiro Yamada# Usage: 20998bd0e0dSMasahiro Yamada# $(Q)$(MAKE) $(hdr-inst)=dir 21098bd0e0dSMasahiro Yamadahdr-inst := -f $(srctree)/scripts/Makefile.headersinst obj 21198bd0e0dSMasahiro Yamada 212ceec4c87SMasahiro Yamada# Prefix -I with $(srctree) if it is not an absolute path. 213ceec4c87SMasahiro Yamada# skip if -I has no parameter 214ceec4c87SMasahiro Yamadaaddtree = $(if $(patsubst -I%,%,$(1)), \ 215ceec4c87SMasahiro Yamada$(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1)) 216ceec4c87SMasahiro Yamada 217ceec4c87SMasahiro Yamada# Find all -I options and call addtree 218ceec4c87SMasahiro Yamadaflags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o))) 219ceec4c87SMasahiro Yamada 220ceec4c87SMasahiro Yamada# echo command. 221ceec4c87SMasahiro Yamada# Short version is used, if $(quiet) equals `quiet_', otherwise full one. 222ceec4c87SMasahiro Yamadaecho-cmd = $(if $($(quiet)cmd_$(1)),\ 223ceec4c87SMasahiro Yamada echo ' $(call escsq,$($(quiet)cmd_$(1)))$(echo-why)';) 224ceec4c87SMasahiro Yamada 225ceec4c87SMasahiro Yamada# printing commands 226ceec4c87SMasahiro Yamadacmd = @$(echo-cmd) $(cmd_$(1)) 227ceec4c87SMasahiro Yamada 228ceec4c87SMasahiro Yamada# Add $(obj)/ for paths that are not absolute 229ceec4c87SMasahiro Yamadaobjectify = $(foreach o,$(1),$(if $(filter /%,$(o)),$(o),$(obj)/$(o))) 230ceec4c87SMasahiro Yamada 231ceec4c87SMasahiro Yamada### 232ceec4c87SMasahiro Yamada# if_changed - execute command if any prerequisite is newer than 233ceec4c87SMasahiro Yamada# target, or command line has changed 234ceec4c87SMasahiro Yamada# if_changed_dep - as if_changed, but uses fixdep to reveal dependencies 235ceec4c87SMasahiro Yamada# including used config symbols 236ceec4c87SMasahiro Yamada# if_changed_rule - as if_changed but execute rule instead 237ceec4c87SMasahiro Yamada# See Documentation/kbuild/makefiles.txt for more info 238ceec4c87SMasahiro Yamada 239ceec4c87SMasahiro Yamadaifneq ($(KBUILD_NOCMDDEP),1) 240ceec4c87SMasahiro Yamada# Check if both arguments has same arguments. Result is empty string if equal. 241ceec4c87SMasahiro Yamada# User may override this check using make KBUILD_NOCMDDEP=1 242ceec4c87SMasahiro Yamadaarg-check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \ 243ceec4c87SMasahiro Yamada $(filter-out $(cmd_$@), $(cmd_$(1))) ) 244ceec4c87SMasahiro Yamadaelse 245ceec4c87SMasahiro Yamadaarg-check = $(if $(strip $(cmd_$@)),,1) 246ceec4c87SMasahiro Yamadaendif 247ceec4c87SMasahiro Yamada 248176d0982SMasahiro Yamada# Replace >$< with >$$< to preserve $ when reloading the .cmd file 249176d0982SMasahiro Yamada# (needed for make) 250176d0982SMasahiro Yamada# Replace >#< with >\#< to avoid starting a comment in the .cmd file 251176d0982SMasahiro Yamada# (needed for make) 252176d0982SMasahiro Yamada# Replace >'< with >'\''< to be able to enclose the whole string in '...' 253176d0982SMasahiro Yamada# (needed for the shell) 254176d0982SMasahiro Yamadamake-cmd = $(call escsq,$(subst \#,\\\#,$(subst $$,$$$$,$(cmd_$(1))))) 255ceec4c87SMasahiro Yamada 256ceec4c87SMasahiro Yamada# Find any prerequisites that is newer than target or that does not exist. 257ceec4c87SMasahiro Yamada# PHONY targets skipped in both cases. 258ceec4c87SMasahiro Yamadaany-prereq = $(filter-out $(PHONY),$?) $(filter-out $(PHONY) $(wildcard $^),$^) 259ceec4c87SMasahiro Yamada 260ceec4c87SMasahiro Yamada# Execute command if command has changed or prerequisite(s) are updated. 261ceec4c87SMasahiro Yamada# 262ceec4c87SMasahiro Yamadaif_changed = $(if $(strip $(any-prereq) $(arg-check)), \ 263ceec4c87SMasahiro Yamada @set -e; \ 264ceec4c87SMasahiro Yamada $(echo-cmd) $(cmd_$(1)); \ 265176d0982SMasahiro Yamada printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd) 266ceec4c87SMasahiro Yamada 267ceec4c87SMasahiro Yamada# Execute the command and also postprocess generated .d dependencies file. 268ceec4c87SMasahiro Yamadaif_changed_dep = $(if $(strip $(any-prereq) $(arg-check) ), \ 269ceec4c87SMasahiro Yamada @set -e; \ 270ceec4c87SMasahiro Yamada $(echo-cmd) $(cmd_$(1)); \ 271ceec4c87SMasahiro Yamada scripts/basic/fixdep $(depfile) $@ '$(make-cmd)' > $(dot-target).tmp;\ 272ceec4c87SMasahiro Yamada rm -f $(depfile); \ 273ceec4c87SMasahiro Yamada mv -f $(dot-target).tmp $(dot-target).cmd) 274ceec4c87SMasahiro Yamada 275ceec4c87SMasahiro Yamada# Usage: $(call if_changed_rule,foo) 276ceec4c87SMasahiro Yamada# Will check if $(cmd_foo) or any of the prerequisites changed, 277ceec4c87SMasahiro Yamada# and if so will execute $(rule_foo). 278ceec4c87SMasahiro Yamadaif_changed_rule = $(if $(strip $(any-prereq) $(arg-check) ), \ 279ceec4c87SMasahiro Yamada @set -e; \ 280ceec4c87SMasahiro Yamada $(rule_$(1))) 281ceec4c87SMasahiro Yamada 282ceec4c87SMasahiro Yamada### 283ceec4c87SMasahiro Yamada# why - tell why a a target got build 284ceec4c87SMasahiro Yamada# enabled by make V=2 285ceec4c87SMasahiro Yamada# Output (listed in the order they are checked): 286ceec4c87SMasahiro Yamada# (1) - due to target is PHONY 287ceec4c87SMasahiro Yamada# (2) - due to target missing 288ceec4c87SMasahiro Yamada# (3) - due to: file1.h file2.h 289ceec4c87SMasahiro Yamada# (4) - due to command line change 290ceec4c87SMasahiro Yamada# (5) - due to missing .cmd file 291ceec4c87SMasahiro Yamada# (6) - due to target not in $(targets) 292ceec4c87SMasahiro Yamada# (1) PHONY targets are always build 293ceec4c87SMasahiro Yamada# (2) No target, so we better build it 294ceec4c87SMasahiro Yamada# (3) Prerequisite is newer than target 295ceec4c87SMasahiro Yamada# (4) The command line stored in the file named dir/.target.cmd 296ceec4c87SMasahiro Yamada# differed from actual command line. This happens when compiler 297ceec4c87SMasahiro Yamada# options changes 298ceec4c87SMasahiro Yamada# (5) No dir/.target.cmd file (used to store command line) 299ceec4c87SMasahiro Yamada# (6) No dir/.target.cmd file and target not listed in $(targets) 300ceec4c87SMasahiro Yamada# This is a good hint that there is a bug in the kbuild file 301ceec4c87SMasahiro Yamadaifeq ($(KBUILD_VERBOSE),2) 302ceec4c87SMasahiro Yamadawhy = \ 303ceec4c87SMasahiro Yamada $(if $(filter $@, $(PHONY)),- due to target is PHONY, \ 304ceec4c87SMasahiro Yamada $(if $(wildcard $@), \ 305ceec4c87SMasahiro Yamada $(if $(strip $(any-prereq)),- due to: $(any-prereq), \ 306ceec4c87SMasahiro Yamada $(if $(arg-check), \ 307ceec4c87SMasahiro Yamada $(if $(cmd_$@),- due to command line change, \ 308ceec4c87SMasahiro Yamada $(if $(filter $@, $(targets)), \ 309ceec4c87SMasahiro Yamada - due to missing .cmd file, \ 310ceec4c87SMasahiro Yamada - due to $(notdir $@) not in $$(targets) \ 311ceec4c87SMasahiro Yamada ) \ 312ceec4c87SMasahiro Yamada ) \ 313ceec4c87SMasahiro Yamada ) \ 314ceec4c87SMasahiro Yamada ), \ 315ceec4c87SMasahiro Yamada - due to target missing \ 316ceec4c87SMasahiro Yamada ) \ 317ceec4c87SMasahiro Yamada ) 318ceec4c87SMasahiro Yamada 319ceec4c87SMasahiro Yamadaecho-why = $(call escsq, $(strip $(why))) 320ceec4c87SMasahiro Yamadaendif 32104a5c406SMasahiro Yamada 32204a5c406SMasahiro Yamadaifdef CONFIG_SPL_BUILD 32304a5c406SMasahiro YamadaSPL_ := SPL_ 324*001f3142SSimon Glassifeq ($(CONFIG_TPL_BUILD),y) 325*001f3142SSimon GlassSPL_TPL_ := TPL_ 326*001f3142SSimon Glasselse 327*001f3142SSimon GlassSPL_TPL_ := SPL_ 328*001f3142SSimon Glassendif 32904a5c406SMasahiro Yamadaelse 33004a5c406SMasahiro YamadaSPL_ := 331*001f3142SSimon GlassSPL_TPL_ := 33204a5c406SMasahiro Yamadaendif 333