ports/devel/cmake/patches/patch-Source_cmQtAutoGenInitializer_cxx

26 lines
1.1 KiB
Text

CMake >= 3.27 exports the CXX std to moc. This is a workaround for
a moc parsing bug that happens parsing headers from libc++ < 14 when
the CXX std > 17.
usr/include/c++/v1/concept:318:1: error: Parse error at "::"
Moc should theoretically be able to parse this. [1] Not exactly sure
why it's failing. Upstream bug report [2]
[1] https://code.qt.io/cgit/qt/qtbase.git/tree/src/tools/moc/moc.cpp?h=6.6.0#n631
[2] https://bugreports.qt.io/browse/QTBUG-117765
Index: Source/cmQtAutoGenInitializer.cxx
--- Source/cmQtAutoGenInitializer.cxx.orig
+++ Source/cmQtAutoGenInitializer.cxx
@@ -1809,6 +1809,10 @@ bool cmQtAutoGenInitializer::SetupWriteAutogenInfo()
if (this->Moc.PredefsCmd.size() >= 3) {
this->Moc.PredefsCmd.insert(this->Moc.PredefsCmd.begin() + 1,
CompileOptionValue);
+#if (defined(__FreeBSD__) && __FreeBSD_version < 1302000) || defined(__OpenBSD__)
+ this->Moc.PredefsCmd.insert(this->Moc.PredefsCmd.begin() + 1,
+ "-D_LIBCPP_HAS_NO_CONCEPTS");
+#endif
}
}
info.SetArray("MOC_PREDEFS_CMD", this->Moc.PredefsCmd);