moc: add Q_CONSTINIT to the static const variables we emit
The macro was added to Qt 6.4, so we define it in each moc output to empty if it wasn't previously defined. Thus, moc retains compatibility with older Qt versions. Change-Id: Id0fb9ab0089845ee8843fffd16f9c1539fa0368f Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Milian Wolff <milian.wolff@kdab.com> (cherry picked from commit 116d8f987bfbb0ec1744fe6c2989f8f2a5756aba) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
1747e82267
commit
cae0206094
@ -257,7 +257,7 @@ void Generator::generateCode()
|
|||||||
" uint(sizeof(qt_meta_stringdata_%s_t::offsetsAndSizes) + ofs), len \n",
|
" uint(sizeof(qt_meta_stringdata_%s_t::offsetsAndSizes) + ofs), len \n",
|
||||||
qualifiedClassNameIdentifier.constData());
|
qualifiedClassNameIdentifier.constData());
|
||||||
|
|
||||||
fprintf(out, "static const qt_meta_stringdata_%s_t qt_meta_stringdata_%s = {\n",
|
fprintf(out, "Q_CONSTINIT static const qt_meta_stringdata_%s_t qt_meta_stringdata_%s = {\n",
|
||||||
qualifiedClassNameIdentifier.constData(), qualifiedClassNameIdentifier.constData());
|
qualifiedClassNameIdentifier.constData(), qualifiedClassNameIdentifier.constData());
|
||||||
fprintf(out, " {");
|
fprintf(out, " {");
|
||||||
{
|
{
|
||||||
@ -329,7 +329,7 @@ void Generator::generateCode()
|
|||||||
//
|
//
|
||||||
|
|
||||||
int index = MetaObjectPrivateFieldCount;
|
int index = MetaObjectPrivateFieldCount;
|
||||||
fprintf(out, "static const uint qt_meta_data_%s[] = {\n", qualifiedClassNameIdentifier.constData());
|
fprintf(out, "Q_CONSTINIT static const uint qt_meta_data_%s[] = {\n", qualifiedClassNameIdentifier.constData());
|
||||||
fprintf(out, "\n // content:\n");
|
fprintf(out, "\n // content:\n");
|
||||||
fprintf(out, " %4d, // revision\n", int(QMetaObjectPrivate::OutputRevision));
|
fprintf(out, " %4d, // revision\n", int(QMetaObjectPrivate::OutputRevision));
|
||||||
fprintf(out, " %4d, // classname\n", stridx(cdef->qualified));
|
fprintf(out, " %4d, // classname\n", stridx(cdef->qualified));
|
||||||
@ -506,7 +506,7 @@ void Generator::generateCode()
|
|||||||
//
|
//
|
||||||
|
|
||||||
if (!extraList.isEmpty()) {
|
if (!extraList.isEmpty()) {
|
||||||
fprintf(out, "static const QMetaObject::SuperData qt_meta_extradata_%s[] = {\n",
|
fprintf(out, "Q_CONSTINIT static const QMetaObject::SuperData qt_meta_extradata_%s[] = {\n",
|
||||||
qualifiedClassNameIdentifier.constData());
|
qualifiedClassNameIdentifier.constData());
|
||||||
for (int i = 0; i < extraList.count(); ++i) {
|
for (int i = 0; i < extraList.count(); ++i) {
|
||||||
fprintf(out, " QMetaObject::SuperData::link<%s::staticMetaObject>(),\n", extraList.at(i).constData());
|
fprintf(out, " QMetaObject::SuperData::link<%s::staticMetaObject>(),\n", extraList.at(i).constData());
|
||||||
@ -517,7 +517,9 @@ void Generator::generateCode()
|
|||||||
//
|
//
|
||||||
// Finally create and initialize the static meta object
|
// Finally create and initialize the static meta object
|
||||||
//
|
//
|
||||||
fprintf(out, "const QMetaObject %s::staticMetaObject = { {\n", cdef->qualified.constData());
|
fprintf(out, "%sconst QMetaObject %s::staticMetaObject = { {\n",
|
||||||
|
// ### FIXME: gadgets are not constinit on Windows!
|
||||||
|
cdef->hasQGadget ? "" : "Q_CONSTINIT ", cdef->qualified.constData());
|
||||||
|
|
||||||
if (isQObject)
|
if (isQObject)
|
||||||
fprintf(out, " nullptr,\n");
|
fprintf(out, " nullptr,\n");
|
||||||
@ -1609,7 +1611,7 @@ void Generator::generatePluginMetaData()
|
|||||||
|
|
||||||
// compatibility with Qt 6.0-6.2
|
// compatibility with Qt 6.0-6.2
|
||||||
fprintf(out, "#else\nQT_PLUGIN_METADATA_SECTION\n"
|
fprintf(out, "#else\nQT_PLUGIN_METADATA_SECTION\n"
|
||||||
"static constexpr unsigned char qt_pluginMetaData_%s[] = {\n"
|
"Q_CONSTINIT static constexpr unsigned char qt_pluginMetaData_%s[] = {\n"
|
||||||
" 'Q', 'T', 'M', 'E', 'T', 'A', 'D', 'A', 'T', 'A', ' ', '!',\n"
|
" 'Q', 'T', 'M', 'E', 'T', 'A', 'D', 'A', 'T', 'A', ' ', '!',\n"
|
||||||
" // metadata version, Qt version, architectural requirements\n"
|
" // metadata version, Qt version, architectural requirements\n"
|
||||||
" 0, QT_VERSION_MAJOR, QT_VERSION_MINOR, qPluginArchRequirements(),",
|
" 0, QT_VERSION_MAJOR, QT_VERSION_MINOR, qPluginArchRequirements(),",
|
||||||
|
@ -1103,6 +1103,12 @@ void Moc::generate(FILE *out, FILE *jsonOutput)
|
|||||||
" much.)\"\n", QT_VERSION_STR);
|
" much.)\"\n", QT_VERSION_STR);
|
||||||
fprintf(out, "#endif\n\n");
|
fprintf(out, "#endif\n\n");
|
||||||
|
|
||||||
|
#if QT_VERSION <= QT_VERSION_CHECK(7, 0, 0)
|
||||||
|
fprintf(out, "#ifndef Q_CONSTINIT\n"
|
||||||
|
"#define Q_CONSTINIT\n"
|
||||||
|
"#endif\n\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
fprintf(out, "QT_BEGIN_MOC_NAMESPACE\n");
|
fprintf(out, "QT_BEGIN_MOC_NAMESPACE\n");
|
||||||
fprintf(out, "QT_WARNING_PUSH\n");
|
fprintf(out, "QT_WARNING_PUSH\n");
|
||||||
fprintf(out, "QT_WARNING_DISABLE_DEPRECATED\n");
|
fprintf(out, "QT_WARNING_DISABLE_DEPRECATED\n");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user