tools: makefile help system improvements

This commit is contained in:
Simon Michael 2015-07-12 12:02:31 -07:00
parent 21d9945ba9
commit c83fcab8cb

View File

@ -16,38 +16,54 @@
# #
# Also: # Also:
# #
# $(call def-help-section,SECTION,HELP) # $(call def-help-section,TITLE,HELP) -- show a section heading
# #
# and: # $(call def-help-subsection,TITLE,HELP) -- show a subsection heading
# #
# $(call def-help-subsection,SECTION,HELP) # $(call def-help-hide,TARGET,HELP) -- temporarily suppress the help)
# $(call def-help-section-hide,TITLE,HELP)
# $(call def-help-subsection-hide,TITLE,HELP)
# #
# HELP is one or more lines, or can be blank. # HELP is one or more lines, or can be blank.
# Certain characters such as comma and parentheses are not allowed. # Certain characters are not allowed, comma in particular.
# You may want to avoid ' also as it breaks emacs font-lock. # You may want to avoid ' also as it breaks emacs font-lock.
# if the make targets include "help" or there are no targets, show help
need-help := $(if $(MAKECMDGOALS),$(filter help,$(MAKECMDGOALS)),true)
help: help:
@echo $(if $(need-help),,Type \'make$(dash-f) help\' to get help) @echo $(if $(need-help),,Type \'make$(dash-f) help\' to get help)
need-help := $(filter help,$(MAKECMDGOALS)) # show a make target's help when help has been requested
define def-help define def-help
$(if $(need-help),$(warning $1 --$2)) $(if $(need-help), $(warning make $1 --$2))
endef endef
# show a section heading when help has been requested
define def-help-section
$(if $(need-help),$(warning --------------------$1--------------------$2))
endef
# show a subsection heading when help has been requested
define def-help-subsection
$(if $(need-help),$(warning ($1)))
endef
# no-ops, for hiding help without removing it entirely
define def-help-hide
endef
define def-help-section-hide
endef
define def-help-subsection-hide
endef
# utilities
# define print-lines # define print-lines
# @echo $1 # @echo $1
# endef # endef
# $(if $(true),$(printf $1),$(printf '\n'$1)) # $(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 define last-element
$(word $(words $1),$1) $(word $(words $1),$1)
endef endef
@ -55,6 +71,4 @@ endef
this-makefile := $(call last-element,$(MAKEFILE_LIST)) this-makefile := $(call last-element,$(MAKEFILE_LIST))
other-makefiles := $(filter-out $(this-makefile),$(MAKEFILE_LIST)) other-makefiles := $(filter-out $(this-makefile),$(MAKEFILE_LIST))
parent-makefile := $(call last-element,$(other-makefiles)) parent-makefile := $(call last-element,$(other-makefiles))
dash-f := $(if $(filter-out Makefile makefile GNUmakefile, $(parent-makefile)), -f $(parent-makefile)) dash-f := $(if $(filter-out Makefile makefile GNUmakefile, $(parent-makefile)), -f $(parent-makefile))