| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | # -*- coding: utf-8; mode: makefile-gmake -*-# SPDX-License-Identifier: AGPL-3.0-or-laterPHONY += make-helpmake-help:	@echo  'options:'	@echo  '  make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build'	@echo  '  make V=2   [targets] 2 => give reason for rebuild of target'ifeq ("$(origin V)", "command line")  VERBOSE = $(V)endififndef VERBOSE  VERBOSE = 0endifexport VERBOSEifeq ($(VERBOSE),1)  quiet =  Q =else  quiet=quiet_  Q = @endif# stolen from linux/scripts/Kbuild.include## Convenient variablessquote  := '#' this comment is only for emacs highlighting# Find any prerequisites that is newer than target or that does not exist.# PHONY targets skipped in both cases.any-prereq = $(filter-out $(PHONY),$?) $(filter-out $(PHONY) $(wildcard $^),$^)##### why - tell why a a target got build#       enabled by make V=2#       Output (listed in the order they are checked):#          (1) - due to target is PHONY#          (2) - due to target missing#          (3) - due to: file1.h file2.h#          (4) - due to command line change#          (5) - due to missing .cmd file#          (6) - due to target not in $(targets)# (1) PHONY targets are always build# (2) No target, so we better build it# (3) Prerequisite is newer than target# (4) The command line stored in the file named dir/.target.cmd#     differed from actual command line. This happens when compiler#     options changes# (5) No dir/.target.cmd file (used to store command line)# (6) No dir/.target.cmd file and target not listed in $(targets)#     This is a good hint that there is a bug in the kbuild fileifeq ($(VERBOSE),2)why =                                                                        \    $(if $(filter $@, $(PHONY)),- due to target is PHONY,                    \        $(if $(wildcard $@),                                                 \            $(if $(strip $(any-prereq)),- due to: $(any-prereq),             \                $(if $(arg-check),                                           \                    $(if $(cmd_$@),- due to command line change,             \                        $(if $(filter $@, $(targets)),                       \                            - due to missing .cmd file,                      \                            - due to $(notdir $@) not in $$(targets)         \                         )                                                   \                     )                                                       \                 )                                                           \             ),                                                              \             - due to target missing                                         \         )                                                                   \     )echo-why = $(call escsq, $(strip $(why)))endif##### Escape single quote for use in echo statementsescsq = $(subst $(squote),'\$(squote)',$1)## echo command.# Short version is used, if $(quiet) equals `quiet_', otherwise full one.echo-cmd = $(if $($(quiet)cmd_$(1)),echo '$(call escsq,$($(quiet)cmd_$(1)))$(echo-why)';)## printing commandscmd = @$(echo-cmd) $(cmd_$(1)).PHONY: $(PHONY)
 |