msxbuild/lib/make/天房系統擴展/mb_autoexec.mk

181 lines
10 KiB
Makefile
Raw Normal View History

2020-12-23 17:14:13 +00:00
MB_AUTOEXEC_SHOW_VERSION ?= off
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_SHOW_VERSION,"Print OS version on boot.")
MB_AUTOEXEC_SHOW_PATH ?= on
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_SHOW_PATH,"Print search path on boot.")
MB_AUTOEXEC_SHOW_INIT ?= on
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_SHOW_INIT,"Print msxbuild init message on boot.")
MB_AUTOEXEC_SHOW_HOST ?= on
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_SHOW_HOST,"Print host machine on boot.")
MB_AUTOEXEC_SHOW_USER ?= on
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_SHOW_USER,"Print host user on boot.")
MB_AUTOEXEC_SHOW_FOLDER ?= on
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_SHOW_FOLDER,"Print host folder on boot.")
MB_AUTOEXEC_SHOW_TARGET ?= on
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_SHOW_TARGET,"Print host target on boot.")
MB_AUTOEXEC_STARTUP_TIMEOUT ?= 60
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_STARTUP_TIMEOUT,"Startup failure timeout of autoexec.")
MB_AUTOEXEC_STARTUP_EXITCODE ?= 124
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_STARTUP_EXITCODE,"Startup failure exit code of autoexec.")
MB_AUTOEXEC_SAFE_ASSERT_TIMEOUT ?= 120
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_SAFE_ASSERT_TIMEOUT,"Safe assert execution failure timeout.")
MB_AUTOEXEC_SAFE_ASSERT_EXITCODE ?= 1
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_SAFE_ASSERT_EXITCODE,"Safe assert execution failure exit code.")
MB_AUTOEXEC_SAFE_CMD_TIMEOUT ?= 300
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_SAFE_CMD_TIMEOUT,"Safe command execution failure timeout.")
MB_AUTOEXEC_SAFE_CMD_EXITCODE ?= 1
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_SAFE_CMD_EXITCODE,"Safe command execution failure exit code.")
2020-12-23 17:14:13 +00:00
MB_AUTOEXEC_STARTUP_NOTE ?=
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_STARTUP_NOTE,"When set this startup note message is shown.")
MB_AUTOEXEC_COLOR_FG ?= 141
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_COLOR_FG,"Default foreground color if none is given.")
MB_AUTOEXEC_COLOR_BG ?= 000
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_COLOR_BG,"Default background color if none if given.")
2024-07-03 11:30:35 +00:00
MB_AUTOEXEC_EMBED_VARS ?=
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_EMBED_VARS,"List of host env variables to copy to msx as 'MSX_x' variables.")
2024-07-03 11:30:35 +00:00
MB_AUTOEXEC_EMBED_USER ?= USER
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_EMBED_USER,"Embedds this host variable to the msx as 'MB_USER' variable.")
MB_AUTOEXEC_TIME_FORMAT ?= 24
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_TIME_FORMAT,"The time format the msx will get set to.")
MB_AUTOEXEC_DATE_FORMAT ?= DD/MM/YY
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_DATE_FORMAT,"The time format the msx will get set to.")
MB_AUTOEXEC_PROMPT_FORMAT ?= %MB_USER%@%_CWD%*
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_PROMPT_FORMAT,"The prompt format for command 2.40 and higher.")
MB_AUTOEXEC_PROMPT_SPACE ?= on
$(call mb-make-call,mb-doc-variable,MB_AUTOEXEC_PROMPT_SPACE,"When on adds an white space after the prompt format.")
define mb-autoexec-append-cmd
2024-07-12 15:59:26 +00:00
$(MB_   )echo -e "$(2)\r" >> $(1)/autoexec.bat
2020-12-23 17:14:13 +00:00
endef
$(call mb-make-call,mb-doc-function,mb-autoexec-append-cmd,"Appends an command.","<dir> <command>")
define mb-autoexec-append-echo
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),echo $(subst >,&gt;,$(2)))
2020-12-23 17:14:13 +00:00
endef
$(call mb-make-call,mb-doc-function,mb-autoexec-append-echo,"Appends an echo message.","<dir> <message>")
define mb-autoexec-append-rem
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),rem $(2))
2020-12-23 17:14:13 +00:00
endef
$(call mb-make-call,mb-doc-function,mb-autoexec-append-rem,"Appends an script remark.","<dir> <remark>")
define mb-autoexec-append-show-gui
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),omsxctl headless_show_gui)
2020-12-23 17:14:13 +00:00
endef
$(call mb-make-call,mb-doc-function,mb-autoexec-append-show-gui,"Appends headless show gui command.","<dir>")
define mb-autoexec-append-stop-fail
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),omsxctl fail_after 0)
2020-12-23 17:14:13 +00:00
endef
$(call mb-make-call,mb-doc-function,mb-autoexec-append-stop-fail,"Appends stop automatic failure command.","<dir>")
define mb-autoexec-append-exit
$(MB_   )$(if $(filter on,$(MB_FLIGHT_SCREEN)),$(call mb-make-call,mb-autoexec-append-save_screenshot,$(1)))
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),omsxctl headless_exit)
2020-12-23 17:14:13 +00:00
endef
$(call mb-make-call,mb-doc-function,mb-autoexec-append-exit,"Appends exit emulation command.","<dir>")
define mb-autoexec-append-plug-porta
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),omsxctl boot_exec_plug_porta $(2))
endef
$(call mb-make-call,mb-doc-function,mb-autoexec-append-plug-porta,"Appends an plug device into joyporta action.","<dir> <plug-dev>")
define mb-autoexec-append-plug-portb
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),omsxctl boot_exec_plug_portb $(2))
endef
$(call mb-make-call,mb-doc-function,mb-autoexec-append-plug-portb,"Appends an plug device into joyportb action.","<dir> <plug-dev>")
define mb-autoexec-append-save-screenshot
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),omsxctl night_flight_save_screenshot $(2))
endef
$(call mb-make-call,mb-doc-function,mb-autoexec-append-save-screenshot,"Appends save screenshot command.","<dir> [prefix]")
define mb-autoexec-append-save-video
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),omsxctl night_flight_save_video $(2))
endef
$(call mb-make-call,mb-doc-function,mb-autoexec-append-save-video,"Appends save video command.","<dir> [prefix]")
define mb-autoexec-append-safe-assert
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),omsxctl fail_after $(if $(3),$(3),$(MB_AUTOEXEC_SAFE_ASSERT_TIMEOUT)) seconds err_test $(if $(4),$(4),$(MB_AUTOEXEC_SAFE_ASSERT_EXITCODE)))
$(MB_   )$(call mb-make-call,mb-autoexec-append-echo,$(1),mb::safe assert $(2))
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),$(2))
endef
$(call mb-make-call,mb-doc-function,mb-autoexec-append-safe-assert,"Appends running a safe assert.","<dir> <cmd> [timeout] [exit-code]")
define mb-autoexec-append-safe-cmd
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),omsxctl fail_after $(if $(3),$(3),$(MB_AUTOEXEC_SAFE_CMD_TIMEOUT)) seconds err_cmd $(if $(4),$(4),$(MB_AUTOEXEC_SAFE_CMD_EXITCODE)))
$(MB_   )$(call mb-make-call,mb-autoexec-append-echo,$(1),mb::safe command $(2))
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),$(2))
endef
$(call mb-make-call,mb-doc-function,mb-autoexec-append-safe-cmd,"Appends running a safe command.","<dir> <cmd> [timeout] [exit-code]")
define _mb-autoexec-write-preboot
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),$(2)mbboot80)
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),$(2)omsxctl boot_exec_setcolor $(if $(3),$(3),$(MB_AUTOEXEC_COLOR_FG)) $(if $(4),$(4),$(MB_AUTOEXEC_COLOR_BG)))
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),$(2)omsxctl fail_after $(MB_AUTOEXEC_STARTUP_TIMEOUT) seconds err_exec $(MB_AUTOEXEC_STARTUP_EXITCODE))
$(MB_   )$(if $(filter on,$(MB_AUTOEXEC_SHOW_INIT)),$(call mb-make-call,mb-autoexec-append-cmd,$(1),$(2)omsxctl boot_exec_show_init))
$(MB_   )$(if $(filter on,$(MB_AUTOEXEC_SHOW_VERSION)),$(call mb-make-call,mb-autoexec-append-cmd,$(1),ver))
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),PATH + A:\;)
$(MB_   )$(if $(wildcard $(1)/utils),$(call mb-make-call,mb-autoexec-append-cmd,$(1),PATH + A:\UTILS))
endef
define mb-autoexec-write-default
$(MB_   )$(call mb-make-call,mb-os-echo-remark,$(MB_I18N_AUTOEXEC_WRITE) $@)
$(MB_   )$(call mb-make-call,mb-os-file-empty,$(1)/autoexec.bat)
$(MB_   )$(if $(wildcard $(1)/utils),$(call mb-make-call,_mb-autoexec-write-preboot,$(1),utils\,$(2),$(3)),$(call mb-make-call,_mb-autoexec-write-preboot,$(1),,$(2),$(3)))
$(MB_   )$(if $(filter on,$(MB_AUTOEXEC_SHOW_HOST)),$(call mb-make-call,mb-autoexec-append-cmd,$(1),omsxctl boot_exec_show_host))
$(MB_   )$(if $(MB_AUTOEXEC_STARTUP_NOTE),$(call mb-make-call,mb-autoexec-append-echo,$(1),mb::note $(MB_AUTOEXEC_STARTUP_NOTE)))
$(MB_   )$(if $(filter on,$(MB_FLIGHT_VIDEO)),$(call mb-make-call,mb-autoexec-append-save_video,$(1)))
2024-07-12 15:59:26 +00:00
$(MB_   )echo -n -e "$(subst $(MB_MAKE_SPACE)set,set,$(foreach var,$(MB_AUTOEXEC_EMBED_VARS),set MSX_$(var)$(MB_MAKE_EQUALS)$($(var))\r\n))" >> $(1)/autoexec.bat
$(MB_   )echo -n -e "$(subst $(MB_MAKE_SPACE)set,set,$(foreach var,$(MB_AUTOEXEC_EMBED_VARS),echo MSX_$(var)$(MB_MAKE_EQUALS)%MSX_$(var)%\r\n))" >> $(1)/autoexec.bat
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),set TIME$(MB_MAKE_EQUALS)$(MB_AUTOEXEC_TIME_FORMAT))
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),set DATE$(MB_MAKE_EQUALS)$(MB_AUTOEXEC_DATE_FORMAT))
$(MB_   )$(if $(filter on,$(MB_AUTOEXEC_SHOW_PATH)),$(call mb-make-call,mb-autoexec-append-cmd,$(1),echo mb::path %PATH%))
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),set MB_SNAIL$(MB_MAKE_EQUALS)$(notdir $@))
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),set MB_USER$(MB_MAKE_EQUALS)$($(MB_AUTOEXEC_EMBED_USER)))
$(MB_   )$(if $(filter on,$(MB_AUTOEXEC_SHOW_USER)),$(call mb-make-call,mb-autoexec-append-echo,$(1),mb::user %MB_USER%))
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),set MB_SLIME$(MB_MAKE_EQUALS)$(1))
$(MB_   )$(call mb-make-call,mb-autoexec-append-cmd,$(1),set MB_TARGET$(MB_MAKE_EQUALS)$@)
$(MB_   )$(if $(filter on,$(MB_AUTOEXEC_SHOW_FOLDER)),$(call mb-make-call,mb-autoexec-append-echo,$(1),mb::bath %MB_SLIME%))
$(MB_   )$(if $(filter on,$(MB_AUTOEXEC_SHOW_TARGET)),$(call mb-make-call,mb-autoexec-append-echo,$(1),mb::pipe %MB_TARGET%))
$(MB_   )$(if $(filter on,$(MB_AUTOEXEC_PROMPT_SPACE)),$(call mb-make-call,mb-autoexec-append-cmd,$(1),set PROMPT \"$(value MB_AUTOEXEC_PROMPT_FORMAT)$(MB_MAKE_SPACE)\"))
$(MB_   )$(if $(filter on,$(MB_AUTOEXEC_PROMPT_SPACE)),,$(call mb-make-call,mb-autoexec-append-cmd,$(1),,set PROMPT \"$(value MB_AUTOEXEC_PROMPT_FORMAT)\"))
2020-12-23 17:14:13 +00:00
endef
$(call mb-make-call,mb-doc-function,mb-autoexec-write-default,"Write a default autoexec.bat file.","<dir> [fg-color] [bg-color]")
2020-12-23 17:14:13 +00:00