git: 85ef627cb480 - main - emulators/qmc2: Sync with upstream; switch to QWebengine

From: Jason E. Hale <jhale_at_FreeBSD.org>
Date: Mon, 11 Dec 2023 05:32:59 UTC
The branch main has been updated by jhale:

URL: https://cgit.FreeBSD.org/ports/commit/?id=85ef627cb4809d2a7674c9f71f661da49b094db0

commit 85ef627cb4809d2a7674c9f71f661da49b094db0
Author:     Alastair Hogge <agh@riseup.net>
AuthorDate: 2023-12-06 01:13:46 +0000
Commit:     Jason E. Hale <jhale@FreeBSD.org>
CommitDate: 2023-12-11 05:32:34 +0000

    emulators/qmc2: Sync with upstream; switch to QWebengine
    
    - Sync with upstream
    - Switch browser from QWebKit to QWebengine and remove DEPRECATED/
      EXPIRATION_DATE
    - Pet port(clippy|lint)(1)
    - Simplify COMMENT
    - Move to external dependencies archivers/libarchive and
      archivers/minizip-ng
    - Drop desktop-file-utils from USES -- the port does not register
      any MIME Types
    - Move some post-patch target work to static patching
    - Remove hard-coded binary and manpage names in do-install target
    - Add patches to better integrate with system-wide configuration
    - Bump minimum runtime requirement on MAME to 0.259
    
    In memoriam of René Reucher, author of qmc and respected MAME community
    member: May his labour in bringing nostalgia and making perhaps the best
    era of arcade entertainment accessible to the masses be forever inscribed
    upon this digital stele.
    
    On behalf of the FreeBSD Project, we greatly appreciate his contributions
    to the FOSS community and offer our belated condolences to his family
    and friends.
    
    PR:             275324
---
 emulators/qmc2/Makefile                            |  86 ++---
 emulators/qmc2/distinfo                            |   6 +-
 emulators/qmc2/files/patch-Makefile                |  11 +
 .../qmc2/files/patch-inst_qchdman.desktop.template |  10 +
 .../files/patch-inst_qmc2-arcade.desktop.template  |  10 +
 .../qmc2/files/patch-inst_qmc2.desktop.template    |  10 +
 emulators/qmc2/files/patch-inst_qmc2.ini.template  |  61 ++++
 emulators/qmc2/files/patch-qmc2.pro                |  21 ++
 .../qmc2/files/patch-src_arcade_qmc2-arcade.pro    |  11 +
 emulators/qmc2/files/patch-src_macros.h            |  18 +
 emulators/qmc2/files/patch-src_qmc2main.cpp        |  15 +
 emulators/qmc2/pkg-plist                           | 391 ++++++++++++++++++++-
 12 files changed, 591 insertions(+), 59 deletions(-)

diff --git a/emulators/qmc2/Makefile b/emulators/qmc2/Makefile
index de84aeec2280..96449d8029d1 100644
--- a/emulators/qmc2/Makefile
+++ b/emulators/qmc2/Makefile
@@ -1,44 +1,38 @@
 PORTNAME=	qmc2
-PORTVERSION=	0.243
 DISTVERSIONPREFIX=	v
-PORTREVISION=	4
+DISTVERSION=	0.243-14
+DISTVERSIONSUFFIX=	-g112724d69
 CATEGORIES=	emulators games
 
 MAINTAINER=	agh@riseup.net
-COMMENT=	Qt based UNIX MAME frontend
+COMMENT=	Qt5 graphical interface for MAME
 WWW=		https://github.com/qmc2/qmc2-mame-fe
 
 LICENSE=	GPLv2+
 
-DEPRECATED=	Depends on deprecated www/qt5-webkit
-EXPIRATION_DATE=	2023-12-31
-
 BUILD_DEPENDS=	bash>0:shells/bash \
 		gawk>0:lang/gawk
+LIB_DEPENDS=	libminizip-ng.so:archivers/minizip-ng
 RUN_DEPENDS=	libglvnd>0:graphics/libglvnd \
-		mame>=0.250:emulators/mame
+		mame>=0.259:emulators/mame
 
-USES=		compiler:c++11-lang desktop-file-utils gmake gl qt:5 sdl \
+USES=		compiler:c++11-lang libarchive gl gmake pkgconfig qt:5 sdl \
 		shebangfix tar:bzip2 xorg
 USE_GITHUB=	yes
 GH_ACCOUNT=	qmc2
 GH_PROJECT=	qmc2-mame-fe
 USE_GL=		gl glu
-USE_QT=		buildtools core declarative gui multimedia network opengl qmake \
-		script scripttools sql svg testlib webkit widgets xml \
-		xmlpatterns
+USE_QT=		buildtools core declarative gui location multimedia network \
+		opengl printsupport qmake script scripttools sql svg testlib \
+		webchannel webengine widgets xml xmlpatterns
 USE_SDL=	sdl2
 USE_XORG=	x11 xmu
 
 SHEBANG_FILES=	scripts/cleanup-category-ini.sh \
-		scripts/generate-option-lists.sh \
-		scripts/make-man-pages.sh \
-		scripts/plugin_helper.sh \
-		scripts/romalyzer.pl \
-		scripts/sdl-defines.sh \
-		scripts/sdl-includepath.sh \
-		scripts/sdl-libs.sh \
-		scripts/sdl-version.sh \
+		scripts/generate-option-lists.sh scripts/make-man-pages.sh \
+		scripts/plugin_helper.sh scripts/romalyzer.pl \
+		scripts/sdl-defines.sh scripts/sdl-includepath.sh \
+		scripts/sdl-libs.sh scripts/sdl-version.sh \
 		scripts/strip-png-headers.sh
 
 MAKE_ARGS=	ARCH="${OPSYS}" \
@@ -47,12 +41,13 @@ MAKE_ARGS=	ARCH="${OPSYS}" \
 		CXX="${CXX}" \
 		CXX_FLAGS="${CXXFLAGS} -DUSE_FILE32API" \
 		DATADIR="${DATADIR}" \
-		LINK="${CXX}" \
+		LIBARCHIVE=1 \
 		MAKE="${MAKE_CMD}" \
-		PHONON="0" \
 		QMAKE="${QMAKE}" \
 		QTDIR="${PREFIX}" \
-		SYSCONFDIR="${PREFIX}/etc"
+		SYSCONFDIR="${ETCDIR}" \
+		SYSTEM_MINIZIP=1 \
+		SYSTEM_ZLIB=1
 
 ALL_TARGET=	all arcade tools
 CFLAGS_aarch64=	-march=armv8-a+crc+crypto
@@ -70,47 +65,34 @@ EXTRA_PATCHES=	${PATCHDIR}/extra-scripts-sdl-includepaths
 .endif
 
 post-patch:
-	@${REINPLACE_CMD} -e 's|DATADIR/qmc2|${DATADIR}|g' \
+	${REINPLACE_CMD} -e 's|%%DATADIR%%|${DATADIR}/|g' \
+		-e 's|%%DOCSDIR%%|${DOCSDIR}/|g' \
 		${WRKSRC}/inst/*.template
 
 do-install:
-	(cd ${WRKSRC} && \
-		${INSTALL_PROGRAM} qmc2-sdlmame \
-		${STAGEDIR}${PREFIX}/bin/qmc2-mame)
-	(cd ${WRKSRC}/src/arcade && \
-		${INSTALL_PROGRAM} qmc2-arcade \
-		${STAGEDIR}${PREFIX}/bin)
-	(cd ${WRKSRC}/src/tools/qchdman && \
-		${INSTALL_PROGRAM} qchdman \
-		${STAGEDIR}${PREFIX}/bin)
-
+	${FIND} ${WRKSRC} -type f -name "q*" -perm -o=+x -exec ${INSTALL_PROGRAM} \
+		{} ${STAGEDIR}${PREFIX}/bin/ \;
+	${RLN} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}-sdlmame ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
 	@${MKDIR} ${STAGEDIR}${DATADIR}
-.for data in img lng opt
+.for DATA in cat gmn img js lng opt swn
 	(cd ${WRKSRC}/data && \
-		${COPYTREE_SHARE} ${data} ${STAGEDIR}${DATADIR})
+		${COPYTREE_SHARE} ${DATA} ${STAGEDIR}${DATADIR} "! -name dirinfo.txt")
 .endfor
-
-	${INSTALL_MAN} ${WRKSRC}/data/doc/man/qchdman.6.gz \
-		${STAGEDIR}${MANPREFIX}/man/man6
-	${INSTALL_MAN} ${WRKSRC}/data/doc/man/qmc2-arcade.6.gz \
-		${STAGEDIR}${MANPREFIX}/man/man6
-	${INSTALL_MAN} ${WRKSRC}/data/doc/man/qmc2-main-gui.6.gz \
-		${STAGEDIR}${MANPREFIX}/man/man6/qmc2-mame.6.gz
-
-.for dsktop_entry in qchdman.desktop qmc2-arcade.desktop qmc2.desktop
-	(cd ${WRKSRC}/inst && \
-		${INSTALL_DATA} ${dsktop_entry}.template \
-		${STAGEDIR}${LOCALBASE}/share/applications/${dsktop_entry})
+	${INSTALL_MAN} ${WRKSRC}/data/doc/man/*.6.gz \
+		${STAGEDIR}${PREFIX}/share/man/man6
+	${RLN} ${STAGEDIR}${PREFIX}/share/man/man6/${PORTNAME}-main-gui.6.gz \
+		${STAGEDIR}${PREFIX}/share/man/man6/${PORTNAME}.6.gz
+.for DESKTOP_ENTRY in qchdman.desktop qmc2-arcade.desktop qmc2.desktop
+	${INSTALL_DATA} ${WRKSRC}/inst/${DESKTOP_ENTRY}.template \
+		${STAGEDIR}${PREFIX}/share/applications/${DESKTOP_ENTRY}
 .endfor
-
 	@${MKDIR} ${STAGEDIR}${ETCDIR}
-	(cd ${WRKSRC}/inst && \
-		${INSTALL_DATA} qmc2.ini.template \
-		${STAGEDIR}${ETCDIR}/qmc2.ini.sample)
+	${INSTALL_DATA} ${WRKSRC}/inst/qmc2.ini.template \
+		${STAGEDIR}${ETCDIR}/qmc2.ini.sample
 
 do-install-DOCS-on:
 	@${MKDIR} ${STAGEDIR}${DOCSDIR}
-	@(cd ${WRKSRC}/data/doc && \
+	(cd ${WRKSRC}/data/doc && \
 		${COPYTREE_SHARE} html ${STAGEDIR}${DOCSDIR})
 
 .include <bsd.port.mk>
diff --git a/emulators/qmc2/distinfo b/emulators/qmc2/distinfo
index 2458924e6946..d5dc4ae9806b 100644
--- a/emulators/qmc2/distinfo
+++ b/emulators/qmc2/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1651496883
-SHA256 (qmc2-qmc2-mame-fe-v0.243_GH0.tar.gz) = 0608a4e08bc451ae01856b85525f1dc767e01eb823e7e294c772876971e7609b
-SIZE (qmc2-qmc2-mame-fe-v0.243_GH0.tar.gz) = 14446061
+TIMESTAMP = 1701861221
+SHA256 (qmc2-qmc2-mame-fe-v0.243-14-g112724d69_GH0.tar.gz) = cade3cb43ea6c05ea3d424f1b66b4044d5ee8e7d8b58f937d7f25bb1a9f51b18
+SIZE (qmc2-qmc2-mame-fe-v0.243-14-g112724d69_GH0.tar.gz) = 14764986
diff --git a/emulators/qmc2/files/patch-Makefile b/emulators/qmc2/files/patch-Makefile
new file mode 100644
index 000000000000..91fc260379a4
--- /dev/null
+++ b/emulators/qmc2/files/patch-Makefile
@@ -0,0 +1,11 @@
+--- Makefile.orig	2023-11-25 00:37:51 UTC
++++ Makefile
+@@ -582,7 +582,7 @@ ifneq '$(ARCH)' 'Windows' 
+ 
+ ifneq '$(ARCH)' 'Windows' 
+ # global QMC2 configuration file
+-GLOBAL_QMC2_INI=$(shell $(ECHO) $(DESTDIR)/$(SYSCONFDIR)/$(PROJECT)/$(PROJECT).ini | $(SED) -e "s*//*/*g")
++GLOBAL_QMC2_INI=$(shell $(ECHO) $(DESTDIR)/$(SYSCONFDIR)/$(PROJECT).ini | $(SED) -e "s*//*/*g")
+ # global data directory
+ GLOBAL_DATADIR=$(shell $(ECHO) $(DESTDIR)/$(DATADIR) | $(SED) -e "s*//*/*g")
+ endif
diff --git a/emulators/qmc2/files/patch-inst_qchdman.desktop.template b/emulators/qmc2/files/patch-inst_qchdman.desktop.template
new file mode 100644
index 000000000000..05ab66edafd3
--- /dev/null
+++ b/emulators/qmc2/files/patch-inst_qchdman.desktop.template
@@ -0,0 +1,10 @@
+--- inst/qchdman.desktop.template.orig	2023-11-25 02:40:40 UTC
++++ inst/qchdman.desktop.template
+@@ -5,6 +5,6 @@ Exec=qchdman
+ Comment=Qt CHDMAN GUI
+ Comment[de]=Qt CHDMAN GUI
+ Exec=qchdman
+-Icon=DATADIR/qmc2/img/qchdman.png
++Icon=%%DATADIR%%/qmc2/img/qchdman.png
+ Terminal=false
+ Categories=Game;Emulator;
diff --git a/emulators/qmc2/files/patch-inst_qmc2-arcade.desktop.template b/emulators/qmc2/files/patch-inst_qmc2-arcade.desktop.template
new file mode 100644
index 000000000000..7873f8093629
--- /dev/null
+++ b/emulators/qmc2/files/patch-inst_qmc2-arcade.desktop.template
@@ -0,0 +1,10 @@
+--- inst/qmc2-arcade.desktop.template.orig	2023-11-25 02:40:48 UTC
++++ inst/qmc2-arcade.desktop.template
+@@ -5,6 +5,6 @@ Exec=qmc2-arcade
+ Comment=QMC2 Arcade Mode
+ Comment[de]=QMC2 Arcade Modus
+ Exec=qmc2-arcade
+-Icon=DATADIR/qmc2/img/qmc2-arcade.png
++Icon=%%DATADIR%%/qmc2/img/qmc2-arcade.png
+ Terminal=false
+ Categories=Game;Emulator;
diff --git a/emulators/qmc2/files/patch-inst_qmc2.desktop.template b/emulators/qmc2/files/patch-inst_qmc2.desktop.template
new file mode 100644
index 000000000000..dd51eced9c1f
--- /dev/null
+++ b/emulators/qmc2/files/patch-inst_qmc2.desktop.template
@@ -0,0 +1,10 @@
+--- inst/qmc2.desktop.template.orig	2023-11-25 02:41:19 UTC
++++ inst/qmc2.desktop.template
+@@ -6,6 +6,6 @@ Exec=TARGET
+ Comment[pl]=Nakładka na EMULATOR
+ Comment[de]=EMULATOR Frontend
+ Exec=TARGET
+-Icon=DATADIR/qmc2/img/EMUICO
++Icon=%%DATADIR%%/qmc2/img/EMUICO
+ Terminal=false
+ Categories=Game;Emulator;
diff --git a/emulators/qmc2/files/patch-inst_qmc2.ini.template b/emulators/qmc2/files/patch-inst_qmc2.ini.template
new file mode 100644
index 000000000000..8496315ec78e
--- /dev/null
+++ b/emulators/qmc2/files/patch-inst_qmc2.ini.template
@@ -0,0 +1,61 @@
+--- inst/qmc2.ini.template.orig	2023-11-25 02:41:33 UTC
++++ inst/qmc2.ini.template
+@@ -1,30 +1,31 @@
+ [Frontend]
+-FilesAndDirectories\DataDirectory=DATADIR/qmc2/
++FilesAndDirectories\DataDirectory=%%DATADIR%%
++FilesAndDirectories\DocumentationDirectory=%%DOCSDIR%%
+ 
+ [MAME]
+-FilesAndDirectories\OptionsTemplateFile=DATADIR/qmc2/opt/SDLMAME/template-SDL2.xml
+-FilesAndDirectories\PreviewDirectory=DATADIR/qmc2/prv/
+-FilesAndDirectories\PreviewFile=DATADIR/qmc2/prv/previews.zip
+-FilesAndDirectories\FlyerDirectory=DATADIR/qmc2/fly/
+-FilesAndDirectories\FlyerFile=DATADIR/qmc2/fly/flyers.zip
+-FilesAndDirectories\IconDirectory=DATADIR/qmc2/ico/
+-FilesAndDirectories\IconFile=DATADIR/qmc2/ico/icons.zip
+-FilesAndDirectories\CabinetDirectory=DATADIR/qmc2/cab/
+-FilesAndDirectories\CabinetFile=DATADIR/qmc2/cab/cabinets.zip
+-FilesAndDirectories\ControllerDirectory=DATADIR/qmc2/ctl/
+-FilesAndDirectories\ControllerFile=DATADIR/qmc2/ctl/controllers.zip
+-FilesAndDirectories\MarqueeDirectory=DATADIR/qmc2/mrq/
+-FilesAndDirectories\MarqueeFile=DATADIR/qmc2/mrq/marquees.zip
+-FilesAndDirectories\TitleDirectory=DATADIR/qmc2/ttl/
+-FilesAndDirectories\TitleFile=DATADIR/qmc2/ttl/titles.zip
+-FilesAndDirectories\PCBDirectory=DATADIR/qmc2/pcb/
+-FilesAndDirectories\PCBFile=DATADIR/qmc2/pcb/pcbs.zip
+-FilesAndDirectories\SoftwareSnapDirectory=DATADIR/qmc2/sws/
+-FilesAndDirectories\SoftwareSnapFile=DATADIR/qmc2/sws/swsnaps.zip
+-FilesAndDirectories\SoftwareNotesFolder=DATADIR/qmc2/swn/
+-FilesAndDirectories\SoftwareNotesTemplate=DATADIR/qmc2/swn/template.html
+-FilesAndDirectories\SystemNotesFolder=DATADIR/qmc2/gmn/
+-FilesAndDirectories\SystemNotesTemplate=DATADIR/qmc2/gmn/template.html
+-FilesAndDirectories\VideoSnapFolder=DATADIR/qmc2/vdo/
+-FilesAndDirectories\SystemManualFolder=DATADIR/qmc2/man/systems/
+-FilesAndDirectories\SoftwareManualFolder=DATADIR/qmc2/man/software/
++FilesAndDirectories\OptionsTemplateFile=%%DATADIR%%opt/SDLMAME/template-SDL2.xml
++FilesAndDirectories\PreviewDirectory=%%DATADIR%%prv/
++FilesAndDirectories\PreviewFile=%%DATADIR%%prv/previews.zip
++FilesAndDirectories\FlyerDirectory=%%DATADIR%%fly/
++FilesAndDirectories\FlyerFile=%%DATADIR%%fly/flyers.zip
++FilesAndDirectories\IconDirectory=%%DATADIR%%ico/
++FilesAndDirectories\IconFile=%%DATADIR%%ico/icons.zip
++FilesAndDirectories\CabinetDirectory=%%DATADIR%%cab/
++FilesAndDirectories\CabinetFile=%%DATADIR%%cab/cabinets.zip
++FilesAndDirectories\ControllerDirectory=%%DATADIR%%ctl/
++FilesAndDirectories\ControllerFile=%%DATADIR%%ctl/controllers.zip
++FilesAndDirectories\MarqueeDirectory=%%DATADIR%%mrq/
++FilesAndDirectories\MarqueeFile=%%DATADIR%%mrq/marquees.zip
++FilesAndDirectories\TitleDirectory=%%DATADIR%%ttl/
++FilesAndDirectories\TitleFile=%%DATADIR%%ttl/titles.zip
++FilesAndDirectories\PCBDirectory=%%DATADIR%%pcb/
++FilesAndDirectories\PCBFile=%%DATADIR%%pcb/pcbs.zip
++FilesAndDirectories\SoftwareSnapDirectory=%%DATADIR%%sws/
++FilesAndDirectories\SoftwareSnapFile=%%DATADIR%%sws/swsnaps.zip
++FilesAndDirectories\SoftwareNotesFolder=%%DATADIR%%swn/
++FilesAndDirectories\SoftwareNotesTemplate=%%DATADIR%%swn/template.html
++FilesAndDirectories\SystemNotesFolder=%%DATADIR%%gmn/
++FilesAndDirectories\SystemNotesTemplate=%%DATADIR%%gmn/template.html
++FilesAndDirectories\VideoSnapFolder=%%DATADIR%%vdo/
++FilesAndDirectories\SystemManualFolder=%%DATADIR%%man/systems/
++FilesAndDirectories\SoftwareManualFolder=%%DATADIR%%man/software/
diff --git a/emulators/qmc2/files/patch-qmc2.pro b/emulators/qmc2/files/patch-qmc2.pro
new file mode 100644
index 000000000000..5054bb37595f
--- /dev/null
+++ b/emulators/qmc2/files/patch-qmc2.pro
@@ -0,0 +1,21 @@
+--- qmc2.pro.orig	2022-06-09 13:48:10 UTC
++++ qmc2.pro
+@@ -308,7 +308,8 @@ contains(DEFINES, QMC2_LIBARCHIVE_ENABLED) {
+ contains(DEFINES, QMC2_LIBARCHIVE_ENABLED) {
+ 	SOURCES += src/archivefile.cpp
+ 	HEADERS += src/archivefile.h
+-	LIBS += -larchive
++	CONFIG += link_pkgconfig
++	PKGCONFIG += libarchive
+ }
+ 
+ contains(DEFINES, QMC2_BUNDLED_MINIZIP) {
+@@ -330,7 +331,7 @@ contains(DEFINES, QMC2_BUNDLED_MINIZIP) {
+ 	DEFINES += HAVE_ZLIB ZLIB_COMPAT
+ } else {
+ 	CONFIG += link_pkgconfig
+-	PKGCONFIG += minizip
++	PKGCONFIG += minizip-ng
+ }
+ 
+ contains(DEFINES, QMC2_BUNDLED_ZLIB) {
diff --git a/emulators/qmc2/files/patch-src_arcade_qmc2-arcade.pro b/emulators/qmc2/files/patch-src_arcade_qmc2-arcade.pro
new file mode 100644
index 000000000000..c1e20deb0681
--- /dev/null
+++ b/emulators/qmc2/files/patch-src_arcade_qmc2-arcade.pro
@@ -0,0 +1,11 @@
+--- src/arcade/qmc2-arcade.pro.orig	2023-11-25 00:48:16 UTC
++++ src/arcade/qmc2-arcade.pro
+@@ -110,7 +110,7 @@ contains(DEFINES, QMC2_ARCADE_BUNDLED_MINIZIP) {
+ 	DEFINES += HAVE_ZLIB ZLIB_COMPAT
+ } else {
+ 	CONFIG += link_pkgconfig
+-	PKGCONFIG += minizip
++	PKGCONFIG += minizip-ng
+ }
+ 
+ contains(DEFINES, QMC2_ARCADE_BUNDLED_ZLIB) {
diff --git a/emulators/qmc2/files/patch-src_macros.h b/emulators/qmc2/files/patch-src_macros.h
new file mode 100644
index 000000000000..7695ea8eba61
--- /dev/null
+++ b/emulators/qmc2/files/patch-src_macros.h
@@ -0,0 +1,18 @@
+--- src/macros.h.orig	2023-11-25 04:55:52 UTC
++++ src/macros.h
+@@ -628,13 +628,13 @@
+ #define QMC2_VIEWS_PREFIX			QString("Views/")
+ 
+ // Mac OS X uses "~/Library/Application Support/app" rather than "~/.app"
+-#define QMC2_SYSCONF_PATH			(QString(XSTR(SYSCONFDIR)).replace(QChar(':'), QLatin1String(" ")) + "/qmc2")
++#define QMC2_SYSCONF_PATH			(QString(XSTR(SYSCONFDIR)).replace(QChar(':'), QLatin1String(" ")))
+ #if defined(QMC2_OS_MAC)
+ #define QMC2_DOT_PATH				(QDir::homePath() + "/Library/Application Support/qmc2")
+ #define QMC2_DEFAULT_DATA_PATH			(QDir::homePath() + "/Library/Application Support/qmc2")
+ #else
+ #define QMC2_DOT_PATH				(QDir::homePath() + "/.qmc2")
+-#define QMC2_DEFAULT_DATA_PATH			QString("data")
++#define QMC2_DEFAULT_DATA_PATH			QString(XSTR(DATADIR))
+ #endif
+ 
+ // this allows for changing the configuration path dynamically by adding '-config_path <config_path>' on the command line
diff --git a/emulators/qmc2/files/patch-src_qmc2main.cpp b/emulators/qmc2/files/patch-src_qmc2main.cpp
new file mode 100644
index 000000000000..7d1ba7bad291
--- /dev/null
+++ b/emulators/qmc2/files/patch-src_qmc2main.cpp
@@ -0,0 +1,15 @@
+--- src/qmc2main.cpp.orig	2023-11-25 02:50:17 UTC
++++ src/qmc2main.cpp
+@@ -2837,10 +2837,10 @@ void MainWindow::on_actionDocumentation_triggered(bool
+ 	if ( !qmc2DocBrowser ) {
+ 		qmc2DocBrowser = new DocBrowser(this);
+ 		qmc2DocBrowser->browser->spinBoxZoom->setValue(qmc2Config->value(QMC2_FRONTEND_PREFIX + "Layout/DocBrowser/Zoom", 100).toInt());
+-		QString searchPath(qmc2Config->value(QMC2_FRONTEND_PREFIX + "FilesAndDirectories/DataDirectory").toString() + "doc/html/" + qmc2Config->value(QMC2_FRONTEND_PREFIX + "GUI/Language", "us").toString());
++		QString searchPath(qmc2Config->value(QMC2_FRONTEND_PREFIX + "FilesAndDirectories/DocumentationDirectory").toString() + "html/" + qmc2Config->value(QMC2_FRONTEND_PREFIX + "GUI/Language", "us").toString());
+ 		QFileInfo fi(searchPath + "/index.html");
+ 		if ( !fi.exists() || !fi.isFile() || fi.isSymLink() ) // fall back to US English if there's no language-specific index file
+-			searchPath = qmc2Config->value(QMC2_FRONTEND_PREFIX + "FilesAndDirectories/DataDirectory").toString() + "doc/html/us";
++			searchPath = qmc2Config->value(QMC2_FRONTEND_PREFIX + "FilesAndDirectories/DocumentationDirectory").toString() + "html/us";
+ #if defined(QMC2_OS_WIN)
+ 		QDir searchDir(searchPath);
+ 		QUrl docUrl("file:///" + searchDir.absolutePath() + "/index.html");
diff --git a/emulators/qmc2/pkg-plist b/emulators/qmc2/pkg-plist
index ceb6806ec7e2..e55f0060057b 100644
--- a/emulators/qmc2/pkg-plist
+++ b/emulators/qmc2/pkg-plist
@@ -1,12 +1,23 @@
 bin/qchdman
+bin/qmc2
 bin/qmc2-arcade
-bin/qmc2-mame
-man/man6/qchdman.6.gz
-man/man6/qmc2-arcade.6.gz
-man/man6/qmc2-mame.6.gz
+bin/qmc2-sdlmame
 share/applications/qchdman.desktop
 share/applications/qmc2-arcade.desktop
 share/applications/qmc2.desktop
+share/man/man6/qchdman.6.gz
+share/man/man6/qmc2-arcade.6.gz
+share/man/man6/qmc2-main-gui.6.gz
+share/man/man6/qmc2-sdlmame.6.gz
+share/man/man6/qmc2.6.gz
+%%DATADIR%%/cat/category.ini
+%%DATADIR%%/gmn/Concise.html
+%%DATADIR%%/gmn/Concise.txt
+%%DATADIR%%/gmn/Shideravan System Template.html
+%%DATADIR%%/gmn/Zarth's Visual Template.html
+%%DATADIR%%/gmn/images/color.png
+%%DATADIR%%/gmn/images/image.png
+%%DATADIR%%/gmn/template.html
 %%DATADIR%%/img/1.png
 %%DATADIR%%/img/2.png
 %%DATADIR%%/img/3.png
@@ -1885,6 +1896,374 @@ share/applications/qmc2.desktop
 %%DATADIR%%/img/zoom-in.png
 %%DATADIR%%/img/zoom-none.png
 %%DATADIR%%/img/zoom-out.png
+%%DATADIR%%/js/pdfjs/LICENSE
+%%DATADIR%%/js/pdfjs/README.pdfjs
+%%DATADIR%%/js/pdfjs/build/pdf.js
+%%DATADIR%%/js/pdfjs/build/pdf.worker.js
+%%DATADIR%%/js/pdfjs/web/cmaps/78-EUC-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/78-EUC-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/78-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/78-RKSJ-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/78-RKSJ-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/78-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Add-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Add-RKSJ-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Add-RKSJ-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Add-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-GB1-0.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-GB1-1.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-GB1-2.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-GB1-3.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-GB1-4.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-GB1-5.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/B5-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/B5-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/B5pc-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/B5pc-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/CNS-EUC-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/CNS-EUC-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/CNS1-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/CNS1-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/CNS2-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/CNS2-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/ETHK-B5-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/ETHK-B5-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/ETen-B5-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/ETen-B5-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/ETenms-B5-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/ETenms-B5-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/EUC-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/EUC-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Ext-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Ext-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GB-EUC-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GB-EUC-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GB-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GB-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GBK-EUC-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GBK-EUC-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GBK2K-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GBK2K-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GBKp-EUC-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GBKp-EUC-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GBT-EUC-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GBT-EUC-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GBT-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GBT-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GBpc-EUC-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/GBpc-EUC-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/HKdla-B5-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/HKdla-B5-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/HKdlb-B5-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/HKdlb-B5-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/HKgccs-B5-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/HKgccs-B5-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/HKm314-B5-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/HKm314-B5-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/HKm471-B5-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/HKm471-B5-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/HKscs-B5-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/HKscs-B5-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Hankaku.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Hiragana.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/KSC-EUC-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/KSC-EUC-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/KSC-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/KSC-Johab-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/KSC-Johab-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/KSC-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/KSCms-UHC-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/KSCms-UHC-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Katakana.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/LICENSE
+%%DATADIR%%/js/pdfjs/web/cmaps/NWP-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/NWP-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/RKSJ-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/RKSJ-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/Roman.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/V.bcmap
+%%DATADIR%%/js/pdfjs/web/cmaps/WP-Symbol.bcmap
+%%DATADIR%%/js/pdfjs/web/compatibility.js
+%%DATADIR%%/js/pdfjs/web/debugger.js
+%%DATADIR%%/js/pdfjs/web/images/annotation-check.svg
+%%DATADIR%%/js/pdfjs/web/images/annotation-comment.svg
+%%DATADIR%%/js/pdfjs/web/images/annotation-help.svg
+%%DATADIR%%/js/pdfjs/web/images/annotation-insert.svg
+%%DATADIR%%/js/pdfjs/web/images/annotation-key.svg
+%%DATADIR%%/js/pdfjs/web/images/annotation-newparagraph.svg
+%%DATADIR%%/js/pdfjs/web/images/annotation-noicon.svg
+%%DATADIR%%/js/pdfjs/web/images/annotation-note.svg
+%%DATADIR%%/js/pdfjs/web/images/annotation-paragraph.svg
+%%DATADIR%%/js/pdfjs/web/images/findbarButton-next-rtl.png
+%%DATADIR%%/js/pdfjs/web/images/findbarButton-next-rtl@2x.png
+%%DATADIR%%/js/pdfjs/web/images/findbarButton-next.png
+%%DATADIR%%/js/pdfjs/web/images/findbarButton-next@2x.png
+%%DATADIR%%/js/pdfjs/web/images/findbarButton-previous-rtl.png
+%%DATADIR%%/js/pdfjs/web/images/findbarButton-previous-rtl@2x.png
+%%DATADIR%%/js/pdfjs/web/images/findbarButton-previous.png
+%%DATADIR%%/js/pdfjs/web/images/findbarButton-previous@2x.png
+%%DATADIR%%/js/pdfjs/web/images/grab.cur
+%%DATADIR%%/js/pdfjs/web/images/grabbing.cur
+%%DATADIR%%/js/pdfjs/web/images/loading-icon.gif
+%%DATADIR%%/js/pdfjs/web/images/loading-small.png
+%%DATADIR%%/js/pdfjs/web/images/loading-small@2x.png
+%%DATADIR%%/js/pdfjs/web/images/secondaryToolbarButton-documentProperties.png
+%%DATADIR%%/js/pdfjs/web/images/secondaryToolbarButton-documentProperties@2x.png
+%%DATADIR%%/js/pdfjs/web/images/secondaryToolbarButton-firstPage.png
+%%DATADIR%%/js/pdfjs/web/images/secondaryToolbarButton-firstPage@2x.png
+%%DATADIR%%/js/pdfjs/web/images/secondaryToolbarButton-handTool.png
+%%DATADIR%%/js/pdfjs/web/images/secondaryToolbarButton-handTool@2x.png
+%%DATADIR%%/js/pdfjs/web/images/secondaryToolbarButton-lastPage.png
+%%DATADIR%%/js/pdfjs/web/images/secondaryToolbarButton-lastPage@2x.png
+%%DATADIR%%/js/pdfjs/web/images/secondaryToolbarButton-rotateCcw.png
+%%DATADIR%%/js/pdfjs/web/images/secondaryToolbarButton-rotateCcw@2x.png
+%%DATADIR%%/js/pdfjs/web/images/secondaryToolbarButton-rotateCw.png
+%%DATADIR%%/js/pdfjs/web/images/secondaryToolbarButton-rotateCw@2x.png
+%%DATADIR%%/js/pdfjs/web/images/shadow.png
+%%DATADIR%%/js/pdfjs/web/images/texture.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-bookmark.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-bookmark@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-download.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-download@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-menuArrows.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-menuArrows@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-openFile.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-openFile@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-pageDown-rtl.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-pageDown-rtl@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-pageDown.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-pageDown@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-pageUp-rtl.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-pageUp-rtl@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-pageUp.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-pageUp@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-presentationMode.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-presentationMode@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-print.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-print@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-search.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-search@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-rtl.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-secondaryToolbarToggle@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-sidebarToggle-rtl.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-sidebarToggle-rtl@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-sidebarToggle.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-sidebarToggle@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-viewAttachments.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-viewAttachments@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-viewOutline-rtl.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-viewOutline-rtl@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-viewOutline.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-viewOutline@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-viewThumbnail.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-viewThumbnail@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-zoomIn.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-zoomIn@2x.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-zoomOut.png
+%%DATADIR%%/js/pdfjs/web/images/toolbarButton-zoomOut@2x.png
+%%DATADIR%%/js/pdfjs/web/images/treeitem-collapsed-rtl.png
+%%DATADIR%%/js/pdfjs/web/images/treeitem-collapsed-rtl@2x.png
+%%DATADIR%%/js/pdfjs/web/images/treeitem-collapsed.png
+%%DATADIR%%/js/pdfjs/web/images/treeitem-collapsed@2x.png
+%%DATADIR%%/js/pdfjs/web/images/treeitem-expanded.png
+%%DATADIR%%/js/pdfjs/web/images/treeitem-expanded@2x.png
+%%DATADIR%%/js/pdfjs/web/l10n.js
+%%DATADIR%%/js/pdfjs/web/locale/ach/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/af/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ak/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/an/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ar/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/as/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ast/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/az/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/be/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/bg/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/bn-BD/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/bn-IN/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/br/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/bs/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ca/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/cs/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/csb/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/cy/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/da/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/de/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/el/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/en-GB/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/en-US/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/en-ZA/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/eo/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/es-AR/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/es-CL/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/es-ES/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/es-MX/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/et/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/eu/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/fa/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ff/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/fi/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/fr/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/fy-NL/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ga-IE/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/gd/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/gl/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/gu-IN/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/he/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/hi-IN/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/hr/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/hu/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/hy-AM/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/id/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/is/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/it/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ja/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ka/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/kk/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/km/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/kn/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ko/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ku/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/lg/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/lij/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/locale.properties
+%%DATADIR%%/js/pdfjs/web/locale/lt/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/lv/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/mai/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/mk/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ml/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/mn/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/mr/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ms/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/my/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/nb-NO/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/nl/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/nn-NO/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/nso/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/oc/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/or/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/pa-IN/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/pl/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/pt-BR/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/pt-PT/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/rm/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ro/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ru/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/rw/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/sah/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/si/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/sk/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/sl/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/son/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/sq/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/sr/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/sv-SE/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/sw/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ta-LK/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ta/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/te/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/th/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/tl/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/tn/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/tr/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/uk/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/ur/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/vi/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/wo/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/xh/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/zh-CN/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/zh-TW/viewer.properties
+%%DATADIR%%/js/pdfjs/web/locale/zu/viewer.properties
+%%DATADIR%%/js/pdfjs/web/viewer.css
+%%DATADIR%%/js/pdfjs/web/viewer.html
+%%DATADIR%%/js/pdfjs/web/viewer.js
 %%DATADIR%%/lng/qmc2_de.qm
 %%DATADIR%%/lng/qmc2_de.ts
 %%DATADIR%%/lng/qmc2_el.qm
@@ -1899,6 +2278,8 @@ share/applications/qmc2.desktop
 %%DATADIR%%/lng/qmc2_pl.ts
 %%DATADIR%%/lng/qmc2_pt.qm
 %%DATADIR%%/lng/qmc2_pt.ts
+%%DATADIR%%/lng/qmc2_pt_BR.qm
+%%DATADIR%%/lng/qmc2_pt_BR.ts
 %%DATADIR%%/lng/qmc2_ro.qm
 %%DATADIR%%/lng/qmc2_ro.ts
 %%DATADIR%%/lng/qmc2_sv.qm
@@ -1907,4 +2288,6 @@ share/applications/qmc2.desktop
 %%DATADIR%%/lng/qmc2_us.ts
 %%DATADIR%%/opt/MAME/template.xml
 %%DATADIR%%/opt/SDLMAME/template-SDL2.xml
+%%DATADIR%%/swn/Shideravan Software Template.html
+%%DATADIR%%/swn/template.html
 @sample %%ETCDIR%%/qmc2.ini.sample