forked from simonmichael/hledger
/
help-system.mk
35 lines (25 loc) · 885 Bytes
/
help-system.mk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# makefile self-documentation
# http://www.cmcrossroads.com/print/article/self-documenting-makefiles
help:
@echo $(if $(need-help),,Type \'make$(dash-f) help\' to get help)
need-help := $(filter help,$(MAKECMDGOALS))
define def-help
$(if $(need-help),$(warning $1 --$2))
endef
# define print-lines
# @echo $1
# endef
# $(if $(true),$(printf $1),$(printf '\n'$1))
define def-help-section
$(if $(need-help),$(warning --------------------$1--------------------$2))
endef
define def-help-subsection
$(if $(need-help),$(warning $1$2))
endef
define last-element
$(word $(words $1),$1)
endef
this-makefile := $(call last-element,$(MAKEFILE_LIST))
other-makefiles := $(filter-out $(this-makefile),$(MAKEFILE_LIST))
parent-makefile := $(call last-element,$(other-makefiles))
dash-f := $(if $(filter-out Makefile makefile GNUmakefile, $(parent-makefile)), -f $(parent-makefile))