summaryrefslogtreecommitdiffstats
path: root/src/tools
Commit message (Collapse)AuthorAgeFilesLines
* wasmdeployqt: silence msvc warningsTim Blechmann4 days2-2/+2
| | | | | | | | | | | * use size_t for qHash overload * return false in copyPreloadQmlImports error path. Amends b6cdc2a6ef89e72470eb24e7cf18eae4d861b20c Change-Id: Ifd62e187c205b129423509fbd391d6ba659255cd Reviewed-by: Mate Barany <mate.barany@qt.io> Reviewed-by: Even Oscar Andersen <even.oscar.andersen@qt.io>
* Add explicit error if Android package name is missingAlexey Edelev4 days1-0/+5
| | | | | | | | | | | androidtestrunner expects that Android package name is stored as an attribute in the AndroidManifest. The value is required to run android application and grant the required permissions, so it makes sense to add the early exit and provide the clear error message if the package name is missing. Change-Id: Icfeb80f79c4540dd4829add0c1b61e2d61fcec8e Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Unify AndroidManifest processing in androidtestrunnerAlexey Edelev4 days1-41/+20
| | | | | | | Optimisation bit, read and process AndroidManifest only once. Change-Id: Iaf66c748d98e67c9eebfabdf7357aa480929b8de Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Remove -g flag from apk installation commandAlexey Edelev4 days1-7/+8
| | | | | | | | Grant permission precisely using 'adb shell pm grant' command. This also unifies the permission granting for aab and apk packages. Change-Id: Iff5e45703830afed7c6fd98c940cb63626fe66f4 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Teach androidtestrunner grant permissions from AndroidManifestAlexey Edelev6 days1-0/+26
| | | | | | | | | | | | | In classic APK mode androidtestrunner uses adb '-g' flag to grant all runtime permissions at application installatio phase. There is no such flag for the Android bundle tool. Read permissions from AndroidManifest.xml and grant the permissions using 'adb shell pm grant' command. Fixes: QTBUG-138597 Change-Id: Iea2132d0fdb36123719e1d2ea8355f4733e0d5cf Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* moc: add lexem() functions that return QByteArrayViewsAurélien Brooke6 days5-38/+41
| | | | | | | | | | | | | | | | | In many cases, the result of the lexem() functions is only used as a view and is not stored. To avoid constructing thousands of temporary QByteArray instances, introduce lexemView() and unquotedLexemView() that return a QByteArrayView instead. We need to carefuly remove .constData() calls on previously-QByteArrays, because QByteArrayViews may not be NUL-terminated, so we must transfer the size information to e.g. QString::fromLocal8bit(). This saves only about 3 % of temporary allocs but enables further optimizations. Change-Id: I55e389f7602ac42d3e2f83b38161286d5c17bb48 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* moc: use the new QStack::push(T&&) function to push on the symbols stackAurélien Brooke7 days1-2/+2
| | | | | | | This avoids making costly copies of SafeSymbols. Change-Id: Ib29dec98ced43712ce758ffe4caaf123bd509dd1 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* CMake: only make symlinks for dependencies under the Gradle project dirAssam Boudjelthia8 days1-7/+31
| | | | | | | | | | | | | | | Create symlinks for shared libraries, jars and resource, etc. instead of a full copy. This can be useful to avoid projects taking extra space, and instead directly use, for example, library files referenced from a Qt installation. Gradle will make sure to deal with the symlinks and expand them to their respective files and ensuring the file APK will have proper files. Task-number: QTBUG-94777 Change-Id: I64b90c72eac5fb729f077abffc35c388a9396529 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* CMake: add QT_ANDROID_LEGACY_PACKAGING to specify packaging methodAssam Boudjelthia9 days1-0/+8
| | | | | | | Add a CMake property to allow enabling/disabling legacy packaging. Change-Id: I84d770aa050d18108d9e93d341b536a2906b8c5f Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* moc: reserve() enough space for the SymbolStackAurélien Brooke10 days1-0/+1
| | | | | | | | | | | | | | | | | | We know that the "symbols" stack will be at least of size one, and runtime analysis shows that it can grow up to 7: Max size Occurences 2 3778 3 5157 4 10920 5 6888 6 281 7 18 Call reserve() so that we never need to reallocate and move SafeSymbols structs, which are not trivial to move. Change-Id: I2c4a1f8637ff3636bc78b19e7bef61371f614944 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* moc: avoid unnecessary detachments of the SymbolStackAurélien Brooke10 days1-4/+5
| | | | | | | | | | | | The hasNext() and next() functions frequently call QStack<T>::top(), which is not const in this context. As a result, this causes unnecessary detachments of the underlying QList. Add a helper member function constTop() that ensures we access the top() without making temporary copies of the whole SymbolStack. Change-Id: I7801296d38192657fdc84a714de1774a42392330 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* moc: ensure printMsg() respects QByteArrayView boundariesAurélien Brooke10 days1-7/+9
| | | | | | | | | | | | | | | | printMsg() receives a message as a QByteArrayView, which is not guaranteed to be NUL-terminated. Using fprintf with %s could lead to reading past the view's bounds. This wasn't an issue previously, since all QByteArrayViews passed were derived from QByteArrays or const char *, which are NUL-terminated by design. To future-proof the code, use %.*s with msg.size() to ensure only the bytes inside bounds are printed. Change-Id: I690e0dabdfc4ea9c23426ef98950845a35cd407a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* wasm: Introduce wasmdeployqtPiotr Wiercinski12 days9-0/+707
| | | | | | | | | | | | | | | | | | | Introduce wasmdeployqt which is analogous to other deployment tools that we currently have like "windeployqt" or "androiddeployqt". Running wasmdeployqt makes it much easier to deploy and ship dynamically linked WebAssembly applications. In case of statically linked applications this tool does not provide any extra value as static apps are ready to be shipped by default. This commit also removes older python scripts which were supposed to serve this same goal as well as some cmake machinery arround it. Fixes: QTBUG-134580 Change-Id: Ib5c8ab128f49897f91c510bfec03b0b772e6548a Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* uic: support label attribute in UI filesMasoud Jami2025-07-092-0/+15
| | | | | | | | | | | | | | provide support for label attribute in ui files. The label is used to categorize ID-based translations on Linguist. This is a part of a larger change in qttools (3c0836a55d) Pick-to: 6.8 Pick-to: 6.9 Pick-to: 6.10 Change-Id: If9f010f84d65daea7d8fc5622f7a1d660de064e6 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* Rework android permission handlingAlexey Edelev2025-07-071-3/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current QT_ANDROID_PERMISSIONS property format is inconvenient for use in the CMake generator expressions and mixes attribute syntax with CMake list syntax. This suggests the new format for the QT_ANDROID_PERMISSIONS property. Each element is encoded the following way: <android:name>\;<permission>\\\;<extra1>\;<value>\\\;<extra2>\;<value> Elements are separated using standard CMake semicolons. QT_ANDROID_PERMISSIONS is now transitive LINK property. This feature deprecates the '<permission' records in the Qt6<Module>-android-dependencies.xml files. If application links Qt Module that requires specific permissions, these permissions will be written to the application deployment-settings.json file. The 'permissions' record in the application deployment-settings.json file is changed too, the new format is following: "permissions": [{ "name": "permission", "extra1": "value", "extra2": "value" }] Comparing to the previous format each extra attribute is stored under a separate key in permission object. IMPORTANT: androiddeployqt has no backward compatibility with the old format. With QT_USE_ANDROID_MODERN_BUNDLE enabled permissions are written directly to the AndroidManifest.xml without androiddeployqt involved. Supply tests for the Android permissions, that reads the manifest-declared permissions in test using the Android PackageManager API. Change-Id: I691df33c70acc6c7139302b119edc791fef8d5ef Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Teach androidtestrunner running android bundlesAlexey Edelev2025-07-071-55/+100
| | | | | | | | | | | | | Add the modern android bundles support to androidtestrunner. The tool uses Android bundle tool to unpack and install Android bundles. If the Android bundletool found in the system and QT_USE_ANDROID_MODERN_BUNDLE is enabled Qt tests prefer run 'aab' but not APKs. This unlocks testing of Android bundles in CI and locally. Change-Id: I98be662f5c383127a8401371757ea708a495a94f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Migrate to the gradle.settings approach when generating Android projectsAlexey Edelev2025-07-071-2/+5
| | | | | | | | | | | | | | | | | | | | | | This approach is more flexible and modernizes the gradle project structure for Qt apps. We now try to reproduce the CMake Android project structure of user applications, in the modern Android project structure described here: https://developer.android.com/build The new structure using the module based application build and unlocks the support for the use of dynamic features and Android libraries(aar). All gradle-related rules are generated by CMake and androiddeployqt is used in the auxiliary mode only(--aux-mode option). Update gradle templates. To opt-in the modern deployment use the QT_ANDROID_MODERN_BUNDLE variable. Task-number: QTBUG-116683 Task-number: QTBUG-124600 Change-Id: I343b884dea77a7b3b9059cf876a81c3693d0294b Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* moc: add line numbers to properties, methods, etcSami Shalayel2025-07-012-0/+10
| | | | | | | | | | Those are needed by qmlls to be able to jump to C++ definitions. Task-number: QTBUG-119143 Task-number: QTBUG-128393 Change-Id: I4fb9394b0a22a02501bafdbe95a7cd8998adfe11 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Reland: CMake: Annotate some qt_find_package calls with MODULEAlexandru Croitor2025-06-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A qt_find_package call first tries to find a Config package with the CONFIG mode option, and if not found, falls back to an arg-less mode which searches both Config and Find modules. For some packages, we know we want to find the Find module because there can't be a Config package, e.g our FindWrap modules or any of the other Find modules we carry in our cmake directory. So we should annotate these calls with MODULE. Aside from slightly faster configuration, there is another reason to do so. Future versions of CMake will automatically log find_package calls that have a state change (e.g. Not Found -> Found) into CMakeConfigureLog.yaml. Due to the Config-first logic in qt_find_package, we always unset the Foo_DIR variable if the Config package is not found. This means that there will be a constant build up of not-found messages in the log. Explicitly annotating the calls with MODULE will prevent this. Do that. This commit relands f1a59e974f013fcf8629d8cbacab58d895523100 This reverts commit 0ce82b78a35026cb56ff76d1c24b311008934a53. Pick-to: 6.10 Change-Id: I5d37579d2f4957215ce1475b5c0ec8509d77c83d Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* moc: avoid two back-to-back calls to nameToBuiltinType()Thiago Macieira2025-06-211-3/+1
| | | | | | | | This is the only other place in the moc sources where this function is called, so avoid two calls into the QMetaType built-in type search. Change-Id: Ia4a554c3bc5393fdc07bfffdc6071f5b9759afe8 Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
* moc: stop using qMetaTypeTypeInternalThiago Macieira2025-06-211-14/+20
| | | | | | | | | | | | Just use QMetaType::fromName(). We bypass the id() call because anything that came from the registry is, by definition, registered. Besides, inside a bootstrapped tool, there are no custom types anyway. Drive-by static'ify the functions. Pick-to: 6.10 Change-Id: Ib8363744834da6d79046fffd0adb680219c829e0 Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
* tools: drop all references in qtpathsLiang Qi2025-06-191-12/+7
| | | | | | | | | | | | to avoid gcc 15 -Wdangling-reference warning. This follows 9379b95b533216593d4d37c0cbf70f91d1ce037a, 8a6750475410629741de0417c28f574c25c65338 and 18def77d27f88ce26b6af29fe56a80429fed555d. Pick-to: 6.10 6.9 6.8 6.5 Change-Id: If327439bd76e954cde4f9c5261dce7fa18c237a1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Revert "CMake: Annotate some qt_find_package calls with MODULE"Alexandru Croitor2025-06-191-1/+1
| | | | | | | | | | | | | | | | | | | This breaks reconfiguring Qt in various ways, one of which is CMake Error at cmake/QtTargetHelpers.cmake:1557 (message): PkgConfig::ATSPI2 is not a valid target. This happens because pkg_check_modules sets ATSPI2_FOUND to 1, so qt_find_package thinks it shouldn't find the FindATSPI2.cmake module, which ends up not creating the ATSPI2 target. This reverts commit f1a59e974f013fcf8629d8cbacab58d895523100. Pick-to: 6.10 Fixes: QTBUG-137870 Change-Id: Ica74a236c6b1bb9d7ca9af29175cb2e84a93251b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* windeployqt: Fix access of invalid iterators crashOliver Wolff2025-06-191-3/+6
| | | | | | | | | | | | | | We must not use a range based loop here as the container might be changed inside the loop which will invalidate the iterators which in turn might lead to a crash. While at it the QFileInfo used to obtain the binary's path was moved out of the loop as a small cleanup. Fixes: QTBUG-137763 Pick-to: 6.10 6.9 6.8 Change-Id: I86fb8b683fb98a897d0059ef1dc869e26b2c213f Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* moc: Fix invalid codegen for qualified propertiesFabian Kosmale2025-06-182-9/+24
| | | | | | | | | | | We must not add an enum qualifie if it is already emitted because it was part of the property signature. Amends dea21545b32cf04337ca470483991dc7da39ba5b Fixes: QTBUG-137850 Pick-to: 6.10 6.9 Change-Id: I07a27014023a60f07a97e323a7d7e5b9d233d555 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* moc: remove unnecessary space inside the parameter of reinterpret_castThiago Macieira2025-06-171-2/+2
| | | | | | | | It's always been unnecessary in this position. Pick-to: 6.10 Change-Id: Ia6a411f0cdaacd625a2cfffd2a94adbde2fbff6b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* CMake: Annotate some qt_find_package calls with MODULEAlexandru Croitor2025-06-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | A qt_find_package call first tries to find a Config package with the CONFIG mode option, and if not found, falls back to an arg-less mode which searches both Config and Find modules. For some packages, we know we want to find the Find module because there can't be a Config package, e.g our FindWrap modules or any of the other Find modules we carry in our cmake directory. So we should annotate these calls with MODULE. Aside from slightly faster configuration, there is another reason to do so. Future versions of CMake will automatically log find_package calls that have a state change (e.g. Not Found -> Found) into CMakeConfigureLog.yaml. Due to the Config-first logic in qt_find_package, we always unset the Foo_DIR variable if the Config package is not found. This means that there will be a constant build up of not-found messages in the log. Explicitly annotating the calls with MODULE will prevent this. Do that. Pick-to: 6.10 Change-Id: I465b015ac18f8a09b9a5c86cec7b6312a0bfbdf1 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* moc: handle enum / member name conflictFabian Kosmale2025-06-164-22/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | It is possible (and somewhat common on Windows) to have getters and types with the same name. This so far would cause issues in the moc generated code. To fix it, we remember all names of enums found in a class, and prefix references to such types with "enum". Note that this requires a new set to track them, as other parts of moc currently treat `eunm Foo { Val }` and `typedef enum { Val } Foo` the same, but `enum Foo` is only valid C++ for the former. A similar issue would also exist with inner structs, but that seems to be less common, so isn't implemented yet. We also use the opportunity to drop the typeNameForCast member in ArgumentDef, as we can't do the enum disambiguation with it easily. Instead, we do it on-demand, which should also give a beneficial memory/runtime trade-off in any case. Fixes: QTBUG-137452 Pick-to: 6.10 6.9 Change-Id: I07341f971c9ca65edecbea890ebc33e007087c43 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* moc: support __has_includeFabian Kosmale2025-06-144-75/+130
| | | | | | | | | | | | | __has_include is part of C++17, but moc did not handle it so far. This commit fixes moc to correctly support it. It should be noted that support for __has_include relies on all necessary include paths being passed to moc. Pick-to: 6.10 6.9 6.8 Fixes: QTBUG-136097 Change-Id: I7284e97dea12d1637b38349d32e090c0102124e7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix androiddeployqt copying build directoryJani Korteniemi2025-06-121-0/+4
| | | | | | | | | | | | | | | When project's Android package source directory is set to the project level (instead of project/android) androiddeployqt keeps copying the build directory under itself infinitely. Add check to copyFiles: -If android source dir is the same as project source dir -And if current directory copied is in build directory path Pick-to: 6.5 6.8 6.9 6.10 Fixes: QTBUG-126743 Change-Id: If45766152c6cbf9e2ee916baa5a15282d3fedaf2 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Copy Android files from the application source in aux modeAaron McCarthy2025-06-111-7/+6
| | | | | | | | | | | | The application provided overrides of the Android files were not being used in aux mode. In aux mode androiddeployqt was only copying the Android files from the Qt sources and updating them. With this change androiddeployqt also copies the Android files from the application source, allowing overrides prior to template processing. Change-Id: Idf790f1c270691dab8fe093c20e84bed79bf481d Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Android: Support multi-arg signal generation in androiddeployqtPetri Virkkunen2025-06-101-13/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit introduces support for generating Java code for multi-argument QML signals. Pre-existing code remains unchanged, and the new code is only executed when the number of params in a signal is above 1. Multi-arg signals are handled with a new generated interface type, named after the signal, which has a default method that takes an Object[] array and calls the user-implemented signal method with the arguments cast to the desired types. For example, a QML signal with the following signature: signal manyTypeArgSignal(intValue: int, boolValue: bool, doubleValue: double, stringValue: string) Is generated into this Java code: @FunctionalInterface public interface manyTypeArgSignalListener { default void onSignalEmitted(Object[] args) { onSignalEmitted((Integer) args[0], (Boolean) args[1], (Double) args[2], (String) args[3]); } void onManyTypeArgSignal(Integer intValue, Boolean boolValue, Double doubleValue, String stringValue); } public int connectManyTypeArgSignalListener(manyTypeArgSignalListener signalListener) { return connectSignalListener("manyTypeArgSignal", new Class[]{ Integer.class, Boolean.class, Double.class, String.class }, signalListener); } Task-number: QTBUG-124489 Change-Id: I94e3e88e807017bcbeba16cf0e34263e28e5885f Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Android: Don't reparse same paths in QML to Java codegenOlli Vuolteenaho2025-06-021-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | appImports can have the same directory added multiple times - first if it's found in the xxx_conf.rsp file and secondly for the inner qmldir scanner. This is because the xxx_conf.rsp file can have both the qmlModule directory and the parent of that directory as importPaths. For example like this (the paths are truncated to save characters): -importPath .../build/qt_generated/qtquickview/qmlModule -importPath .../build/qt_generated/qtquickview In this case when the "inner qmldir" finder processes the later path, it would go to ./qmlModule, find the qmldir and add another .../build/qt_generated/qtquickview/qmlModule to appImports. Also, if there were other qmldir files somewhere under qmlModule those would also get added twice, which would increase generation time yet again. This commits solves the issue by removing duplicates from appImports. Amends 7ed88eb565d40b195aa868e67777872ef07a5ea2. Pick-to: 6.10 6.9 6.8 Fixes: QTBUG-137316 Change-Id: I641065479aec0f3d9ae1a8727a03bf62eb169ad6 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* CMake: qtwaylandscanner doesn't need Wayland::ClientSamuli Piippo2025-06-021-1/+1
| | | | | | | | | Remove dependency to Wayland::Client as it's not needed and prevents building qtwaylandscanner for Windows where Client is not supported but scanner is needed for cross-compilations. Change-Id: Ia38dda58c0800799673ae2d1e29626ce6b399f04 Reviewed-by: Liang Qi <liang.qi@qt.io>
* moc: indent the generated code for ResetPropertyGiuseppe D'Angelo2025-05-271-1/+1
| | | | | | | | Make it match the one for the other property-related operations. Change-Id: I9248cca81f9ab48cf6765f66d696631e91f5ad07 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qtwaylandscanner: Handle destructor requests with new_id correctlyDavid Redondo2025-05-271-1/+6
| | | | | | | | | | | | | | | | | Instead of generating code like return request(args) m_object = nullptr do new_id = request(args) m_object = nullptr return new_id This came up in the color managment protocol where wp_image_description_creator_params_v1::create creates a new object but is also a destructor at the same time. Pick-to: 6.9 Change-Id: Ic5d9f72656d99740bf6665c07393f69ee78af013 Reviewed-by: David Redondo <qt@david-redondo.de>
* uic: Handle horizontal and vertical layout size constraints (Qt 7)Friedemann Kleint2025-05-241-0/+6
| | | | | | | | | | Ignore vertical constraint and use the horizontal one for the property. Task-number: QTBUG-17730 Pick-to: 6.9 6.8 Change-Id: I6317ce8c1c1e2ac2bf6ae3b24a60735a72dcb7bc Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Use __weak for implementation of QObjCWeakPointerTor Arne Vestbø2025-05-241-0/+9
| | | | | | | | | | | | | | | | | By moving the implementation to qcore_mac.mm, and using a union for the object pointer, we can build qcore_mac.mm with -fobjc-weak to take advantage of the automatic weak-tracking. This allows us to drop the manual handling via ObjC associated objects, while also allowing non-Objective-C code to use QObjCWeakPointer. In particular we want to use it for QMacKeyValueObserver, which today runs the risk of removing the observation on an object that is long gone. Pick-to: 6.9 Change-Id: I5d605e5ac82b39223b246d6758d0da88a1702357 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* [Android] Skip goodToCopy checkAlexey Edelev2025-05-221-0/+3
| | | | | | | | | | | | | Skip the goodToCopy check for the libraries that do not belong to the main ABI. The rationale of this descision - goodToCopy was passing in per-ABI build already, so we don't need to take care about this check in main-ABI build. Also we indroduced the last-stand check of bundled libraries in 7499fd0229d63f969bf6ca58d3b764b96395bed2. Fixes: QTBUG-136493 Pick-to: 6.8 6.9 Change-Id: I438af867b0f25e0ea557bb5066f1c243bb6ab356 Reviewed-by: Bartlomiej Moskal <bartlomiej.moskal@qt.io>
* [Android] Store the main ABI in deployment settingsAlexey Edelev2025-05-221-0/+6
| | | | | | | | | | Add the main Android ABI to the deployment settings. It's useful for skipping functionality that is done in per-ABI builds. Task-number: QTBUG-136493 Pick-to: 6.5 6.8 6.9 Change-Id: I9f59ffb1cae3107bbe695d99c33dd3426c163e6e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Merge Wayland client from qtwayland repository into qtbaseLiang Qi2025-05-136-0/+1592
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The qtwayland repository has been filtered for commits relating to the Wayland client, via the following git-filter-repo command: git filter-repo --paths-from-file wayland-move.txt --force --refs HEAD And then merged into the qtbase repository via git merge --allow-unrelated-histories The following git-filter-repo instructions have been used: src/CMakeLists.txt src/CMakeLists.txt==>src/platformsupport/wayland/CMakeLists.txt src/configure.cmake src/configure.cmake==>src/platformsupport/wayland/configure.cmake src/client/Qt6WaylandClientMacros.cmake src/client/Qt6WaylandClientMacros.cmake==>src/tools/qtwaylandscanner/Qt6WaylandClientMacros.cmake src/compositor/Qt6WaylandCompositorMacros.cmake src/compositor/Qt6WaylandCompositorMacros.cmake==>src/tools/qtwaylandscanner/Qt6WaylandCompositorMacros.cmake src/3rdparty/ src/3rdparty/patches/==>src/3rdparty/wayland/patches/ src/3rdparty/protocol/ivi/REUSE.toml==> src/3rdparty/protocol/ivi/ivi-application.xml==> src/3rdparty/protocol/ivi/ivi-controller.xml==> src/3rdparty/protocol/ivi/qt_attribution.json==> src/3rdparty/protocol/ src/3rdparty/protocol/==>src/3rdparty/wayland/protocols/ src/extensions/qt-shell-unstable-v1.xml==> src/extensions/ src/extensions/==>src/3rdparty/wayland/extensions/ src/client/ src/client/==>src/plugins/platforms/wayland/ src/global/ src/global/==>src/plugins/platforms/wayland/globalprivate/ src/shared/ src/shared/==>src/plugins/platforms/wayland/shared/ src/plugins/decorations/adwaita/==> src/plugins/decorations/ src/plugins/decorations/==>src/plugins/platforms/wayland/plugins/decorations/ src/plugins/hardwareintegration/client/ src/plugins/hardwareintegration/client/==>src/plugins/platforms/wayland/plugins/hardwareintegration/ src/plugins/platform/ src/plugins/platform/==>src/plugins/platforms/wayland/plugins/platform/ src/plugins/shellintegration/qt-shell/==> src/plugins/shellintegration/ivi-shell/==> src/plugins/shellintegration/ src/plugins/shellintegration/==>src/plugins/platforms/wayland/plugins/shellintegration/ src/plugins/CMakeLists.txt src/plugins/CMakeLists.txt==>src/plugins/platforms/wayland/plugins/CMakeLists.txt src/qtwaylandscanner/ src/qtwaylandscanner/==>src/tools/qtwaylandscanner/ tests/auto/client/iviapplication/CMakeLists.txt==> tests/auto/client/iviapplication/tst_iviapplication.cpp==> tests/auto/client/shared/iviapplication.h==> tests/auto/client/shared/iviapplication.cpp==> tests/auto/client/ tests/auto/client/==>tests/auto/wayland/ tests/auto/cmake/test_waylandclient/ tests/auto/cmake/test_waylandclient/==>tests/auto/cmake/test_waylandclient/ Done-with: Alexandru Croitor <alexandru.croitor@qt.io> Done-with: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Task-number: QTBUG-133223 Change-Id: I46c325724141fdbfcc117d12fb5f92852613e72a
| * compositor: Add CMake options to control visibility of generated symbolsEskil Abrahamsen Blomfeldt2024-08-081-2/+8
| | | | | | | | | | | | | | | | | | | | This exposes the public-code / private-code options for the waylandscanner. It is the server-side version of 2962aa9ed9487bc6aa54810ed4ace114b4f7d723. Task-number: QTBUG-126301 Change-Id: I32490f6cbc9cac876c1f07c3930e8bafbc395e75 Reviewed-by: David Redondo <qt@david-redondo.de>
| * Change license for tools filesLucie Gérard2024-05-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | According to QUIP-18 [1], all tools files should be LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 [1]: https://contribute.qt-project.org/quips/18 Pick-to: 6.7 Task-number: QTBUG-121787 Change-Id: I9a08423046dd325dd267d2390faf8d2eb0c76315 Reviewed-by: Kai Köhne <kai.koehne@qt.io>
| * qtwaylandscanner: don't track source file locationSamuli Piippo2024-04-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | Generate source code without information about original location of the source file. Useful for reproducible builds. Task-number: QTBUG-105926 Task-number: QTBUG-105913 Change-Id: I5f9b3f90e6e85c772a92425e7b796a9d63c3c713 Reviewed-by: Ari Parkkila <ari.parkkila@qt.io> Reviewed-by: David Edmundson <davidedmundson@kde.org>
| * client: Add CMake options to control visibility of generated symbolsDavid Redondo2024-04-151-2/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using public-code by default is problematic if multiple libraries contain wayland interface definitions generated with public-code which exports the symbols of the interface definitions from the library. If not all libraries are build against the same protocol version and the symbol is resolved to a version generated from an older version of the protocol, then libwayland will detect a protocol error if a request or event from the newer version is used. This introduces two new options PRIVATE_CODE and PUBLIC_CODE to qt6_generate_wayland_protocol_client_sources which correspond to the wayland-scanner options. For backwards compatibility PUBLIC_CODE is the default. Change-Id: Ia30ec4b83419962b768207d7353c495e11b0268e Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
| * scanner: Make it work with mismatching protocol and file nameDavid Redondo2024-03-201-8/+11
| | | | | | | | | | | | | | | | | | | | | | The names of the files that wayland-scanner generates are based on the protocol file name not the protocol name that is defined in the xml. When those two mismatch qtwaylandscanner would generate code that fails to build. Pick-to: 6.7 Change-Id: Ieecd7a122177530ab1ff890367ce53809a8bb7b9 Reviewed-by: David Edmundson <davidedmundson@kde.org>
| * qtwaylandscanner: Send null for a null QString with allow-nullKai Uwe Broulik2024-02-281-7/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `toUtf8().constData()` on a null `QString` results in an empty string sent over the wire, which is distinct from `null` when the request has "allow-null" specified. Notably `wl_data_offer.accept` uses a null mime_type for "not accepted". [ChangeLog][Important Behavior Changes][qtwaylandscanner] String arguments in a request will now send null rather than empty string for a null QString if the argument is declared with "allow-null". Change-Id: I4b78246e4da7b60680d7797fd6309755f44d2bb6 Reviewed-by: David Edmundson <davidedmundson@kde.org>
| * Update wayland protocol XML to version 1.22.0David Edmundson2023-06-012-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | This updates only the protocol definition, implementations will need additional commits to opt into using them. The upstream XML specification changed in a way that requires newer libwayland to generate without warnings in strict mode. To support older setups the strict argument to wayland-scanner has been removed. Change-Id: I265a9e208bbf107895b493b952d65f6178ac76e7 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
| * Exclude sources generated by the scanner from CMake Unity (Jumbo) buildsFriedemann Kleint2023-02-131-4/+6
| | | | | | | | | | | | | | | | | | The generated helper function wlRegistryBind() clashes. Pick-to: 6.5 Task-number: QTBUG-109394 Change-Id: Ib814d4576c7565b0413ca16bc0bf5e95caa92c33 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
| * Add dependencies of wayland protocolsInho Lee2022-11-072-0/+6
| | | | | | | | | | | | | | | | Some macros are missing DEPENDS for add_custom_commands Fixes: QTBUG-108142 Change-Id: Ifacb2ea9bf3003c10dd407a8c77fc06b893b6a65 Reviewed-by: David Edmundson <davidedmundson@kde.org>