aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlastair Hogge <agh@riseup.net>2023-05-31 08:28:33 +0000
committerRobert Clausecker <fuz@FreeBSD.org>2023-06-01 22:29:21 +0000
commit84c2e2313e7098468fc7e99ef95527903a7bc0b5 (patch)
tree2028dc802a870e8d69b94d92d0e5151e80fdc180
parent9daea3fb8bda44b197d58a97ba9ee77c7f7e5bf6 (diff)
downloadports-84c2e2313e7098468fc7e99ef95527903a7bc0b5.tar.gz
ports-84c2e2313e7098468fc7e99ef95527903a7bc0b5.zip
emulators/mame: fix build on 14-CURRENT
- explicitly declare more system libraries - port-{clippy,fmt,lint} maintenance - separate out Qt machine debugger via OPTIONS - separate out tools via OPTIONS - remove licenses from ${PORTDOCS} as they are catalogued thru various ${LICENSE}* definitions - add conditional logic for when OS ≧ 14 then explicitly build with LLVM - a lot of the work in the post-patch target is on static files, so move most of this to files/ - files/patch-scripts_genie.lua is a fix for GCC - sort targets into the order they run in. PR: 271374
-rw-r--r--emulators/mame/Makefile233
-rw-r--r--emulators/mame/files/mame.ini.in (renamed from emulators/mame/files/target.ini.in)57
-rw-r--r--emulators/mame/files/patch-3rdparty_genie_build_gmake.freebsd_genie.make63
-rw-r--r--emulators/mame/files/patch-3rdparty_genie_src_host_scripts.c16
-rw-r--r--emulators/mame/files/patch-3rdparty_genie_src_tools_gcc.lua15
-rw-r--r--emulators/mame/files/patch-3rdparty_genie_tests_test__gmake__cpp.lua15
-rw-r--r--emulators/mame/files/patch-makefile29
-rw-r--r--emulators/mame/files/patch-scripts_genie.lua14
-rw-r--r--emulators/mame/files/patch-scripts_toolchain.lua4
-rw-r--r--emulators/mame/files/pkg-message.in15
-rw-r--r--emulators/mame/files/plugin.ini.in20
-rw-r--r--emulators/mame/files/ui.ini.in71
-rw-r--r--emulators/mame/pkg-plist59
13 files changed, 435 insertions, 176 deletions
diff --git a/emulators/mame/Makefile b/emulators/mame/Makefile
index 26b2e16f7030..d026e3a5e0b5 100644
--- a/emulators/mame/Makefile
+++ b/emulators/mame/Makefile
@@ -1,6 +1,6 @@
PORTNAME= mame
-PORTVERSION= 0.254
-PORTREVISION= 1
+DISTVERSION= 0.254
+PORTREVISION= 2
CATEGORIES= emulators games
MAINTAINER= agh@riseup.net
@@ -21,161 +21,174 @@ LICENSE_FILE= ${WRKSRC}/docs/LICENSE
ONLY_FOR_ARCHS= aarch64 amd64 armv7 i386 powerpc powerpc64 powerpc64le
ONLY_FOR_ARCHS_REASON= not yet ported to any architecture other than armv7, arm64, x86, and powerpc*
-BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sphinxcontrib-svg2pdfconverter>0:textproc/py-sphinxcontrib-svg2pdfconverter@${PY_FLAVOR}
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sphinxcontrib-svg2pdfconverter>0:textproc/py-sphinxcontrib-svg2pdfconverter@${PY_FLAVOR} \
+ glm>0:math/glm \
+ rapidjson>0:devel/rapidjson
LIB_DEPENDS= libexpat.so:textproc/expat2 \
libFLAC.so:audio/flac \
libfontconfig.so:x11-fonts/fontconfig \
libfreetype.so:print/freetype2 \
- libpugixml.so:textproc/pugixml
+ libportmidi.so:audio/portmidi \
+ libpugixml.so:textproc/pugixml \
+ libutf8proc.so:textproc/utf8proc \
+ libuv.so:devel/libuv
RUN_DEPENDS= liberation-fonts-ttf>=0:x11-fonts/liberation-fonts-ttf
-USES= compiler:c++14-lang gl gmake jpeg localbase lua:54 pkgconfig \
- python:3.9,build qt:5 sdl shebangfix sqlite:3 xorg
+USES= compiler:c++17-lang gl gmake jpeg localbase lua:54 pkgconfig \
+ python:3.9,build sdl shebangfix sqlite:3 xorg
USE_GITHUB= yes
GH_ACCOUNT= mamedev
-GH_PROJECT= mame # explicit (master port)
-GH_TAGNAME= mame${PORTVERSION:S/.//}
+GH_TAGNAME= mame${DISTVERSION:S/.//}
USE_GL= gl
-USE_QT= buildtools core gui qmake widgets
USE_SDL= sdl2 ttf2
USE_XORG= x11 xext xi xinerama xrender
MAKEFILE= makefile
MAKE_ARGS= TARGETOS=freebsd \
- TOOLS=1 \
- USE_SYSTEM_LIB_PUGIXML=1 \
- USE_SYSTEM_LIB_SQLITE3=1 \
- VERBOSE=1
-MAKE_ENV= FULLNAME="mame" \
- GCC_LDFLAGS="${LDFLAGS}" \
- LD="${CXX}" \
+ VERBOSE="1"
+MAKE_ENV= LDOPTS="${LDFLAGS}" \
+ NO_USE_PORTAUDIO=1 \
+ NO_USE_PULSEAUDIO=1 \
NOWERROR=1 \
OPT_FLAGS="${CXXFLAGS}" \
- PYTHON="${PYTHON_CMD}" \
- SDL_NETWORK="pcap" \
- SUBTARGET="${MSUBTARGET}" \
- TARGET="${MTARGET}" \
- USE_NETWORK=1
-
-BINARY_ALIAS= python3=${PYTHON_CMD} python=${PYTHON_CMD}
-SUB_FILES= pkg-message target.ini
-SUB_LIST= MSUBTARGET=${MSUBTARGET} \
- MTARGET=${MTARGET}
-
-PORTDOCS= LICENSE html/* legal/*
-PORTEXAMPLES= ${MSUBTARGET}.ini
-
-OPTIONS_DEFINE= DEBUG DOCS EXAMPLES
-DEBUG_DESC= Build with debug profiling and symbols
-DOCS_DESC= Install additional MAME documentation
-EXAMPLES_DESC= Install example ${EMULATOR}.ini configuration
-
-DEBUG_MAKE_ENV= DEBUG=1
-
-GENIE= ${WRKSRC}/3rdparty/genie
-MSUBTARGET= mame
-MTARGET= mame
+ PRECOMPILE=0 \
+ PYTHON_EXECUTABLE="${PYTHON_CMD}" \
+ USE_PCAP=1 \
+ USE_SYSTEM_LIB_EXPAT=1 \
+ USE_SYSTEM_LIB_FLAC=1 \
+ USE_SYSTEM_LIB_GLM=1 \
+ USE_SYSTEM_LIB_JPEG=1 \
+ USE_SYSTEM_LIB_PORTMIDI=1 \
+ USE_SYSTEM_LIB_PUGIXML=1 \
+ USE_SYSTEM_LIB_RAPIDJSON=1 \
+ USE_SYSTEM_LIB_SQLITE3=1 \
+ USE_SYSTEM_LIB_UTF8PROC=1 \
+ USE_SYSTEM_LIB_UV=1 \
+ USE_SYSTEM_LIB_ZLIB=1 \
+ USE_TAPTUN=1
+
+SUB_FILES= pkg-message mame.ini plugin.ini ui.ini
+
+PORTDOCS= html/*
+
+OPTIONS_DEFINE= DEBUG DOCS QTDEBUGGER TOOLS
+OPTIONS_SUB= yes
+
+DEBUG_DESC= Build with debug profiling and symbols
+DOCS_DESC= Install extensive online MAME documentation
+QTDEBUGGER_DESC= Install Qt interactive low-level machine debugger
+TOOLS_DESC= Install tools for machine archiving and development
+
+DEBUG_MAKE_ENV= DEBUG=1 \
+ OPTIMIZE=0 \
+ PROFILER=1 \
+ SYMBOLS=1
+DEBUG_MAKE_ENV_OFF= OPTIMIZE=2 \
+ STRIP_SYMBOLS=1
+# Attempt to avoid address space exhaustion during linking, specifically
+# on armv7, and possibly other architectures:
+DEBUG_LDFLAGS_OFF= -s
+QTDEBUGGER_USES= qt:5
+QTDEBUGGER_USE= QT=core,gui,widgets,buildtools:build,qmake:build
+QTDEBUGGER_MAKE_ENV= USE_QTDEBUG=1
+QTDEBUGGER_MAKE_ENV_OFF= USE_QTDEBUG=0
+TOOLS_MAKE_ENV= TOOLS=1
+TOOLS_MAKE_ENV_OFF= TOOLS=0
+
+_GENIE= ${WRKSRC}/3rdparty/genie
.include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MDEBUG}
-WITH_DEBUG= "YES"
-MAKE_ENV+= DEBUG="1" \
- OPTIMIZE="0" \
- PROFILER="1" \
- SYMBOLS="1"
+WITH_DEBUG= yes
+.endif
+
+.if ${OPSYS} == FreeBSD && ${OSVERSION} > 1400000
+USES+= llvm:15,build
+MAKE_ENV+= OVERRIDE_AR="llvm-ar${LLVM_VERSION}" \
+ OVERRIDE_CC="clang${LLVM_VERSION}" \
+ OVERRIDE_CXX="clang++${LLVM_VERSION}" \
+ OVERRIDE_LD="lld${LLVM_VERSION}"
.else
-# avoid address space exhaustion in linker on armv7
-LDFLAGS+= -s
+MAKE_ENV+= OVERRIDE_AR="${AR}" \
+ OVERRIDE_CC="${CC}" \
+ OVERRIDE_CXX="${CXX}" \
+ OVERRIDE_LD="${LD}"
.endif
-.if ${ARCH} == aarch64 || ${ARCH} == amd64 || ${ARCH:Mpowerpc64*}
+.if ${ARCH:Maarch64} || ${ARCH:Mamd64} || ${ARCH:Mpowerpc64*}
MAKE_ARGS+= PTR64=1
.endif
-EMULATOR= ${MSUBTARGET}
-PLIST_SUB+= EMULATOR=${EMULATOR}
+post-extract:
+ @${MV} ${WRKSRC}/src/lib/util/png.h \
+ ${WRKSRC}/src/lib/util/localpng.h
+
+post-patch:
+# Prefer some system headers over bundled.
+ @${RM} ${WRKSRC}/3rdparty/bx/include/compat/freebsd/dirent.h
+ @${RM} ${WRKSRC}/3rdparty/bx/include/compat/freebsd/signal.h
+# Accommodate GENie conception of BSD.
+ @${MV} ${_GENIE}/build/gmake.freebsd \
+ ${_GENIE}/build/gmake.bsd
+# Patch build to use bundled PNG.
+ @${GREP} -rl '"png.h"' ${WRKSRC}/src | \
+ ${XARGS} ${REINPLACE_CMD} -e 's|"png.h"|"localpng.h"|'
+ @${REINPLACE_CMD} -e 's|"util/png.h"|"util/localpng.h"|' \
+ ${WRKSRC}/src/frontend/mame/ui/icorender.cpp
do-build-DOCS-on:
- (cd ${WRKSRC}/docs && ${SETENV} ${MAKE_ENV} \
- ${MAKE_CMD} ${MAKE_ARGS} html \
- SPHINXBUILD=sphinx-build-${PYTHON_VER})
+ (cd ${WRKSRC}/docs && \
+ ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} html SPHINXBUILD=sphinx-build-${PYTHON_VER})
@${RM} ${WRKSRC}/docs/build/html/.buildinfo
-do-install:
-.for PROGRAM in castool chdman floptool imgtool jedutil ldresample ldverify \
- nltool nlwav pngcmp regrep romcmp split srcclean testkeys unidasm
- ${INSTALL_PROGRAM} ${WRKSRC}/${PROGRAM} \
- ${STAGEDIR}${PREFIX}/bin
-.endfor
+post-build:
+ (cd ${WRKSRC}/docs && \
+ ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} man SPHINXBUILD=sphinx-build-${PYTHON_VER})
-.for data in artwork bgfx ctrlr ini hash language plugins samples
+do-install:
+.for DATA in artwork bgfx ctrlr ini hash language plugins samples
(cd ${WRKSRC} && \
- ${COPYTREE_SHARE} ${data} ${STAGEDIR}${DATADIR})
+ ${COPYTREE_SHARE} ${DATA} ${STAGEDIR}${DATADIR})
.endfor
${MKDIR} ${STAGEDIR}${DOCSDIR}
- ${INSTALL_MAN} ${WRKSRC}/docs/man/*.1 \
+ ${INSTALL_MAN} ${WRKSRC}/docs/build/man/MAME.1 \
${STAGEDIR}${MANPREFIX}/man/man1
- ${INSTALL_MAN} ${WRKSRC}/docs/build/man/*.1 \
- ${STAGEDIR}${MANPREFIX}/man/man1
- ${INSTALL_MAN} ${WRKSRC}/docs/man/${EMULATOR}.6 \
+ ${INSTALL_MAN} ${WRKSRC}/docs/man/mame.6 \
${STAGEDIR}${MANPREFIX}/man/man6
- ${INSTALL_MAN} ${WRKSRC}/docs/LICENSE \
- ${STAGEDIR}${DOCSDIR}
- (cd ${WRKSRC}/docs && \
- ${COPYTREE_SHARE} legal ${STAGEDIR}${DOCSDIR})
-do-install-DEBUG-off:
- ${INSTALL_PROGRAM} ${WRKSRC}/${MSUBTARGET} \
- ${STAGEDIR}${PREFIX}/bin/${EMULATOR}
+ ${MKDIR} ${STAGEDIR}${ETCDIR}
+.for INI in mame plugin ui
+ ${INSTALL_DATA} ${WRKDIR}/${INI}.ini \
+ ${STAGEDIR}${ETCDIR}/${INI}.ini.sample
+.endfor
do-install-DEBUG-on:
- ${INSTALL_PROGRAM} ${WRKSRC}/${MSUBTARGET}d \
- ${STAGEDIR}${PREFIX}/bin/${EMULATOR}
+ ${INSTALL_PROGRAM} ${WRKSRC}/mamed \
+ ${STAGEDIR}${PREFIX}/bin/mame
-post-build:
- cd ${WRKSRC}/docs && ${SETENV} ${MAKE_ENV} \
- ${MAKE_CMD} ${MAKE_ARGS} man \
- SPHINXBUILD=sphinx-build-${PYTHON_VER}
+do-install-DEBUG-off:
+ ${INSTALL_PROGRAM} ${WRKSRC}/mame \
+ ${STAGEDIR}${PREFIX}/bin/
-post-install-DOCS-on:
+do-install-DOCS-on:
${MKDIR} ${STAGEDIR}${DOCSDIR}
(cd ${WRKSRC}/docs/build && \
${COPYTREE_SHARE} html ${STAGEDIR}${DOCSDIR})
-post-install-EXAMPLES-on:
- ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
- ${INSTALL_DATA} ${WRKDIR}/target.ini \
- ${STAGEDIR}${EXAMPLESDIR}/${EMULATOR}.ini
+do-install-TOOLS-on:
+.for PROGRAM in castool chdman floptool imgtool jedutil ldresample ldverify \
+ nltool nlwav pngcmp regrep romcmp split srcclean testkeys unidasm
+ ${INSTALL_PROGRAM} ${WRKSRC}/${PROGRAM} \
+ ${STAGEDIR}${PREFIX}/bin
+.endfor
-post-patch:
- @${RM} ${WRKSRC}/3rdparty/bx/include/compat/freebsd/dirent.h
- @${RM} ${WRKSRC}/3rdparty/bx/include/compat/freebsd/signal.h
- @${MV} ${GENIE}/build/gmake.freebsd \
- ${GENIE}/build/gmake.bsd
- @${REINPLACE_CMD} -e \
- 's|^\(AR \)|#\1| ; \
- s|^\(CC \)|#\1| ; \
- s|^\(CXX \)|#\1| ; \
- s|^\(CXX:\)|#\1| ; \
- s|^\(LD \)|#\1| ; \
- s| .(ARCH)||g' \
- ${WRKSRC}/makefile \
- ${GENIE}/build/gmake.bsd/genie.make
- @${REINPLACE_CMD} -e 's|gcc|${CC}|; s|g++|${CXX}|' \
- ${GENIE}/src/tools/gcc.lua \
- ${GENIE}/src/tools/snc.lua \
- ${GENIE}/tests/test_gmake_cpp.lua
- @${REINPLACE_CMD} -e 's|= \"gcc|= \"${CC}|; s|= \"g++|= \"${CXX}|' \
- -e "s|'CXX =|'#CXX =|; s|'CC =|'#CC =|; s| .(ARCH)| |g" \
- ${GENIE}/src/host/scripts.c
- @${GREP} -rl '"png.h"' ${WRKSRC}/src | \
- ${XARGS} ${REINPLACE_CMD} -e 's|"png.h"|"localpng.h"|'
- @${REINPLACE_CMD} -e 's|"util/png.h"|"util/localpng.h"|' \
- ${WRKSRC}/src/frontend/mame/ui/icorender.cpp
- @${MV} ${WRKSRC}/src/lib/util/png.h \
- ${WRKSRC}/src/lib/util/localpng.h
+.for MANUAL in castool chdman floptool imgtool jedutil ldplayer ldresample \
+ ldverify romcmp
+ ${INSTALL_MAN} ${WRKSRC}/docs/man/${MANUAL}.1 \
+ ${STAGEDIR}${MANPREFIX}/man/man1
+.endfor
.include <bsd.port.mk>
diff --git a/emulators/mame/files/target.ini.in b/emulators/mame/files/mame.ini.in
index 45f332852e02..af7225c732b5 100644
--- a/emulators/mame/files/target.ini.in
+++ b/emulators/mame/files/mame.ini.in
@@ -7,31 +7,31 @@ writeconfig 0
#
# CORE SEARCH PATH OPTIONS
#
-homepath ~/.%%MTARGET%%
-rompath ~/.%%MTARGET%%/roms;%%DATADIR%%/roms/
-hashpath ~/.%%MTARGET%%/hash;%%DATADIR%%/hash/
-samplepath ~/.%%MTARGET%%/samples;%%DATADIR%%/samples/
-artpath ~/.%%MTARGET%%/artwork;%%DATADIR%%/artwork/
-ctrlrpath ~/.%%MTARGET%%/ctrlr;%%DATADIR%%/ctrlr/
-inipath ~/.%%MTARGET%%/;.;~/.%%MTARGET%%/ini;%%DATADIR%%/ini/
-fontpath ~/.%%MTARGET%%/font;%%DATADIR%%/font/
-cheatpath ~/.%%MTARGET%%/cheat;%%DATADIR%%/cheat/
-crosshairpath ~/.%%MTARGET%%/crosshair;%%DATADIR%%/crosshair/
-pluginspath ~/.%%MTARGET%%/plugins;%%DATADIR%%/plugins/
-languagepath ~/.%%MTARGET%%/language;%%DATADIR%%/language/
-swpath ~/.%%MTARGET%%/software;%%DATADIR%%/software/
+homepath ~/.mame
+rompath ~/.mame/roms;%%DATADIR%%/roms/
+hashpath ~/.mame/hash;%%DATADIR%%/hash/
+samplepath ~/.mame/samples;%%DATADIR%%/samples/
+artpath ~/.mame/artwork;%%DATADIR%%/artwork/
+ctrlrpath ~/.mame/ctrlr;%%DATADIR%%/ctrlr/
+inipath ~/.mame/ini;%%DATADIR%%/ini/;.
+fontpath ~/.mame/font;%%DATADIR%%/font/
+cheatpath ~/.mame/cheat;%%DATADIR%%/cheat/
+crosshairpath ~/.mame/crosshair;%%DATADIR%%/crosshair/
+pluginspath ~/.mame/plugins;%%DATADIR%%/plugins/
+languagepath ~/.mame/language;%%DATADIR%%/language/
+swpath ~/.mame/software;%%DATADIR%%/software/
#
# CORE OUTPUT DIRECTORY OPTIONS
#
-cfg_directory ~/.%%MTARGET%%/cfg
-nvram_directory ~/.%%MTARGET%%/nvram
-input_directory ~/.%%MTARGET%%/inp
-state_directory ~/.%%MTARGET%%/state
-snapshot_directory ~/.%%MTARGET%%/snapshot
-diff_directory ~/.%%MTARGET%%/diff
-comment_directory ~/.%%MTARGET%%/comments
-share_directory ~/.%%MTARGET%%/share
+cfg_directory ~/.mame/cfg
+nvram_directory ~/.mame/nvram
+input_directory ~/.mame/inp
+state_directory ~/.mame/state
+snapshot_directory ~/.mame/snapshot
+diff_directory ~/.mame/diff
+comment_directory ~/.mame/comments
+share_directory ~/.mame/share
#
# CORE STATE/PLAYBACK OPTIONS
@@ -138,6 +138,7 @@ offscreen_reload 0
joystick_map auto
joystick_deadzone 0.3
joystick_saturation 0.85
+joystick_threshold 0.3
natural 0
joystick_contradictory 0
coin_impulse 0
@@ -211,9 +212,11 @@ http_port 8080
http_root web
#
-# OSD KEYBOARD MAPPING OPTIONS
+# OSD INPUT MAPPING OPTIONS
#
uimodekey auto
+controller_map none
+background_input 0
#
# OSD FONT OPTIONS
@@ -331,6 +334,16 @@ sound auto
audio_latency 2
#
+# OSD MIDI OPTIONS
+#
+midiprovider auto
+
+#
+# OSD EMULATED NETWORKING OPTIONS
+#
+networkprovider auto
+
+#
# BGFX POST-PROCESSING OPTIONS
#
bgfx_path %%DATADIR%%/bgfx
diff --git a/emulators/mame/files/patch-3rdparty_genie_build_gmake.freebsd_genie.make b/emulators/mame/files/patch-3rdparty_genie_build_gmake.freebsd_genie.make
new file mode 100644
index 000000000000..d528ea1d3b91
--- /dev/null
+++ b/emulators/mame/files/patch-3rdparty_genie_build_gmake.freebsd_genie.make
@@ -0,0 +1,63 @@
+--- 3rdparty/genie/build/gmake.freebsd/genie.make.orig 2023-05-26 04:14:50 UTC
++++ 3rdparty/genie/build/gmake.freebsd/genie.make
+@@ -28,9 +28,9 @@ endif
+ RM = $(SILENT) del /F "$(subst /,\\,$(1))" 2> nul || exit 0
+ endif
+
+-CC = gcc
+-CXX = g++
+-AR = ar
++CC ?= gcc
++CXX ?= g++
++AR ?= ar
+
+ ifndef RESCOMP
+ ifdef WINDRES
+@@ -49,17 +49,17 @@ ifeq ($(config),release)
+ DEFINES += -DNDEBUG -DLUA_COMPAT_MODULE -DLUA_USE_POSIX -DLUA_USE_DLOPEN
+ INCLUDES += -I"../../src/host/lua-5.3.0/src"
+ ALL_CPPFLAGS += $(CPPFLAGS) -MMD -MP -MP $(DEFINES) $(INCLUDES)
+- ALL_ASMFLAGS += $(ASMFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -Wall -Wextra -Os $(MPARAM)
+- ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -Wall -Wextra -Os $(MPARAM)
+- ALL_CXXFLAGS += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -Wall -Wextra -Os $(MPARAM)
+- ALL_OBJCFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -Wall -Wextra -Os $(MPARAM)
+- ALL_OBJCPPFLAGS += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -Wall -Wextra -Os $(MPARAM)
++ ALL_ASMFLAGS += $(ASMFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) -Wall -Wextra -Os $(MPARAM)
++ ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -Wall -Wextra -Os $(MPARAM)
++ ALL_CXXFLAGS += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) -Wall -Wextra -Os $(MPARAM)
++ ALL_OBJCFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -Wall -Wextra -Os $(MPARAM)
++ ALL_OBJCPPFLAGS += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) -Wall -Wextra -Os $(MPARAM)
+ ALL_RESFLAGS += $(RESFLAGS) $(DEFINES) $(INCLUDES)
+ ALL_LDFLAGS += $(LDFLAGS) -L. -s -rdynamic
+ LDDEPS +=
+ LIBS += $(LDDEPS) -lm
+ EXTERNAL_LIBS +=
+- LINKCMD = $(CC) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ARCH) $(ALL_LDFLAGS) $(LIBS)
++ LINKCMD = $(CC) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ALL_LDFLAGS) $(LIBS)
+ OBJECTS := \
+ $(OBJDIR)/src/host/lua-5.3.0/src/lapi.o \
+ $(OBJDIR)/src/host/lua-5.3.0/src/lauxlib.o \
+@@ -132,17 +132,17 @@ ifeq ($(config),debug)
+ DEFINES += -D_DEBUG -DLUA_COMPAT_MODULE -DLUA_USE_POSIX -DLUA_USE_DLOPEN
+ INCLUDES += -I"../../src/host/lua-5.3.0/src"
+ ALL_CPPFLAGS += $(CPPFLAGS) -MMD -MP -MP $(DEFINES) $(INCLUDES)
+- ALL_ASMFLAGS += $(ASMFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -Wall -Wextra -g
+- ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -Wall -Wextra -g
+- ALL_CXXFLAGS += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -Wall -Wextra -g
+- ALL_OBJCFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -Wall -Wextra -g
+- ALL_OBJCPPFLAGS += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -Wall -Wextra -g
++ ALL_ASMFLAGS += $(ASMFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) -Wall -Wextra -g
++ ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -Wall -Wextra -g
++ ALL_CXXFLAGS += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) -Wall -Wextra -g
++ ALL_OBJCFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -Wall -Wextra -g
++ ALL_OBJCPPFLAGS += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) -Wall -Wextra -g
+ ALL_RESFLAGS += $(RESFLAGS) $(DEFINES) $(INCLUDES)
+ ALL_LDFLAGS += $(LDFLAGS) -L. -rdynamic
+ LDDEPS +=
+ LIBS += $(LDDEPS) -lm
+ EXTERNAL_LIBS +=
+- LINKCMD = $(CC) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ARCH) $(ALL_LDFLAGS) $(LIBS)
++ LINKCMD = $(CC) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ALL_LDFLAGS) $(LIBS)
+ OBJECTS := \
+ $(OBJDIR)/src/host/lua-5.3.0/src/lapi.o \
+ $(OBJDIR)/src/host/lua-5.3.0/src/lauxlib.o \
diff --git a/emulators/mame/files/patch-3rdparty_genie_src_host_scripts.c b/emulators/mame/files/patch-3rdparty_genie_src_host_scripts.c
new file mode 100644
index 000000000000..044cf87ada38
--- /dev/null
+++ b/emulators/mame/files/patch-3rdparty_genie_src_host_scripts.c
@@ -0,0 +1,16 @@
+--- 3rdparty/genie/src/host/scripts.c.orig 2023-05-22 09:40:13 UTC
++++ 3rdparty/genie/src/host/scripts.c
+@@ -237,10 +237,10 @@ const char* builtin_scripts[] = {
+ "exit 0')\n_p(' COPY = $(SILENT) copy /Y \"$(subst /,\\\\\\\\,$(1))\" \"$(subst /,\\\\\\\\,$(2))\"')\n_p(' RM = $(SILENT) del /F \"$(subst /,\\\\\\\\,$(1))\" 2> nul || exit 0')\n_p('endif')\n_p('')\n_p('CC = %s', cc.cc)\n_p('CXX = %s', cc.cxx)\n_p('AR = %s', cc.ar)\n_p('')\n_p('ifndef RESCOMP')\n_p(' ifdef WINDRES')\n_p(' RESCOMP = $(WINDRES)')\n_p(' else')\n_p(' RESCOMP = %s', cc.rc or 'windres')\n_p(' endif')\n_p('endif')\n_p('')\nif (not premake.make.makefile_ignore) then\n_p('MAKEFILE = %s', _MAKE.getmakefilename(prj, true))\n_p('')\nend\nend\nlocal function is_excluded(prj, cfg, file)\nif table.icontains(prj.excludes, file) then\nreturn true\nend\nif table.icontains(cfg.excludes, file) then\nreturn true\nend\nreturn false\nend\nfunction premake.gmake_cpp_configs(prj, cc, platforms)\nfor _, platform in ipairs(platforms) do\nfor cfg in premake.eachconfig(prj, platform) do\npremake.gmake_cpp_config(prj, cfg, cc)\nend\nend\nend\nfunction premake.gmake_cpp_config(prj, cfg, cc)\n_p('ifeq ($(conf"
+ "ig),%s)', _MAKE.esc(cfg.shortname))\ncpp.platformtools(cfg, cc)\nlocal targetDir = _MAKE.esc(cfg.buildtarget.directory)\n_p(' ' .. (table.contains(premake.make.override,\"OBJDIR\") and \"override \" or \"\") .. 'OBJDIR = %s', _MAKE.esc(cfg.objectsdir))\n_p(' ' .. (table.contains(premake.make.override,\"TARGETDIR\") and \"override \" or \"\") .. 'TARGETDIR = %s', iif(targetDir == \"\", \".\", targetDir))\n_p(' ' .. (table.contains(premake.make.override,\"TARGET\") and \"override \" or \"\") .. 'TARGET = $(TARGETDIR)/%s', _MAKE.esc(cfg.buildtarget.name))\n_p(' DEFINES +=%s', make.list(_MAKE.escquote(cc.getdefines(cfg.defines))))\nlocal id = make.list(cc.getincludedirs(cfg.includedirs));\nlocal uid = make.list(cc.getquoteincludedirs(cfg.userincludedirs))\nlocal sid = make.list(cc.getsystemincludedirs(cfg.systemincludedirs))\nif id ~= \"\" then\n_p(' INCLUDES +=%s', id)\nend\nif uid ~= \"\" then\n_p(' INCLUDES +=%s', uid)\nend\nif sid "
+ "~= \"\" then\n_p(' INCLUDES +=%s', sid)\nend\ncpp.pchconfig(cfg)\ncpp.flags(cfg, cc)\ncpp.linker(prj, cfg, cc)\ntable.sort(cfg.files)\nif cfg.flags.UseObjectResponseFile then\n_p(' OBJRESP = $(OBJDIR)/%s_objects', prj.name)\nelse\n_p(' OBJRESP =')\nend\n_p(' OBJECTS := \\\\')\nfor _, file in ipairs(cfg.files) do\nif path.issourcefile(file) then\nif not is_excluded(prj, cfg, file) then\n_p('\\t$(OBJDIR)/%s.o \\\\'\n, _MAKE.esc(path.trimdots(path.removeext(file)))\n)\nend\nend\nend\n_p('')\n_p(' define PREBUILDCMDS')\nif #cfg.prebuildcommands > 0 then\n_p('\\t@echo Running pre-build commands')\n_p('\\t%s', table.implode(cfg.prebuildcommands, \"\", \"\", \"\\n\\t\"))\nend\n_p(' endef')\n_p(' define PRELINKCMDS')\nif #cfg.prelinkcommands > 0 then\n_p('\\t@echo Running pre-link commands')\n_p('\\t%s', table.implode(cfg.prelinkcommands, \"\", \"\", \"\\n\\t\"))\nend\n_p(' endef')\n_p(' define POSTBUILDCMDS')\nif #cfg.postbuildcommands > 0 then\n_p('\\t@echo Running post-bui"
+- "ld commands')\n_p('\\t%s', table.implode(cfg.postbuildcommands, \"\", \"\", \"\\n\\t\"))\nend\n_p(' endef')\nmake.settings(cfg, cc)\n_p('endif')\n_p('')\nend\nfunction cpp.platformtools(cfg, cc)\nlocal platform = cc.platforms[cfg.platform]\nif platform.cc then\n_p(' CC = %s', platform.cc)\nend\nif platform.cxx then\n_p(' CXX = %s', platform.cxx)\nend\nif platform.ar then\n_p(' AR = %s', platform.ar)\nend\nend\nfunction cpp.flags(cfg, cc)\nif cfg.pchheader and not cfg.flags.NoPCH then\n_p(' FORCE_INCLUDE += -include $(OBJDIR)/$(notdir $(PCH))')\n_p(' FORCE_INCLUDE_OBJC += -include $(OBJDIR)/$(notdir $(PCH))_objc')\nend\nif #cfg.forcedincludes > 0 then\n_p(' FORCE_INCLUDE += -include %s'\n,_MAKE.esc(table.concat(cfg.forcedincludes, \";\")))\nend\n_p(' ALL_CPPFLAGS += $(CPPFLAGS) %s $(DEFINES) $(INCLUDES)', table.concat(cc.getcppflags(cfg), \" \"))\n_p(' ALL_ASMFLAGS += $(ASMFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH)%s', make.list(table.join(cc.getcflags(cfg), c"
+- "fg.buildoptions, cfg.buildoptions_asm)))\n_p(' ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH)%s', make.list(table.join(cc.getcflags(cfg), cfg.buildoptions, cfg.buildoptions_c)))\n_p(' ALL_CXXFLAGS += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH)%s', make.list(table.join(cc.getcflags(cfg), cc.getcxxflags(cfg), cfg.buildoptions, cfg.buildoptions_cpp)))\n_p(' ALL_OBJCFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH)%s', make.list(table.join(cc.getcflags(cfg), cc.getobjcflags(cfg), cfg.buildoptions, cfg.buildoptions_objc)))\n_p(' ALL_OBJCPPFLAGS += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH)%s', make.list(table.join(cc.getcflags(cfg), cc.getcxxflags(cfg), cc.getobjcflags(cfg), cfg.buildoptions, cfg.buildoptions_objcpp)))\n_p(' ALL_RESFLAGS += $(RESFLAGS) $(DEFINES) $(INCLUDES)%s',\n make.list(table.join(cc.getdefines(cfg.resdefines),\n cc.getincludedirs(cfg.resincludedirs), cfg.resoptions)))\nend\nfunction cpp.linker(prj, cfg, cc)\nlocal libdeps\nl"
++ "ld commands')\n_p('\\t%s', table.implode(cfg.postbuildcommands, \"\", \"\", \"\\n\\t\"))\nend\n_p(' endef')\nmake.settings(cfg, cc)\n_p('endif')\n_p('')\nend\nfunction cpp.platformtools(cfg, cc)\nlocal platform = cc.platforms[cfg.platform]\nif platform.cc then\n_p(' CC = %s', platform.cc)\nend\nif platform.cxx then\n_p(' CXX = %s', platform.cxx)\nend\nif platform.ar then\n_p(' AR = %s', platform.ar)\nend\nend\nfunction cpp.flags(cfg, cc)\nif cfg.pchheader and not cfg.flags.NoPCH then\n_p(' FORCE_INCLUDE += -include $(OBJDIR)/$(notdir $(PCH))')\n_p(' FORCE_INCLUDE_OBJC += -include $(OBJDIR)/$(notdir $(PCH))_objc')\nend\nif #cfg.forcedincludes > 0 then\n_p(' FORCE_INCLUDE += -include %s'\n,_MAKE.esc(table.concat(cfg.forcedincludes, \";\")))\nend\n_p(' ALL_CPPFLAGS += $(CPPFLAGS) %s $(DEFINES) $(INCLUDES)', table.concat(cc.getcppflags(cfg), \" \"))\n_p(' ALL_ASMFLAGS += $(ASMFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) %s', make.list(table.join(cc.getcflags(cfg), c"
++ "fg.buildoptions, cfg.buildoptions_asm)))\n_p(' ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) %s', make.list(table.join(cc.getcflags(cfg), cfg.buildoptions, cfg.buildoptions_c)))\n_p(' ALL_CXXFLAGS += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) %s', make.list(table.join(cc.getcflags(cfg), cc.getcxxflags(cfg), cfg.buildoptions, cfg.buildoptions_cpp)))\n_p(' ALL_OBJCFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) %s', make.list(table.join(cc.getcflags(cfg), cc.getobjcflags(cfg), cfg.buildoptions, cfg.buildoptions_objc)))\n_p(' ALL_OBJCPPFLAGS += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) %s', make.list(table.join(cc.getcflags(cfg), cc.getcxxflags(cfg), cc.getobjcflags(cfg), cfg.buildoptions, cfg.buildoptions_objcpp)))\n_p(' ALL_RESFLAGS += $(RESFLAGS) $(DEFINES) $(INCLUDES)%s',\n make.list(table.join(cc.getdefines(cfg.resdefines),\n cc.getincludedirs(cfg.resincludedirs), cfg.resoptions)))\nend\nfunction cpp.linker(prj, cfg, cc)\nlocal libdeps\nl"
+ "ocal lddeps\nif #cfg.wholearchive > 0 then\nlibdeps = {}\nlddeps = {}\nfor _, linkcfg in ipairs(premake.getlinks(cfg, \"siblings\", \"object\")) do\nlocal linkpath = path.rebase(linkcfg.linktarget.fullpath, linkcfg.location, cfg.location)\nif table.icontains(cfg.wholearchive, linkcfg.project.name) then\nlddeps = table.join(lddeps, cc.wholearchive(linkpath))\nelse\ntable.insert(lddeps, linkpath)\nend\ntable.insert(libdeps, linkpath)\nend\nlibdeps = make.list(_MAKE.esc(libdeps))\nlddeps = make.list(_MAKE.esc(lddeps))\nelse\nlibdeps = make.list(_MAKE.esc(premake.getlinks(cfg, \"siblings\", \"fullpath\")))\nlddeps = libdeps\nend\n_p(' ALL_LDFLAGS += $(LDFLAGS)%s', make.list(table.join(cc.getlibdirflags(cfg), cc.getldflags(cfg), cfg.linkoptions)))\n_p(' LIBDEPS +=%s', libdeps)\n_p(' LDDEPS +=%s', lddeps)\nif cfg.flags.UseLDResponseFile then\n_p(' LDRESP = $(OBJDIR)/%s_libs', prj.name)\n_p(' LIBS += @$(LDRESP)%s', make.list(cc.getlinkflags(cfg)))\nelse"
+- "\n_p(' LDRESP =')\n_p(' LIBS += $(LDDEPS)%s', make.list(cc.getlinkflags(cfg)))\nend\n_p(' EXTERNAL_LIBS +=%s', make.list(cc.getlibfiles(cfg)))\n_p(' LINKOBJS = %s', (cfg.flags.UseObjectResponseFile and \"@$(OBJRESP)\" or \"$(OBJECTS)\"))\nif cfg.kind == \"StaticLib\" then\nif (not prj.options.ArchiveSplit) then\n_p(' LINKCMD = $(AR) %s $(TARGET)', make.list(cc.getarchiveflags(prj, cfg, false)))\nelse\n_p(' LINKCMD = $(AR) %s $(TARGET)', make.list(cc.getarchiveflags(prj, cfg, false)))\n_p(' LINKCMD_NDX = $(AR) %s $(TARGET)', make.list(cc.getarchiveflags(prj, cfg, true)))\nend\nelse\nlocal tool = iif(cfg.language == \"C\", \"CC\", \"CXX\")\nlocal startgroup = ''\nlocal endgroup = ''\nif (cfg.flags.LinkSupportCircularDependencies) then\nstartgroup = '-Wl,--start-group '\nendgroup = ' -Wl,--end-group'\nend\n_p(' LINKCMD = $(%s) -o $(TARGET) $(LINKOBJS) $(RESOURCES) $(ARCH) $(ALL_LDFLAGS) %s$(LIBS)%s', tool, startgroup,"
++ "\n_p(' LDRESP =')\n_p(' LIBS += $(LDDEPS)%s', make.list(cc.getlinkflags(cfg)))\nend\n_p(' EXTERNAL_LIBS +=%s', make.list(cc.getlibfiles(cfg)))\n_p(' LINKOBJS = %s', (cfg.flags.UseObjectResponseFile and \"@$(OBJRESP)\" or \"$(OBJECTS)\"))\nif cfg.kind == \"StaticLib\" then\nif (not prj.options.ArchiveSplit) then\n_p(' LINKCMD = $(AR) %s $(TARGET)', make.list(cc.getarchiveflags(prj, cfg, false)))\nelse\n_p(' LINKCMD = $(AR) %s $(TARGET)', make.list(cc.getarchiveflags(prj, cfg, false)))\n_p(' LINKCMD_NDX = $(AR) %s $(TARGET)', make.list(cc.getarchiveflags(prj, cfg, true)))\nend\nelse\nlocal tool = iif(cfg.language == \"C\", \"CC\", \"CXX\")\nlocal startgroup = ''\nlocal endgroup = ''\nif (cfg.flags.LinkSupportCircularDependencies) then\nstartgroup = '-Wl,--start-group '\nendgroup = ' -Wl,--end-group'\nend\n_p(' LINKCMD = $(%s) -o $(TARGET) $(LINKOBJS) $(RESOURCES) $(ALL_LDFLAGS) %s$(LIBS)%s', tool, startgroup,"
+ " endgroup)\nend\nend\nfunction cpp.pchconfig(cfg)\nif not cfg.pchheader or cfg.flags.NoPCH then\nreturn\nend\nlocal pch = cfg.pchheader\nfor _, incdir in ipairs(cfg.includedirs) do\nlocal abspath = path.getabsolute(path.join(cfg.project.location, incdir))\nlocal testname = path.join(abspath, pch)\nif os.isfile(testname) then\npch = path.getrelative(cfg.location, testname)\nbreak\nend\nend\n_p(' PCH = %s', _MAKE.esc(pch))\n_p(' GCH = $(OBJDIR)/$(notdir $(PCH)).gch')\n_p(' GCH_OBJC = $(OBJDIR)/$(notdir $(PCH))_objc.gch')\nend\nfunction cpp.pchrules(prj)\n_p('ifneq (,$(PCH))')\n_p('$(GCH): $(PCH) $(MAKEFILE) | $(OBJDIR)')\nif prj.msgprecompile then\n_p('\\t@echo ' .. prj.msgprecompile)\nelse\n_p('\\t@echo $(notdir $<)')\nend\nlocal cmd = iif(prj.language == \"C\", \"$(CC) $(ALL_CFLAGS) -x c-header\", \"$(CXX) $(ALL_CXXFLAGS) -x c++-header\")\n_p('\\t$(SILENT) %s $(DEFINES) $(INCLUDES) -o \"$@\" -c \"$<\"', cmd)\n_p('')\n_p('$(GCH_OBJC): $(PCH) $(MAKEFILE) | $(OBJDIR)'"
+ ")\nif prj.msgprecompile then\n_p('\\t@echo ' .. prj.msgprecompile)\nelse\n_p('\\t@echo $(notdir $<)')\nend\nlocal cmd = iif(prj.language == \"C\", \"$(CC) $(ALL_OBJCFLAGS) -x objective-c-header\", \"$(CXX) $(ALL_OBJCPPFLAGS) -x objective-c++-header\")\n_p('\\t$(SILENT) %s $(DEFINES) $(INCLUDES) -o \"$@\" -c \"$<\"', cmd)\n_p('endif')\n_p('')\nend\nfunction cpp.fileRules(prj, cc)\nlocal platforms = premake.filterplatforms(prj.solution, cc.platforms, \"Native\")\n_p('ifneq (,$(OBJRESP))')\n_p('$(OBJRESP): $(OBJECTS) | $(TARGETDIR) $(OBJDIRS)')\n_p('\\t$(SILENT) echo $^')\n_p('\\t$(SILENT) echo $^ > $@')\n_p('endif')\n_p('')\n_p('ifneq (,$(LDRESP))')\n_p('$(LDRESP): $(LDDEPS) | $(TARGETDIR) $(OBJDIRS)')\n_p('\\t$(SILENT) echo $^')\n_p('\\t$(SILENT) echo $^ > $@')\n_p('endif')\n_p('')\ntable.sort(prj.allfiles)\nfor _, file in ipairs(prj.allfiles or {}) do\nif path.issourcefile(file) then\nif (path.isobjcfile(file)) then\n_p('$(OBJDIR)/%s.o: %s $(GCH_OBJC) $(MAKEFILE) | $(OBJDIR)/%s'\n, _MAKE.esc(path.trimdots(path"
+ ".removeext(file)))\n, _MAKE.esc(file)\n, _MAKE.esc(path.getdirectory(path.trimdots(file)))\n)\nelse\n_p('$(OBJDIR)/%s.o: %s $(GCH) $(MAKEFILE) | $(OBJDIR)/%s'\n, _MAKE.esc(path.trimdots(path.removeext(file)))\n, _MAKE.esc(file)\n, _MAKE.esc(path.getdirectory(path.trimdots(file)))\n)\nend\nif (path.isobjcfile(file) and prj.msgcompile_objc) then\n_p('\\t@echo ' .. prj.msgcompile_objc)\nelseif prj.msgcompile then\n_p('\\t@echo ' .. prj.msgcompile)\nelse\n_p('\\t@echo $(notdir $<)')\nend\nif (path.isobjcfile(file)) then\nif (path.iscfile(file)) then\n_p('\\t$(SILENT) $(CXX) $(ALL_OBJCFLAGS) $(FORCE_INCLUDE_OBJC) -o \"$@\" -c \"$<\"')\nelse\n_p('\\t$(SILENT) $(CXX) $(ALL_OBJCPPFLAGS) $(FORCE_INCLUDE_OBJC) -o \"$@\" -c \"$<\"')\nend\nelseif (path.isasmfile(file)) then\n_p('\\t$(SILENT) $(CC) $(ALL_ASMFLAGS) -o \"$@\" -c \"$<\"')\nelse\ncpp.buildcommand(path.iscfile(file) and not prj.options.ForceCPP, \"o\")\nend\nfor _, task in ipairs(prj.postcompiletasks or {}) do\n_p('\\t$(SILENT) %s', task)\n_p('')\nend\n_p('')\n"
diff --git a/emulators/mame/files/patch-3rdparty_genie_src_tools_gcc.lua b/emulators/mame/files/patch-3rdparty_genie_src_tools_gcc.lua
new file mode 100644
index 000000000000..9ffe65ae8854
--- /dev/null
+++ b/emulators/mame/files/patch-3rdparty_genie_src_tools_gcc.lua
@@ -0,0 +1,15 @@
+--- 3rdparty/genie/src/tools/gcc.lua.orig 2023-05-25 09:19:09 UTC
++++ 3rdparty/genie/src/tools/gcc.lua
+@@ -12,9 +12,9 @@ --
+ -- Set default tools
+ --
+
+- premake.gcc.cc = "gcc"
+- premake.gcc.cxx = "g++"
+- premake.gcc.ar = "ar"
++ premake.gcc.cc = _OPTIONS["CC"]
++ premake.gcc.cxx = _OPTIONS["CXX"]
++ premake.gcc.ar = _OPTIONS["AR"]
+ premake.gcc.rc = "windres"
+ premake.gcc.llvm = false
+
diff --git a/emulators/mame/files/patch-3rdparty_genie_tests_test__gmake__cpp.lua b/emulators/mame/files/patch-3rdparty_genie_tests_test__gmake__cpp.lua
new file mode 100644
index 000000000000..481cbce2ab24
--- /dev/null
+++ b/emulators/mame/files/patch-3rdparty_genie_tests_test__gmake__cpp.lua
@@ -0,0 +1,15 @@
+--- 3rdparty/genie/tests/test_gmake_cpp.lua.orig 2023-04-25 15:19:25 UTC
++++ 3rdparty/genie/tests/test_gmake_cpp.lua
+@@ -47,9 +47,9 @@ endif
+ SILENT = @
+ endif
+
+-CC = gcc
+-CXX = g++
+-AR = ar
++CC ?= gcc
++CXX ?= g++
++AR ?= ar
+
+ ifndef RESCOMP
+ ifdef WINDRES
diff --git a/emulators/mame/files/patch-makefile b/emulators/mame/files/patch-makefile
index 82288e63f2ca..eda56ef1f250 100644
--- a/emulators/mame/files/patch-makefile
+++ b/emulators/mame/files/patch-makefile
@@ -1,14 +1,27 @@
---- makefile.orig 2023-05-17 11:43:34 UTC
+--- makefile.orig 2023-04-25 15:19:25 UTC
+++ makefile
-@@ -1425,6 +1425,11 @@ $(PROJECTDIR)/$(MAKETYPE)-freebsd-clang/Makefile: make
+@@ -447,9 +447,9 @@ ifneq ($(TARGETOS),asmjs)
+ endif
- .PHONY: freebsd_x64_clang
- freebsd_x64_clang: generate $(PROJECTDIR)/$(MAKETYPE)-freebsd-clang/Makefile
-+ $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-freebsd-clang config=$(CONFIG)64 precompile
-+ $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-freebsd-clang config=$(CONFIG)64
+ ifneq ($(TARGETOS),asmjs)
+-CC := $(SILENT)gcc
+-LD := $(SILENT)g++
+-CXX:= $(SILENT)g++
++CC ?= $(SILENT)gcc
++LD ?= $(SILENT)g++
++CXX ?= $(SILENT)g++
+ endif
+
+ #-------------------------------------------------
+@@ -1409,6 +1409,11 @@ $(PROJECTDIR)/$(MAKETYPE)-freebsd-clang/Makefile: make
+
+ $(PROJECTDIR)/$(MAKETYPE)-freebsd-clang/Makefile: makefile $(SCRIPTS) $(GENIE)
+ $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --gcc=freebsd-clang --gcc_version=$(CLANG_VERSION) $(MAKETYPE)
+
+.PHONY: freebsd_arm64_clang
+freebsd_arm64_clang: generate $(PROJECTDIR)/$(MAKETYPE)-freebsd-clang/Makefile
- $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-freebsd-clang config=$(CONFIG)64 precompile
- $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-freebsd-clang config=$(CONFIG)64
++ $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-freebsd-clang config=$(CONFIG)64 precompile
++ $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-freebsd-clang config=$(CONFIG)64
+ .PHONY: freebsd_x64_clang
+ freebsd_x64_clang: generate $(PROJECTDIR)/$(MAKETYPE)-freebsd-clang/Makefile
diff --git a/emulators/mame/files/patch-scripts_genie.lua b/emulators/mame/files/patch-scripts_genie.lua
new file mode 100644
index 000000000000..fbe17676dd90
--- /dev/null
+++ b/emulators/mame/files/patch-scripts_genie.lua
@@ -0,0 +1,14 @@
+--- scripts/genie.lua.orig 2023-05-24 01:14:32 UTC
++++ scripts/genie.lua
+@@ -1238,6 +1238,11 @@ configuration { "netbsd" }
+ "LinkSupportCircularDependencies",
+ }
+
++configuration { "freebsd" }
++ flags {
++ "LinkSupportCircularDependencies",
++ }
++
+ configuration { "osx*" }
+ links {
+ "pthread",
diff --git a/emulators/mame/files/patch-scripts_toolchain.lua b/emulators/mame/files/patch-scripts_toolchain.lua
index 014ee01b1f28..fe4f9966ff46 100644
--- a/emulators/mame/files/patch-scripts_toolchain.lua
+++ b/emulators/mame/files/patch-scripts_toolchain.lua
@@ -1,4 +1,4 @@
---- scripts/toolchain.lua.orig 2023-05-06 02:56:32 UTC
+--- scripts/toolchain.lua.orig 2023-05-27 02:18:45 UTC
+++ scripts/toolchain.lua
@@ -60,7 +60,8 @@ function androidToolchainRoot()
local hostTags = {
@@ -6,7 +6,7 @@
linux = "linux-x86_64",
- macosx = "darwin-x86_64"
+ macosx = "darwin-x86_64",
-+ bsd = "freebsd-x86_64"
++ bsd = "freebsd-x86_64"
}
android.toolchainRoot = (os.getenv("ANDROID_NDK_HOME") or "") .. "/toolchains/llvm/prebuilt/" .. hostTags[os.get()]
end
diff --git a/emulators/mame/files/pkg-message.in b/emulators/mame/files/pkg-message.in
index 0d2518668aee..2133bf702035 100644
--- a/emulators/mame/files/pkg-message.in
+++ b/emulators/mame/files/pkg-message.in
@@ -1,12 +1,15 @@
[
{ type: install
message: <<EOM
-An example configuration file has been installed in
-"%%EXAMPLESDIR%%/%%MSUBTARGET%%.ini" This configuration can be copied to your
-"~/.%%MSUBTARGET%%" directory; alternatively, run "%%MSUBTARGET%% -createconfig" to
-create a clean copy of "%%MSUBTARGET%%.ini", which can be copied to
-"~/.%%MSUBTARGET%%", or elsewhere.
-To run %%MSUBTARGET%% with a custom path, run "%%MSUBTARGET%% -inipath path-to-%%MSUBTARGET%%.ini"
+Sample configuration files have been installed in "%%ETCDIR%%/"
+The configuration data can be copied to your "~/.mame" directory; alternatively,
+to create clean copies of MAME's configuration, run "mame -createconfig",
+the output from this can be stored in ~/.mame or elsewhere.
+
+To run mame with a custom path, run "mame -inipath path-to-mame.ini"
+
+By default, MAME will search and write to the current working directory, unless
+it finds configuration data.
EOM
}
]
diff --git a/emulators/mame/files/plugin.ini.in b/emulators/mame/files/plugin.ini.in
new file mode 100644
index 000000000000..293c79bea26d
--- /dev/null
+++ b/emulators/mame/files/plugin.ini.in
@@ -0,0 +1,20 @@
+#
+# PLUGINS OPTIONS
+#
+autofire 0
+cheat 0
+cheatfind 0
+commonui 0
+console 0
+data 1
+discord 0
+dummy 0
+gdbstub 0
+hiscore 0
+inputmacro 0
+json 0
+layout 0
+portname 0
+timecode 0
+timer 0
+SLAXML 0
diff --git a/emulators/mame/files/ui.ini.in b/emulators/mame/files/ui.ini.in
new file mode 100644
index 000000000000..f55e36cec83b
--- /dev/null
+++ b/emulators/mame/files/ui.ini.in
@@ -0,0 +1,71 @@
+#
+# UI SEARCH PATH OPTIONS
+#
+historypath ~/.mame/histroy;~/.mame/dats;%%DATADIR%%/history/;%%DATADIR%%/dats/;.
+categorypath folders
+cabinets_directory ~/.mame/cabinets;~/.mame/cabdevs;%%DATADIR%%/cabinets/;%%DATADIR%%/cabdevs/
+cpanels_directory ~/.mame/cpanel;%%DATADIR%%/cpanel
+pcbs_directory ~/.mame/pcb;%%DATADIR%%/pcb
+flyers_directory ~/.mame/flyers;%%DATADIR%%/flyers
+titles_directory ~/.mame/titles;%%DATADIR%%/titles
+ends_directory ~/.mame/ends;%%DATADIR%%/ends
+marquees_directory ~/.mame/marguees;%%DATADIR%%/marquees
+artwork_preview_directory ~/.mame/artpreview;%%DATADIR%%/artpreview
+bosses_directory ~/.mame/bosses;%%DATADIR%%/bosses
+logos_directory ~/.mame/logo;%%DATADIR%%/logo
+scores_directory ~/.mame/scores;%%DATADIR%%/scores
+versus_directory ~/.mame/versus;%%DATADIR%%/versus
+gameover_directory ~/.mame/gameover;%%DATADIR%%/gameover
+howto_directory ~/.mame/howto;%%DATADIR%%/howto
+select_directory ~/.mame/select;%%DATADIR%%/select
+icons_directory ~/.mame/icons;%%DATADIR%%/icons
+covers_directory ~/.mame/covers;%%DATADIR%%/covers
+ui_path ui
+
+#
+# UI MISC OPTIONS
+#
+system_names
+skip_warnings 0
+unthrottle_mute 0
+versus
+#
+# UI OPTIONS
+#
+infos_text_size 0.75
+font_rows 30
+ui_border_color ffffffff
+ui_bg_color ef101030
+ui_clone_color ff808080
+ui_dipsw_color ffffff00
+ui_gfxviewer_color ef101030
+ui_mousedown_bg_color b0606000
+ui_mousedown_color ffffff80
+ui_mouseover_bg_color 70404000
+ui_mouseover_color ffffff80
+ui_selected_bg_color ef808000
+ui_selected_color ffffff00
+ui_slider_color ffffffff
+ui_subitem_color ffffffff
+ui_text_bg_color ef000000
+ui_text_color ffffffff
+ui_unavail_color ff404040
+
+#
+# SYSTEM/SOFTWARE SELECTION MENU OPTIONS
+#
+hide_main_panel 0
+use_background 1
+skip_biosmenu 0
+skip_partsmenu 0
+remember_last 1
+last_used_machine
+last_used_filter
+system_right_panel image
+software_right_panel image
+system_right_image snap
+software_right_image snap
+enlarge_snaps 1
+forced4x3 1
+info_audit_enabled 0
+hide_romless 1
diff --git a/emulators/mame/pkg-plist b/emulators/mame/pkg-plist
index 36f07ac1497c..4074b130d61b 100644
--- a/emulators/mame/pkg-plist
+++ b/emulators/mame/pkg-plist
@@ -1,31 +1,31 @@
-bin/castool
-bin/chdman
-bin/floptool
-bin/imgtool
-bin/jedutil
-bin/ldresample
-bin/ldverify
-bin/%%EMULATOR%%
-bin/nltool
-bin/nlwav
-bin/pngcmp
-bin/regrep
-bin/romcmp
-bin/split
-bin/srcclean
-bin/testkeys
-bin/unidasm
+%%TOOLS%%bin/castool
+%%TOOLS%%bin/chdman
+%%TOOLS%%bin/floptool
+%%TOOLS%%bin/imgtool
+%%TOOLS%%bin/jedutil
+%%TOOLS%%bin/ldresample
+%%TOOLS%%bin/ldverify
+bin/mame
+%%TOOLS%%bin/nltool
+%%TOOLS%%bin/nlwav
+%%TOOLS%%bin/pngcmp
+%%TOOLS%%bin/regrep
+%%TOOLS%%bin/romcmp
+%%TOOLS%%bin/split
+%%TOOLS%%bin/srcclean
+%%TOOLS%%bin/testkeys
+%%TOOLS%%bin/unidasm
man/man1/MAME.1.gz
-man/man1/castool.1.gz
-man/man1/chdman.1.gz
-man/man1/floptool.1.gz
-man/man1/imgtool.1.gz
-man/man1/jedutil.1.gz
-man/man1/ldplayer.1.gz
-man/man1/ldresample.1.gz
-man/man1/ldverify.1.gz
-man/man1/romcmp.1.gz
-man/man6/%%EMULATOR%%.6.gz
+%%TOOLS%%man/man1/castool.1.gz
+%%TOOLS%%man/man1/chdman.1.gz
+%%TOOLS%%man/man1/floptool.1.gz
+%%TOOLS%%man/man1/imgtool.1.gz
+%%TOOLS%%man/man1/jedutil.1.gz
+%%TOOLS%%man/man1/ldplayer.1.gz
+%%TOOLS%%man/man1/ldresample.1.gz
+%%TOOLS%%man/man1/ldverify.1.gz
+%%TOOLS%%man/man1/romcmp.1.gz
+man/man6/mame.6.gz
%%DATADIR%%/artwork/LICENSE
%%DATADIR%%/artwork/README.md
%%DATADIR%%/artwork/aperture-grille.png
@@ -2204,7 +2204,7 @@ man/man6/%%EMULATOR%%.6.gz
%%DATADIR%%/plugins/data/data_gameinit.lua
%%DATADIR%%/plugins/data/data_hiscore.lua
%%DATADIR%%/plugins/data/data_history.lua
-%%DATADIR%%/plugins/data/data_%%EMULATOR%%info.lua
+%%DATADIR%%/plugins/data/data_mameinfo.lua
%%DATADIR%%/plugins/data/data_marp.lua
%%DATADIR%%/plugins/data/data_messinfo.lua
%%DATADIR%%/plugins/data/data_story.lua
@@ -2269,3 +2269,6 @@ man/man6/%%EMULATOR%%.6.gz
%%DATADIR%%/samples/floppy/525_spin_start_empty.wav
%%DATADIR%%/samples/floppy/525_spin_start_loaded.wav
%%DATADIR%%/samples/floppy/525_step_1_1.wav
+@sample %%ETCDIR%%/mame.ini.sample
+@sample %%ETCDIR%%/plugin.ini.sample
+@sample %%ETCDIR%%/ui.ini.sample