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

125 lines
8.5 KiB
Makefile
Raw Normal View History

2020-12-23 17:14:13 +00:00
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
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable,MB_OPENMSX_BOOT_TIMEOUT,"Timeout in seconds to guard for boot failures.")
MB_OPENMSX_BOOT_OS ?= nextor
2024-07-07 18:53:06 +00:00
$(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
2024-07-12 15:59:26 +00:00
$(call mb_make_call,mb_doc_variable,MB_OPENMSX_MACHINE,"The default MSX machine to use.",$(MB_OPENMSX_MACHINE))
MB_OPENMSX_MACHINE_RAM ?= ram1mb
2024-07-07 18:53:06 +00:00
$(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)
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable,MB_OPENMSX_SPEED,"The throttled MSX emulation speed.")
MB_OPENMSX_ARGS ?=
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable,MB_OPENMSX_ARGS,"Extra arguments to invoke openMSX with.")
MB_OPENMSX_HDD_SIZE ?= 4m
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable,MB_OPENMSX_HDD_SIZE,"The default fire-hdd disk image size.")
MB_OPENMSX_SCALE_FACTOR ?= 3
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable,MB_OPENMSX_SCALE_FACTOR,"The gui scale factor to display the emulation.")
MB_OPENMSX_THROTTLE ?= off
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_variable,MB_OPENMSX_THROTTLE,"An on/off flag to control throttling globally.")
MB_OPENMSX_HEADLESS ?= on
2024-07-07 18:53:06 +00:00
$(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.")
define mb_openmsx_setup
2024-07-12 15:59:26 +00:00
$(MB_   )$(call mb_make_call,mb_make_check_arg2,$(0),$(1),$(2))
$(MB_   )$(if $(wildcard $(1)-omsx),,$(call mb_make_call,mb_os_dir_create,$(1)-omsx))
$(MB_   )$(if $(wildcard $(1)-omsx/stdio.xml),,$(call mb_make_call,mb_os_file_copy,$(MB_@BASEPATH)openmsx/stdio.xml,$(1)-omsx))
2024-07-12 15:59:26 +00:00
$(MB_   )$(if $(wildcard $(1)-omsx/share),,$(call mb_make_call,mb_os_dir_create,$(1)-omsx/share))
$(MB_   )$(if $(wildcard $(1)-omsx/share/settings.xml),,$(call mb_make_call,mb_os_file_copy,$(MB_@BASEPATH)openmsx/share/settings.xml,$(1)-omsx/share))
2024-07-12 15:59:26 +00:00
$(MB_   )$(if $(wildcard $(1)-omsx/share/scripts),,$(call mb_make_call,mb_os_dir_create,$(1)-omsx/share/scripts))
$(MB_   )$(if $(wildcard $(1)-omsx/share/scripts/boot_exec.tcl),,$(call mb_make_call,mb_os_file_copy,$(MB_@BASEPATH)openmsx/share/scripts/boot_exec.tcl,$(1)-omsx/share/scripts))
$(MB_   )$(if $(wildcard $(1)-omsx/share/scripts/fail_after.tcl),,$(call mb_make_call,mb_os_file_copy,$(MB_@BASEPATH)openmsx/share/scripts/fail_after.tcl,$(1)-omsx/share/scripts))
$(MB_   )$(if $(wildcard $(1)-omsx/share/scripts/fire_hdd.tcl),,$(call mb_make_call,mb_os_file_copy,$(MB_@BASEPATH)openmsx/share/scripts/fire_hdd.tcl,$(1)-omsx/share/scripts))
$(MB_   )$(if $(wildcard $(1)-omsx/share/scripts/headless.tcl),,$(call mb_make_call,mb_os_file_copy,$(MB_@BASEPATH)openmsx/share/scripts/headless.tcl,$(1)-omsx/share/scripts))
$(MB_   )$(if $(wildcard $(1)-omsx/share/scripts/night_flight.tcl),,$(call mb_make_call,mb_os_file_copy,$(MB_@BASEPATH)openmsx/share/scripts/night_flight.tcl,$(1)-omsx/share/scripts))
2024-07-12 15:59:26 +00:00
$(MB_   )$(if $(wildcard $(1)-omsx/share/scripts/omsxctl.tcl),,$(call mb_msxhub_file,$(1)-omsx/share/scripts,OMSXCTL/1.0-1/get/OMSXCTL/omsxctl.tcl))
$(MB_   )$(if $(wildcard $(1)-omsx/share/extensions),,$(call mb_make_call,mb_os_dir_create,$(1)-omsx/share/extensions))
$(MB_   )$(if $(wildcard $(1)-omsx/share/extensions/fire-hdd.xml),,$(call mb_make_call,mb_os_file_copy,$(MB_@BASEPATH)openmsx/share/extensions/fire-hdd.xml,$(1)-omsx/share/extensions))
2024-07-12 15:59:26 +00:00
$(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
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_function_deep,mb_openmsx_setup,"Setup openMSX local build home folder for machine.","<dir> <machine>")
2024-07-05 22:11:54 +00:00
define _mb_openmsx_path
2024-07-12 15:59:26 +00:00
$(MB_   )$(if $(MB_OPENMSX_PATH),$(MB_OPENMSX_PATH)/$(1),$(1))
endef
2020-12-23 17:14:13 +00:00
define _mb_openmsx_run
2024-07-12 15:59:26 +00:00
$(MB_   )$(call mb_make_call,mb_os_echo_command,$(MB_I18N_OPENMSX_STARTUP) $@ - $(2))
$(MB_   )$(if $(wildcard $(1)-omsx/persistent/fire-hdd/untitled1/sync),,$(call mb_make_call,mb_os_dir_create,$(1)-omsx/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)-omsx/persistent/fire-hdd/untitled1/image-hda.dsk" \
$(MB_   )FIRE_HDD_PATH_EXPORT="$(1)-omsx/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)-omsx" \
$(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)-omsx/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)-omsx/persistent/fire-hdd/untitled1/sync/" "$(1)/"
2020-12-23 17:14:13 +00:00
endef
2021-07-06 02:28:45 +00:00
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)))
2024-07-12 15:59:26 +00:00
$(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
2024-07-12 15:59:26 +00:00
$(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)))
2020-12-23 17:14:13 +00:00
endef
2024-07-07 18:53:06 +00:00
$(call mb_make_call,mb_doc_function,mb_openmsx_dosctl,"Starts openMSX with dos controller.","<dir> [machine] [mem-ext]")