imgtools/imaker/src/imaker_help.mk
changeset 607 378360dbbdba
parent 596 9f25be3da657
equal deleted inserted replaced
591:22486c9c7b15 607:378360dbbdba
    23 # @param values - The possible values for the item, only for variables
    23 # @param values - The possible values for the item, only for variables
    24 # @param desc   - Descrition of the item
    24 # @param desc   - Descrition of the item
    25 
    25 
    26 add_help =\
    26 add_help =\
    27   $(if $(filter help%,$(MAKECMDGOALS)),\
    27   $(if $(filter help%,$(MAKECMDGOALS)),\
    28     $(eval __i_type  := $(call select,$(call substr,1,1,$(strip $2)),t,t,v))\
    28     $(eval __i_type  := $(if $(filter t% T%,$2),t,v))\
    29     $(eval __i_isvar := $(call equal,$(__i_type),v))\
    29     $(eval __i_isvar := $(filter v,$(__i_type)))\
    30     $(foreach name,$1,\
    30     $(foreach name,$1,\
    31       $(eval HELP.$(name).TYPE := $(__i_type))\
    31       $(eval HELP.$(name).TYPE := $(__i_type))\
    32       $(if $(__i_isvar),$(eval HELP.$(name).VALUES = $3))\
    32       $(if $(__i_isvar),$(eval HELP.$(name).VALUES = $3))\
    33       $(eval HELP.$(name).DESC = $(strip $(eval __i_desc := $(if $(__i_isvar),$4,$3))\
    33       $(eval HELP.$(name).DESC = $(strip $(eval __i_desc = $(if $(__i_isvar),$$4,$$3))\
    34         $(foreach p,$(if $(__i_isvar),,4) 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20,\
    34         $(foreach p,$(if $(__i_isvar),,4) 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20,\
    35           $(if $(call defined,$p),$(eval __i_desc := $(__i_desc)$(,)$($p)))))$(__i_desc))))
    35           $(if $(call defined,$p),$(eval __i_desc = $(value __i_desc)$(,)$$($p))))\
       
    36         $(subst $$1,$(name),$(subst $$2,$(__i_type),$(__i_desc)))))))
    36 
    37 
    37 get_helpitems =\
    38 get_helpitems =\
    38   $(strip $(eval __i_list := $(filter HELP.%.TYPE,$(.VARIABLES)))\
    39   $(strip $(eval __i_list := $(filter HELP.%.TYPE,$(.VARIABLES)))\
    39   $(foreach var,$(__i_list),$(call select,$($(var)),$1,$(patsubst HELP.%.TYPE,%,$(var)))))
    40   $(foreach var,$(__i_list),$(call select,$($(var)),$1,$(patsubst HELP.%.TYPE,%,$(var)))))
    40 
    41 
    41 #==============================================================================
    42 #==============================================================================
    42 
    43 
    43 .PHONY: help help-config help-target help-variable
    44 .PHONY: help help-config
    44 
    45 
    45 .DEFAULT_GOAL := help
    46 help:: ;@$(call IMAKER,HELPUSAGE)
    46 
    47 
    47 help:: ;@$(call IMAKER,HELPUSAGE:b)
    48 help-config: ;@$(call IMAKER,HELPCFG)
    48 
    49 
    49 help-config: ;@$(call IMAKER,HELPCFG:b)
    50 help-%: ;@$(call IMAKER,HELP)
    50 
       
    51 help-target help-variable: $$@-* ;
       
    52 
       
    53 help-target-%-list help-target-%-wiki help-target-% \
       
    54 help-variable-%-list help-variable-%-value help-variable-%-all help-variable-%-wiki help-variable-% \
       
    55 help-%-list help-%:\
       
    56   ;@$(call IMAKER)
       
    57 
    51 
    58 # Help usage info
    52 # Help usage info
    59 define HELP_USAGE
    53 define HELP_USAGE
    60 
    54 
    61   Print help data on documented iMaker API items; targets and variables.
    55   Print help data on documented iMaker API items; targets and variables.
    62   Wildcards *, ? and [] can be used with % patterns.
    56   Wildcards *, ? and [..] can be used with % patterns.
    63 
    57 
    64   help                  : Print this message.
    58   help                  : Print this message.
    65   help-%                : $(HELP.help-%.DESC)
    59   help-%                : $(HELP.help-%.DESC)
    66   help-%-list           : $(HELP.help-%-list.DESC)
    60   help-%-list           : $(HELP.help-%-list.DESC)
    67 
    61 
    83   version               : Print the iMaker version number.
    77   version               : Print the iMaker version number.
    84 endef
    78 endef
    85 
    79 
    86 BUILD_HELPUSAGE = echo | $(call def2str,$(HELP_USAGE))\n
    80 BUILD_HELPUSAGE = echo | $(call def2str,$(HELP_USAGE))\n
    87 
    81 
    88 BUILD_HELPDYNAMIC =\
    82 BUILD_HELPDYNAMIC =
    89   $(foreach file,$(call reverse,$(wildcard $(addsuffix /$(TRACE_PREFIX)*$(TRACE_SUFFIX),$(TRACE_IDIR)))),\
       
    90     $(call add_help,core-trace-$(patsubst $(TRACE_PREFIX)%$(TRACE_SUFFIX),%,$(notdir $(file))),t,Core image with traces for $(file).))\
       
    91   $(call add_help,$(call getlastdir,$(wildcard $(LANGPACK_ROOT)/$(LANGPACK_PREFIX)*/)),t,Language variant target.)\
       
    92   $(call add_help,$(call getlastdir,$(wildcard $(CUSTVARIANT_ROOT)/$(CUSTVARIANT_PREFIX)*/)),t,Customer variant target.)\
       
    93   $(eval include $(wildcard $(LANGPACK_ROOT)/$(LANGPACK_PREFIX)*/$(LANGPACK_MKNAME)))\
       
    94   $(eval include $(wildcard $(CUSTVARIANT_ROOT)/$(CUSTVARIANT_PREFIX)*/$(VARIANT_MKNAME)))
       
    95 
    83 
    96 BUILD_HELP =\
    84 BUILD_HELP =\
       
    85   $(BUILD_HELPDYNAMIC)\
    97   $(eval __i_var := $(filter help-%,$(MAKECMDGOALS)))\
    86   $(eval __i_var := $(filter help-%,$(MAKECMDGOALS)))\
    98   $(if $(filter help-target help-variable,$(__i_var)),$(eval __i_var := $(__i_var)-*))\
    87   $(if $(filter help-target help-variable,$(__i_var)),$(eval __i_var := $(__i_var)-*))\
    99   $(eval __i_helpgoal := $(__i_var))\
    88   $(eval __i_helpgoal := $(__i_var))\
   100   $(foreach prefix,help target variable,$(eval __i_var := $(patsubst $(prefix)-%,%,$(__i_var))))\
    89   $(foreach prefix,help target variable,$(eval __i_var := $(patsubst $(prefix)-%,%,$(__i_var))))\
   101   $(foreach suffix,all list value wiki,$(eval __i_var := $(patsubst %-$(suffix),%,$(__i_var))))\
    90   $(foreach suffix,all list value wiki,$(eval __i_var := $(patsubst %-$(suffix),%,$(__i_var))))\
   105   $(eval __i_desc := $(filter-out %-$(__i_var)-list %-$(__i_var)-value,$(__i_helpgoal)))\
    94   $(eval __i_desc := $(filter-out %-$(__i_var)-list %-$(__i_var)-value,$(__i_helpgoal)))\
   106   $(eval __i_wiki := $(if $(filter %-$(__i_var)-wiki,$(__i_helpgoal)),\ * ))\
    95   $(eval __i_wiki := $(if $(filter %-$(__i_var)-wiki,$(__i_helpgoal)),\ * ))\
   107   $(call peval,\
    96   $(call peval,\
   108     my @var = ($(foreach var,$(foreach var2,$(subst $(,), ,$(__i_var)),$(call filterwcard,$(var2),$(__i_list))),{\
    97     my @var = ($(foreach var,$(foreach var2,$(subst $(,), ,$(__i_var)),$(call filterwcard,$(var2),$(__i_list))),{\
   109       n=>$(call pquote,$(var))\
    98       n=>$(call pquote,$(var))\
   110       $(eval __i_isvar := $(call equal,$(HELP.$(var).TYPE),v))\
    99       $(eval __i_isvar := $(filter v,$(HELP.$(var).TYPE)))\
   111       $(if $(__i_value),$(if $(__i_isvar),$(,)v=>$(call pquote,$(call def2str,$($(var))))))\
   100       $(if $(__i_value),$(if $(__i_isvar),$(,)v=>$(call pquote,$(call def2str,$($(var))))))\
   112       $(,)t=>q($(HELP.$(var).TYPE))\
   101       $(,)t=>q($(HELP.$(var).TYPE))\
   113       $(if $(__i_desc),\
   102       $(if $(__i_desc),\
   114         $(,)d=>$(call pquote,$(HELP.$(var).DESC))\
   103         $(,)d=>$(call pquote,$(HELP.$(var).DESC))\
   115         $(if $(__i_isvar),$(,)V=>$(call pquote,$(HELP.$(var).VALUES)))) }$(,)));\
   104         $(if $(__i_isvar),$(,)V=>$(call pquote,$(HELP.$(var).VALUES)))) }$(,)));\
   116     imaker:DPrint(1, map($(if $(__i_desc),$(if $(__i_wiki),,q(-) x 40 . qq(\n) .))\
   105     DPrint(1, map($(if $(__i_desc),$(if $(__i_wiki),,q(-) x 40 . qq(\n) .))\
   117       qq($(if $(__i_wiki),== $$_->{n} ==,$$_->{n}))\
   106       qq($(if $(__i_wiki),== $$_->{n} ==,$$_->{n}))\
   118       $(if $(__i_value),. ($$_->{t} eq q(v) ? qq( = `$$_->{v}$') : q())) . qq(\n)\
   107       $(if $(__i_value),. ($$_->{t} eq q(v) ? qq( = `$$_->{v}') : q())) . qq(\n)\
   119       $(if $(__i_desc),.\
   108       $(if $(__i_desc),.\
   120         qq($(__i_wiki)Type       : ) . ($$_->{t} eq q(t) ? qq(Target\n) : qq(Variable\n)) .\
   109         qq($(__i_wiki)Type       : ) . ($$_->{t} eq q(t) ? qq(Target\n) : qq(Variable\n)) .\
   121         qq($(__i_wiki)Description: $$_->{d}\n) .\
   110         qq($(__i_wiki)Description: $$_->{d}\n) .\
   122         ($$_->{t} eq q(v) ? qq($(__i_wiki)Values     : $$_->{V}\n) : q())), @var));\
   111         ($$_->{t} eq q(v) ? qq($(__i_wiki)Values     : $$_->{V}\n) : q())), @var));\
   123     return(q()))
   112     return(q()))
   124 
   113 
   125 BUILD_HELPCFG =\
   114 BUILD_HELPCFG =\
   126   echo | Finding available configuration file(s):\n\
   115   echo | Finding available configuration file(s):\n\
   127     $(call get_cfglist,$(CONFIGROOT),image_conf_.*\.mk,2)\n
   116     $(call peval,return(join(q(), map(Quote(qq($$_\n)), GetConfmkList(1)))))
   128 
   117 
   129 get_cfglist =\
   118 
   130   $(call peval,\
   119 ###############################################################################
   131     use File::Find;\
   120 # print-%
   132     my ($$dir, @conf) = (GetAbsDirname($(call pquote,$1)), ());\
   121 
   133     find(sub {\
   122 BUILD_PRINTVAR = $(call peval,DPrint(1,\
   134       push(@conf, $$File::Find::name) if\
   123   $(foreach var1,$(subst $(,), ,$(subst print-,,$(filter print-%,$(MAKECMDGOALS)))),\
   135         /$2$$/s && (($$File::Find::name =~ tr/\///) > (($$dir =~ tr/\///) + $3));\
   124     $(foreach var2,$(call filterwcard,$(var1),$(filter-out BUILD_PRINTVAR,$(filter $(word 1,$(call substm,* ? [, ,$(var1)))%,$(.VARIABLES)))),\
   136     }, $$dir);\
   125       $(call pquote,$(var2) = `$(call def2str,$($(var2)))').qq(\n),))); return(q()))
   137     return(join(q(\n), map(Quote($$_), sort({lc($$a) cmp lc($$b)} @conf)))))
   126 
       
   127 print-%: ;@$(call IMAKER,PRINTVAR)
       
   128 
       
   129 $(call add_help,print-%,t,Print the value(s) of the given variable(s). Wildcards *, ? and [..] can be used in variable names.)
   138 
   130 
   139 
   131 
   140 ###############################################################################
   132 ###############################################################################
   141 # Helps
   133 # Helps
   142 
   134 
   143 $(call add_help,CONFIGROOT,v,(string),Define the default configuration root directory.)
   135 $(call add_help,CONFIGROOT,v,(string),Define the default configuration root directory.)
   144 $(call add_help,USE_OVERRIDE,v,([0|1]),Define whether the override.pm Buildrom.pl plugin is used.)
       
   145 $(call add_help,USE_PAGING,v,((0|rom|code[:[(1|2|3)]+]?)),Define the usage of On Demand Pagin (ODP). (E.g. 0,rom,code).)
   136 $(call add_help,USE_PAGING,v,((0|rom|code[:[(1|2|3)]+]?)),Define the usage of On Demand Pagin (ODP). (E.g. 0,rom,code).)
   146 $(call add_help,USE_ROFS,v,([[dummy|]0..6][,[dummy|]0..6]*),Define the rofs sections in use. A comma separated list can be given of possible values. (E.g. 1,2,3).)
   137 $(call add_help,USE_ROFS,v,([[dummy|]0..6][,[dummy|]0..6]*),Define the rofs sections in use. A comma separated list can be given of possible values. (E.g. 1,2,3).)
   147 $(call add_help,USE_ROMFILE,v,([0|1]),Define whether the \epoc32\rombuild\romfiles.txt is used. Files in romfiles are automatically moved to ROM, everything else in core is moved to ROFS1.)
   138 $(call add_help,USE_ROMFILE,v,([0|1]),Define whether the \epoc32\rombuild\romfiles.txt is used. Files in romfiles are automatically moved to ROM, everything else in core is moved to ROFS1.)
   148 $(call add_help,USE_SYMGEN,v,([0|1]),Generate the rom symbol file. 0=Do not generate, 1=Generate)
   139 $(call add_help,USE_SYMGEN,v,([0|1]),Generate the rom symbol file. 0=Do not generate, 1=Generate)
   149 $(call add_help,USE_UDEB,v,([0|1|full]),Include the usage of the debug binary *.txt to define the list of binaries that are taken from udeb folder instead of the urel.)
   140 $(call add_help,USE_UDEB,v,([0|1|full]),Include the usage of the debug binary *.txt to define the list of binaries that are taken from udeb folder instead of the urel.)
   150 $(call add_help,USE_VERGEN,v,([0|1]),Use iMaker version info generation)
   141 $(call add_help,KEEPTEMP,v,([0|1]),Keep the buildrom.pl temp files (copied to the OUTDIR). E.g. tmp1.oby tmp2.oby..tmp9.oby)
   151 $(call add_help,KEEPTEMP,v,([0|1]),Keep the buildrom.pl temp files (copied to the WORKDIR). E.g. tmp1.oby tmp2.oby..tmp9.oby)
       
   152 $(call add_help,LABEL,v,(string),A label to the NAME of the image)
   142 $(call add_help,LABEL,v,(string),A label to the NAME of the image)
   153 $(call add_help,NAME,v,(string),The name of the image)
   143 $(call add_help,NAME,v,(string),The name of the image)
   154 $(call add_help,TYPE,v,(rnd|prd|subcon),Defines the image type.)
   144 $(call add_help,TYPE,v,(rnd|prd|subcon),Defines the image type.)
   155 $(call add_help,WORKDIR,v,(string),The working directory for the image creation)
   145 $(call add_help,OUTDIR,v,(string),The output directory for the image creation.)
       
   146 $(call add_help,WORKDIR,v,(string),The working directory for the image creation. Deprecated, please use OUTDIR.)
   156 $(call add_help,PRODUCT_NAME,v,(string),Name of the product)
   147 $(call add_help,PRODUCT_NAME,v,(string),Name of the product)
   157 $(call add_help,PRODUCT_MODEL,v,(string),The model of the product)
   148 $(call add_help,PRODUCT_MODEL,v,(string),The model of the product)
   158 $(call add_help,PRODUCT_REVISION,v,(string),The revision of the product.)
   149 $(call add_help,PRODUCT_REVISION,v,(string),The revision of the product.)
   159 $(call add_help,BLDROM_OPT,v,(string),The default buildrom.pl options)
   150 $(call add_help,BLDROM_OPT,v,(string),The default buildrom.pl options)
   160 $(call add_help,BLDROPT,v,(string),For passing extra parameters (from command line) to the buildrom.pl)
   151 $(call add_help,BLDROPT,v,(string),For passing extra parameters (from command line) to the buildrom.pl)
   161 $(call add_help,BLDROBY,v,(string),For passing extra oby files (from command line) to the buildrom.pl)
   152 $(call add_help,BLDROBY,v,(string),For passing extra oby files (from command line) to the buildrom.pl)
   162 $(call add_help,SOS_VERSION,v,([0-9]+.[0-9]+),Symbian OS version number. The value is used in the version info generation (platform.txt).(see USE_VERGEN))
   153 $(call add_help,SOS_VERSION,v,([0-9]+.[0-9]+),Symbian OS version number. The value is used in the version info generation (platform.txt).)
   163 $(call add_help,COREPLAT_NAME,v,(string),Name of the core platform)
   154 $(call add_help,COREPLAT_NAME,v,(string),Name of the core platform)
   164 $(call add_help,CORE_DIR,v,(string),The working directory, when creating core image)
   155 $(call add_help,CORE_DIR,v,(string),The working directory, when creating core image)
   165 $(call add_help,CORE_NAME,v,(string),The name of the core image)
   156 $(call add_help,CORE_NAME,v,(string),The name of the core image)
   166 $(call add_help,CORE_OBY,v,(string),The oby file(s) included to the core image creation)
   157 $(call add_help,CORE_OBY,v,(string),The oby file(s) included to the core image creation)
   167 $(call add_help,CORE_OPT,v,(string),The core specific buildrom options)
   158 $(call add_help,CORE_OPT,v,(string),The core specific buildrom options)
   207 $(call add_help,ROFS3_HEADER,v,(string),This variable can contain a header section for the rofs3 master oby.)
   198 $(call add_help,ROFS3_HEADER,v,(string),This variable can contain a header section for the rofs3 master oby.)
   208 $(call add_help,ROFS3_FOOTER,v,(string),This variable can contain a footer section for the rofs3 master oby.)
   199 $(call add_help,ROFS3_FOOTER,v,(string),This variable can contain a footer section for the rofs3 master oby.)
   209 $(call add_help,ROFS3_TIME,v,(string),The time defined to the rofs3 image.)
   200 $(call add_help,ROFS3_TIME,v,(string),The time defined to the rofs3 image.)
   210 $(call add_help,ROFS3_VERIBY,v,(string),The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters.)
   201 $(call add_help,ROFS3_VERIBY,v,(string),The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters.)
   211 $(call add_help,ROFS3_ROMVER,v,(string),The rofs3 ROM version string)
   202 $(call add_help,ROFS3_ROMVER,v,(string),The rofs3 ROM version string)
   212 $(call add_help,ROFS3_CUSTSWFILE,v,(string),The (generated) source file name for customersw.txt.)
   203 $(call add_help,ROFS3_SWVERFILE,v,(string),The (generated) source file name for customersw.txt.)
   213 $(call add_help,ROFS3_CUSTSWINFO,v,(string),The content string for the customersw.txt.)
   204 $(call add_help,ROFS3_SWVERINFO,v,(string),The content string for the customersw.txt.)
   214 $(call add_help,ROFS3_FWIDFILE,v,(string),The (generated) _rofs3_fwid.txt file name.)
   205 $(call add_help,ROFS3_FWIDFILE,v,(string),The (generated) _rofs3_fwid.txt file name.)
   215 $(call add_help,ROFS3_FWIDINFO,v,(string),The content string for the fwid3.txt file.)
   206 $(call add_help,ROFS3_FWIDINFO,v,(string),The content string for the fwid3.txt file.)
   216 $(call add_help,VARIANT_DIR,v,(string),Configure the directory where to included the customer variant content. By default all content under $(VARIANT_CPDIR) is included to the image as it exists in the folder.)
   207 $(call add_help,VARIANT_DIR,v,(string),Configure the directory where to included the customer variant content. By default all content under $(VARIANT_CPDIR) is included to the image as it exists in the folder.)
   217 $(call add_help,VARIANT_CONFML,v,(string),Configure what is the ConfigurationTool input confml file, when configuration tool is ran.)
   208 $(call add_help,PRODUCT_VARDIR,v,(string),Overrides the VARIANT_DIR for product variant, see the instructions of VARIANT_DIR for details.)
   218 $(call add_help,VARIANT_CONFCP,v,(string),Configure which ConfigurationTool generated configurations dirs are copied to output.)
   209 $(call add_help,TARGET_DEFAULT,v,(string),Configure actual target(s) for target default.)
   219 
   210 
   220 # Targets
   211 # Targets
   221 $(call add_help,version,t,Print the version information)
   212 $(call add_help,version,t,Print the version information)
   222 $(call add_help,clean,t,Clean all target files.)
   213 $(call add_help,clean,t,Clean all target files.)
   223 $(call add_help,core,t,Create the core image (ROM,ROFS1))
       
   224 $(call add_help,rofs2,t,Create the rofs2 image)
       
   225 $(call add_help,rofs3,t,Create the rofs3 image)
       
   226 $(call add_help,variant,t,Create the variant image (rofs2,rofs3))
   214 $(call add_help,variant,t,Create the variant image (rofs2,rofs3))
   227 $(call add_help,uda,t,Create the User Data area (uda) image.)
       
   228 $(call add_help,image,t,Create only the image file(s) (*.img))
   215 $(call add_help,image,t,Create only the image file(s) (*.img))
   229 $(call add_help,core-image,t,Create the core image files (rom.img, rofs1.img))
   216 $(call add_help,variant-image,t,Create the variant image files (rofs2.img, rofs3.img))
   230 $(call add_help,rofs2-image,t,Create the rofs2 image file (rofs2.img))
       
   231 $(call add_help,rofs3-image,t,Create the rofs3 image file (rofs3.img))
       
   232 $(call add_help,variant-image,t,Create the variant image files (rofs3.img,rofs3.img))
       
   233 $(call add_help,uda-image,t,Create the User Data area (uda) image.)
       
   234 $(call add_help,toolinfo,t,Print info about the tool)
   217 $(call add_help,toolinfo,t,Print info about the tool)
   235 $(call add_help,romsymbol,t,Create the rom symbol file)
   218 $(call add_help,romsymbol,t,Create the rom symbol file)
   236 $(call add_help,all,t,Create all image sections and symbol files.)
   219 $(call add_help,all,t,Create all image sections and symbol files.)
   237 $(call add_help,flash-all,t,Create all image sections and symbol files.)
   220 $(call add_help,flash-all,t,Create all image sections and symbol files.)
   238 $(call add_help,flash,t,Create all image sections files. Not any symbol files.)
   221 $(call add_help,flash,t,Create all image sections files. Not any symbol files.)
   239 $(call add_help,f2image,t,Revert the Symbian image file (.img) from the elf2flash (flash) file.(See CORE_FLASH,ROFS2_FLASH,ROFS3_FLASH))
   222 $(call add_help,f2image,t,Revert the Symbian image file (.img) from the elf2flash (flash) file.(See CORE_FLASH,ROFS2_FLASH,ROFS3_FLASH))
   240 $(call add_help,step-%,t,\
   223 $(call add_help,step-%,t,\
   241 Generic target to execute any step inside the iMaker configuration. Any step (e.g. BUILD_*,CLEAN_*) can be executed with step-STEPNAME.\
   224 Generic target to execute any step inside the iMaker configuration. Any step (e.g. BUILD_*,CLEAN_*) can be executed with step-STEPNAME.\
   242 Example: step-ROFS2PRE executes the CLEAN_ROFS2PRE and BUILD_ROFS2PRE commands.)
   225 Example: step-ROFS2PRE executes the CLEAN_ROFS2PRE and BUILD_ROFS2PRE commands.)
   243 $(call add_help,print-%,t,Print the value of the given variable to the screen.)
   226 $(call add_help,default,t,Default target, uses variable TARGET_DEFAULT to get actual target(s), current default = $$(TARGET_DEFAULT).)
   244 
   227 
   245 $(call add_help,help,t,Print help on help targets.)
   228 $(call add_help,help,t,Print help on help targets.)
   246 $(call add_help,help-%,t,Print help on help items matching the pattern.)
   229 $(call add_help,help-%,t,Print help on help items matching the pattern.)
   247 $(call add_help,help-%-list,t,Print a list of help items matching the pattern.)
   230 $(call add_help,help-%-list,t,Print a list of help items matching the pattern.)
   248 $(call add_help,help-target,t,Print help on all targets (same as help-target-*).)
   231 $(call add_help,help-target,t,Print help on all targets (same as help-target-*).)