svn commit: r537158 - in head/emulators/qmc2: . files
Adriaan de Groot
adridg at FreeBSD.org
Sun May 31 12:42:20 UTC 2020
Author: adridg
Date: Sun May 31 12:42:19 2020
New Revision: 537158
URL: https://svnweb.freebsd.org/changeset/ports/537158
Log:
emulators/qmc2: Prep-work for Qt 5.15; compatible with Qt 5.14
In Qt 5.15 an enumeration is introduced which has enumerators
True and False, used like QCborSimpleType::False. In C++ that's
3 tokens, one name. The C Preprocessor deals with tokens, though,
and since some headers #define False 0, we end up with tokens
QCborSimpleType::0 instead, which is nonsense.
The actual defines are only relevant in C code internals, not the
API for lzma that is used from C++. So somewhat-hackishly just switch
off the #defines when in C++ mode.
The change is complicated by this *particular* source file being
in DOS CRLF mode.
Reported by: tcberner
Added:
head/emulators/qmc2/files/patch-qmc2_lzma_7zTypes.h (contents, props changed)
Modified:
head/emulators/qmc2/Makefile
Modified: head/emulators/qmc2/Makefile
==============================================================================
--- head/emulators/qmc2/Makefile Sun May 31 11:54:27 2020 (r537157)
+++ head/emulators/qmc2/Makefile Sun May 31 12:42:19 2020 (r537158)
@@ -3,7 +3,7 @@
PORTNAME= qmc2
PORTVERSION= 0.195
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= emulators
MASTER_SITES= SF
@@ -17,7 +17,7 @@ OPTIONS_DEFINE= DOCS
NO_WRKSUBDIR= yes
-USES= compiler:c++11-lang gl gmake qt:5 sdl tar:bzip2 xorg
+USES= compiler:c++11-lang dos2unix gl gmake qt:5 sdl tar:bzip2 xorg
USE_XORG= x11 xmu
USE_GL= gl glu
USE_QT= buildtools_build core declarative gui multimedia \
@@ -39,6 +39,12 @@ DESKTOP_ENTRIES="QMC2" "MAME frontend" "${DATADIR}/img
"${PORTNAME}-arcade" "Game;Emulator;Qt;" "true" \
"CHDMAN GUI" "Qt CHDMAN GUI" "${DATADIR}/img/qchdman.png" \
"qchdman" "Game;Emulator;Qt;" "true" \
+
+# This seems to be third-party, and has DOS line-endings. It also
+# needs to be patched because of a confusing build error: #define True 1
+# is a bad idea in C++ code that *also* uses True as an identifier
+# in some scopes.
+DOS2UNIX_FILES= qmc2/lzma/7zTypes.h
post-patch:
@${CP} ${FILESDIR}/Makefile ${WRKSRC}
Added: head/emulators/qmc2/files/patch-qmc2_lzma_7zTypes.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/qmc2/files/patch-qmc2_lzma_7zTypes.h Sun May 31 12:42:19 2020 (r537158)
@@ -0,0 +1,23 @@
+This avoids errors list the following, where True is a C++
+identifier used in scoped context; the #define eats it.
+
+/usr/local/include/qt5/QtCore/qcborstreamreader.h:143:76: error: expected unqualified-id
+ bool isFalse() const { return isSimpleType(QCborSimpleType::False); }
+ ^
+lzma/7zTypes.h:98:15: note: expanded from macro 'False'
+#define False 0
+
+--- qmc2/lzma/7zTypes.h.orig 2020-05-30 14:14:41 UTC
++++ qmc2/lzma/7zTypes.h
+@@ -94,8 +94,11 @@ typedef size_t SizeT;
+ #endif
+
+ typedef int Bool_7z;
++#ifndef __cplusplus
++/* Only for library internals */
+ #define True 1
+ #define False 0
++#endif
+
+
+ #ifdef _WIN32
More information about the svn-ports-head
mailing list