msxbuild/lib/make/mb_proj.mk

251 lines
9 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.")
MB_PROJ_STEP_BEFORE_PREFIX ?= "Before -- "
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable_deep,MB_PROJ_STEP_BEFORE_PREFIX,"Prefix for begin phase message.")
MB_PROJ_STEP_AFTER_PREFIX ?= "After ---- "
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable_deep,MB_PROJ_STEP_AFTER_PREFIX,"Prefix for af phase message.")
MB_PROJ_STEP_DONE_PREFIX ?= "Finished executing prime pi target "
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable_deep,MB_PROJ_STEP_DONE_PREFIX,"Prefix for af phase message.")
MB_PROJ_PHASE_PROCESS_DEPS ?=
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable_flow,MB_PROJ_PHASE_PROCESS_DEPS,"The targets to trigger by project @process target.")
MB_PROJ_PHASE_COMPILE_DEPS ?=
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable_flow,MB_PROJ_PHASE_COMPILE_DEPS,"The targets to trigger by project @compile target.")
MB_PROJ_PHASE_LINK_DEPS ?=
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable_flow,MB_PROJ_PHASE_LINK_DEPS,"The targets to trigger by project @link target.")
MB_PROJ_PHASE_BUILD_DEPS ?=
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable_flow,MB_PROJ_PHASE_BUILD_DEPS,"The targets to trigger by project @build target.")
MB_PROJ_PHASE_TEST_DEPS ?=
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable_flow,MB_PROJ_PHASE_TEST_DEPS,"The targets to trigger by project @test target.")
MB_PROJ_PHASE_PACKAGE_DEPS ?=
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable_flow,MB_PROJ_PHASE_PACKAGE_DEPS,"The targets to trigger by project @package target.")
MB_PROJ_PHASE_PACKAGE_QA_DEPS ?=
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable_flow,MB_PROJ_PHASE_PACKAGE_QA_DEPS,"The targets to trigger by project @package-qa target.")
MB_PROJ_PHASE_PACKAGE_DEPLOY_DEPS ?=
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable_flow,MB_PROJ_PHASE_PACKAGE_QA_DEPLOY,"The targets to trigger by project @package-deploy target.")
define mb_proj_module_path_src
$(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
$(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
$(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_flow_step_before
$(call mb_make_call,mb_make_echo_phase,$(MB_PROJ_STEP_BEFORE_PREFIX)$@)
endef
define _mb_proj_flow_step_done
$(call mb_make_call,mb_make_echo_phase,$(MB_PROJ_STEP_AFTER_PREFIX)$@)
$(if $(filter $@,$(MAKECMDGOALS)),$(call mb_make_call,mb_make_echo_good,$(MB_PROJ_STEP_DONE_PREFIX)$@))
endef
define _mb_proj_run_clean
$(foreach folder,$(1),$(if $(wildcard $(folder)),$(call mb_make_call,mb_make_echo_command,Removing folder $(folder));))
$(foreach folder,$(1),$(if $(wildcard $(folder)),$(call mb_make_call,mb_os_dir_delete,$(folder))))
endef
define _mb_proj_run_init
$(foreach folder,$(1),$(if $(wildcard $(folder)),,$(call mb_make_call,mb_make_echo_command,Creating folder $(folder));))
$(foreach folder,$(1),$(if $(wildcard $(folder)),,$(call mb_make_call,mb_os_dir_create,$(folder))))
endef
define mb_proj_flow_setup
@@clean:
$$(call mb_make_call,_mb_proj_flow_step_before)
.PHONY: @@clean
@clean: @@clean
$$(call mb_make_call,_mb_proj_run_clean,$(1))
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@clean,"Clean's the project build folders.")
.PHONY: @clean
@@init:
$$(call mb_make_call,_mb_proj_flow_step_before)
.PHONY: @@init
@init: @@init
$$(call mb_make_call,_mb_proj_run_init,$(1))
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@init,"Create the project output folders.")
.PHONY: @init
@@process: @init
$$(call mb_make_call,_mb_proj_flow_step_before)
.PHONY: @@process
@process: @@process $$(MB_PROJ_PHASE_PROCESS_DEPS)
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@process,"Process sources before compiling.")
.PHONY: @process
@@compile: @process
$$(call mb_make_call,_mb_proj_flow_step_before)
.PHONY: @@compile
@compile: @@compile $$(MB_PROJ_PHASE_COMPILE_DEPS)
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@compile,"Compiles all project sources.")
.PHONY: @compile
@@link: @compile
$$(call mb_make_call,_mb_proj_flow_step_before)
.PHONY: @@link
@link: @@link $$(MB_PROJ_PHASE_LINK_DEPS)
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@link,"Link all project intermediate files.")
.PHONY: @link
@@build: @link
$$(call mb_make_call,_mb_proj_flow_step_before)
.PHONY: @@build
@build: @@build $$(MB_PROJ_PHASE_BUILD_DEPS)
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@build,"Build all project artifacts.")
.PHONY: @build
@@test: @build
$$(call mb_make_call,_mb_proj_flow_step_before)
.PHONY: @@test
@test: @@test $$(MB_PROJ_PHASE_TEST_DEPS)
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@test,"Run all assertion tests.")
.PHONY: @test
@@package: @test
$$(call mb_make_call,_mb_proj_flow_step_before)
.PHONY: @@package
@package: @@package $$(MB_PROJ_PHASE_PACKAGE_DEPS)
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@package,"Create all packages of project.")
.PHONY: @package
@@package-qa: @package
$$(call mb_make_call,_mb_proj_flow_step_before)
.PHONY: @@package-qa
@package-qa: @@package-qa $$(MB_PROJ_PHASE_PACKAGE_QA_DEPS)
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@package-qa,"Run all packages QA of project.")
.PHONY: @package-qa
@@package-deploy: @package-qa
$$(call mb_make_call,_mb_proj_flow_step_before)
.PHONY: @@package-deploy
@package-deploy: @@package-deploy $$(MB_PROJ_PHASE_PACKAGE_DEPLOY_DEPS)
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@package-deploy,"Deploy all the packages.")
.PHONY: @package-deploy
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_jp
@クリーン: @clean
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@,"プロジェクトのビルドフォルダーをクリーンアップします。")
.PHONY: @クリーン
@初期化する: @init
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@,"モジュール出力フォルダーをセットアップして検証します。")
.PHONY: @@初期化する
@プロセス: @初期化する @process
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@,"コンパイル前にソースを処理します。")
.PHONY: @プロセス
@コンパイル: @プロセス @compile
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@,"すべてのプロジェクト ソースをコンパイルします。")
.PHONY: @コンパイル
@リンク: @コンパイル @link
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@,"すべてのプロジェクト中間ファイルをリンクします。")
.PHONY: @リンク
@建てる: @リンク @build
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@,"すべてのプロジェクト成果物をビルドします。")
.PHONY: @建てる
@テスト: @建てる @test
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@,"すべてのアサーション テストを実行します。")
.PHONY: @テスト
@パッケージ: @テスト @package
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@,"プロジェクトのパッケージを作成します。")
.PHONY: @パッケージ
@パッケージの品質保証: @パッケージ @package-qa
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@,"すべてのパッケージを実行します。プロジェクトの品質保証。")
.PHONY: @パッケージの品質保証
@パッケージのデプロイ: @パッケージの品質保証 @package-deploy
$$(call mb_make_call,_mb_proj_flow_step_done)
2024-07-07 18:53:06 +00:00
$$(call mb_make_call,mb_doc_target_help,@,"パッケージをデプロイします。")
.PHONY: @パッケージのデプロイ
endef
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_function_flow,mb_proj_flow_setup_jp,"Prints flow for japanese wrapper of project build cycle.")