msxbuild/lib/msxbuild.mk
Willem Cazander 35577362c2
All checks were successful
Run test asserts / Test-Asserts (push) Successful in 5s
Moved self doc to other file to use normal functions.
2024-07-18 13:25:50 +02:00

110 lines
5.4 KiB
Makefile
Raw Permalink 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.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#
# msxbuild.mk - Makefile helper to use with msx projects.
#
# Make make, make behave;
MAKEFLAGS += --no-builtin-rules
MAKEFLAGS += --no-builtin-variables
MAKEFLAGS += --warn-undefined-variables
.DELETE_ON_ERROR :=
.RECIPEPREFIX := $(if $(.RECIPEPREFIX),$(.RECIPEPREFIX),>)
.SUFFIXES :=
.ONESHELL :=
.SHELLFLAGS := -e -u -o pipefail -c
SHELL := bash
ifeq ($(origin .RECIPEPREFIX), undefined)
$(error This version of make does not support dynamic white space brain fuck mode.)
endif
#########################################################
### IN THIS FILE NEVER USE A WHITE SPACE OR TAB SPACE ###
#########################################################
# Set some root variable to use in this library
MB_@RECIPE := ]
MB_@RECIPEPREFIX := $(.RECIPEPREFIX)
MB_@BASEPATH := $(dir $(lastword $(MAKEFILE_LIST)))
MB_@WORK := /../_work/
MB_@GRAPH_CHAIN :=
# Build multiple groups of chains of includes
define __mb-include
ifdef DEBUG
ifneq ("$$(DEBUG)", "off")
$$(warning DEBUG $(0) ($(1)))
endif
endif
.PHONY: $(MB_@BASEPATH)$(1)
include $(MB_@BASEPATH)$(1)
$(MB_@BASEPATH)$(1): $(MB_@GRAPH_CHAIN)
MB_@GRAPH_CHAIN := $(MB_@BASEPATH)$(1)
endef
# Include full library grouped in functional blocks
MB_@GRAPH_CHAIN := @@include-parent
$(eval $(call __mb-include,make/सिस्टमₚᵣₐᵧToੴ/mb_xxx.mk))
$(eval $(call __mb-include,make/सिस्टमₚᵣₐᵧToੴ/mb_doc.mk))
$(eval $(call __mb-include,make/सिस्टमₚᵣₐᵧToੴ/mb_make_call.mk))
$(eval $(call __mb-include,make/सिस्टमₚᵣₐᵧToੴ/mb_make_space.mk))
$(eval $(call __mb-include,make/सिस्टमₚᵣₐᵧToੴ/mb_make_doc4u.mk))
$(eval $(call __mb-include,make/सिस्टमₚᵣₐᵧToੴ/mb_make_check.mk))
$(eval $(call __mb-include,make/सिस्टमₚᵣₐᵧToੴ/mb_make_module.mk))
$(eval $(call __mb-include,make/सिस्टमₚᵣₐᵧToੴ/mb_make_xml.mk))
$(eval $(call __mb-include,make/सिस्टमₚᵣₐᵧToੴ/mb_make.mk))
@@include-libs:: $(MB_@GRAPH_CHAIN)
MB_@GRAPH_CHAIN := @@include-parent
$(eval $(call __mb-include,make/ᐅᖓᕙᕆᐊᖅᓯᓂᖅ/mb_os.mk))
$(eval $(call __mb-include,make/ᐅᖓᕙᕆᐊᖅᓯᓂᖅ/mb_conv.mk))
$(eval $(call __mb-include,make/ᐅᖓᕙᕆᐊᖅᓯᓂᖅ/mb_sdcc.mk))
$(eval $(call __mb-include,make/ᐅᖓᕙᕆᐊᖅᓯᓂᖅ/mb_package.mk))
$(eval $(call __mb-include,make/ᐅᖓᕙᕆᐊᖅᓯᓂᖅ/mb_nestor80.mk))
@@include-libs:: $(MB_@GRAPH_CHAIN)
MB_@GRAPH_CHAIN := @@include-parent
$(eval $(call __mb-include,make/天房系統擴展/mb_msxrom.mk))
$(eval $(call __mb-include,make/天房系統擴展/mb_msxhub.mk))
$(eval $(call __mb-include,make/天房系統擴展/mb_msxpipe.mk))
$(eval $(call __mb-include,make/天房系統擴展/mb_openmsx.mk))
$(eval $(call __mb-include,make/天房系統擴展/mb_autoexec.mk))
@@include-libs:: $(MB_@GRAPH_CHAIN)
MB_@GRAPH_CHAIN := @@include-parent
$(eval $(call __mb-include,make/𓃬𓍄𓋹𓀭/mb_flow_nx01.mk))
$(eval $(call __mb-include,make/𓃬𓍄𓋹𓀭/mb_flow_help.mk))
$(eval $(call __mb-include,make/𓃬𓍄𓋹𓀭/mb_flow_proj.mk))
$(eval $(call __mb-include,make/𓃬𓍄𓋹𓀭/mb_flow_assert.mk))
$(eval $(call __mb-include,make/𓃬𓍄𓋹𓀭/mb_flow_macro80.mk))
$(eval $(call __mb-include,make/𓃬𓍄𓋹𓀭/mb_flow_nestor80.mk))
$(eval $(call __mb-include,make/𓃬𓍄𓋹𓀭/mb_flow_sdcc.mk))
$(eval $(call __mb-include,make/𓃬𓍄𓋹𓀭/mb_flow_clone.mk))
@@include-libs:: $(MB_@GRAPH_CHAIN)
MB_@GRAPH_CHAIN :=
$(eval $(call __mb-include,make/mb_env.mk))
$(eval $(call __mb-include,make/mb_flight.mk))
$(eval $(call __mb-include,make/ i18n/mb_i18n.mk))
ifneq ("$(MB_I18N)", "off")
$(if $(MB_I18N),$(if $(wildcard $(MB_@BASEPATH)make/ i18n/mb_i18n_$(MB_I18N).mk),,$(error Unsupported i18n language code: $(MB_I18N))))
$(eval $(call __mb-include,make/ i18n/mb_i18n_$(MB_I18N).mk))
endif
@include:: $(MB_@GRAPH_CHAIN)
MB_@GRAPH_CHAIN :=
# Glue phony targets to get internal @include tree (semi) correct (TODO: fix chain in: mb_flow_0module_setup)
.PHONY: @include @@include-root @@include-libs @@include-mods @@include-parent @@include-tree
@@include-parent:: @@include-mods
@include:: @@include-libs @@include-root
# Document our internal variables, now we have the functions loaded
$(MB_ )$(call mb-make-call,mb-doc-variable-rock,MB_@RECIPE,Recipe prefix to set and indent flow eval rules.)
$(MB_  )$(call mb-make-call,mb-doc-variable-rock,MB_@RECIPEPREFIX,Recipe prefix to restore to after flow eval rules.)
$(MB_   )$(call mb-make-call,mb-doc-variable-rock,MB_@BASEPATH,Path where msxbuild lib folder is located.)
$(MB_    )$(call mb-make-call,mb-doc-variable-rock,MB_@WORK,Shorthand to move to the work folder of module.)
$(MB_     )$(call mb-make-call,mb-doc-variable-rock,MB_@GRAPH_CHAIN,Helper to chain internal graph sections includes into groups.)
# Provider+doc easy single function start point for user
define mb-setup-default
$(MB_ )$(call mb-make-call,mb-make-check-arg2,$(0),$(1),$(2))
$(MB_  )$(call mb-make-call,mb-flow-doc-help)
$(MB_   )$(call mb-make-call,mb-flow-nx01-skywalker,$(2))
$(MB_    )$(call mb-make-call,mb-flow-proj-setup,$(1),@include)
$(MB_     )$(call mb-make-call,mb-flight-proj-flow-video,$(1))
endef
$(call mb-make-call,mb-doc-function,mb-setup-default,Setup default extenstions to configure dynamic project flow.,<bin-dir> <src-dir>)