Skip to content

Commit 7b8115c

Browse files
committed
tarball: build system: add variables printing and troubleshooting targets.
1 parent 5e66fc9 commit 7b8115c

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

crossplatform.mk

+55
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
1+
empty :=
2+
space := $(empty) $(empty)
3+
str_is = $(if $(subst $2,,$1),,true)
4+
single_goal = $(if $(word 2,$(MAKECMDGOALS)),,$(word 1,$(MAKECMDGOALS)))
5+
single_goal_split = $(subst -,$(space),$1)
6+
goals_is_single_print_target = $(if $(single_goal),$(if $(call str_is,$(word 1,$(single_goal_split)),print),$(if $(call str_is,$(word 2,$(single_goal_split)),var),true,$(if $(call str_is,$(word 2,$(single_goal_split)),substr),$(if $(call str_is,$(word 3,$(single_goal_split)),vars),true,),)),),)
17
ifneq ($(wildcard config.mk),)
8+
ifeq ($(goals_is_single_print_target),)
29
$(info Using config.mk configuration file.)
10+
endif
311
include config.mk
412
endif
513

@@ -439,3 +447,50 @@ ifdef WINDOWS_TARGET
439447
endif
440448
endif
441449
endif
450+
451+
var_info = $(if $(value $1),$1 = $(value $1),$1 is defined as an empty value)
452+
var_eval = $(if $(value $1),$(if $($1),$1 = $($1),$1 evaluates to an empty value),$1 is defined as an empty value)
453+
var_both = $(if $(value $1),$1 = $(value $1) $(if $($1),$(if $(call str_is,$($1),$(value $1)),(value equal to definition),= $($1)),= (empty value)),$1 is defined as an empty value)
454+
var_stat = $(call var_info,$1) [$(origin $1) $(flavor $1)]
455+
var_full = $(call var_both,$1) [$(origin $1) $(flavor $1)]
456+
info_var = $(info $(call $(if $2,$2,var_info),$1))
457+
info_check_var_defined = $(info $(if $(subst $(space),,$(foreach var,$(.VARIABLES),$(if $(subst $1,,$(var)),,1))),$(call $(if $2,$2,var_info),$1),$1 is not defined))
458+
info_all_vars = $(foreach var,$(sort $(.VARIABLES)),$(call info_var,$(var),$2))
459+
info_all_substr_vars = $(foreach var,$(sort $(.VARIABLES)),$(if $(findstring $1,$(var)),$(call info_var,$(var),$2),))
460+
msg_var_eval_crash = is not provided since evaluating variables that use control flow functions will crash
461+
462+
.PHONY: print-all-vars-info print-all-vars-eval print-all-vars-both print-all-vars-stat print-all-vars-full
463+
.NOTPARALLEL: print-all-vars-info print-all-vars-eval print-all-vars-both print-all-vars-stat print-all-vars-full
464+
print-all-vars-info: ; @$(call info_all_vars)
465+
print-all-vars-eval: ; @$(info note: print-all-vars-eval $(msg_var_eval_crash))
466+
print-all-vars-both: ; @$(info note: print-all-vars-both $(msg_var_eval_crash))
467+
print-all-vars-stat: ; @$(if $(subst all,,$*),$(call info_check_var_defined,$*,var_stat),$(call info_all_vars,var_stat))
468+
print-all-vars-full: ; @$(info note: print-all-vars-full $(msg_var_eval_crash))
469+
470+
.PHONY: print-var-info-% print-var-eval-% print-var-both-% print-var-stat-% print-var-full-%
471+
.NOTPARALLEL: print-var-info-% print-var-eval-% print-var-both-% print-var-stat-% print-var-full-%
472+
print-var-info-%: ; @$(call info_check_var_defined,$*)
473+
print-var-eval-%: ; @$(call info_check_var_defined,$*,var_eval)
474+
print-var-both-%: ; @$(call info_check_var_defined,$*,var_both)
475+
print-var-stat-%: ; @$(call info_check_var_defined,$*,var_stat)
476+
print-var-full-%: ; @$(call info_check_var_defined,$*,var_full)
477+
478+
.PHONY: print-substr-vars-info-% print-substr-vars-eval-% print-substr-vars-both-% print-substr-vars-stat-% print-substr-vars-full-%
479+
.NOTPARALLEL: print-substr-vars-info-% print-substr-vars-eval-% print-substr-vars-both-% print-substr-vars-stat-% print-substr-vars-full-%
480+
print-substr-vars-info-%: ; @$(call info_all_substr_vars,$*)
481+
print-substr-vars-eval-%: ; @$(call info_all_substr_vars,$*,var_eval)
482+
print-substr-vars-both-%: ; @$(call info_all_substr_vars,$*,var_both)
483+
print-substr-vars-stat-%: ; @$(call info_all_substr_vars,$*,var_stat)
484+
print-substr-vars-full-%: ; @$(call info_all_substr_vars,$*,var_full)
485+
486+
.PHONY: troubleshoot-example
487+
.NOTPARALLEL: troubleshoot-example
488+
troubleshoot-example:
489+
@$(call info_check_var_defined,OS,var_both)
490+
@$(call info_check_var_defined,TERM,var_both)
491+
@$(call info_check_var_defined,MSYSCON,var_both)
492+
@$(call info_check_var_defined,HOST_PLATFORM,var_both)
493+
@$(call info_check_var_defined,WIN_PS_TOOLS,var_both)
494+
@$(call info_check_var_defined,WIN_SHELL_COMMANDS,var_both)
495+
496+
.DEFAULT_GOAL =

0 commit comments

Comments
 (0)