diff options
Diffstat (limited to 'src/tools')
43 files changed, 1738 insertions, 214 deletions
diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt new file mode 100644 index 0000000000..425a99b552 --- /dev/null +++ b/src/tools/CMakeLists.txt @@ -0,0 +1,13 @@ +add_subdirectory(uic) +if (QT_FEATURE_dbus) + add_subdirectory(qdbuscpp2xml) + add_subdirectory(qdbusxml2cpp) +endif() +add_subdirectory(qlalr) +add_subdirectory(qvkgen) + +# Only include the following tools when performing a host build +if(NOT CMAKE_CROSSCOMPILING) + add_subdirectory(androiddeployqt) + add_subdirectory(androidtestrunner) +endif() diff --git a/src/tools/androiddeployqt/.prev_CMakeLists.txt b/src/tools/androiddeployqt/.prev_CMakeLists.txt new file mode 100644 index 0000000000..e445201b82 --- /dev/null +++ b/src/tools/androiddeployqt/.prev_CMakeLists.txt @@ -0,0 +1,27 @@ +# Generated from androiddeployqt.pro. + +##################################################################### +## androiddeployqt Binary: +##################################################################### + +qt_add_executable(androiddeployqt + SOURCES + main.cpp + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_CAST_TO_ASCII + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::Gui +) + +#### Keys ignored in scope 1:.:.:androiddeployqt.pro:<TRUE>: +# _OPTION = "host_build" + +## Scopes: +##################################################################### + +qt_extend_target(androiddeployqt CONDITION windows + COMPILE_OPTIONS + -U__STRICT_ANSI__ +) diff --git a/src/tools/androiddeployqt/CMakeLists.txt b/src/tools/androiddeployqt/CMakeLists.txt new file mode 100644 index 0000000000..d47e10efd2 --- /dev/null +++ b/src/tools/androiddeployqt/CMakeLists.txt @@ -0,0 +1,27 @@ +# Generated from androiddeployqt.pro. + +##################################################################### +## androiddeployqt Binary: +##################################################################### + +qt_add_executable(androiddeployqt + SOURCES + main.cpp + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_CAST_TO_ASCII + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::Core # special case +) + +#### Keys ignored in scope 1:.:.:androiddeployqt.pro:<TRUE>: +# _OPTION = "host_build" + +## Scopes: +##################################################################### + +qt_extend_target(androiddeployqt CONDITION windows + COMPILE_OPTIONS + -U__STRICT_ANSI__ +) diff --git a/src/tools/androiddeployqt/main.cpp b/src/tools/androiddeployqt/main.cpp index 97e5c9eb69..3531e762fa 100644 --- a/src/tools/androiddeployqt/main.cpp +++ b/src/tools/androiddeployqt/main.cpp @@ -128,6 +128,7 @@ struct Options , jarSigner(false) , installApk(false) , uninstallApk(false) + , qmlImportScannerBinaryPath() {} enum DeploymentMechanism @@ -231,6 +232,9 @@ struct Options QStringList initClasses; QStringList permissions; QStringList features; + + // Override qml import scanner path + QString qmlImportScannerBinaryPath; }; static const QHash<QByteArray, QByteArray> elfArchitecures = { @@ -523,6 +527,8 @@ Options parseOptions() options.jarSigner = true; } else if (argument.compare(QLatin1String("--aux-mode"), Qt::CaseInsensitive) == 0) { options.auxMode = true; + } else if (argument.compare(QLatin1String("--qml-importscanner-binary"), Qt::CaseInsensitive) == 0) { + options.qmlImportScannerBinaryPath = arguments.at(++i).trimmed(); } } @@ -606,6 +612,10 @@ void printHelp() " dependencies into the build directory and update the XML templates.\n" " The project will not be built or installed.\n" " --apk <path/where/to/copy/the/apk>: Path where to copy the built apk.\n" + " --qml-importscanner-binary <path/to/qmlimportscanner>: Override the\n" + " default qmlimportscanner binary path. By default the\n" + " qmlimportscanner binary is located using the Qt directory\n" + " specified in the input file.\n" " --help: Displays this information.\n\n", qPrintable(QCoreApplication::arguments().at(0)) ); @@ -927,6 +937,12 @@ bool readInputFile(Options *options) } { + const QJsonValue qmlImportScannerBinaryPath = jsonObject.value(QLatin1String("qml-importscanner-binary")); + if (!qmlImportScannerBinaryPath.isUndefined()) + options->qmlImportScannerBinaryPath = qmlImportScannerBinaryPath.toString(); + } + + { const QJsonValue applicationBinary = jsonObject.value(QLatin1String("application-binary")); if (applicationBinary.isUndefined()) { fprintf(stderr, "No application binary defined in json file.\n"); @@ -1703,10 +1719,15 @@ bool scanImports(Options *options, QSet<QString> *usedDependencies) if (options->verbose) fprintf(stdout, "Scanning for QML imports.\n"); - QString qmlImportScanner = options->qtInstallDirectory + QLatin1String("/bin/qmlimportscanner"); + QString qmlImportScanner; + if (!options->qmlImportScannerBinaryPath.isEmpty()) { + qmlImportScanner = options->qmlImportScannerBinaryPath; + } else { + options->qtInstallDirectory + QLatin1String("/bin/qmlimportscanner"); #if defined(Q_OS_WIN32) - qmlImportScanner += QLatin1String(".exe"); + qmlImportScanner += QLatin1String(".exe"); #endif + } if (!QFile::exists(qmlImportScanner)) { fprintf(stderr, "qmlimportscanner not found: %s\n", qPrintable(qmlImportScanner)); diff --git a/src/tools/androidtestrunner/CMakeLists.txt b/src/tools/androidtestrunner/CMakeLists.txt new file mode 100644 index 0000000000..d7ec4a66fa --- /dev/null +++ b/src/tools/androidtestrunner/CMakeLists.txt @@ -0,0 +1,27 @@ +# Generated from androidtestrunner.pro. + +##################################################################### +## androidtestrunner Binary: +##################################################################### + +qt_add_executable(androidtestrunner + SOURCES + main.cpp + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_CAST_TO_ASCII + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::Gui +) + +#### Keys ignored in scope 1:.:.:androidtestrunner.pro:<TRUE>: +# _OPTION = "host_build" + +## Scopes: +##################################################################### + +qt_extend_target(androidtestrunner CONDITION windows + COMPILE_OPTIONS + -U__STRICT_ANSI__ +) diff --git a/src/tools/androidtestrunner/main.cpp b/src/tools/androidtestrunner/main.cpp index 5471db3afd..f25d2c2de9 100644 --- a/src/tools/androidtestrunner/main.cpp +++ b/src/tools/androidtestrunner/main.cpp @@ -51,6 +51,7 @@ struct Options { bool helpRequested = false; bool verbose = false; + bool skipAddInstallRoot = false; std::chrono::seconds timeout{300}; // 5minutes QString androidDeployQtCommand; QString buildPath; @@ -233,6 +234,8 @@ static bool parseOptions() g_options.helpRequested = true; else g_options.activity = arguments.at(++i); + } else if (argument.compare(QStringLiteral("--skip-install-root"), Qt::CaseInsensitive) == 0) { + g_options.skipAddInstallRoot = true; } else if (argument.compare(QStringLiteral("--timeout"), Qt::CaseInsensitive) == 0) { if (i + 1 == arguments.size()) g_options.helpRequested = true; @@ -283,6 +286,7 @@ static void printHelp() " If make is missing make sure the --path is set.\n" " --apk <apk path>: If the apk is specified and if exists, we'll skip\n" " the package building.\n" + " --skip-install-root: Do not append INSTALL_ROOT=... to the make command.\n" " -- arguments that will be passed to the test application.\n" " --verbose: Prints out information during processing.\n" " --help: Displays this information.\n\n", @@ -452,10 +456,17 @@ int main(int argc, char *argv[]) } } else { if (!g_options.makeCommand.isEmpty()) { - // we need to run make INSTALL_ROOT=path install to install the application file(s) first - if (!execCommand(QStringLiteral("%1 INSTALL_ROOT=%2 install") - .arg(g_options.makeCommand, QDir::toNativeSeparators(g_options.buildPath)), nullptr, g_options.verbose)) { - return 1; + if (!g_options.skipAddInstallRoot) { + // we need to run make INSTALL_ROOT=path install to install the application file(s) first + if (!execCommand(QStringLiteral("%1 INSTALL_ROOT=%2 install") + .arg(g_options.makeCommand, QDir::toNativeSeparators(g_options.buildPath)), nullptr, g_options.verbose)) { + return 1; + } + } else { + if (!execCommand(QStringLiteral("%1") + .arg(g_options.makeCommand), nullptr, g_options.verbose)) { + return 1; + } } } diff --git a/src/tools/bootstrap/.prev_CMakeLists.txt b/src/tools/bootstrap/.prev_CMakeLists.txt new file mode 100644 index 0000000000..be8c0e22d8 --- /dev/null +++ b/src/tools/bootstrap/.prev_CMakeLists.txt @@ -0,0 +1,223 @@ +# Generated from bootstrap.pro. + +##################################################################### +## Bootstrap Module: +##################################################################### + +qt_add_module(Bootstrap + STATIC + INTERNAL_MODULE + NO_SYNC_QT + QMAKE_MODULE_CONFIG gc_binaries + SOURCES + ../../corelib/codecs/qlatincodec.cpp + ../../corelib/codecs/qtextcodec.cpp + ../../corelib/codecs/qutfcodec.cpp + ../../corelib/global/qendian.cpp + ../../corelib/global/qglobal.cpp + ../../corelib/global/qlogging.cpp + ../../corelib/global/qmalloc.cpp + ../../corelib/global/qnumeric.cpp + ../../corelib/global/qoperatingsystemversion.cpp + ../../corelib/global/qrandom.cpp + ../../corelib/io/qabstractfileengine.cpp + ../../corelib/io/qbuffer.cpp + ../../corelib/io/qdebug.cpp + ../../corelib/io/qdir.cpp + ../../corelib/io/qdiriterator.cpp + ../../corelib/io/qfile.cpp + ../../corelib/io/qfiledevice.cpp + ../../corelib/io/qfileinfo.cpp + ../../corelib/io/qfilesystemengine.cpp + ../../corelib/io/qfilesystementry.cpp + ../../corelib/io/qfsfileengine.cpp + ../../corelib/io/qfsfileengine_iterator.cpp + ../../corelib/io/qiodevice.cpp + ../../corelib/io/qipaddress.cpp + ../../corelib/io/qloggingcategory.cpp + ../../corelib/io/qloggingregistry.cpp + ../../corelib/io/qresource.cpp + ../../corelib/io/qsavefile.cpp + ../../corelib/io/qstandardpaths.cpp + ../../corelib/io/qtemporarydir.cpp + ../../corelib/io/qtemporaryfile.cpp + ../../corelib/io/qurl.cpp + ../../corelib/io/qurlidna.cpp + ../../corelib/io/qurlquery.cpp + ../../corelib/io/qurlrecode.cpp + ../../corelib/kernel/qcoreapplication.cpp + ../../corelib/kernel/qcoreglobaldata.cpp + ../../corelib/kernel/qmetatype.cpp + ../../corelib/kernel/qsharedmemory.cpp + ../../corelib/kernel/qsystemerror.cpp + ../../corelib/kernel/qsystemsemaphore.cpp + ../../corelib/kernel/qvariant.cpp + ../../corelib/plugin/quuid.cpp + ../../corelib/serialization/qcborcommon.cpp + ../../corelib/serialization/qcborstreamwriter.cpp + ../../corelib/serialization/qcborvalue.cpp + ../../corelib/serialization/qdatastream.cpp + ../../corelib/serialization/qjsonarray.cpp + ../../corelib/serialization/qjsoncbor.cpp + ../../corelib/serialization/qjsondocument.cpp + ../../corelib/serialization/qjsonobject.cpp + ../../corelib/serialization/qjsonparser.cpp + ../../corelib/serialization/qjsonvalue.cpp + ../../corelib/serialization/qjsonwriter.cpp + ../../corelib/serialization/qtextstream.cpp + ../../corelib/serialization/qxmlstream.cpp + ../../corelib/serialization/qxmlutils.cpp + ../../corelib/text/qbytearray.cpp + ../../corelib/text/qbytearraylist.cpp + ../../corelib/text/qbytearraymatcher.cpp + ../../corelib/text/qlocale.cpp + ../../corelib/text/qlocale_tools.cpp + ../../corelib/text/qregexp.cpp + ../../corelib/text/qstring.cpp + ../../corelib/text/qstring_compat.cpp + ../../corelib/text/qstringbuilder.cpp + ../../corelib/text/qstringlist.cpp + ../../corelib/text/qstringview.cpp + ../../corelib/text/qvsnprintf.cpp + ../../corelib/time/qcalendar.cpp + ../../corelib/time/qdatetime.cpp + ../../corelib/time/qgregoriancalendar.cpp + ../../corelib/time/qromancalendar.cpp + ../../corelib/tools/qarraydata.cpp + ../../corelib/tools/qbitarray.cpp + ../../corelib/tools/qcommandlineoption.cpp + ../../corelib/tools/qcommandlineparser.cpp + ../../corelib/tools/qcryptographichash.cpp + ../../corelib/tools/qhash.cpp + ../../corelib/tools/qline.cpp + ../../corelib/tools/qmap.cpp + ../../corelib/tools/qpoint.cpp + ../../corelib/tools/qrect.cpp + ../../corelib/tools/qringbuffer.cpp + ../../corelib/tools/qsize.cpp + ../../corelib/tools/qversionnumber.cpp + ../../xml/dom/qdom.cpp + ../../xml/sax/qxml.cpp + DEFINES + QT_BOOTSTRAPPED + QT_NO_CAST_FROM_ASCII + QT_NO_CAST_TO_ASCII + QT_NO_FOREACH + QT_VERSION_MAJOR= + QT_VERSION_MINOR= + QT_VERSION_PATCH= + QT_VERSION_STR=\"\" + PUBLIC_DEFINES + QT_BOOTSTRAPPED + QT_NO_CAST_TO_ASCII + QT_VERSION_MAJOR= + QT_VERSION_MINOR= + QT_VERSION_PATCH= + QT_VERSION_STR=\"\" + INCLUDE_DIRECTORIES + .. + ../../3rdparty/tinycbor/src +) + +#### Keys ignored in scope 1:.:.:bootstrap.pro:<TRUE>: +# INSTALLS = "lib" +# MODULE_CONFIG = "gc_binaries" +# MODULE_INCNAME = "QtCore" "QtXml" +# _OPTION = "host_build" +# lib.CONFIG = "dummy_install" + +## Scopes: +##################################################################### + +qt_extend_target(Bootstrap CONDITION UNIX + SOURCES + ../../corelib/io/qfilesystemengine_unix.cpp + ../../corelib/io/qfilesystemiterator_unix.cpp + ../../corelib/io/qfsfileengine_unix.cpp + ../../corelib/kernel/qcore_unix.cpp + ../../corelib/kernel/qsharedmemory_posix.cpp + ../../corelib/kernel/qsharedmemory_systemv.cpp + ../../corelib/kernel/qsharedmemory_unix.cpp + ../../corelib/kernel/qsystemsemaphore_posix.cpp + ../../corelib/kernel/qsystemsemaphore_systemv.cpp + ../../corelib/kernel/qsystemsemaphore_unix.cpp +) + +qt_extend_target(Bootstrap CONDITION WIN32 + SOURCES + ../../corelib/global/qoperatingsystemversion_win.cpp + ../../corelib/io/qfilesystemengine_win.cpp + ../../corelib/io/qfilesystemiterator_win.cpp + ../../corelib/io/qfsfileengine_win.cpp + ../../corelib/io/qstandardpaths_win.cpp + ../../corelib/kernel/qcoreapplication_win.cpp + ../../corelib/kernel/qsharedmemory_win.cpp + ../../corelib/kernel/qsystemsemaphore_win.cpp + ../../corelib/kernel/qwinregistry.cpp + ../../corelib/plugin/qsystemlibrary.cpp + PUBLIC_LIBRARIES + advapi32 + netapi32 + ole32 + shell32 + user32 +) + +qt_extend_target(Bootstrap CONDITION APPLE + SOURCES + ../../corelib/global/qoperatingsystemversion_darwin.mm + ../../corelib/kernel/qcore_foundation.mm + ../../corelib/kernel/qcore_mac.cpp + ../../corelib/kernel/qcore_mac_objc.mm + ../../corelib/kernel/qcoreapplication_mac.cpp + PUBLIC_LIBRARIES + ${FWFoundation} +) + +qt_extend_target(Bootstrap CONDITION APPLE_OSX + SOURCES + ../../corelib/io/qstandardpaths_mac.mm + LIBRARIES + ${FWCoreServices} +) + +qt_extend_target(Bootstrap CONDITION APPLE_UIKIT + LIBRARIES + ${FWUIKit} +) + +qt_extend_target(Bootstrap CONDITION UNIX AND NOT APPLE_OSX + SOURCES + ../../corelib/io/qstandardpaths_unix.cpp +) + +qt_extend_target(Bootstrap CONDITION CMAKE_CROSSCOMPILING OR NOT QT_FEATURE_system_zlib + SOURCES + ../../3rdparty/zlib/src/adler32.c + ../../3rdparty/zlib/src/compress.c + ../../3rdparty/zlib/src/crc32.c + ../../3rdparty/zlib/src/deflate.c + ../../3rdparty/zlib/src/gzclose.c + ../../3rdparty/zlib/src/gzlib.c + ../../3rdparty/zlib/src/gzread.c + ../../3rdparty/zlib/src/gzwrite.c + ../../3rdparty/zlib/src/infback.c + ../../3rdparty/zlib/src/inffast.c + ../../3rdparty/zlib/src/inflate.c + ../../3rdparty/zlib/src/inftrees.c + ../../3rdparty/zlib/src/trees.c + ../../3rdparty/zlib/src/uncompr.c + ../../3rdparty/zlib/src/zutil.c + INCLUDE_DIRECTORIES + ../../3rdparty/zlib/src +) + +qt_extend_target(Bootstrap CONDITION QT_FEATURE_system_zlib AND NOT CMAKE_CROSSCOMPILING + LIBRARIES + ZLIB::ZLIB +) + +qt_extend_target(Bootstrap CONDITION WIN32 AND mingw + PUBLIC_LIBRARIES + uuid +) diff --git a/src/tools/bootstrap/CMakeLists.txt b/src/tools/bootstrap/CMakeLists.txt new file mode 100644 index 0000000000..c9deb2c4f5 --- /dev/null +++ b/src/tools/bootstrap/CMakeLists.txt @@ -0,0 +1,230 @@ +# Generated from bootstrap.pro. + +##################################################################### +## Bootstrap Module: +##################################################################### + +# special case begin +# The bootstrap library has a few manual tweaks compared to other +# libraries. +add_library(Bootstrap STATIC) +# special case end +qt_extend_target(Bootstrap + SOURCES + ../../corelib/codecs/qlatincodec.cpp + ../../corelib/codecs/qtextcodec.cpp + ../../corelib/codecs/qutfcodec.cpp + ../../corelib/global/qendian.cpp + ../../corelib/global/qglobal.cpp + ../../corelib/global/qlogging.cpp + ../../corelib/global/qmalloc.cpp + ../../corelib/global/qnumeric.cpp + ../../corelib/global/qoperatingsystemversion.cpp + ../../corelib/global/qrandom.cpp + ../../corelib/io/qabstractfileengine.cpp + ../../corelib/io/qbuffer.cpp + ../../corelib/io/qdebug.cpp + ../../corelib/io/qdir.cpp + ../../corelib/io/qdiriterator.cpp + ../../corelib/io/qfile.cpp + ../../corelib/io/qfiledevice.cpp + ../../corelib/io/qfileinfo.cpp + ../../corelib/io/qfilesystemengine.cpp + ../../corelib/io/qfilesystementry.cpp + ../../corelib/io/qfsfileengine.cpp + ../../corelib/io/qfsfileengine_iterator.cpp + ../../corelib/io/qiodevice.cpp + ../../corelib/io/qipaddress.cpp + ../../corelib/io/qloggingcategory.cpp + ../../corelib/io/qloggingregistry.cpp + ../../corelib/io/qresource.cpp + ../../corelib/io/qsavefile.cpp + ../../corelib/io/qstandardpaths.cpp + ../../corelib/io/qtemporarydir.cpp + ../../corelib/io/qtemporaryfile.cpp + ../../corelib/io/qurl.cpp + ../../corelib/io/qurlidna.cpp + ../../corelib/io/qurlquery.cpp + ../../corelib/io/qurlrecode.cpp + ../../corelib/kernel/qcoreapplication.cpp + ../../corelib/kernel/qcoreglobaldata.cpp + ../../corelib/kernel/qmetatype.cpp + ../../corelib/kernel/qsharedmemory.cpp + ../../corelib/kernel/qsystemerror.cpp + ../../corelib/kernel/qsystemsemaphore.cpp + ../../corelib/kernel/qvariant.cpp + ../../corelib/plugin/quuid.cpp + ../../corelib/serialization/qcborcommon.cpp + ../../corelib/serialization/qcborstreamwriter.cpp + ../../corelib/serialization/qcborvalue.cpp + ../../corelib/serialization/qdatastream.cpp + ../../corelib/serialization/qjsonarray.cpp + ../../corelib/serialization/qjsoncbor.cpp + ../../corelib/serialization/qjsondocument.cpp + ../../corelib/serialization/qjsonobject.cpp + ../../corelib/serialization/qjsonparser.cpp + ../../corelib/serialization/qjsonvalue.cpp + ../../corelib/serialization/qjsonwriter.cpp + ../../corelib/serialization/qtextstream.cpp + ../../corelib/serialization/qxmlstream.cpp + ../../corelib/serialization/qxmlutils.cpp + ../../corelib/text/qbytearray.cpp + ../../corelib/text/qbytearraylist.cpp + ../../corelib/text/qbytearraymatcher.cpp + ../../corelib/text/qlocale.cpp + ../../corelib/text/qlocale_tools.cpp + ../../corelib/text/qregexp.cpp + ../../corelib/text/qstring.cpp + ../../corelib/text/qstring_compat.cpp + ../../corelib/text/qstringbuilder.cpp + ../../corelib/text/qstringlist.cpp + ../../corelib/text/qstringview.cpp + ../../corelib/text/qvsnprintf.cpp + ../../corelib/time/qcalendar.cpp + ../../corelib/time/qdatetime.cpp + ../../corelib/time/qgregoriancalendar.cpp + ../../corelib/time/qromancalendar.cpp + ../../corelib/tools/qarraydata.cpp + ../../corelib/tools/qbitarray.cpp + ../../corelib/tools/qcommandlineoption.cpp + ../../corelib/tools/qcommandlineparser.cpp + ../../corelib/tools/qcryptographichash.cpp + ../../corelib/tools/qhash.cpp + ../../corelib/tools/qline.cpp + ../../corelib/tools/qmap.cpp + ../../corelib/tools/qpoint.cpp + ../../corelib/tools/qrect.cpp + ../../corelib/tools/qringbuffer.cpp + ../../corelib/tools/qsize.cpp + ../../corelib/tools/qversionnumber.cpp + ../../xml/dom/qdom.cpp + ../../xml/sax/qxml.cpp + PUBLIC_DEFINES # special case + QT_VERSION_MAJOR=${PROJECT_VERSION_MAJOR} # special case + QT_VERSION_MINOR=${PROJECT_VERSION_MINOR} # special case + QT_VERSION_PATCH=${PROJECT_VERSION_PATCH} # special case + QT_VERSION_STR="${PROJECT_VERSION}" # special case + QT_USE_QSTRINGBUILDER # special case + QT_BOOTSTRAPPED + QT_NO_CAST_FROM_ASCII + QT_NO_CAST_TO_ASCII + QT_NO_FOREACH + INCLUDE_DIRECTORIES + .. + ../../3rdparty/tinycbor/src + PUBLIC_INCLUDE_DIRECTORIES # special case + $<TARGET_PROPERTY:Core,INCLUDE_DIRECTORIES> # special case + $<TARGET_PROPERTY:Xml,INCLUDE_DIRECTORIES> # special case + PUBLIC_LIBRARIES # special case + Qt::Platform # special case +) + +#### Keys ignored in scope 1:.:.:bootstrap.pro:<TRUE>: +# INSTALLS = "lib" +# MODULE_CONFIG = "gc_binaries" +# MODULE_INCNAME = "QtCore" "QtXml" +# _OPTION = "host_build" +# lib.CONFIG = "dummy_install" + +## Scopes: +##################################################################### + +qt_extend_target(Bootstrap CONDITION UNIX + SOURCES + ../../corelib/io/qfilesystemengine_unix.cpp + ../../corelib/io/qfilesystemiterator_unix.cpp + ../../corelib/io/qfsfileengine_unix.cpp + ../../corelib/kernel/qcore_unix.cpp + ../../corelib/kernel/qsharedmemory_posix.cpp + ../../corelib/kernel/qsharedmemory_systemv.cpp + ../../corelib/kernel/qsharedmemory_unix.cpp + ../../corelib/kernel/qsystemsemaphore_posix.cpp + ../../corelib/kernel/qsystemsemaphore_systemv.cpp + ../../corelib/kernel/qsystemsemaphore_unix.cpp +) + +qt_extend_target(Bootstrap CONDITION WIN32 + SOURCES + ../../corelib/global/qoperatingsystemversion_win.cpp + ../../corelib/io/qfilesystemengine_win.cpp + ../../corelib/io/qfilesystemiterator_win.cpp + ../../corelib/io/qfsfileengine_win.cpp + ../../corelib/io/qstandardpaths_win.cpp + ../../corelib/kernel/qcoreapplication_win.cpp + ../../corelib/kernel/qsharedmemory_win.cpp + ../../corelib/kernel/qsystemsemaphore_win.cpp + ../../corelib/kernel/qwinregistry.cpp + ../../corelib/plugin/qsystemlibrary.cpp + PUBLIC_LIBRARIES + advapi32 + netapi32 + ole32 + shell32 + user32 +) + +qt_extend_target(Bootstrap CONDITION APPLE + SOURCES + ../../corelib/global/qoperatingsystemversion_darwin.mm + ../../corelib/kernel/qcore_foundation.mm + ../../corelib/kernel/qcore_mac.cpp + ../../corelib/kernel/qcore_mac_objc.mm + ../../corelib/kernel/qcoreapplication_mac.cpp + PUBLIC_LIBRARIES + ${FWFoundation} +) + +qt_extend_target(Bootstrap CONDITION APPLE_OSX + SOURCES + ../../corelib/io/qstandardpaths_mac.mm + LIBRARIES + ${FWCoreServices} +) + +qt_extend_target(Bootstrap CONDITION APPLE_UIKIT + LIBRARIES + ${FWUIKit} +) + +qt_extend_target(Bootstrap CONDITION UNIX AND NOT APPLE_OSX + SOURCES + ../../corelib/io/qstandardpaths_unix.cpp +) + +qt_extend_target(Bootstrap CONDITION CMAKE_CROSSCOMPILING OR NOT QT_FEATURE_system_zlib + SOURCES + ../../3rdparty/zlib/src/adler32.c + ../../3rdparty/zlib/src/compress.c + ../../3rdparty/zlib/src/crc32.c + ../../3rdparty/zlib/src/deflate.c + ../../3rdparty/zlib/src/gzclose.c + ../../3rdparty/zlib/src/gzlib.c + ../../3rdparty/zlib/src/gzread.c + ../../3rdparty/zlib/src/gzwrite.c + ../../3rdparty/zlib/src/infback.c + ../../3rdparty/zlib/src/inffast.c + ../../3rdparty/zlib/src/inflate.c + ../../3rdparty/zlib/src/inftrees.c + ../../3rdparty/zlib/src/trees.c + ../../3rdparty/zlib/src/uncompr.c + ../../3rdparty/zlib/src/zutil.c + INCLUDE_DIRECTORIES + ../../3rdparty/zlib/src +) + +qt_extend_target(Bootstrap CONDITION QT_FEATURE_system_zlib AND NOT CMAKE_CROSSCOMPILING + LIBRARIES + ZLIB::ZLIB +) + +qt_extend_target(Bootstrap CONDITION WIN32 AND mingw + PUBLIC_LIBRARIES + uuid +) + +# special case begin +qt_internal_add_link_flags_gc_sections(Bootstrap PUBLIC) +set_target_properties(Bootstrap PROPERTIES AUTOMOC OFF AUTOUIC OFF AUTORCC OFF) +qt_internal_add_target_aliases(Bootstrap) +qt_enable_msvc_cplusplus_define(Bootstrap PUBLIC) +# special case end diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro index bfd199a8ba..b68bed436e 100644 --- a/src/tools/bootstrap/bootstrap.pro +++ b/src/tools/bootstrap/bootstrap.pro @@ -103,7 +103,6 @@ SOURCES += \ ../../corelib/tools/qcommandlineoption.cpp \ ../../corelib/tools/qcryptographichash.cpp \ ../../corelib/tools/qhash.cpp \ - ../../corelib/tools/qlist.cpp \ ../../corelib/tools/qmap.cpp \ ../../corelib/tools/qringbuffer.cpp \ ../../corelib/tools/qpoint.cpp \ diff --git a/src/tools/cmake_automoc_parser/CMakeLists.txt b/src/tools/cmake_automoc_parser/CMakeLists.txt new file mode 100644 index 0000000000..73303215bb --- /dev/null +++ b/src/tools/cmake_automoc_parser/CMakeLists.txt @@ -0,0 +1,18 @@ +##################################################################### +## moc Tool: +##################################################################### + +qt_add_tool(cmake_automoc_parser + BOOTSTRAP + TOOLS_TARGET Core # special case + SOURCES + main.cpp + DEFINES + QT_MOC + QT_NO_CAST_FROM_ASCII + QT_NO_CAST_FROM_BYTEARRAY + QT_NO_COMPRESS + QT_NO_FOREACH + INCLUDE_DIRECTORIES + ${CMAKE_CURRENT_SOURCE_DIR} +) diff --git a/src/tools/cmake_automoc_parser/main.cpp b/src/tools/cmake_automoc_parser/main.cpp new file mode 100644 index 0000000000..60eb4b2977 --- /dev/null +++ b/src/tools/cmake_automoc_parser/main.cpp @@ -0,0 +1,399 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtCore/qglobal.h> + +#include <cstdio> +#include <cstdlib> + +#include <qfile.h> +#include <qjsonarray.h> +#include <qjsondocument.h> +#include <qjsonobject.h> +#include <qdir.h> +#include <qstring.h> +#include <qhash.h> +#include <qvector.h> +#include <qstack.h> +#include <qdebug.h> +#include <qset.h> +#include <qmap.h> +#include <qcoreapplication.h> +#include <qcommandlineoption.h> +#include <qcommandlineparser.h> + +QT_BEGIN_NAMESPACE + +using AutoGenHeaderMap = QMap<QString, QString>; +using AutoGenSourcesList = QVector<QString>; + +static bool readAutogenInfoJson(AutoGenHeaderMap &headers, AutoGenSourcesList &sources, + QStringList &headerExts, const QString &autoGenInfoJsonPath) +{ + QFile file(autoGenInfoJsonPath); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + fprintf(stderr, "Could not open: %s\n", qPrintable(autoGenInfoJsonPath)); + return false; + } + + const QByteArray contents = file.readAll(); + file.close(); + + QJsonParseError error; + QJsonDocument doc = QJsonDocument::fromJson(contents, &error); + + if (error.error != QJsonParseError::NoError) { + fprintf(stderr, "Failed to parse json file: %s\n", qPrintable(autoGenInfoJsonPath)); + return false; + } + + QJsonObject rootObject = doc.object(); + QJsonValue headersValue = rootObject.value(QLatin1String("HEADERS")); + QJsonValue sourcesValue = rootObject.value(QLatin1String("SOURCES")); + QJsonValue headerExtValue = rootObject.value(QLatin1String("HEADER_EXTENSIONS")); + + if (!headersValue.isArray() || !sourcesValue.isArray() || !headerExtValue.isArray()) { + fprintf(stderr, + "%s layout does not match the expected layout. This most likely means that file " + "format changed or this file is not a product of CMake's AutoGen process.\n", + qPrintable(autoGenInfoJsonPath)); + return false; + } + + QJsonArray headersArray = headersValue.toArray(); + QJsonArray sourcesArray = sourcesValue.toArray(); + QJsonArray headerExtArray = headerExtValue.toArray(); + + for (const auto &value : headersArray) { + QJsonArray entry_array = value.toArray(); + if (entry_array.size() > 2) { + // Array[0] : header path + // Array[2] : Location of the generated moc file for this header + // if no source file includes it + headers.insert(entry_array[0].toString(), entry_array[2].toString()); + } + } + + sources.reserve(sourcesArray.size()); + for (const auto &value : sourcesArray) { + QJsonArray entry_array = value.toArray(); + if (entry_array.size() > 1) { + sources.push_back(entry_array[0].toString()); + } + } + + headerExts.reserve(headerExtArray.size()); + for (const auto &value : headerExtArray) { + headerExts.push_back(value.toString()); + } + + return true; +} + +struct ParseCacheEntry +{ + QStringList mocFiles; + QStringList mocIncludes; +}; + +using ParseCacheMap = QMap<QString, ParseCacheEntry>; + +static bool readParseCache(ParseCacheMap &entries, const QString &parseCacheFilePath) +{ + + QFile file(parseCacheFilePath); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + fprintf(stderr, "Could not open: %s\n", qPrintable(parseCacheFilePath)); + return false; + } + + QString source; + QStringList mocEntries; + QStringList mocIncludes; + + // File format + // .... + // header/source path N + // mmc:Q_OBJECT| mcc:Q_GADGET # This file has been mocked + // miu:moc_....cpp # Path of the moc.cpp file generated for the above file + // relative to TARGET_BINARY_DIR/TARGET_autgen/include directory. Not + // present for headers. + // mid: ....moc # Path of .moc file generated for the above file relative + // to TARGET_BINARY_DIR/TARGET_autogen/include directory. + // uic: UI related info, ignored + // mdp: Moc dependencies, ignored + // udp: UI dependencies, ignored + // header/source path N + 1 + // .... + + QTextStream textStream(&file); + const QString mmcKey = QString(QLatin1String(" mmc:")); + const QString miuKey = QString(QLatin1String(" miu:")); + const QString uicKey = QString(QLatin1String(" uic:")); + const QString midKey = QString(QLatin1String(" mid:")); + const QString mdpKey = QString(QLatin1String(" mdp:")); + const QString udpKey = QString(QLatin1String(" udp:")); + QString line; + bool mmc_key_found = false; + while (textStream.readLineInto(&line)) { + if (!line.startsWith(QLatin1Char(' '))) { + if (!mocEntries.isEmpty() || mmc_key_found || !mocIncludes.isEmpty()) { + entries.insert(source, + ParseCacheEntry { std::move(mocEntries), std::move(mocIncludes) }); + source.clear(); + mmc_key_found = false; + } + source = line; + } else if (line.startsWith(mmcKey)) { + mmc_key_found = true; + } else if (line.startsWith(miuKey)) { + mocIncludes.push_back(line.right(line.size() - miuKey.size())); + } else if (line.startsWith(midKey)) { + mocEntries.push_back(line.right(line.size() - midKey.size())); + } else if (line.startsWith(uicKey) || line.startsWith(mdpKey) || line.startsWith(udpKey)) { + // nothing to do ignore + continue; + } else { + fprintf(stderr, "Unhandled line entry \"%s\" in %s\n", qPrintable(line), + qPrintable(parseCacheFilePath)); + return false; + } + } + + // Check if last entry has any data left to processed + if (!mocEntries.isEmpty() || !mocIncludes.isEmpty() || mmc_key_found) { + entries.insert(source, ParseCacheEntry { std::move(mocEntries), std::move(mocIncludes) }); + } + + file.close(); + return true; +} + +static bool readJsonFiles(QVector<QString> &entries, const QString &filePath) +{ + + QFile file(filePath); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + fprintf(stderr, "Could not open: %s\n", qPrintable(filePath)); + return false; + } + + QTextStream textStream(&file); + QString line; + while (textStream.readLineInto(&line)) { + entries.push_back(line); + } + file.close(); + return true; +} + +static bool writeJsonFiles(const QVector<QString> &fileList, const QString &fileListFilePath) +{ + QFile file(fileListFilePath); + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { + fprintf(stderr, "Could not open: %s\n", qPrintable(fileListFilePath)); + return false; + } + + QTextStream textStream(&file); + for (const auto &file : fileList) { + textStream << file << Qt::endl; + } + + file.close(); + return true; +} + +int main(int argc, char **argv) +{ + + QCoreApplication app(argc, argv); + QCommandLineParser parser; + parser.setApplicationDescription(QStringLiteral("Qt CMake Autogen parser tool")); + + parser.addHelpOption(); + parser.setSingleDashWordOptionMode(QCommandLineParser::ParseAsLongOptions); + + QCommandLineOption outputFileOption(QStringLiteral("output-file-path")); + outputFileOption.setDescription( + QStringLiteral("Output file where the meta type file list will be written.")); + outputFileOption.setValueName(QStringLiteral("output file")); + parser.addOption(outputFileOption); + + QCommandLineOption cmakeAutogenCacheFileOption(QStringLiteral("cmake-autogen-cache-file")); + cmakeAutogenCacheFileOption.setDescription( + QStringLiteral("Location of the CMake AutoGen ParseCache.txt file.")); + cmakeAutogenCacheFileOption.setValueName(QStringLiteral("CMake AutoGen ParseCache.txt file")); + parser.addOption(cmakeAutogenCacheFileOption); + + QCommandLineOption cmakeAutogenInfoFileOption(QStringLiteral("cmake-autogen-info-file")); + cmakeAutogenInfoFileOption.setDescription( + QStringLiteral("Location of the CMake AutoGen AutogenInfo.json file.")); + cmakeAutogenInfoFileOption.setValueName(QStringLiteral("CMake AutoGen AutogenInfo.json file")); + parser.addOption(cmakeAutogenInfoFileOption); + + QCommandLineOption cmakeAutogenIncludeDirOption( + QStringLiteral("cmake-autogen-include-dir-path")); + cmakeAutogenIncludeDirOption.setDescription( + QStringLiteral("Location of the CMake AutoGen include directory.")); + cmakeAutogenIncludeDirOption.setValueName(QStringLiteral("CMake AutoGen include directory")); + parser.addOption(cmakeAutogenIncludeDirOption); + + QCommandLineOption isMultiConfigOption( + QStringLiteral("cmake-multi-config")); + isMultiConfigOption.setDescription( + QStringLiteral("Set this option when using CMake with a multi-config generator")); + parser.addOption(isMultiConfigOption); + + QStringList arguments = QCoreApplication::arguments(); + parser.process(arguments); + + if (!parser.isSet(outputFileOption) || !parser.isSet(cmakeAutogenInfoFileOption) + || !parser.isSet(cmakeAutogenCacheFileOption) + || !parser.isSet(cmakeAutogenIncludeDirOption)) { + parser.showHelp(1); + return EXIT_FAILURE; + } + + // Read source files from AutogenInfo.json + AutoGenHeaderMap autoGenHeaders; + AutoGenSourcesList autoGenSources; + QStringList headerExtList; + if (!readAutogenInfoJson(autoGenHeaders, autoGenSources, headerExtList, + parser.value(cmakeAutogenInfoFileOption))) { + return EXIT_FAILURE; + } + + ParseCacheMap parseCacheEntries; + if (!readParseCache(parseCacheEntries, parser.value(cmakeAutogenCacheFileOption))) { + return EXIT_FAILURE; + } + + const QString cmakeIncludeDir = parser.value(cmakeAutogenIncludeDirOption); + + // Algorithm description + // 1) For each source from the AutoGenSources list check if there is a parse + // cache entry. + // 1a) If an entry was wound there exists an moc_...cpp file somewhere. + // Remove the header file from the AutoGenHeader files + // 1b) For every matched source entry, check the moc includes as it is + // possible for a source file to include moc files from other headers. + // Remove the header from AutoGenHeaders + // 2) For every remaining header in AutoGenHeaders, check if there is an + // entry for it in the parse cache. Use the value for the location of the + // moc.json file + + QVector<QString> jsonFileList; + QDir dir(cmakeIncludeDir); + jsonFileList.reserve(autoGenSources.size()); + + // 1) Process sources + for (const auto &source : autoGenSources) { + auto it = parseCacheEntries.find(source); + if (it == parseCacheEntries.end()) { + continue; + } + + const QFileInfo fileInfo(source); + const QString base = fileInfo.path() + fileInfo.completeBaseName(); + // 1a) erase header + for (const auto &ext : headerExtList) { + const QString headerPath = base + QLatin1Char('.') + ext; + auto it = autoGenHeaders.find(headerPath); + if (it != autoGenHeaders.end()) { + autoGenHeaders.erase(it); + break; + } + } + // Add extra moc files + for (const auto &mocFile : it.value().mocFiles) { + jsonFileList.push_back(dir.filePath(mocFile) + QLatin1String(".json")); + } + // Add main moc files + for (const auto &mocFile : it.value().mocIncludes) { + jsonFileList.push_back(dir.filePath(mocFile) + QLatin1String(".json")); + // 1b) Locate this header and delete it + constexpr int mocKeyLen = 4; // length of "moc_" + const QString headerBaseName = + QFileInfo(mocFile.right(mocFile.size() - mocKeyLen)).completeBaseName(); + bool breakFree = false; + for (auto &ext : headerExtList) { + const QString headerSuffix = headerBaseName + QLatin1Char('.') + ext; + for (auto it = autoGenHeaders.begin(); it != autoGenHeaders.end(); ++it) { + if (it.key().endsWith(headerSuffix) + && QFileInfo(it.key()).completeBaseName() == headerBaseName) { + autoGenHeaders.erase(it); + breakFree = true; + break; + } + } + if (breakFree) { + break; + } + } + } + } + + // 2) Process headers + const bool isMultiConfig = parser.isSet(isMultiConfigOption); + for (auto mapIt = autoGenHeaders.begin(); mapIt != autoGenHeaders.end(); ++mapIt) { + auto it = parseCacheEntries.find(mapIt.key()); + if (it == parseCacheEntries.end()) { + continue; + } + const QString pathPrefix = !isMultiConfig + ? QStringLiteral("../") + : QString(); + const QString jsonPath = + dir.filePath(pathPrefix + mapIt.value() + QLatin1String(".json")); + jsonFileList.push_back(jsonPath); + } + + // Sort for consistent checks across runs + jsonFileList.sort(); + + // Read Previous file list (if any) + const QString fileListFilePath = parser.value(outputFileOption); + QVector<QString> previousList; + QFile prev_file(fileListFilePath); + + // Only try to open file if it exists to avoid error messages + if (prev_file.exists()) { + (void)readJsonFiles(previousList, fileListFilePath); + } + + if (previousList != jsonFileList || !QFile(fileListFilePath).exists()) { + if (!writeJsonFiles(jsonFileList, fileListFilePath)) { + return EXIT_FAILURE; + } + } + + return EXIT_SUCCESS; +} + +QT_END_NAMESPACE diff --git a/src/tools/moc/.prev_CMakeLists.txt b/src/tools/moc/.prev_CMakeLists.txt new file mode 100644 index 0000000000..ffadd2e2be --- /dev/null +++ b/src/tools/moc/.prev_CMakeLists.txt @@ -0,0 +1,35 @@ +# Generated from moc.pro. + +##################################################################### +## moc Tool: +##################################################################### + +qt_add_tool(moc + BOOTSTRAP + SOURCES + cbordevice.h + collectjson.cpp collectjson.h + generator.cpp generator.h + main.cpp + moc.cpp moc.h + outputrevision.h + parser.cpp parser.h + preprocessor.cpp preprocessor.h + qdatetime_p.h + symbols.h + token.cpp token.h + utils.h + DEFINES + QT_MOC + QT_NO_CAST_FROM_ASCII + QT_NO_CAST_FROM_BYTEARRAY + QT_NO_COMPRESS + QT_NO_FOREACH + INCLUDE_DIRECTORIES + ${CMAKE_CURRENT_SOURCE_DIR} + ../../3rdparty/tinycbor/src +) + +#### Keys ignored in scope 1:.:.:moc.pro:<TRUE>: +# QMAKE_TARGET_DESCRIPTION = "Qt Meta Object Compiler" +# _OPTION = "host_build" diff --git a/src/tools/moc/CMakeLists.txt b/src/tools/moc/CMakeLists.txt new file mode 100644 index 0000000000..c9786674f1 --- /dev/null +++ b/src/tools/moc/CMakeLists.txt @@ -0,0 +1,36 @@ +# Generated from moc.pro. + +##################################################################### +## moc Tool: +##################################################################### + +qt_add_tool(moc + BOOTSTRAP + TOOLS_TARGET Core # special case + SOURCES + cbordevice.h + collectjson.cpp collectjson.h + generator.cpp generator.h + main.cpp + moc.cpp moc.h + outputrevision.h + parser.cpp parser.h + preprocessor.cpp preprocessor.h + # qdatetime_p.h special case remove + symbols.h + token.cpp token.h + utils.h + DEFINES + QT_MOC + QT_NO_CAST_FROM_ASCII + QT_NO_CAST_FROM_BYTEARRAY + QT_NO_COMPRESS + QT_NO_FOREACH + INCLUDE_DIRECTORIES + ${CMAKE_CURRENT_SOURCE_DIR} + ../../3rdparty/tinycbor/src +) + +#### Keys ignored in scope 1:.:.:moc.pro:<TRUE>: +# QMAKE_TARGET_DESCRIPTION = "Qt Meta Object Compiler" +# _OPTION = "host_build" diff --git a/src/tools/moc/collectjson.cpp b/src/tools/moc/collectjson.cpp index 4029bca5e9..fe499151cb 100644 --- a/src/tools/moc/collectjson.cpp +++ b/src/tools/moc/collectjson.cpp @@ -83,7 +83,9 @@ int collectJson(const QStringList &jsonFiles, const QString &outputFile) } } - for (const QString &jsonFile: jsonFiles) { + QStringList jsonFilesSorted = jsonFiles; + jsonFilesSorted.sort(); + for (const QString &jsonFile : qAsConst(jsonFilesSorted)) { QFile f(jsonFile); if (!f.open(QIODevice::ReadOnly)) { fprintf(stderr, "Error opening %s for reading\n", qPrintable(jsonFile)); diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp index 7264b5bf66..078eea257d 100644 --- a/src/tools/moc/generator.cpp +++ b/src/tools/moc/generator.cpp @@ -194,7 +194,6 @@ static bool qualifiedNameEquals(const QByteArray &qualifiedName, const QByteArra void Generator::generateCode() { - bool isQt = (cdef->classname == "Qt"); bool isQObject = (cdef->classname == "QObject"); bool isConstructible = !cdef->constructorList.isEmpty(); @@ -237,7 +236,7 @@ void Generator::generateCode() // const int constCharArraySizeLimit = 65535; fprintf(out, "struct qt_meta_stringdata_%s_t {\n", qualifiedClassNameIdentifier.constData()); - fprintf(out, " QByteArrayData data[%d];\n", strings.size()); + fprintf(out, " const uint offsetsAndSize[%d];\n", strings.size()*2); { int stringDataLength = 0; int stringDataCounter = 0; @@ -260,11 +259,8 @@ void Generator::generateCode() // stringdata.stringdata member, and 2) the stringdata.data index of the // QByteArrayData being defined. This calculation relies on the // QByteArrayData::data() implementation returning simply "this + offset". - fprintf(out, "#define QT_MOC_LITERAL(idx, ofs, len) \\\n" - " Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \\\n" - " qptrdiff(offsetof(qt_meta_stringdata_%s_t, stringdata0) + ofs \\\n" - " - idx * sizeof(QByteArrayData)) \\\n" - " )\n", + fprintf(out, "#define QT_MOC_LITERAL(ofs, len) \\\n" + " uint(offsetof(qt_meta_stringdata_%s_t, stringdata0) + ofs), len \n", qualifiedClassNameIdentifier.constData()); fprintf(out, "static const qt_meta_stringdata_%s_t qt_meta_stringdata_%s = {\n", @@ -274,7 +270,7 @@ void Generator::generateCode() int idx = 0; for (int i = 0; i < strings.size(); ++i) { const QByteArray &str = strings.at(i); - fprintf(out, "QT_MOC_LITERAL(%d, %d, %d)", i, idx, str.length()); + fprintf(out, "QT_MOC_LITERAL(%d, %d)", idx, str.length()); if (i != strings.size() - 1) fputc(',', out); const QByteArray comment = str.length() > 32 ? str.left(29) + "..." : str; @@ -452,7 +448,7 @@ void Generator::generateCode() // // Generate internal qt_static_metacall() function // - const bool hasStaticMetaCall = !isQt && + const bool hasStaticMetaCall = (cdef->hasQObject || !cdef->methodList.isEmpty() || !cdef->propertyList.isEmpty() || !cdef->constructorList.isEmpty()); if (hasStaticMetaCall) @@ -480,7 +476,7 @@ void Generator::generateCode() QByteArray unqualifiedScope = p.type.left(s); // The scope may be a namespace for example, so it's only safe to include scopes that are known QObjects (QTBUG-2151) - QHash<QByteArray, QByteArray>::ConstIterator scopeIt; + QMultiHash<QByteArray, QByteArray>::ConstIterator scopeIt; QByteArray thisScope = cdef->qualified; do { @@ -534,10 +530,7 @@ void Generator::generateCode() // // Finally create and initialize the static meta object // - if (isQt) - fprintf(out, "QT_INIT_METAOBJECT const QMetaObject QObject::staticQtMetaObject = { {\n"); - else - fprintf(out, "QT_INIT_METAOBJECT const QMetaObject %s::staticMetaObject = { {\n", cdef->qualified.constData()); + fprintf(out, "QT_INIT_METAOBJECT const QMetaObject %s::staticMetaObject = { {\n", cdef->qualified.constData()); if (isQObject) fprintf(out, " nullptr,\n"); @@ -547,7 +540,7 @@ void Generator::generateCode() fprintf(out, " QtPrivate::MetaObjectForType<%s>::value(),\n", purestSuperClass.constData()); else fprintf(out, " nullptr,\n"); - fprintf(out, " qt_meta_stringdata_%s.data,\n" + fprintf(out, " qt_meta_stringdata_%s.offsetsAndSize,\n" " qt_meta_data_%s,\n", qualifiedClassNameIdentifier.constData(), qualifiedClassNameIdentifier.constData()); if (hasStaticMetaCall) @@ -559,10 +552,19 @@ void Generator::generateCode() fprintf(out, " nullptr,\n"); else fprintf(out, " qt_meta_extradata_%s,\n", qualifiedClassNameIdentifier.constData()); - fprintf(out, " nullptr\n} };\n\n"); - if(isQt) - return; + if (cdef->propertyList.isEmpty()) { + fprintf(out, " nullptr,\n"); + } else { + fprintf(out, "qt_metaTypeArray<\n"); + for (int i = 0; i < cdef->propertyList.count(); ++i) { + const PropertyDef &p = cdef->propertyList.at(i); + fprintf(out, "%s%s", i == 0 ? "" : ", ", p.type.data()); + } + fprintf(out, ">,\n"); + } + + fprintf(out, " nullptr\n} };\n\n"); if (!cdef->hasQObject) return; @@ -1221,18 +1223,22 @@ void Generator::generateStaticMetacall() fprintf(out, "%s(", f.name.constData()); int offset = 1; - int argsCount = f.arguments.count(); - for (int j = 0; j < argsCount; ++j) { - const ArgumentDef &a = f.arguments.at(j); - if (j) - fprintf(out, ","); - fprintf(out, "(*reinterpret_cast< %s>(_a[%d]))",a.typeNameForCast.constData(), offset++); - isUsed_a = true; - } - if (f.isPrivateSignal) { - if (argsCount > 0) - fprintf(out, ", "); - fprintf(out, "%s", "QPrivateSignal()"); + if (f.isRawSlot) { + fprintf(out, "QMethodRawArguments{ _a }"); + } else { + int argsCount = f.arguments.count(); + for (int j = 0; j < argsCount; ++j) { + const ArgumentDef &a = f.arguments.at(j); + if (j) + fprintf(out, ","); + fprintf(out, "(*reinterpret_cast< %s>(_a[%d]))",a.typeNameForCast.constData(), offset++); + isUsed_a = true; + } + if (f.isPrivateSignal) { + if (argsCount > 0) + fprintf(out, ", "); + fprintf(out, "%s", "QPrivateSignal()"); + } } fprintf(out, ");"); if (f.normalizedType != "void") { diff --git a/src/tools/moc/keywords.cpp b/src/tools/moc/keywords.cpp index 7da8d94efc..cc7d747f5b 100644 --- a/src/tools/moc/keywords.cpp +++ b/src/tools/moc/keywords.cpp @@ -30,12 +30,12 @@ // DO NOT EDIT. static const short keyword_trans[][128] = { - {0,0,0,0,0,0,0,0,0,568,565,0,0,0,0,0, + {0,0,0,0,0,0,0,0,0,579,576,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 568,252,566,569,8,38,239,567,25,26,236,234,30,235,27,237, + 579,252,577,580,8,38,239,578,25,26,236,234,30,235,27,237, 22,22,22,22,22,22,22,22,22,22,34,41,23,39,24,43, 0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,21,8,8,8,8,8,8,8,8,8,31,571,32,238,8, + 8,21,8,8,8,8,8,8,8,8,8,31,582,32,238,8, 0,1,2,3,4,5,6,7,8,9,8,8,10,11,12,13, 14,8,15,16,17,18,19,20,8,8,8,36,245,37,248,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -177,7 +177,7 @@ static const short keyword_trans[][128] = { {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,42,0,0,0,28,0, - 574,574,574,574,574,574,574,574,574,574,0,0,0,0,0,0, + 585,585,585,585,585,585,585,585,585,585,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -336,7 +336,7 @@ static const short keyword_trans[][128] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,573,0,0,0,0,572, + 0,0,0,0,0,0,0,0,0,0,584,0,0,0,0,583, 0,0,0,0,0,0,0,0,0,0,0,0,0,258,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -378,7 +378,7 @@ static const short keyword_trans[][128] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,475,424,408,416,380,0,484,0,0,0,0,364,358, + 0,0,0,475,424,408,416,380,0,484,0,0,0,565,364,358, 386,0,557,472,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, @@ -1021,11 +1021,22 @@ static const struct {CHARACTER, 0, 79, 563, CHARACTER}, {CHARACTER, 0, 78, 564, CHARACTER}, {Q_REVISION_TOKEN, 0, 0, 0, CHARACTER}, + {CHARACTER, 0, 79, 566, CHARACTER}, + {CHARACTER, 0, 67, 567, CHARACTER}, + {CHARACTER, 0, 95, 568, CHARACTER}, + {CHARACTER, 0, 73, 569, CHARACTER}, + {CHARACTER, 0, 78, 570, CHARACTER}, + {CHARACTER, 0, 67, 571, CHARACTER}, + {CHARACTER, 0, 76, 572, CHARACTER}, + {CHARACTER, 0, 85, 573, CHARACTER}, + {CHARACTER, 0, 68, 574, CHARACTER}, + {CHARACTER, 0, 69, 575, CHARACTER}, + {Q_MOC_INCLUDE_TOKEN, 0, 0, 0, CHARACTER}, {NEWLINE, 0, 0, 0, NOTOKEN}, {QUOTE, 0, 0, 0, NOTOKEN}, {SINGLEQUOTE, 0, 0, 0, NOTOKEN}, {WHITESPACE, 0, 0, 0, NOTOKEN}, - {HASH, 0, 35, 570, HASH}, + {HASH, 0, 35, 581, HASH}, {PP_HASHHASH, 0, 0, 0, NOTOKEN}, {BACKSLASH, 0, 0, 0, NOTOKEN}, {CPP_COMMENT, 0, 0, 0, NOTOKEN}, diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp index c175d1d86d..03976771e5 100644 --- a/src/tools/moc/moc.cpp +++ b/src/tools/moc/moc.cpp @@ -43,30 +43,9 @@ QT_BEGIN_NAMESPACE // only moc needs this function -static QByteArray normalizeType(const QByteArray &ba, bool fixScope = false) +static QByteArray normalizeType(const QByteArray &ba) { - const char *s = ba.constData(); - int len = ba.size(); - char stackbuf[64]; - char *buf = (len >= 64 ? new char[len + 1] : stackbuf); - char *d = buf; - char last = 0; - while(*s && is_space(*s)) - s++; - while (*s) { - while (*s && !is_space(*s)) - last = *d++ = *s++; - while (*s && is_space(*s)) - s++; - if (*s && ((is_ident_char(*s) && is_ident_char(last)) - || ((*s == ':') && (last == '<')))) { - last = *d++ = ' '; - } - } - *d = '\0'; - QByteArray result = normalizeTypeInternal(buf, d, fixScope); - if (buf != stackbuf) - delete [] buf; + QByteArray result = normalizeTypeInternal(ba.constBegin(), ba.constEnd()); return result; } @@ -328,6 +307,11 @@ void Moc::parseFunctionArguments(FunctionDef *def) def->arguments.removeLast(); def->isPrivateSignal = true; } + if (def->arguments.size() == 1 + && def->arguments.constLast().normalizedType == "QMethodRawArguments") { + def->arguments.removeLast(); + def->isRawSlot = true; + } } bool Moc::testFunctionAttribute(FunctionDef *def) @@ -371,17 +355,42 @@ bool Moc::skipCxxAttributes() return false; } -bool Moc::testFunctionRevision(FunctionDef *def) +QTypeRevision Moc::parseRevision() { - if (test(Q_REVISION_TOKEN)) { - next(LPAREN); - QByteArray revision = lexemUntil(RPAREN); - revision.remove(0, 1); - revision.chop(1); + next(LPAREN); + QByteArray revisionString = lexemUntil(RPAREN); + revisionString.remove(0, 1); + revisionString.chop(1); + const QList<QByteArray> majorMinor = revisionString.split(','); + switch (majorMinor.length()) { + case 1: { bool ok = false; - def->revision = revision.toInt(&ok); - if (!ok || def->revision < 0) + const int revision = revisionString.toInt(&ok); + if (!ok || !QTypeRevision::isValidSegment(revision)) error("Invalid revision"); + return QTypeRevision::fromMinorVersion(revision); + } + case 2: { // major.minor + bool ok = false; + const int major = majorMinor[0].toInt(&ok); + if (!ok || !QTypeRevision::isValidSegment(major)) + error("Invalid major version"); + const int minor = majorMinor[1].toInt(&ok); + if (!ok || !QTypeRevision::isValidSegment(minor)) + error("Invalid minor version"); + return QTypeRevision::fromVersion(major, minor); + } + default: + error("Invalid revision"); + return QTypeRevision(); + } +} + +bool Moc::testFunctionRevision(FunctionDef *def) +{ + + if (test(Q_REVISION_TOKEN)) { + def->revision = parseRevision().toEncodedVersion<int>(); return true; } @@ -648,6 +657,11 @@ void Moc::parse() case Q_CLASSINFO_TOKEN: parseClassInfo(&def); break; + case Q_MOC_INCLUDE_TOKEN: + // skip it, the namespace is parsed twice + next(LPAREN); + lexemUntil(RPAREN); + break; case ENUM: { EnumDef enumDef; if (parseEnum(&enumDef)) @@ -691,6 +705,9 @@ void Moc::parse() case Q_DECLARE_METATYPE_TOKEN: parseDeclareMetatype(); break; + case Q_MOC_INCLUDE_TOKEN: + parseMocInclude(); + break; case USING: if (test(NAMESPACE)) { while (test(SCOPE) || test(IDENTIFIER)) @@ -823,6 +840,9 @@ void Moc::parse() case Q_CLASSINFO_TOKEN: parseClassInfo(&def); break; + case Q_MOC_INCLUDE_TOKEN: + parseMocInclude(); + break; case Q_INTERFACES_TOKEN: parseInterfaces(&def); break; @@ -1084,17 +1104,9 @@ void Moc::generate(FILE *out, FILE *jsonOutput) void Moc::parseSlots(ClassDef *def, FunctionDef::Access access) { - int defaultRevision = -1; - if (test(Q_REVISION_TOKEN)) { - next(LPAREN); - QByteArray revision = lexemUntil(RPAREN); - revision.remove(0, 1); - revision.chop(1); - bool ok = false; - defaultRevision = revision.toInt(&ok); - if (!ok || defaultRevision < 0) - error("Invalid revision"); - } + QTypeRevision defaultRevision; + if (test(Q_REVISION_TOKEN)) + defaultRevision = parseRevision(); next(COLON); while (inClass(def) && hasNext()) { @@ -1123,8 +1135,8 @@ void Moc::parseSlots(ClassDef *def, FunctionDef::Access access) continue; if (funcDef.revision > 0) { ++def->revisionedMethods; - } else if (defaultRevision != -1) { - funcDef.revision = defaultRevision; + } else if (defaultRevision.isValid()) { + funcDef.revision = defaultRevision.toEncodedVersion<int>(); ++def->revisionedMethods; } def->slotList += funcDef; @@ -1138,17 +1150,9 @@ void Moc::parseSlots(ClassDef *def, FunctionDef::Access access) void Moc::parseSignals(ClassDef *def) { - int defaultRevision = -1; - if (test(Q_REVISION_TOKEN)) { - next(LPAREN); - QByteArray revision = lexemUntil(RPAREN); - revision.remove(0, 1); - revision.chop(1); - bool ok = false; - defaultRevision = revision.toInt(&ok); - if (!ok || defaultRevision < 0) - error("Invalid revision"); - } + QTypeRevision defaultRevision; + if (test(Q_REVISION_TOKEN)) + defaultRevision = parseRevision(); next(COLON); while (inClass(def) && hasNext()) { @@ -1179,8 +1183,8 @@ void Moc::parseSignals(ClassDef *def) error("Not a signal declaration"); if (funcDef.revision > 0) { ++def->revisionedMethods; - } else if (defaultRevision != -1) { - funcDef.revision = defaultRevision; + } else if (defaultRevision.isValid()) { + funcDef.revision = defaultRevision.toEncodedVersion<int>(); ++def->revisionedMethods; } def->signalList += funcDef; @@ -1241,6 +1245,10 @@ void Moc::createPropertyDef(PropertyDef &propDef) } else if (l[0] == 'R' && l == "REQUIRED") { propDef.required = true; continue; + } else if (l[0] == 'R' && l == "REVISION" && test(LPAREN)) { + prev(); + propDef.revision = parseRevision().toEncodedVersion<int>(); + continue; } QByteArray v, v2; @@ -1273,9 +1281,10 @@ void Moc::createPropertyDef(PropertyDef &propDef) propDef.reset = v + v2; else if (l == "REVISION") { bool ok = false; - propDef.revision = v.toInt(&ok); - if (!ok || propDef.revision < 0) + const int minor = v.toInt(&ok); + if (!ok || !QTypeRevision::isValidSegment(minor)) error(1); + propDef.revision = QTypeRevision::fromMinorVersion(minor).toEncodedVersion<int>(); } else error(2); break; @@ -1483,6 +1492,8 @@ void Moc::parseClassInfo(BaseDef *def) next(COMMA); if (test(STRING_LITERAL)) { infoDef.value = symbol().unquotedLexem(); + } else if (test(Q_REVISION_TOKEN)) { + infoDef.value = QByteArray::number(parseRevision().toEncodedVersion<quint16>()); } else { // support Q_CLASSINFO("help", QT_TR_NOOP("blah")) next(IDENTIFIER); @@ -1560,6 +1571,16 @@ void Moc::parseDeclareMetatype() metaTypes.append(typeName); } +void Moc::parseMocInclude() +{ + next(LPAREN); + QByteArray include = lexemUntil(RPAREN); + // remove parentheses + include.remove(0, 1); + include.chop(1); + includeFiles.append(include); +} + void Moc::parseSlotInPrivate(ClassDef *def, FunctionDef::Access access) { next(LPAREN); diff --git a/src/tools/moc/moc.h b/src/tools/moc/moc.h index a3e20a061e..743749433f 100644 --- a/src/tools/moc/moc.h +++ b/src/tools/moc/moc.h @@ -36,6 +36,7 @@ #include <qjsondocument.h> #include <qjsonarray.h> #include <qjsonobject.h> +#include <qversionnumber.h> #include <stdio.h> #include <ctype.h> @@ -115,6 +116,7 @@ struct FunctionDef bool isConstructor = false; bool isDestructor = false; bool isAbstract = false; + bool isRawSlot = false; QJsonObject toJson() const; static void accessToJson(QJsonObject *obj, Access acs); @@ -257,6 +259,7 @@ public: void parseInterfaces(ClassDef *def); void parseDeclareInterface(); void parseDeclareMetatype(); + void parseMocInclude(); void parseSlotInPrivate(ClassDef *def, FunctionDef::Access access); void parsePrivateProperty(ClassDef *def); @@ -270,6 +273,7 @@ public: bool testFunctionAttribute(FunctionDef *def); bool testFunctionAttribute(Token tok, FunctionDef *def); bool testFunctionRevision(FunctionDef *def); + QTypeRevision parseRevision(); bool skipCxxAttributes(); diff --git a/src/tools/moc/token.h b/src/tools/moc/token.h index 0cc163f9e4..c11ec6a38c 100644 --- a/src/tools/moc/token.h +++ b/src/tools/moc/token.h @@ -179,6 +179,7 @@ QT_BEGIN_NAMESPACE F(Q_SCRIPTABLE_TOKEN) \ F(Q_PRIVATE_PROPERTY_TOKEN) \ F(Q_REVISION_TOKEN) \ + F(Q_MOC_INCLUDE_TOKEN) \ F(SPECIAL_TREATMENT_MARK) \ F(MOC_INCLUDE_BEGIN) \ F(MOC_INCLUDE_END) \ diff --git a/src/tools/moc/util/generate_keywords.cpp b/src/tools/moc/util/generate_keywords.cpp index 9248e9e2e7..c2cfe37fab 100644 --- a/src/tools/moc/util/generate_keywords.cpp +++ b/src/tools/moc/util/generate_keywords.cpp @@ -243,6 +243,7 @@ static const Keyword keywords[] = { { "Q_SCRIPTABLE", "Q_SCRIPTABLE_TOKEN" }, { "Q_PRIVATE_PROPERTY", "Q_PRIVATE_PROPERTY_TOKEN" }, { "Q_REVISION", "Q_REVISION_TOKEN" }, + { "Q_MOC_INCLUDE", "Q_MOC_INCLUDE_TOKEN" }, { "\n", "NEWLINE" }, { "\"", "QUOTE" }, { "\'", "SINGLEQUOTE" }, diff --git a/src/tools/qdbuscpp2xml/.prev_CMakeLists.txt b/src/tools/qdbuscpp2xml/.prev_CMakeLists.txt new file mode 100644 index 0000000000..58a8ea2b08 --- /dev/null +++ b/src/tools/qdbuscpp2xml/.prev_CMakeLists.txt @@ -0,0 +1,45 @@ +# Generated from qdbuscpp2xml.pro. + +##################################################################### +## qdbuscpp2xml Tool: +##################################################################### + +qt_add_tool(qdbuscpp2xml + SOURCES + ../moc/cbordevice.h + ../moc/collectjson.cpp ../moc/collectjson.h + ../moc/generator.cpp ../moc/generator.h + ../moc/moc.cpp ../moc/moc.h + ../moc/outputrevision.h + ../moc/parser.cpp ../moc/parser.h + ../moc/preprocessor.cpp ../moc/preprocessor.h + ../moc/symbols.h + ../moc/token.cpp ../moc/token.h + ../moc/utils.h + qdbuscpp2xml.cpp + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_FOREACH + INCLUDE_DIRECTORIES + ../moc + ../moc/../../3rdparty/tinycbor/src + PUBLIC_LIBRARIES + Qt::CorePrivate +) + +#### Keys ignored in scope 1:.:.:qdbuscpp2xml.pro:<TRUE>: +# QMAKE_TARGET_DESCRIPTION = "Qt D-Bus C++ to XML Compiler" +# _OPTION = "host_build" + +## Scopes: +##################################################################### + +qt_extend_target(qdbuscpp2xml CONDITION force_bootstrap + PUBLIC_LIBRARIES + bootstrap_dbusPrivate +) + +qt_extend_target(qdbuscpp2xml CONDITION NOT force_bootstrap + PUBLIC_LIBRARIES + Qt::DBusPrivate +) diff --git a/src/tools/qdbuscpp2xml/CMakeLists.txt b/src/tools/qdbuscpp2xml/CMakeLists.txt new file mode 100644 index 0000000000..46582793a1 --- /dev/null +++ b/src/tools/qdbuscpp2xml/CMakeLists.txt @@ -0,0 +1,48 @@ +# Generated from qdbuscpp2xml.pro. + +##################################################################### +## qdbuscpp2xml Tool: +##################################################################### + +qt_add_tool(qdbuscpp2xml + TOOLS_TARGET DBus # special case + SOURCES + ../moc/cbordevice.h + ../moc/collectjson.cpp ../moc/collectjson.h + ../moc/generator.cpp ../moc/generator.h + ../moc/moc.cpp ../moc/moc.h + ../moc/outputrevision.h + ../moc/parser.cpp ../moc/parser.h + ../moc/preprocessor.cpp ../moc/preprocessor.h + ../moc/symbols.h + ../moc/token.cpp ../moc/token.h + ../moc/utils.h + qdbuscpp2xml.cpp + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_FOREACH + INCLUDE_DIRECTORIES + ../moc + ../moc/../../3rdparty/tinycbor/src + PUBLIC_LIBRARIES + Qt::CorePrivate + Qt::DBusPrivate + # COMPILE_OPTIONS # special case + # "$$QT_HOST_CFLAGS_DBUS" + # QMAKE_TARGET_DESCRIPTION = "Qt D-Bus C++ to XML Compiler" + # _LOADED = "qt_tool" + # _OPTION = "host_build" +) + +#### Keys ignored in scope 1:.:.:qdbuscpp2xml.pro:<TRUE>: +# QMAKE_TARGET_DESCRIPTION = "Qt D-Bus C++ to XML Compiler" +# _OPTION = "host_build" + +## Scopes: +##################################################################### + +# special case begin +# extend_target(qdbuscpp2xml CONDITION force_bootstrap [...]) +# extend_target(qdbuscpp2xml CONDITION NOT force_bootstrap [...]) +# special case end + diff --git a/src/tools/qdbusxml2cpp/.prev_CMakeLists.txt b/src/tools/qdbusxml2cpp/.prev_CMakeLists.txt new file mode 100644 index 0000000000..ce9438b207 --- /dev/null +++ b/src/tools/qdbusxml2cpp/.prev_CMakeLists.txt @@ -0,0 +1,32 @@ +# Generated from qdbusxml2cpp.pro. + +##################################################################### +## qdbusxml2cpp Tool: +##################################################################### + +qt_add_tool(qdbusxml2cpp + SOURCES + qdbusxml2cpp.cpp + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::CorePrivate +) + +#### Keys ignored in scope 1:.:.:qdbusxml2cpp.pro:<TRUE>: +# QMAKE_TARGET_DESCRIPTION = "Qt D-Bus XML to C++ Compiler" +# _OPTION = "host_build" + +## Scopes: +##################################################################### + +qt_extend_target(qdbusxml2cpp CONDITION NOT force_bootstrap + PUBLIC_LIBRARIES + Qt::DBusPrivate +) + +qt_extend_target(qdbusxml2cpp CONDITION force_bootstrap + PUBLIC_LIBRARIES + bootstrap_dbusPrivate +) diff --git a/src/tools/qdbusxml2cpp/CMakeLists.txt b/src/tools/qdbusxml2cpp/CMakeLists.txt new file mode 100644 index 0000000000..63700f0b6b --- /dev/null +++ b/src/tools/qdbusxml2cpp/CMakeLists.txt @@ -0,0 +1,35 @@ +# Generated from qdbusxml2cpp.pro. + +##################################################################### +## qdbusxml2cpp Tool: +##################################################################### + +qt_add_tool(qdbusxml2cpp + TOOLS_TARGET DBus # special case + SOURCES + qdbusxml2cpp.cpp + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::CorePrivate + Qt::DBusPrivate + # COMPILE_OPTIONS # special case + # "$$QT_HOST_CFLAGS_DBUS" + # QMAKE_TARGET_DESCRIPTION = "Qt D-Bus XML to C++ Compiler" + # _LOADED = "qt_tool" + # _OPTION = "host_build" +) + +#### Keys ignored in scope 1:.:.:qdbusxml2cpp.pro:<TRUE>: +# QMAKE_TARGET_DESCRIPTION = "Qt D-Bus XML to C++ Compiler" +# _OPTION = "host_build" + +## Scopes: +##################################################################### + +# special case begin +# extend_target(qdbusxml2cpp CONDITION NOT force_bootstrap [...]) +# extend_target(qdbusxml2cpp CONDITION NOT QT_FEATURE_commandlineparser AND NOT force_bootstrap [...]) +# extend_target(qdbusxml2cpp CONDITION force_bootstrap [...]) +# special case end diff --git a/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp b/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp index 9825596f3d..0493265164 100644 --- a/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp +++ b/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp @@ -72,9 +72,8 @@ static const char includeList[] = static const char forwardDeclarations[] = "QT_BEGIN_NAMESPACE\n" + "#include <QtCore/qcontainerfwd.h>\n" "class QByteArray;\n" - "template<class T> class QList;\n" - "template<class Key, class Value> class QMap;\n" "class QString;\n" "class QStringList;\n" "class QVariant;\n" diff --git a/src/tools/qlalr/.prev_CMakeLists.txt b/src/tools/qlalr/.prev_CMakeLists.txt new file mode 100644 index 0000000000..9ff8a54ce4 --- /dev/null +++ b/src/tools/qlalr/.prev_CMakeLists.txt @@ -0,0 +1,26 @@ +# Generated from qlalr.pro. + +##################################################################### +## qlalr Tool: +##################################################################### + +qt_add_tool(qlalr + SOURCES + compress.cpp compress.h + cppgenerator.cpp cppgenerator.h + dotgraph.cpp dotgraph.h + grammar.cpp grammar_p.h + lalr.cpp lalr.h + main.cpp + parsetable.cpp parsetable.h + recognizer.cpp recognizer.h + DEFINES + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::Gui +) + +#### Keys ignored in scope 1:.:.:qlalr.pro:<TRUE>: +# OTHER_FILES = "lalr.g" +# QMAKE_TARGET_DESCRIPTION = "Qt Look Ahead LR Parser Generator" +# _OPTION = "host_build" diff --git a/src/tools/qlalr/CMakeLists.txt b/src/tools/qlalr/CMakeLists.txt new file mode 100644 index 0000000000..437c8d918f --- /dev/null +++ b/src/tools/qlalr/CMakeLists.txt @@ -0,0 +1,27 @@ +# Generated from qlalr.pro. + +##################################################################### +## qlalr Tool: +##################################################################### + +qt_add_tool(qlalr + TOOLS_TARGET Core # special case + SOURCES + compress.cpp compress.h + cppgenerator.cpp cppgenerator.h + dotgraph.cpp dotgraph.h + grammar.cpp grammar_p.h + lalr.cpp lalr.h + main.cpp + parsetable.cpp parsetable.h + recognizer.cpp recognizer.h + DEFINES + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::Core # special case +) + +#### Keys ignored in scope 1:.:.:qlalr.pro:<TRUE>: +# OTHER_FILES = "lalr.g" +# QMAKE_TARGET_DESCRIPTION = "Qt Look Ahead LR Parser Generator" +# _OPTION = "host_build" diff --git a/src/tools/qlalr/lalr.h b/src/tools/qlalr/lalr.h index 473ea89769..16c957624f 100644 --- a/src/tools/qlalr/lalr.h +++ b/src/tools/qlalr/lalr.h @@ -32,7 +32,6 @@ #include <QtCore/qset.h> #include <QtCore/qstack.h> #include <QtCore/qmap.h> -#include <QtCore/qlinkedlist.h> #include <QtCore/qstring.h> #include <QtCore/qtextstream.h> #include <QtCore/qpair.h> diff --git a/src/tools/qvkgen/.prev_CMakeLists.txt b/src/tools/qvkgen/.prev_CMakeLists.txt new file mode 100644 index 0000000000..994b97a9f1 --- /dev/null +++ b/src/tools/qvkgen/.prev_CMakeLists.txt @@ -0,0 +1,16 @@ +# Generated from qvkgen.pro. + +##################################################################### +## qvkgen Tool: +##################################################################### + +qt_add_tool(qvkgen + SOURCES + qvkgen.cpp + PUBLIC_LIBRARIES + Qt::Gui +) + +#### Keys ignored in scope 1:.:.:qvkgen.pro:<TRUE>: +# QMAKE_TARGET_DESCRIPTION = "Qt Vulkan Header Generator" +# _OPTION = "host_build" diff --git a/src/tools/qvkgen/CMakeLists.txt b/src/tools/qvkgen/CMakeLists.txt new file mode 100644 index 0000000000..0f72a8b633 --- /dev/null +++ b/src/tools/qvkgen/CMakeLists.txt @@ -0,0 +1,17 @@ +# Generated from qvkgen.pro. + +##################################################################### +## qvkgen Tool: +##################################################################### + +qt_add_tool(qvkgen + TOOLS_TARGET Gui # special case + SOURCES + qvkgen.cpp + PUBLIC_LIBRARIES + Qt::Core # special case +) + +#### Keys ignored in scope 1:.:.:qvkgen.pro:<TRUE>: +# QMAKE_TARGET_DESCRIPTION = "Qt Vulkan Header Generator" +# _OPTION = "host_build" diff --git a/src/tools/rcc/.prev_CMakeLists.txt b/src/tools/rcc/.prev_CMakeLists.txt new file mode 100644 index 0000000000..307f08bfa7 --- /dev/null +++ b/src/tools/rcc/.prev_CMakeLists.txt @@ -0,0 +1,37 @@ +# Generated from rcc.pro. + +##################################################################### +## rcc Tool: +##################################################################### + +qt_add_tool(rcc + BOOTSTRAP + SOURCES + main.cpp + rcc.cpp rcc.h + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_FOREACH + QT_RCC + INCLUDE_DIRECTORIES + ${CMAKE_CURRENT_SOURCE_DIR} +) + +#### Keys ignored in scope 1:.:.:rcc.pro:<TRUE>: +# QMAKE_TARGET_DESCRIPTION = "Qt Resource Compiler" +# _OPTION = "host_build" + +## Scopes: +##################################################################### + +qt_extend_target(rcc CONDITION QT_FEATURE_zstd AND NOT CMAKE_CROSSCOMPILING + DEFINES + QT_FEATURE_zstd=1 + LIBRARIES + ZSTD::ZSTD +) + +qt_extend_target(rcc CONDITION CMAKE_CROSSCOMPILING OR NOT QT_FEATURE_zstd + DEFINES + QT_FEATURE_zstd=-1 +) diff --git a/src/tools/rcc/CMakeLists.txt b/src/tools/rcc/CMakeLists.txt new file mode 100644 index 0000000000..e7f45314c3 --- /dev/null +++ b/src/tools/rcc/CMakeLists.txt @@ -0,0 +1,38 @@ +# Generated from rcc.pro. + +##################################################################### +## rcc Tool: +##################################################################### + +qt_add_tool(rcc + BOOTSTRAP + TOOLS_TARGET Core # special case + SOURCES + main.cpp + rcc.cpp rcc.h + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_FOREACH + QT_RCC + INCLUDE_DIRECTORIES + ${CMAKE_CURRENT_SOURCE_DIR} +) + +#### Keys ignored in scope 1:.:.:rcc.pro:<TRUE>: +# QMAKE_TARGET_DESCRIPTION = "Qt Resource Compiler" +# _OPTION = "host_build" + +## Scopes: +##################################################################### + +qt_extend_target(rcc CONDITION QT_FEATURE_zstd AND NOT CMAKE_CROSSCOMPILING + DEFINES + QT_FEATURE_zstd=1 + LIBRARIES + ZSTD::ZSTD +) + +qt_extend_target(rcc CONDITION CMAKE_CROSSCOMPILING OR NOT QT_FEATURE_zstd + DEFINES + QT_FEATURE_zstd=-1 +) diff --git a/src/tools/rcc/rcc.cpp b/src/tools/rcc/rcc.cpp index 7188c81300..5bd1fba272 100644 --- a/src/tools/rcc/rcc.cpp +++ b/src/tools/rcc/rcc.cpp @@ -744,10 +744,9 @@ bool RCCResourceLibrary::addFile(const QString &alias, const RCCFileInfo &file) const QString filename = nodes.at(nodes.size()-1); RCCFileInfo *s = new RCCFileInfo(file); s->m_parent = parent; - typedef QHash<QString, RCCFileInfo*>::const_iterator ChildConstIterator; - const ChildConstIterator cbegin = parent->m_children.constFind(filename); - const ChildConstIterator cend = parent->m_children.constEnd(); - for (ChildConstIterator it = cbegin; it != cend; ++it) { + auto cbegin = parent->m_children.constFind(filename); + auto cend = parent->m_children.constEnd(); + for (auto it = cbegin; it != cend; ++it) { if (it.key() == filename && it.value()->m_language == s->m_language && it.value()->m_country == s->m_country) { for (const QString &name : qAsConst(m_fileNames)) { @@ -823,7 +822,7 @@ QStringList RCCResourceLibrary::dataFiles() const pending.push(m_root); while (!pending.isEmpty()) { RCCFileInfo *file = pending.pop(); - for (QHash<QString, RCCFileInfo*>::iterator it = file->m_children.begin(); + for (auto it = file->m_children.begin(); it != file->m_children.end(); ++it) { RCCFileInfo *child = it.value(); if (child->m_flags & RCCFileInfo::Directory) @@ -838,10 +837,9 @@ QStringList RCCResourceLibrary::dataFiles() const // Determine map of resource identifier (':/newPrefix/images/p1.png') to file via recursion static void resourceDataFileMapRecursion(const RCCFileInfo *m_root, const QString &path, RCCResourceLibrary::ResourceDataFileMap &m) { - typedef QHash<QString, RCCFileInfo*>::const_iterator ChildConstIterator; const QChar slash = QLatin1Char('/'); - const ChildConstIterator cend = m_root->m_children.constEnd(); - for (ChildConstIterator it = m_root->m_children.constBegin(); it != cend; ++it) { + const auto cend = m_root->m_children.constEnd(); + for (auto it = m_root->m_children.constBegin(); it != cend; ++it) { const RCCFileInfo *child = it.value(); const QString childName = path + slash + child->m_name; if (child->m_flags & RCCFileInfo::Directory) { @@ -1149,8 +1147,7 @@ bool RCCResourceLibrary::writeDataBlobs() QString errorMessage; while (!pending.isEmpty()) { RCCFileInfo *file = pending.pop(); - for (QHash<QString, RCCFileInfo*>::iterator it = file->m_children.begin(); - it != file->m_children.end(); ++it) { + for (auto it = file->m_children.cbegin(); it != file->m_children.cend(); ++it) { RCCFileInfo *child = it.value(); if (child->m_flags & RCCFileInfo::Directory) pending.push(child); @@ -1214,8 +1211,7 @@ bool RCCResourceLibrary::writeDataNames() qint64 offset = 0; while (!pending.isEmpty()) { RCCFileInfo *file = pending.pop(); - for (QHash<QString, RCCFileInfo*>::iterator it = file->m_children.begin(); - it != file->m_children.end(); ++it) { + for (auto it = file->m_children.cbegin(); it != file->m_children.cend(); ++it) { RCCFileInfo *child = it.value(); if (child->m_flags & RCCFileInfo::Directory) pending.push(child); diff --git a/src/tools/tracegen/.prev_CMakeLists.txt b/src/tools/tracegen/.prev_CMakeLists.txt new file mode 100644 index 0000000000..87bcf362d6 --- /dev/null +++ b/src/tools/tracegen/.prev_CMakeLists.txt @@ -0,0 +1,20 @@ +# Generated from tracegen.pro. + +##################################################################### +## tracegen Tool: +##################################################################### + +qt_add_tool(tracegen + BOOTSTRAP + SOURCES + etw.cpp etw.h + helpers.cpp helpers.h + lttng.cpp lttng.h + panic.cpp panic.h + provider.cpp provider.h + qtheaders.cpp qtheaders.h + tracegen.cpp +) + +#### Keys ignored in scope 1:.:.:tracegen.pro:<TRUE>: +# _OPTION = "host_build" diff --git a/src/tools/tracegen/CMakeLists.txt b/src/tools/tracegen/CMakeLists.txt new file mode 100644 index 0000000000..0f12f823c4 --- /dev/null +++ b/src/tools/tracegen/CMakeLists.txt @@ -0,0 +1,21 @@ +# Generated from tracegen.pro. + +##################################################################### +## tracegen Tool: +##################################################################### + +qt_add_tool(tracegen + BOOTSTRAP + TOOLS_TARGET Core # special case + SOURCES + etw.cpp etw.h + helpers.cpp helpers.h + lttng.cpp lttng.h + panic.cpp panic.h + provider.cpp provider.h + qtheaders.cpp qtheaders.h + tracegen.cpp +) + +#### Keys ignored in scope 1:.:.:tracegen.pro:<TRUE>: +# _OPTION = "host_build" diff --git a/src/tools/uic/.prev_CMakeLists.txt b/src/tools/uic/.prev_CMakeLists.txt new file mode 100644 index 0000000000..4cd28d7070 --- /dev/null +++ b/src/tools/uic/.prev_CMakeLists.txt @@ -0,0 +1,44 @@ +# Generated from uic.pro. + +##################################################################### +## uic Tool: +##################################################################### + +qt_add_tool(uic + SOURCES + cpp/cppwritedeclaration.cpp cpp/cppwritedeclaration.h + cpp/cppwriteincludes.cpp cpp/cppwriteincludes.h + cpp/cppwriteinitialization.cpp cpp/cppwriteinitialization.h + customwidgetsinfo.cpp customwidgetsinfo.h + databaseinfo.cpp databaseinfo.h + driver.cpp driver.h + main.cpp + option.h + python/pythonwritedeclaration.cpp python/pythonwritedeclaration.h + python/pythonwriteimports.cpp python/pythonwriteimports.h + shared/language.cpp shared/language.h + treewalker.cpp treewalker.h + ui4.cpp ui4.h + uic.cpp uic.h + utils.h + validator.cpp validator.h + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_FOREACH + QT_UIC + INCLUDE_DIRECTORIES + ${CMAKE_CURRENT_SOURCE_DIR} + ${PROJECT_BINARY_DIR}/src/tools/uic + cpp + python + shared + PUBLIC_LIBRARIES + Qt::Gui +) + +#### Keys ignored in scope 1:.:.:uic.pro:<TRUE>: +# QMAKE_TARGET_DESCRIPTION = "Qt User Interface Compiler" +# _OPTION = "host_build" + +## Scopes: +##################################################################### diff --git a/src/tools/uic/CMakeLists.txt b/src/tools/uic/CMakeLists.txt new file mode 100644 index 0000000000..21fd232349 --- /dev/null +++ b/src/tools/uic/CMakeLists.txt @@ -0,0 +1,45 @@ +# Generated from uic.pro. + +##################################################################### +## uic Tool: +##################################################################### + +qt_add_tool(uic + TOOLS_TARGET Widgets # special case + SOURCES + cpp/cppwritedeclaration.cpp cpp/cppwritedeclaration.h + cpp/cppwriteincludes.cpp cpp/cppwriteincludes.h + cpp/cppwriteinitialization.cpp cpp/cppwriteinitialization.h + customwidgetsinfo.cpp customwidgetsinfo.h + databaseinfo.cpp databaseinfo.h + driver.cpp driver.h + main.cpp + option.h + python/pythonwritedeclaration.cpp python/pythonwritedeclaration.h + python/pythonwriteimports.cpp python/pythonwriteimports.h + shared/language.cpp shared/language.h + treewalker.cpp treewalker.h + ui4.cpp ui4.h + uic.cpp uic.h + utils.h + validator.cpp validator.h + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_FOREACH + QT_UIC + INCLUDE_DIRECTORIES + ${CMAKE_CURRENT_SOURCE_DIR} + # ${PROJECT_BINARY_DIR}/src/tools/uic # special case remove + cpp + python + shared + #PUBLIC_LIBRARIES # special case remove + #Qt::Gui # special case remove +) + +#### Keys ignored in scope 1:.:.:uic.pro:<TRUE>: +# QMAKE_TARGET_DESCRIPTION = "Qt User Interface Compiler" +# _OPTION = "host_build" + +## Scopes: +##################################################################### diff --git a/src/tools/uic/cpp/cppwriteinitialization.h b/src/tools/uic/cpp/cppwriteinitialization.h index ab996a2800..0a6ddbb3c8 100644 --- a/src/tools/uic/cpp/cppwriteinitialization.h +++ b/src/tools/uic/cpp/cppwriteinitialization.h @@ -85,7 +85,7 @@ namespace CPP { struct WriteInitialization : public TreeWalker { - using DomPropertyList = QList<DomProperty*>; + using DomPropertyList = QVector<DomProperty*>; using DomPropertyMap = QHash<QString, DomProperty*>; WriteInitialization(Uic *uic); diff --git a/src/tools/uic/main.cpp b/src/tools/uic/main.cpp index d6c63de869..6f342fb398 100644 --- a/src/tools/uic/main.cpp +++ b/src/tools/uic/main.cpp @@ -80,10 +80,6 @@ int runUic(int argc, char *argv[]) noImplicitIncludesOption.setDescription(QStringLiteral("Disable generation of #include-directives.")); parser.addOption(noImplicitIncludesOption); - QCommandLineOption noStringLiteralOption(QStringList() << QStringLiteral("s") << QStringLiteral("no-stringliteral")); - noStringLiteralOption.setDescription(QStringLiteral("Deprecated. The use of this option won't take any effect.")); - parser.addOption(noStringLiteralOption); - QCommandLineOption postfixOption(QStringLiteral("postfix")); postfixOption.setDescription(QStringLiteral("Postfix to add to all generated classnames.")); postfixOption.setValueName(QStringLiteral("postfix")); @@ -134,9 +130,6 @@ int runUic(int argc, char *argv[]) } language::setLanguage(language); - if (parser.isSet(noStringLiteralOption)) - fprintf(stderr, "The -s, --no-stringliteral option is deprecated and it won't take any effect.\n"); - QString inputFile; if (!parser.positionalArguments().isEmpty()) inputFile = parser.positionalArguments().at(0); diff --git a/src/tools/uic/qclass_lib_map.h b/src/tools/uic/qclass_lib_map.h index 8cebe65a00..5793b3ad13 100644 --- a/src/tools/uic/qclass_lib_map.h +++ b/src/tools/uic/qclass_lib_map.h @@ -194,13 +194,6 @@ QT_CLASS_LIB(QHashIterator, QtCore, qhash.h) QT_CLASS_LIB(QMutableHashIterator, QtCore, qhash.h) QT_CLASS_LIB(QLine, QtCore, qline.h) QT_CLASS_LIB(QLineF, QtCore, qline.h) -QT_CLASS_LIB(QLinkedListData, QtCore, qlinkedlist.h) -QT_CLASS_LIB(QLinkedListNode, QtCore, qlinkedlist.h) -QT_CLASS_LIB(QLinkedList, QtCore, qlinkedlist.h) -QT_CLASS_LIB(QLinkedListIterator, QtCore, qlinkedlist.h) -QT_CLASS_LIB(QMutableLinkedListIterator, QtCore, qlinkedlist.h) -QT_CLASS_LIB(QLinkedListIterator, QtCore, qlinkedlist.h) -QT_CLASS_LIB(QMutableLinkedListIterator, QtCore, qlinkedlist.h) QT_CLASS_LIB(QListData, QtCore, qlist.h) QT_CLASS_LIB(QList, QtCore, qlist.h) QT_CLASS_LIB(QListIterator, QtCore, qlist.h) @@ -319,21 +312,6 @@ QT_CLASS_LIB(QMacGLCompatTypes, QtOpenGL, qgl.h) QT_CLASS_LIB(QMacCompatGLint, QtOpenGL, qgl.h) QT_CLASS_LIB(QMacCompatGLuint, QtOpenGL, qgl.h) QT_CLASS_LIB(QMacCompatGLenum, QtOpenGL, qgl.h) -QT_CLASS_LIB(QGLFormat, QtOpenGL, qgl.h) -QT_CLASS_LIB(QGLContext, QtOpenGL, qgl.h) -QT_CLASS_LIB(QGLWidget, QtOpenGL, qgl.h) -QT_CLASS_LIB(QOpenGLWidget,QtWidgets,qopenglwidget.h) -QT_CLASS_LIB(QGLBuffer, QtOpenGL, qglbuffer.h) -QT_CLASS_LIB(QGLColormap, QtOpenGL, qglcolormap.h) -QT_CLASS_LIB(QGLFramebufferObject, QtOpenGL, qglframebufferobject.h) -QT_CLASS_LIB(QGLFramebufferObjectFormat, QtOpenGL, qglframebufferobject.h) -QT_CLASS_LIB(QGLFunctions, QtOpenGL, qglfunctions.h) -QT_CLASS_LIB(QGLFunctionsPrivate, QtOpenGL, qglfunctions.h) -QT_CLASS_LIB(QGLPixelBuffer, QtOpenGL, qglpixelbuffer.h) -QT_CLASS_LIB(QGLScreenSurfaceFunctions, QtOpenGL, qglscreen_qws.h) -QT_CLASS_LIB(QGLScreen, QtOpenGL, qglscreen_qws.h) -QT_CLASS_LIB(QGLShader, QtOpenGL, qglshaderprogram.h) -QT_CLASS_LIB(QGLShaderProgram, QtOpenGL, qglshaderprogram.h) QT_CLASS_LIB(QDomImplementation, QtXml, qdom.h) QT_CLASS_LIB(QDomNode, QtXml, qdom.h) QT_CLASS_LIB(QDomNodeList, QtXml, qdom.h) @@ -635,7 +613,6 @@ QT_CLASS_LIB(QIconEngineFactoryInterface, QtGui, qiconengineplugin.h) QT_CLASS_LIB(QIconEnginePlugin, QtGui, qiconengineplugin.h) QT_CLASS_LIB(QIconEngineFactoryInterfaceV2, QtGui, qiconengineplugin.h) QT_CLASS_LIB(QIconEnginePluginV2, QtGui, qiconengineplugin.h) -QT_CLASS_LIB(QImageTextKeyLang, QtGui, qimage.h) QT_CLASS_LIB(QImage, QtGui, qimage.h) QT_CLASS_LIB(QImageIOHandler, QtGui, qimageiohandler.h) QT_CLASS_LIB(QImageIOHandlerFactoryInterface, QtGui, qimageiohandler.h) @@ -644,9 +621,6 @@ QT_CLASS_LIB(QImageReader, QtGui, qimagereader.h) QT_CLASS_LIB(QImageWriter, QtGui, qimagewriter.h) QT_CLASS_LIB(QMovie, QtGui, qmovie.h) QT_CLASS_LIB(QPicture, QtGui, qpicture.h) -QT_CLASS_LIB(QPictureIO, QtGui, qpicture.h) -QT_CLASS_LIB(QPictureFormatInterface, QtGui, qpictureformatplugin.h) -QT_CLASS_LIB(QPictureFormatPlugin, QtGui, qpictureformatplugin.h) QT_CLASS_LIB(QPixmap, QtGui, qpixmap.h) QT_CLASS_LIB(QPixmapCache, QtGui, qpixmapcache.h) QT_CLASS_LIB(QAbstractItemDelegate, QtWidgets, qabstractitemdelegate.h) diff --git a/src/tools/uic/ui4.cpp b/src/tools/uic/ui4.cpp index f52a8bd7d4..ed00e2c3fd 100644 --- a/src/tools/uic/ui4.cpp +++ b/src/tools/uic/ui4.cpp @@ -862,13 +862,13 @@ void DomActionGroup::setElementActionGroup(const QVector<DomActionGroup *> &a) m_actionGroup = a; } -void DomActionGroup::setElementProperty(const QList<DomProperty *> &a) +void DomActionGroup::setElementProperty(const QVector<DomProperty *> &a) { m_children |= Property; m_property = a; } -void DomActionGroup::setElementAttribute(const QList<DomProperty *> &a) +void DomActionGroup::setElementAttribute(const QVector<DomProperty *> &a) { m_children |= Attribute; m_attribute = a; @@ -944,13 +944,13 @@ void DomAction::write(QXmlStreamWriter &writer, const QString &tagName) const writer.writeEndElement(); } -void DomAction::setElementProperty(const QList<DomProperty *> &a) +void DomAction::setElementProperty(const QVector<DomProperty *> &a) { m_children |= Property; m_property = a; } -void DomAction::setElementAttribute(const QList<DomProperty *> &a) +void DomAction::setElementAttribute(const QVector<DomProperty *> &a) { m_children |= Attribute; m_attribute = a; @@ -1058,13 +1058,13 @@ void DomButtonGroup::write(QXmlStreamWriter &writer, const QString &tagName) con writer.writeEndElement(); } -void DomButtonGroup::setElementProperty(const QList<DomProperty *> &a) +void DomButtonGroup::setElementProperty(const QVector<DomProperty *> &a) { m_children |= Property; m_property = a; } -void DomButtonGroup::setElementAttribute(const QList<DomProperty *> &a) +void DomButtonGroup::setElementAttribute(const QVector<DomProperty *> &a) { m_children |= Attribute; m_attribute = a; @@ -1717,13 +1717,13 @@ void DomLayout::write(QXmlStreamWriter &writer, const QString &tagName) const writer.writeEndElement(); } -void DomLayout::setElementProperty(const QList<DomProperty *> &a) +void DomLayout::setElementProperty(const QVector<DomProperty *> &a) { m_children |= Property; m_property = a; } -void DomLayout::setElementAttribute(const QList<DomProperty *> &a) +void DomLayout::setElementAttribute(const QVector<DomProperty *> &a) { m_children |= Attribute; m_attribute = a; @@ -1938,7 +1938,7 @@ void DomRow::write(QXmlStreamWriter &writer, const QString &tagName) const writer.writeEndElement(); } -void DomRow::setElementProperty(const QList<DomProperty *> &a) +void DomRow::setElementProperty(const QVector<DomProperty *> &a) { m_children |= Property; m_property = a; @@ -1983,7 +1983,7 @@ void DomColumn::write(QXmlStreamWriter &writer, const QString &tagName) const writer.writeEndElement(); } -void DomColumn::setElementProperty(const QList<DomProperty *> &a) +void DomColumn::setElementProperty(const QVector<DomProperty *> &a) { m_children |= Property; m_property = a; @@ -2059,7 +2059,7 @@ void DomItem::write(QXmlStreamWriter &writer, const QString &tagName) const writer.writeEndElement(); } -void DomItem::setElementProperty(const QList<DomProperty *> &a) +void DomItem::setElementProperty(const QVector<DomProperty *> &a) { m_children |= Property; m_property = a; @@ -2268,13 +2268,13 @@ void DomWidget::setElementClass(const QStringList &a) m_class = a; } -void DomWidget::setElementProperty(const QList<DomProperty *> &a) +void DomWidget::setElementProperty(const QVector<DomProperty *> &a) { m_children |= Property; m_property = a; } -void DomWidget::setElementAttribute(const QList<DomProperty *> &a) +void DomWidget::setElementAttribute(const QVector<DomProperty *> &a) { m_children |= Attribute; m_attribute = a; @@ -2386,7 +2386,7 @@ void DomSpacer::write(QXmlStreamWriter &writer, const QString &tagName) const writer.writeEndElement(); } -void DomSpacer::setElementProperty(const QList<DomProperty *> &a) +void DomSpacer::setElementProperty(const QVector<DomProperty *> &a) { m_children |= Property; m_property = a; @@ -5984,7 +5984,7 @@ void DomDesignerData::write(QXmlStreamWriter &writer, const QString &tagName) co writer.writeEndElement(); } -void DomDesignerData::setElementProperty(const QList<DomProperty *> &a) +void DomDesignerData::setElementProperty(const QVector<DomProperty *> &a) { m_children |= Property; m_property = a; diff --git a/src/tools/uic/ui4.h b/src/tools/uic/ui4.h index 94cdb40b6f..90b17f7027 100644 --- a/src/tools/uic/ui4.h +++ b/src/tools/uic/ui4.h @@ -472,11 +472,11 @@ public: inline QVector<DomActionGroup *> elementActionGroup() const { return m_actionGroup; } void setElementActionGroup(const QVector<DomActionGroup *> &a); - inline QList<DomProperty*> elementProperty() const { return m_property; } - void setElementProperty(const QList<DomProperty *> &a); + inline QVector<DomProperty *> elementProperty() const { return m_property; } + void setElementProperty(const QVector<DomProperty *> &a); - inline QList<DomProperty*> elementAttribute() const { return m_attribute; } - void setElementAttribute(const QList<DomProperty *> &a); + inline QVector<DomProperty *> elementAttribute() const { return m_attribute; } + void setElementAttribute(const QVector<DomProperty *> &a); private: // attribute data @@ -487,8 +487,8 @@ private: uint m_children = 0; QVector<DomAction *> m_action; QVector<DomActionGroup *> m_actionGroup; - QList<DomProperty*> m_property; - QList<DomProperty*> m_attribute; + QVector<DomProperty *> m_property; + QVector<DomProperty *> m_attribute; enum Child { Action = 1, @@ -519,11 +519,11 @@ public: inline void clearAttributeMenu() { m_has_attr_menu = false; } // child element accessors - inline QList<DomProperty*> elementProperty() const { return m_property; } - void setElementProperty(const QList<DomProperty *> &a); + inline QVector<DomProperty *> elementProperty() const { return m_property; } + void setElementProperty(const QVector<DomProperty *> &a); - inline QList<DomProperty*> elementAttribute() const { return m_attribute; } - void setElementAttribute(const QList<DomProperty *> &a); + inline QVector<DomProperty *> elementAttribute() const { return m_attribute; } + void setElementAttribute(const QVector<DomProperty *> &a); private: // attribute data @@ -535,8 +535,8 @@ private: // child element data uint m_children = 0; - QList<DomProperty*> m_property; - QList<DomProperty*> m_attribute; + QVector<DomProperty *> m_property; + QVector<DomProperty *> m_attribute; enum Child { Property = 1, @@ -581,11 +581,11 @@ public: inline void clearAttributeName() { m_has_attr_name = false; } // child element accessors - inline QList<DomProperty*> elementProperty() const { return m_property; } - void setElementProperty(const QList<DomProperty *> &a); + inline QVector<DomProperty *> elementProperty() const { return m_property; } + void setElementProperty(const QVector<DomProperty *> &a); - inline QList<DomProperty*> elementAttribute() const { return m_attribute; } - void setElementAttribute(const QList<DomProperty *> &a); + inline QVector<DomProperty *> elementAttribute() const { return m_attribute; } + void setElementAttribute(const QVector<DomProperty *> &a); private: // attribute data @@ -594,8 +594,8 @@ private: // child element data uint m_children = 0; - QList<DomProperty*> m_property; - QList<DomProperty*> m_attribute; + QVector<DomProperty *> m_property; + QVector<DomProperty *> m_attribute; enum Child { Property = 1, @@ -891,11 +891,11 @@ public: inline void clearAttributeColumnMinimumWidth() { m_has_attr_columnMinimumWidth = false; } // child element accessors - inline QList<DomProperty*> elementProperty() const { return m_property; } - void setElementProperty(const QList<DomProperty *> &a); + inline QVector<DomProperty *> elementProperty() const { return m_property; } + void setElementProperty(const QVector<DomProperty *> &a); - inline QList<DomProperty*> elementAttribute() const { return m_attribute; } - void setElementAttribute(const QList<DomProperty *> &a); + inline QVector<DomProperty *> elementAttribute() const { return m_attribute; } + void setElementAttribute(const QVector<DomProperty *> &a); inline QVector<DomLayoutItem *> elementItem() const { return m_item; } void setElementItem(const QVector<DomLayoutItem *> &a); @@ -925,8 +925,8 @@ private: // child element data uint m_children = 0; - QList<DomProperty*> m_property; - QList<DomProperty*> m_attribute; + QVector<DomProperty *> m_property; + QVector<DomProperty *> m_attribute; QVector<DomLayoutItem *> m_item; enum Child { @@ -1023,14 +1023,14 @@ public: void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; // child element accessors - inline QList<DomProperty*> elementProperty() const { return m_property; } - void setElementProperty(const QList<DomProperty *> &a); + inline QVector<DomProperty *> elementProperty() const { return m_property; } + void setElementProperty(const QVector<DomProperty *> &a); private: // child element data uint m_children = 0; - QList<DomProperty*> m_property; + QVector<DomProperty *> m_property; enum Child { Property = 1 @@ -1047,14 +1047,14 @@ public: void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; // child element accessors - inline QList<DomProperty*> elementProperty() const { return m_property; } - void setElementProperty(const QList<DomProperty *> &a); + inline QVector<DomProperty *> elementProperty() const { return m_property; } + void setElementProperty(const QVector<DomProperty *> &a); private: // child element data uint m_children = 0; - QList<DomProperty*> m_property; + QVector<DomProperty *> m_property; enum Child { Property = 1 @@ -1082,8 +1082,8 @@ public: inline void clearAttributeColumn() { m_has_attr_column = false; } // child element accessors - inline QList<DomProperty*> elementProperty() const { return m_property; } - void setElementProperty(const QList<DomProperty *> &a); + inline QVector<DomProperty *> elementProperty() const { return m_property; } + void setElementProperty(const QVector<DomProperty *> &a); inline QVector<DomItem *> elementItem() const { return m_item; } void setElementItem(const QVector<DomItem *> &a); @@ -1098,7 +1098,7 @@ private: // child element data uint m_children = 0; - QList<DomProperty*> m_property; + QVector<DomProperty *> m_property; QVector<DomItem *> m_item; enum Child { @@ -1136,11 +1136,11 @@ public: inline QStringList elementClass() const { return m_class; } void setElementClass(const QStringList &a); - inline QList<DomProperty*> elementProperty() const { return m_property; } - void setElementProperty(const QList<DomProperty *> &a); + inline QVector<DomProperty *> elementProperty() const { return m_property; } + void setElementProperty(const QVector<DomProperty *> &a); - inline QList<DomProperty*> elementAttribute() const { return m_attribute; } - void setElementAttribute(const QList<DomProperty *> &a); + inline QVector<DomProperty *> elementAttribute() const { return m_attribute; } + void setElementAttribute(const QVector<DomProperty *> &a); inline QVector<DomRow *> elementRow() const { return m_row; } void setElementRow(const QVector<DomRow *> &a); @@ -1183,8 +1183,8 @@ private: // child element data uint m_children = 0; QStringList m_class; - QList<DomProperty*> m_property; - QList<DomProperty*> m_attribute; + QVector<DomProperty *> m_property; + QVector<DomProperty *> m_attribute; QVector<DomRow *> m_row; QVector<DomColumn *> m_column; QVector<DomItem *> m_item; @@ -1227,8 +1227,8 @@ public: inline void clearAttributeName() { m_has_attr_name = false; } // child element accessors - inline QList<DomProperty*> elementProperty() const { return m_property; } - void setElementProperty(const QList<DomProperty *> &a); + inline QVector<DomProperty *> elementProperty() const { return m_property; } + void setElementProperty(const QVector<DomProperty *> &a); private: // attribute data @@ -1237,7 +1237,7 @@ private: // child element data uint m_children = 0; - QList<DomProperty*> m_property; + QVector<DomProperty *> m_property; enum Child { Property = 1 @@ -2805,14 +2805,14 @@ public: void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; // child element accessors - inline QList<DomProperty*> elementProperty() const { return m_property; } - void setElementProperty(const QList<DomProperty *> &a); + inline QVector<DomProperty *> elementProperty() const { return m_property; } + void setElementProperty(const QVector<DomProperty *> &a); private: // child element data uint m_children = 0; - QList<DomProperty*> m_property; + QVector<DomProperty *> m_property; enum Child { Property = 1 diff --git a/src/tools/uic/utils.h b/src/tools/uic/utils.h index 34c4ab23d4..bd543c7bb7 100644 --- a/src/tools/uic/utils.h +++ b/src/tools/uic/utils.h @@ -42,7 +42,7 @@ inline bool toBool(const QString &str) inline QString toString(const DomString *str) { return str ? str->text() : QString(); } -inline QHash<QString, DomProperty *> propertyMap(const QList<DomProperty *> &properties) +inline QHash<QString, DomProperty *> propertyMap(const QVector<DomProperty *> &properties) { QHash<QString, DomProperty *> map; for (DomProperty *p : properties) |