msxbuild/lib/make/mb_proj.mk
Willem Cazander 97db36a611
All checks were successful
Run test asserts / Test-Asserts (push) Successful in -7s
Doc paste typo.
2024-07-10 16:08:07 +02:00

291 lines
14 KiB
Makefile
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

MB_PROJ_META_NAME ?= MSXBUILD
$(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.")
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 include location folder as src folder.","<path-src>")
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 include location folder as bin folder.","<path-src> <path-bin>")
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.","<mod-bin> <deps>")
define mb_proj_grow_deps_phase_clean
$(MB__    )$(eval @@clean-deps:: $(1))
endef
$(call mb_make_call,mb_doc_function_deep,mb_proj_grow_deps_phase_clean,"Grow the deps of the '@clean' phase..","<slave-target>")
define mb_proj_grow_deps_phase_init
$(MB__    )$(eval @@init-deps:: $(1))
endef
$(call mb_make_call,mb_doc_function_deep,mb_proj_grow_deps_phase_init,"Grow the deps of the '@init' phase..","<slave-target>")
define mb_proj_grow_deps_phase_process
$(MB__    )$(eval @@process-deps:: $(1))
endef
$(call mb_make_call,mb_doc_function_deep,mb_proj_grow_deps_phase_process,"Grow the deps of the '@process' phase..","<slave-target>")
define mb_proj_grow_deps_phase_compile
$(MB__    )$(eval @@compile-deps:: $(1))
endef
$(call mb_make_call,mb_doc_function_deep,mb_proj_grow_deps_phase_compile,"Grow the deps of the '@compile' phase..","<slave-target>")
define mb_proj_grow_deps_phase_link
$(MB__    )$(eval @@link-deps:: $(1))
endef
$(call mb_make_call,mb_doc_function_deep,mb_proj_grow_deps_phase_link,"Grow the deps of the '@link' phase..","<slave-target>")
define mb_proj_grow_deps_phase_build
$(MB__    )$(eval @@build-deps:: $(1))
endef
$(call mb_make_call,mb_doc_function_deep,mb_proj_grow_deps_phase_build,"Grow the deps of the '@build' phase..","<slave-target>")
define mb_proj_grow_deps_phase_test
$(MB__    )$(eval @@test-deps:: $(1))
endef
$(call mb_make_call,mb_doc_function_deep,mb_proj_grow_deps_phase_test,"Grow the deps of the '@test' phase..","<slave-target>")
define mb_proj_grow_deps_phase_package
$(MB__    )$(eval @@package-deps:: $(1))
endef
$(call mb_make_call,mb_doc_function_deep,mb_proj_grow_deps_phase_package,"Grow the deps of the '@package' phase..","<slave-target>")
define mb_proj_grow_deps_phase_package_qa
$(MB__    )$(eval @@package-qa-deps:: $(1))
endef
$(call mb_make_call,mb_doc_function_deep,mb_proj_grow_deps_phase_package_qa,"Grow the deps of the '@package-qa' phase..","<slave-target>")
define mb_proj_grow_deps_phase_package_deploy
$(eval @@package-deploy-deps:: $(1))
endef
$(call mb_make_call,mb_doc_function_deep,mb_proj_grow_deps_phase_package_deploy,"Grow the deps of the '@package-deploy' phase..","<slave-target>")
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_proj_flow_setup
.RECIPEPREFIX := $(MB__RECIPE)
@@clean:
$(MB__RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before)
$(MB__    )$$(call mb_make_call,mb_make_flag_phony,@@clean)
@@clean-deps::
$(MB__    )$$(call mb_make_call,mb_make_flag_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_flag_phony,@clean)
@@init:
$(MB__RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before)
$(MB__    )$$(call mb_make_call,mb_make_flag_phony,@@init)
@@init-deps::
$(MB__    )$$(call mb_make_call,mb_make_flag_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_flag_phony,@init)
@@process: @init
$(MB__RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before)
$(MB__    )$$(call mb_make_call,mb_make_flag_phony,@@process)
@@process-deps::
$(MB__    )$$(call mb_make_call,mb_make_flag_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_flag_phony,@process)
@@compile: @process
$(MB__RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before)
$(MB__    )$$(call mb_make_call,mb_make_flag_phony,@@compile)
@@compile-deps::
$(MB__    )$$(call mb_make_call,mb_make_flag_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_flag_phony,@compile)
@@link: @compile
$(MB__RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before)
$(MB__    )$$(call mb_make_call,mb_make_flag_phony,@@link)
@@link-deps::
$(MB__    )$$(call mb_make_call,mb_make_flag_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_flag_phony,@link)
@@build: @link
$(MB__RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before)
$(MB__    )$$(call mb_make_call,mb_make_flag_phony,@@build)
@@build-deps::
$(MB__    )$$(call mb_make_call,mb_make_flag_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_flag_phony,@build)
@@test: @build
$(MB__RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before)
$(MB__    )$$(call mb_make_call,mb_make_flag_phony,@@test)
@@test-deps::
$(MB__    )$$(call mb_make_call,mb_make_flag_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_flag_phony,@test)
@@package: @test
$(MB__RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before)
$(MB__    )$$(call mb_make_call,mb_make_flag_phony,@@package)
@@package-deps::
$(MB__    )$$(call mb_make_call,mb_make_flag_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_flag_phony,@package)
@@package-qa: @package
$(MB__RECIPE)$$(call mb_make_call,_mb_proj_flow_step_before)
$(MB__    )$$(call mb_make_call,mb_make_flag_phony,@@package-qa)
@@package-qa-deps::
$(MB__    )$$(call mb_make_call,mb_make_flag_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_flag_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_flag_phony,@@package-deploy)
@@package-deploy-deps::
$(MB__    )$$(call mb_make_call,mb_make_flag_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_flag_phony,@package-deploy)
.RECIPEPREFIX := $(MB__RECIPEPREFIX)
endef
define mb_proj_flow_setup
$(MB__    )$(call mb_make_call,mb_make_check_arg1,mb_proj_flow_setup,$(1))
$(MB__    )$(eval $(call mb_make_call,__mb_proj_flow_setup,$(1)))
endef
$(call mb_make_call,mb_doc_function_flow,mb_proj_flow_setup,"Prints flow of abstract project build cycle.","<build-dirs>")
define __mb_proj_flow_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_flag_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_flag_phony,@$$(MB_I18N_PROJ_PHASEID_INIT))
@$$(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_flag_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_flag_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_flag_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_flag_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_flag_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_flag_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_flag_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_flag_phony,@$$(MB_I18N_PROJ_PHASEID_PACKAGE_DEPLOY))
.RECIPEPREFIX := $(MB__RECIPEPREFIX)
endef
define mb_proj_flow_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_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__    )$(eval $(call mb_make_call,__mb_proj_flow_setup_i18n))
endef
$(call mb_make_call,mb_doc_function_flow,mb_proj_flow_setup_i18n,"Prints flow for i18n wrapper of project build cycle.")