msxbuild/lib/make/mb_proj.mk

291 lines
14 KiB
Makefile
Raw Normal View History

MB_PROJ_META_NAME ?= MSXBUILD
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable,MB_PROJ_META_NAME,"The project name.")
MB_PROJ_META_DESCRIPTION ?=
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable,MB_PROJ_META_DESCRIPTION,"The project description.")
MB_PROJ_META_WEBSITE ?=
2024-07-07 18:53:06 +00:00
$(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
2024-07-07 18:53:06 +00:00
$(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
2024-07-07 18:53:06 +00:00
$(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
2024-07-07 18:53:06 +00:00
$(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
2024-07-10 14:08:07 +00:00
$(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
2024-07-10 14:08:07 +00:00
$(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
2024-07-07 18:53:06 +00:00
$(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.")