MB_PROJ_META_GROUP_ID ?= $(call mb_make_call,mb_doc_variable,MB_PROJ_META_GROUP_ID,"The project group id.") MB_PROJ_META_ARTIFACT_ID ?= $(call mb_make_call,mb_doc_variable,MB_PROJ_META_ARTIFACT_ID,"The project artifact id.") MB_PROJ_META_VERSION ?= $(call mb_make_call,mb_doc_variable,MB_PROJ_META_VERSION,"The project version.") MB_PROJ_META_NAME ?= $(call mb_make_call,mb_doc_variable,MB_PROJ_META_NAME,"The project name.") MB_PROJ_META_DESCRIPTION ?= $(call mb_make_call,mb_doc_variable,MB_PROJ_META_DESCRIPTION,"The project description.") MB_PROJ_META_WEBSITE ?= $(call mb_make_call,mb_doc_variable,MB_PROJ_META_WEBSITE,"The project website location.") MB_PROJ_PHASE_ALL = @clean @init @process @compile @link @build @test @package @package-qa @package-deploy $(call mb_make_call,mb_doc_variable_rock,MB_PROJ_PHASE_ALL,"All the phases of an project with flow steps.") define mb_proj_module_path_src $(MB_ᕽᕽᕽ   )$(1)/$(subst /,,$(subst $(1),,$(dir $(lastword $(MAKEFILE_LIST))))) endef $(call mb_make_call,mb_doc_function_deep,mb_proj_module_path_src,"Convert current location folder as src folder.","") define mb_proj_module_path_bin $(MB_ᕽᕽᕽ   )$(2)/$(subst /,,$(subst $(1),,$(dir $(lastword $(MAKEFILE_LIST))))) endef $(call mb_make_call,mb_doc_function_deep,mb_proj_module_path_src,"Convert current location folder as bin folder."," ") define mb_proj_module_local_deps $(MB_ᕽᕽᕽ   )$(foreach _dep,$(2),$(1)/$(notdir $(_dep))) endef $(call mb_make_call,mb_doc_function_deep,mb_proj_module_deps,"Convert other files to local deps."," ") define mb_proj_grow_deps_phase $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_arg2,$(0),$(1),$(2)) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_value_valid,$(0),$(1),$(MB_PROJ_PHASE_ALL)) $(MB_ᕽᕽᕽ   )$(eval @$(1)-deps:: $(2)) endef $(call mb_make_call,mb_doc_function_deep,mb_proj_grow_deps_phase_clean,"Grow the deps of the selected phase.."," ") define _mb_proj_flow_step_before $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_os_echo_phase,$(MB_I18N_PROJ_STEP_BEFORE) $@) endef define _mb_proj_flow_step_done $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_os_echo_phase,$(MB_I18N_PROJ_STEP_AFTER) $@) $(MB_ᕽᕽᕽ   )$(if $(value MAKECMDGOALS),$(if $(filter $@,$(MAKECMDGOALS)),$(call mb_make_call,mb_os_echo_good,$(MB_I18N_PROJ_STEP_DONE) $@))) endef define _mb_proj_run_clean $(MB_ᕽᕽᕽ   )$(foreach folder,$(1),$(if $(wildcard $(folder)),$(call mb_make_call,mb_os_echo_command,$(MB_I18N_PROJ_DIR_DELETE) $(folder));)) $(MB_ᕽᕽᕽ   )$(foreach folder,$(1),$(if $(wildcard $(folder)),$(call mb_make_call,mb_os_dir_delete,$(folder)))) endef define _mb_proj_run_init $(MB_ᕽᕽᕽ   )$(foreach folder,$(1),$(if $(wildcard $(folder)),,$(call mb_make_call,mb_os_echo_command,$(MB_I18N_PROJ_DIR_CREATE) $(folder));)) $(MB_ᕽᕽᕽ   )$(foreach folder,$(1),$(if $(wildcard $(folder)),,$(call mb_make_call,mb_os_dir_create,$(folder)))) endef define __mb_flow_proj_setup .RECIPEPREFIX := $(MB_@RECIPE) @@clean: @include $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@clean) @@clean-deps:: @include $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@clean-deps) @clean: @@clean @@clean-deps $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_run_clean,$(1)) $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@clean,"Clean's the project build folders.") $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@clean) @@init: @include $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@init) @@init-deps:: @include $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@init-deps) @init: @@init @@init-deps $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_run_init,$(1)) $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@init,"Create the project output folders.") $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@init) @@prepare: @init $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@prepare) @@prepare-deps:: $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@prepare-deps) @prepare: @@prepare @@prepare-deps $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@prepare,"Prepare sources before processing.") $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@prepare) @@process: @prepare $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@process) @@process-deps:: $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@process-deps) @process: @@process @@process-deps $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@process,"Process sources before compiling.") $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@process) @@compile: @process $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@compile) @@compile-deps:: $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@compile-deps) @compile: @@compile @@compile-deps $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@compile,"Compiles all project sources.") $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@compile) @@link: @compile $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@link) @@link-deps:: $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@link-deps) @link: @@link @@link-deps $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@link,"Link all project intermediate files.") $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@link) @@build: @link $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@build) @@build-deps:: $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@build-deps) @build: @@build @@build-deps $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@build,"Build all project artifacts.") $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@build) @@test: @build $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@test) @@test-deps:: $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@test-deps) @test: @@test @@test-deps $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@test,"Run all assertion tests.") $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@test) @@package: @test $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@package) @@package-deps:: $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@package-deps) @package: @@package @@package-deps $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@package,"Create all packages of project.") $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@package) @@package-qa: @package $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@package-qa) @@package-qa-deps:: $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@package-qa-deps) @package-qa: @@package-qa @@package-qa-deps $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@package-qa,"Run all packages QA of project.") $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@package-qa) @@package-deploy: @package-qa $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@package-deploy) @@package-deploy-deps:: $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@package-deploy-deps) @package-deploy: @@package-deploy @@package-deploy-deps $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@package-deploy,"Deploy all the packages.") $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@package-deploy) @@all: @package-qa $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@all) @@all-deps:: $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@@all-deps) @all: @@all @@all-deps $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@all,"Run full build and package QA tests.") $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@all) .RECIPEPREFIX := $(MB_@RECIPEPREFIX) endef define mb_flow_proj_setup $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_arg1,$(0),$(1)) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_PROJ_META_GROUP_ID) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_PROJ_META_ARTIFACT_ID) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_PROJ_META_VERSION) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_PROJ_META_NAME) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_PROJ_META_DESCRIPTION) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_PROJ_META_WEBSITE) $(MB_ᕽᕽᕽ   )$(eval $(call mb_make_call,__$(0),$(1))) $(MB_ᕽᕽᕽ   )$(if $(MB_I18N),$(if $(filter off,$(MB_I18N)),,$(call mb_make_call,_$(0)_i18n))) endef $(call mb_make_call,mb_doc_function_flow,mb_flow_proj_setup,"Prints flow of abstract project build cycle.","") define __mb_flow_proj_setup_i18n .RECIPEPREFIX := $(MB_@RECIPE) @$$(MB_I18N_PROJ_PHASEID_CLEAN): @clean $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@$$(MB_I18N_PROJ_PHASEID_CLEAN),$$(MB_I18N_PROJ_PHASEDOC_CLEAN)) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@$$(MB_I18N_PROJ_PHASEID_CLEAN)) @$$(MB_I18N_PROJ_PHASEID_INIT): @init $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@$$(MB_I18N_PROJ_PHASEID_INIT),$$(MB_I18N_PROJ_PHASEDOC_INIT)) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@$$(MB_I18N_PROJ_PHASEID_INIT)) @$$(MB_I18N_PROJ_PHASEID_PREPARE): @$$(MB_I18N_PROJ_PHASEID_PREPARE) @prepare $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@$$(MB_I18N_PROJ_PHASEID_PREPARE),$$(MB_I18N_PROJ_PHASEDOC_PREPARE)) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@$$(MB_I18N_PROJ_PHASEID_PREPARE)) @$$(MB_I18N_PROJ_PHASEID_PROCESS): @$$(MB_I18N_PROJ_PHASEID_INIT) @process $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@$$(MB_I18N_PROJ_PHASEID_PROCESS),$$(MB_I18N_PROJ_PHASEDOC_PROCESS)) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@$$(MB_I18N_PROJ_PHASEID_PROCESS)) @$$(MB_I18N_PROJ_PHASEID_COMPILE): @$$(MB_I18N_PROJ_PHASEID_PROCESS) @compile $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@$$(MB_I18N_PROJ_PHASEID_COMPILE),$$(MB_I18N_PROJ_PHASEDOC_COMPILE)) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@$$(MB_I18N_PROJ_PHASEID_COMPILE)) @$$(MB_I18N_PROJ_PHASEID_LINK): @$$(MB_I18N_PROJ_PHASEID_COMPILE) @link $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@$$(MB_I18N_PROJ_PHASEID_LINK),$$(MB_I18N_PROJ_PHASEDOC_LINK)) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@$$(MB_I18N_PROJ_PHASEID_LINK)) @$$(MB_I18N_PROJ_PHASEID_BUILD): @$$(MB_I18N_PROJ_PHASEID_LINK) @build $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@$$(MB_I18N_PROJ_PHASEID_BUILD),$$(MB_I18N_PROJ_PHASEDOC_BUILD)) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@$$(MB_I18N_PROJ_PHASEID_BUILD)) @$$(MB_I18N_PROJ_PHASEID_TEST): @$$(MB_I18N_PROJ_PHASEID_BUILD) @test $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@$$(MB_I18N_PROJ_PHASEID_TEST),$$(MB_I18N_PROJ_PHASEDOC_TEST)) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@$$(MB_I18N_PROJ_PHASEID_TEST)) @$$(MB_I18N_PROJ_PHASEID_PACKAGE): @$$(MB_I18N_PROJ_PHASEID_TEST) @package $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@$$(MB_I18N_PROJ_PHASEID_PACKAGE),$$(MB_I18N_PROJ_PHASEDOC_PACKAGE)) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@$$(MB_I18N_PROJ_PHASEID_PACKAGE)) @$$(MB_I18N_PROJ_PHASEID_PACKAGE_QA): @$$(MB_I18N_PROJ_PHASEID_PACKAGE) @package-qa $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@$$(MB_I18N_PROJ_PHASEID_PACKAGE_QA),$$(MB_I18N_PROJ_PHASEDOC_PACKAGE_QA)) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@$$(MB_I18N_PROJ_PHASEID_PACKAGE_QA)) @$$(MB_I18N_PROJ_PHASEID_PACKAGE_DEPLOY): @$$(MB_I18N_PROJ_PHASEID_PACKAGE_QA) @package-deploy $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@$$(MB_I18N_PROJ_PHASEID_PACKAGE_DEPLOY),$$(MB_I18N_PROJ_PHASEDOC_PACKAGE_DEPLOY)) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@$$(MB_I18N_PROJ_PHASEID_PACKAGE_DEPLOY)) @$$(MB_I18N_PROJ_PHASEID_ALL): @$$(MB_I18N_PROJ_PHASEID_PACKAGE_QA) @all $(MB_@RECIPE)$$(call mb_make_call,_mb_proj_flow_step_done) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_doc_target_help,@$$(MB_I18N_PROJ_PHASEID_ALL),$$(MB_I18N_PROJ_PHASEDOC_ALL)) $(MB_ᕽᕽᕽ   )$$(call mb_make_call,mb_make_target_phony,@$$(MB_I18N_PROJ_PHASEID_ALL)) .RECIPEPREFIX := $(MB_@RECIPEPREFIX) endef define _mb_flow_proj_setup_i18n $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_I18N_PROJ_PHASEID_CLEAN) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_I18N_PROJ_PHASEID_INIT) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_I18N_PROJ_PHASEID_PREPARE) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_I18N_PROJ_PHASEID_PROCESS) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_I18N_PROJ_PHASEID_COMPILE) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_I18N_PROJ_PHASEID_LINK) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_I18N_PROJ_PHASEID_BUILD) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_I18N_PROJ_PHASEID_TEST) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_I18N_PROJ_PHASEID_PACKAGE) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_I18N_PROJ_PHASEID_PACKAGE_QA) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_I18N_PROJ_PHASEID_PACKAGE_DEPLOY) $(MB_ᕽᕽᕽ   )$(call mb_make_call,mb_make_check_variable,MB_I18N_PROJ_PHASEID_ALL) $(MB_ᕽᕽᕽ   )$(eval $(call mb_make_call,_$(0))) endef