msxbuild/lib/msxbuild.mk
Willem Cazander 66990665fa
All checks were successful
Run test asserts / Test-Asserts (push) Successful in 7s
Converted to make style like "filter-out"
2024-07-16 16:45:37 +02:00

108 lines
5.3 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.

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_@INCLUDE_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)
$(if $(MB_@INCLUDE_CHAIN),$(eval $(MB_@BASEPATH)$(1): $(MB_@INCLUDE_CHAIN)))
MB_@INCLUDE_CHAIN := $(MB_@BASEPATH)$(1)
endef
# Include full library grouped in functional blocks
MB_@INCLUDE_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_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_@INCLUDE_CHAIN)
MB_@INCLUDE_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_@INCLUDE_CHAIN)
MB_@INCLUDE_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_@INCLUDE_CHAIN)
MB_@INCLUDE_CHAIN := @@include-parent
$(eval $(call __mb-include,make/𓃬𓍄𓋹𓀭/mb_flow_0module.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_@INCLUDE_CHAIN)
MB_@INCLUDE_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_@INCLUDE_CHAIN)
MB_@INCLUDE_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_@INCLUDE_CHAIN,"Helper to chain 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-0module-include,$(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>")