msxbuild/lib/make/天房系統擴展/mb_openmsx.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

129 lines
9.4 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.

MB_OPENMSX_PATH ?=
$(call mb-make-call,mb-doc-variable,MB_OPENMSX_PATH,"Optional path where openMSX binary is located.")
MB_OPENMSX_BOOT_TIMEOUT ?= 25
$(call mb-make-call,mb-doc-variable,MB_OPENMSX_BOOT_TIMEOUT,"Timeout in seconds to guard for boot failures.")
MB_OPENMSX_BOOT_OS ?= nextor
$(call mb-make-call,mb-doc-variable,MB_OPENMSX_BOOT_OS,"The default OS to run$$(MB_MAKE_COMMA) valid values are; nextor$$(MB_MAKE_COMMA)msxdos1$$(MB_MAKE_COMMA)msxdos2")
MB_OPENMSX_MACHINE ?= Philips_NMS_8250
$(call mb-make-call,mb-doc-variable,MB_OPENMSX_MACHINE,"The default MSX machine to use.",$(MB_OPENMSX_MACHINE))
MB_OPENMSX_MACHINE_RAM ?= ram1mb
$(call mb-make-call,mb-doc-variable,MB_OPENMSX_MACHINE_RAM,"Extra ram extension for machine allowed: off$$(MB_MAKE_COMMA)ram16k$$(MB_MAKE_COMMA)ram64k$$(MB_MAKE_COMMA)ram512k$$(MB_MAKE_COMMA)ram1mb$$(MB_MAKE_COMMA)ram2mb$$(MB_MAKE_COMMA)ram4mb")
MB_OPENMSX_SPEED ?= $(if $(findstring turboR,$(MB_OPENMSX_MACHINE)),100,333)
$(call mb-make-call,mb-doc-variable,MB_OPENMSX_SPEED,"The throttled MSX emulation speed.")
MB_OPENMSX_ARGS ?=
$(call mb-make-call,mb-doc-variable,MB_OPENMSX_ARGS,"Extra arguments to invoke openMSX with.")
MB_OPENMSX_HDD_SIZE ?= 4m
$(call mb-make-call,mb-doc-variable,MB_OPENMSX_HDD_SIZE,"The default fire-hdd disk image size.")
MB_OPENMSX_SCALE_FACTOR ?= 3
$(call mb-make-call,mb-doc-variable,MB_OPENMSX_SCALE_FACTOR,"The gui scale factor to display the emulation.")
MB_OPENMSX_THROTTLE ?= off
$(call mb-make-call,mb-doc-variable,MB_OPENMSX_THROTTLE,"An on/off flag to control throttling globally.")
MB_OPENMSX_HEADLESS ?= on
$(call mb-make-call,mb-doc-variable,MB_OPENMSX_HEADLESS,"Controls if openMSX starts headless.")
MB_OPENMSX_RENDERER ?= SDLGL-PP
$(call mb-make-call,mb-doc-variable-deep,MB_OPENMSX_RENDERER,"The gui renderer used to display the window head with.")
MB_OPENMSX_STDOUT_IGNORE ?= off
$(call mb-make-call,mb-doc-variable-deep,MB_OPENMSX_STDOUT_IGNORE,"Kills logging...rm after issues openMSX are solved.")
MB_OPENMSX_STDERR_IGNORE ?= off
$(call mb-make-call,mb-doc-variable-deep,MB_OPENMSX_STDERR_IGNORE,"Kills logging...rm after issues openMSX are solved.")
MB_OPENMSX_FIRE_PIPE_SMOKE ?=
$(call mb-make-call,mb-doc-variable-flow,MB_OPENMSX_FIRE_PIPE_SMOKE,"Word count of total openMSX executions.")
define mb-openmsx-setup
$(MB_   )$(call mb-make-call,mb-make-check-arg2,$(0),$(1),$(2))
$(MB_   )$(if $(wildcard $(1)$(MB_@WORK)$(notdir $(1))),,$(call mb-make-call,mb-os-dir-create,$(1)$(MB_@WORK)$(notdir $(1))))
$(MB_   )$(if $(wildcard $(1)$(MB_@WORK)$(notdir $(1))/stdio.xml),,$(call mb-make-call,mb-os-file-copy,$(MB_@BASEPATH)openmsx/stdio.xml,$(1)$(MB_@WORK)$(notdir $(1))))
$(MB_   )$(if $(wildcard $(1)$(MB_@WORK)$(notdir $(1))/share),,$(call mb-make-call,mb-os-dir-create,$(1)$(MB_@WORK)$(notdir $(1))/share))
$(MB_   )$(if $(wildcard $(1)$(MB_@WORK)$(notdir $(1))/share/settings.xml),,$(call mb-make-call,mb-os-file-copy,$(MB_@BASEPATH)openmsx/share/settings.xml,$(1)$(MB_@WORK)$(notdir $(1))/share))
$(MB_   )$(if $(wildcard $(1)$(MB_@WORK)$(notdir $(1))/share/scripts),,$(call mb-make-call,mb-os-dir-create,$(1)$(MB_@WORK)$(notdir $(1))/share/scripts))
$(MB_   )$(if $(wildcard $(1)$(MB_@WORK)$(notdir $(1))/share/scripts/boot_exec.tcl),,$(call mb-make-call,mb-os-file-copy,$(MB_@BASEPATH)openmsx/share/scripts/boot_exec.tcl,$(1)$(MB_@WORK)$(notdir $(1))/share/scripts))
$(MB_   )$(if $(wildcard $(1)$(MB_@WORK)$(notdir $(1))/share/scripts/fail_after.tcl),,$(call mb-make-call,mb-os-file-copy,$(MB_@BASEPATH)openmsx/share/scripts/fail_after.tcl,$(1)$(MB_@WORK)$(notdir $(1))/share/scripts))
$(MB_   )$(if $(wildcard $(1)$(MB_@WORK)$(notdir $(1))/share/scripts/fire_hdd.tcl),,$(call mb-make-call,mb-os-file-copy,$(MB_@BASEPATH)openmsx/share/scripts/fire_hdd.tcl,$(1)$(MB_@WORK)$(notdir $(1))/share/scripts))
$(MB_   )$(if $(wildcard $(1)$(MB_@WORK)$(notdir $(1))/share/scripts/headless.tcl),,$(call mb-make-call,mb-os-file-copy,$(MB_@BASEPATH)openmsx/share/scripts/headless.tcl,$(1)$(MB_@WORK)$(notdir $(1))/share/scripts))
$(MB_   )$(if $(wildcard $(1)$(MB_@WORK)$(notdir $(1))/share/scripts/night_flight.tcl),,$(call mb-make-call,mb-os-file-copy,$(MB_@BASEPATH)openmsx/share/scripts/night_flight.tcl,$(1)$(MB_@WORK)$(notdir $(1))/share/scripts))
$(MB_   )$(if $(wildcard $(1)$(MB_@WORK)$(notdir $(1))/share/scripts/omsxctl.tcl),,$(call mb-make-call,mb-msxhub-file,$(1)$(MB_@WORK)$(notdir $(1))/share/scripts,OMSXCTL/1.0-1/get/OMSXCTL/omsxctl.tcl))
$(MB_   )$(if $(wildcard $(1)$(MB_@WORK)$(notdir $(1))/share/extensions),,$(call mb-make-call,mb-os-dir-create,$(1)$(MB_@WORK)$(notdir $(1))/share/extensions))
$(MB_   )$(if $(wildcard $(1)$(MB_@WORK)$(notdir $(1))/share/extensions/fire-hdd.xml),,$(call mb-make-call,mb-os-file-copy,$(MB_@BASEPATH)openmsx/share/extensions/fire-hdd.xml,$(1)$(MB_@WORK)$(notdir $(1))/share/extensions))
$(MB_   )$(call mb-make-call,mb-msxrom-setup,$(1))
$(MB_   )$(call mb-make-call,mb-msxrom-extension-ide-nextor,$(1))
$(MB_   )$(call mb-make-call,mb-msxrom-machine-$(2),$(1))
endef
$(call mb-make-call,mb-doc-function-deep,mb-openmsx-setup,"Setup openMSX local build home folder for machine.","<dir> <machine>")
define _mb-openmsx-path
$(MB_   )$(if $(MB_OPENMSX_PATH),$(MB_OPENMSX_PATH)/$(1),$(1))
endef
define _mb-openmsx-run
$(MB_   )$(eval MB_OPENMSX_FIRE_PIPE_SMOKE $(MB_MAKE_APPEND) OK)
$(MB_   )$(call mb-make-call,mb-os-echo-command,$(MB_I18N_OPENMSX_STARTUP) $@ - $(2))
$(MB_   )$(if $(wildcard $(1)$(MB_@WORK)$(notdir $(1))/persistent/fire-hdd/untitled1/sync),,$(call mb-make-call,mb-os-dir-create,$(1)$(MB_@WORK)$(notdir $(1))/persistent/fire-hdd/untitled1/sync))
$(MB_   )BOOT_WATCHDOG=$(MB_OPENMSX_BOOT_TIMEOUT) \
$(MB_   )FIRE_HDD_PATH="$(1)" \
$(MB_   )FIRE_HDD_SIZE=$(MB_OPENMSX_HDD_SIZE) \
$(MB_   )FIRE_HDD_IMAGE="$(1)$(MB_@WORK)$(notdir $(1))/persistent/fire-hdd/untitled1/image-hda.dsk" \
$(MB_   )FIRE_HDD_PATH_EXPORT="$(1)$(MB_@WORK)$(notdir $(1))/persistent/fire-hdd/untitled1/sync" \
$(MB_   )SCALE_FACTOR=$(MB_OPENMSX_SCALE_FACTOR) \
$(MB_   )SPEED=$(MB_OPENMSX_SPEED) \
$(MB_   )HEADLESS=$(MB_OPENMSX_HEADLESS) \
$(MB_   )RENDERER=$(MB_OPENMSX_RENDERER) \
$(MB_   )THROTTLE=$(MB_OPENMSX_THROTTLE) \
$(MB_   )NF_PREFIX=$(MB_FLIGHT_PREFIX) \
$(MB_   )NF_SEPERATOR=$(MB_FLIGHT_SEPERATOR) \
$(MB_   )NF_RECORD_FLAG=$(MB_FLIGHT_RECORD_FLAG) \
$(MB_   )OPENMSX_HOME="$(1)$(MB_@WORK)$(notdir $(1))" \
$(MB_   )$(call mb-make-call,_mb-openmsx-path,openmsx) \
$(MB_      )-machine $(2) \
$(MB_      )-ext slotexpander \
$(MB_      )-ext fire-hdd \
$(MB_      )$(if $(filter ram16k,$(3)),-ext ram16k) \
$(MB_      )$(if $(filter ram64k,$(3)),-ext ram64k) \
$(MB_      )$(if $(filter ram512k,$(3)),-ext ram512k) \
$(MB_      )$(if $(filter ram1mb,$(3)),-ext ram1mb) \
$(MB_      )$(if $(filter ram4mb,$(3)),-ext ram2mb) \
$(MB_      )$(if $(filter ram4mb,$(3)),-ext ram4mb) \
$(MB_      )$(MB_OPENMSX_ARGS) \
$(MB_      )-control stdio < $(1)$(MB_@WORK)$(notdir $(1))/stdio.xml \
$(MB_      )$(if $(filter on,$(MB_OPENMSX_STDOUT_IGNORE)),$(MB_OS_STDOUT_IGNORE)) \
$(MB_      )$(if $(filter on,$(MB_OPENMSX_STDERR_IGNORE)),$(MB_OS_STDERR_IGNORE))
$(MB_   )rsync --checksum --recursive "$(1)$(MB_@WORK)$(notdir $(1))/persistent/fire-hdd/untitled1/sync/" "$(1)/"
endef
define _mb-openmsx-dosctl-bat
$(MB_   )$(if $(wildcard $(1)/z80.bat),,$(call mb-make-call,mb-os-file-copy,$(MB_@BASEPATH)emuctl/z80.bat,$(1)))
$(MB_   )$(if $(wildcard $(1)/reboot.bat),,$(call mb-make-call,mb-os-file-copy,$(MB_@BASEPATH)emuctl/reboot.bat,$(1)))
$(MB_   )$(if $(wildcard $(1)/shutdown.bat),,$(call mb-make-call,mb-os-file-copy,$(MB_@BASEPATH)emuctl/shutdown.bat,$(1)))
$(MB_   )$(if $(wildcard $(1)/mbboot80.com),,$(call mb-make-call,mb-os-file-copy,$(MB_@BASEPATH)emuctl/mbboot80.com,$(1)))
$(MB_   )$(if $(wildcard $(1)/omsxctl.com),,$(call mb-make-call,mb-msxhub-file,$(1),OMSXCTL/1.0-1/get/OMSXCTL/omsxctl.com))
endef
define mb-openmsx-dosctl
$(MB_   )$(call mb-make-call,mb-make-check-arg1,$(0),$(1))
$(MB_   )$(call mb-make-call,mb-openmsx-setup,$(1),$(if $(2),$(2),$(MB_OPENMSX_MACHINE)))
$(MB_   )$(if $(wildcard $(1)/utils),$(call mb-make-call,_mb-openmsx-dosctl-bat,$(1)/utils),$(call mb-make-call,_mb-openmsx-dosctl-bat,$(1)))
$(MB_   )$(if $(wildcard $(1)/command.com),,$(if $(wildcard $(1)/command2.com),,$(call mb-make-call,mb-msxhub-get-$(MB_OPENMSX_BOOT_OS)-boot,$(1))))
$(MB_   )$(call mb-make-call,_mb-openmsx-run,$(1),$(if $(2),$(2),$(MB_OPENMSX_MACHINE)),$(if $(3),$(3),$(MB_OPENMSX_MACHINE_RAM)))
endef
$(call mb-make-call,mb-doc-function,mb-openmsx-dosctl,"Starts openMSX with dos controller.","<dir> [machine] [mem-ext]")