MAME is a multi-purpose emulation framework, with the aim of documenting and
preserving vintage software and hardware from becoming lost. When used with
vintage firmware (or BIOS), and duplicated Read Only Memory (ROMs), on modern
hardware, users are able to play and explore systems and games from
approximately 1970 through to the modern era.
===> The following configuration options are available for mame-0.264:
DOCS=on: Install extensive online MAME documentation
====> Emulators
MAME=on: MAME
MAMENL=off: Netlist audio component solver
MAMEVIRTUAL=off: LaserDisk Player
NLS=on: Install language translations for use in the GUI
QTDEBUGGER=off: Build with Qt interactive low-level machine debugger
====> Tools
TOOLS=off: Tools for archiving, development, and multimedia
====> Build with hardware extensions
OPENMP=off: Parallel processing support via OpenMP
SSE2=off: Build with Streaming SIMD Extensions 2
====> Application production type: you can only select none or one of them
DEBUG=off: Produce profiling data, and symbols for debugging
SIZE_OPTIMIZED_CFLAGS=off: Optimize for smaller binaries (-Os)
SPEED_OPTIMIZED_CFLAGS=off: Optimize for faster binaries (-O3)
===> Use 'make config' to modify these settings
MAME follows an interesting User Experience (UX) design pattern that is aimed
for developers of MAME, as result of this, the expectation on file
configuration management might appear counter-intuitive to Users of MAME. If
MAME does not find configuration files, it expects to be able to read and write
configuration data to the current working directory, this is counter to
what users expect on their systems.
Sample configuration files have been installed in:
"/usr/local/etc/mame/"
The samples can be copied to your "~/.mame" directory to avoid having MAME
write configuration data elsewhere.
To create clean copies of MAME's configuration files, execute:
"mame -createconfig"
the output from this can be stored in ~/.mame or a custom path.
To run MAME with custom configuration path(s), execute:
"mame -inipath /var/db/mame /usr/local/etc/mame"
See mame(6) for more information.
emulators/mame: fix build with clang 18 and 19
During the exp-run for bug 283013 ("update LLVM_DEFAULT to 18") it
turned out that emulators/mame fails to compile, with an error similar
to:
../../../../../3rdparty/sol2/sol/sol.hpp:19875:31: error: address of
overloaded function 'call' does not match required type 'int (lua_State *)'
19875 | lua_CFunction freefunc =
&function_detail::upvalue_this_member_variable<C, Fx>::template
call<is_yielding, no_trampoline>;
|
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Upstream fixed this with [1] and [2].
Similarly, compiling it with clang 19, we run into another error:
../../../../../3rdparty/sol2/sol/sol.hpp:6755:10: error: no member named
'construct' in 'optional<type-parameter-0-0 &>'
(Only the first 15 lines of the commit message are shown above )