summaryrefslogtreecommitdiffstats
path: root/qmake/library
Commit message (Collapse)AuthorAgeFilesLines
* QDuplicateTracker: accept the number of elements to reserve as a ctor argumentMarc Mutz2021-07-141-2/+1
| | | | | | | | | | | | This prevents us from first reserve()ing Prealloc elements, and then possibly reserve()ing a larger number, which leaves the first bucket list's memory unused. Consequently, deprecate reserve(). Change-Id: Ifc0a5a021097f4589557e7b5e45d9d0892797ade Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Fix "qmake -spec foo" call for cross buildsJoerg Bornemann2021-04-261-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In a cross built Qt, for example Qt for Android, calling "qmake -spec android-clang" led to an error message: "Could not find qmake spec '-qtconf'." This happened, because: - the qmake in Qt for Android is a wrapper script that calls "qmake -qtconf qt_target.conf -spec android-clang" - the first stage of command line argument handling in qmake garbled the call to "qmake -spec -qtconf qt_target.conf android-clang" We do not modify the order of arguments anymore. Instead, we skip the "-qtconf <file>" arguments in the first argument handling stage that is supposed to determine qmake's modus operandi (like -project or -query). In addition, we need to fix the assignment of QLibraryInfoPrivate::qtconfManualPath which was only done if QMakeGlobals::addCommandLineArguments returned ArgumentsOk. However, this function returns ArgumentUnknown, if it encounters an argument it cannot handle - like the project name. Now, we assign QLibraryInfoPrivate::qtconfManualPath if there was no error detected. Document the return values of addCommandLineArguments. This amends commit 661b586a69740bd9a1791622f8b238d290ebe00d. Pick-to: 6.1 6.0 Fixes: QTBUG-93079 Task-number: QTBUG-85136 Change-Id: I12ec25b17d64c00be2a3904b7c4a975b781500a0 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Improve QMakeLibraryInfo encapsulationAlexey Edelev2021-03-012-0/+35
| | | | | | | | | | | QMakeLibraryInfo uses external data to produce paths. This causes issues when trying to use it out of the existing qmake environment. Add data fields that contain the path to the binary that uses QMakeLibraryInfo and manually specified qtconf. Task-number: QTBUG-75870 Change-Id: Ic6fa274ede3a9287826ff66c79f155b10d0d455c Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Replace some more erase/remove patterns with removeIfGiuseppe D'Angelo2021-01-101-1/+1
| | | | | Change-Id: I6c6f33450fbfd798e5ef71a8ba18f590581dc3a2 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Use (new) erase()/erase_if() algorithmsMarc Mutz2020-12-051-15/+4
| | | | | Change-Id: I45c18fd45c20b226e44d16315e3ebb6c305d4ab0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix undefined behavior in ProString/ProKey::appendToJoerg Bornemann2020-12-021-0/+4
| | | | | | | | | We must not pass null pointers to memcpy. Pick-to: 6.0 Fixes: QTBUG-88780 Change-Id: Ic1d77b4672310a3f6d0d4fbee5f2889e3e4d219d Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Replace discouraged Q_MOVABLE_TYPE by Q_RELOCATABLE_TYPEAndreas Buhr2020-11-303-6/+6
| | | | | | | | | | | | | | Q_MOVABLE_TYPE was conceived before C++ had move semantics. Now, with move semantics, its name is misleading. Q_RELOCATABLE_TYPE was introduced as a synonym to Q_MOVABLE_TYPE. Usage of Q_MOVABLE_TYPE is discouraged now. This patch replaces all usages of Q_MOVABLE_TYPE by Q_RELOCATABLE_TYPE in QtBase. As the two are synonymous, this patch should have no impact on users. Pick-to: 6.0 Change-Id: Ie653984363198c1aeb1f70f8e0fa189aae38eb5c Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* qmake: Sync back changes from qttoolsJoerg Bornemann2020-11-263-2/+13
| | | | | | | | | | | | | | | | Copy back changes to qmake internals that were done in qttools. This makes it easier to keep the qmakelib copies in sync. The code guarded by PROEVALUATOR_CUMULATIVE is not used by qmake itself, but only by lupdate and Qt Creator. It seems to be sensible to have the same behavior with regards to feature file evaluation in both projects. It was originally introduced in qttools for QTBUG-62478. The change regarding QT_BOOTSTRAPPED is safe, because the 'process' feature is available and off in the boostrapped case. Change-Id: I030ca8b093c017040a9ff9f4bb09a7cca4aa8964 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* qmake: Fix qHash-related integer conversion warningsFriedemann Kleint2020-10-173-12/+12
| | | | | | | Use size_t instead of uint. Change-Id: I1dc38f61653f9bfc4ddeddcc65b0271aa4ad1256 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: Compile fixJarek Kobus2020-09-181-1/+1
| | | | | | | This code, after applying it to linguist, didn't compile. Change-Id: I25011a44ca059a149f041f8f07848232883140cc Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Cleanup ProString::append/prependLars Knoll2020-09-102-55/+38
| | | | | | | | | | Don't use evil hacks that make assumptions about QString internals. Change-Id: I663602d197f0fcf62886dbfb9a87547097cdab04 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* Use QList instead of QVector in qmakeJarek Kobus2020-09-051-4/+4
| | | | | | | Task-number: QTBUG-84469 Change-Id: I4a3da94702f1dad1ee10b1ba3c6712b6f40338c9 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Add ; to Q_UNUSEDLars Schmertmann2020-07-072-4/+4
| | | | | | | | This is required to remove the ; from the macro with Qt 6. Task-number: QTBUG-82978 Change-Id: I3f0b6717956ca8fa486bed9817b89dfa19f5e0e1 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Get rid of shared null for QByteArray, QString and QVectorLars Knoll2020-07-062-2/+2
| | | | | | | | | | | | | | As a side effect, data() can now return a nullptr. This has the potential to cause crashes in existig code. To work around this, return an empty string from QString::data() and QByteArray::data() for now. For Qt 6 (and once all our internal issues are fixed), data() will by default return a nullptr for a null QString, but we'll offer a #define to enable backwards compatible behavior. Change-Id: I4f66d97ff1dce3eb99a239f1eab9106fa9b1741a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Port qmake from QStringRef to QStringViewLars Knoll2020-06-0510-82/+81
| | | | | | Change-Id: Ie07a976cd3c634e04c8b9b1e0a6cacd4c2d94939 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* qmake: fix a few deprecated QChar(non-char-type) warningsMarc Mutz2020-05-122-8/+8
| | | | | | | | The QChar ctors from non-char-types are going to be deprecated. Change-Id: I17d7916fb1dac9889ead61daca846b1257d17312 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add a QRegularExpression::fromWildcard() convenience methodLars Knoll2020-05-061-1/+1
| | | | | | | | | Simplify constructing QRegularExpression objects from a glob pattern. Change-Id: I06f60b1dfea3da969e2474dedd44b6ca5d456d7d Reviewed-by: Simon Hausmann <hausmann@gmail.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Port qmake over to user QRegularExpressionLars Knoll2020-05-053-35/+58
| | | | | | | | | Use the DotMatchesEverythingOption for all places where we interpret .pro files, to increase compatibility with QRegExp. Change-Id: I347d6b17858069f3c9cedcedd04df58358d83f27 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Build qmake with QT_USE_STRINGBUILDERLars Knoll2020-05-051-20/+54
| | | | | | | | Should improve performance and is going to be required in the future anyway. Change-Id: I89d7c50441d2491da1ab0a4d564dcc91f52ade85 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Remove textcodec codepaths in qmakeLars Knoll2020-05-012-30/+1
| | | | | | | They were anyway unused since years Change-Id: I559b5042f6b942d7a940ac374d2b2740f2d4dc12 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Change qHash() to work with size_t instead of uintLars Knoll2020-04-094-5/+5
| | | | | | | | | | | This is required, so that QHash and QSet can hold more than 2^32 items on 64 bit platforms. The actual hashing functions for strings are still 32bit, this will be changed in a follow-up commit. Change-Id: I4372125252486075ff3a0b45ecfa818359fe103b Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2020-03-033-6/+6
|\ | | | | | | Change-Id: If36d96c0fef3de5ab6503977501c55c62a2ecc97
| * QMake: Use Qt::SplitBehavior in preference to QString::SplitBehaviorEdward Welbourne2020-02-283-6/+6
| | | | | | | | | | | | | | | | The Qt version was added in 5.14 "for use as eventual replacement for QString::SplitBehavior." Move another step closer to that goal. Change-Id: I3f1b836cfb47bba0fdc27f2c3aa7b0576d123dca Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Use a QMap instead of a QHash for the ProValueMapLars Knoll2020-02-031-1/+2
|/ | | | | | | | | | qmake relies heavily on stable references to nodes stored within the container. QHash in Qt6 doesn't offer that guarantee, so use a QMap instead, that supports this. Change-Id: Ifcf3d67098585ea26f4e02f4570d407a56e33c9c Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: Don't call QDir::count() over and overUlf Hermann2019-10-301-1/+1
| | | | | | | | | This can be expensive. We don't expect files to be added to the directory while qmake is running, and if that happened, the result would be unpredictable anyway. Change-Id: I5db93132046c1284130bbe51ce1ecd2a14665206 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge remote-tracking branch 'origin/5.13' into devLiang Qi2019-07-221-2/+3
|\ | | | | | | | | | | | | Conflicts: qmake/generators/makefile.cpp Change-Id: Ib3715e626f2fd32804c75c16ea9aa06a1216e76d
| * Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-07-201-2/+3
| |\ | | | | | | | | | Change-Id: Ic34021fbb87d689ee23a5d1b3f50617ada9ec9b9
| | * qmake: fix move semanticsGiuseppe D'Angelo2019-07-181-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ProFunctionDef is move-enabled, meaning its `m_pro` field can become nullptr. Its usage in the assignment operator and the dtor must therefore be protected with a check. Amends 9c63ad562bf0a44807f41ce49e4fe1b5ff181a63. Change-Id: I0c77b07dc83969565480bbb9d9fc80751d4246b1 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-07-171-26/+13
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/qlogging.cpp src/gui/painting/qtextureglyphcache_p.h src/gui/text/qfontengine.cpp src/widgets/widgets/qlineedit.cpp Change-Id: Ic8798538df466b7141caa8bbf1fb7605eb56be37
| * | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-07-121-26/+13
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure.pri Also required s/solid\.color/solidColor/ in a couple of places in: src/gui/painting/qpaintengine_raster.cpp Change-Id: I29937f63e9779deb6dac7ae77e2948d06ebc0319
| | * Revert "Fix determination of source and build roots"Jörg Bornemann2019-07-041-26/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 224a60989ed95e8b91ac88a12666af6e5a66e619. Turns out that we cannot just untangle the determination of source root and build root, because this breaks the assumption that every .qmake.conf results in a separate .qmake.cache in the build tree. QTBUG-76140 must be fixed differently. Fixes: QTBUG-76907 Change-Id: I5c0a3719d5e00a0f1cacad51651b47c1f284d22d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | | QMake: fix GCC 9 -Wdeprecated-copy warningsMarc Mutz2019-07-152-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Not visible in QMake, because of too old C++ standard used to compile it, but in the qttools copy. Fix here, as the authorative source, first. Change-Id: I2552eccfaab2cef0863686dcd888f2a5f25ca29f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* | | QMake: be less laissez-faire with implicit conversions to QCharMarc Mutz2019-07-153-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QChar currently is convertible from nearly every integral type. This is bad code hygiene and should be fixed come Qt 6. The present patch is the result of compile fixes from marking these constructors explicit. Amends 60ca2f5f7c38178cfe62d3dbe1b8dacfe43cbac9. Change-Id: I06887104d42f8327eb6196afcde5f942a74a6a78 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* | | Merge remote-tracking branch 'origin/5.13' into devLiang Qi2019-06-272-0/+8
|\| | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/network/ssl/qsslsocket_openssl.cpp Done-With: Timur Pocheptsov <timur.pocheptsov@qt.io> Change-Id: Ibb57a0548b4977797b400637487a56245ac1c024
| * | Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-06-252-0/+8
| |\| | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qstorageinfo_unix.cpp src/network/ssl/qsslsocket_openssl.cpp Change-Id: Ibc9ce799bef62d60d616beaa9fbde8ebeadfbc20
| | * Add QDebug streaming operator for ProStringJoerg Bornemann2019-06-242-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | This saves us lots of .toQString() and .toQStringList() typing when qDebug()'ing qmake code. Change-Id: I037e5e1816f2dcb6a20dec4c275f3d886f155ad5 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | | qmake: Let evaluateFunction() return error for infinite recursionChristian Kandeler2019-06-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise, it can happen that parsing goes on forever in cumulative mode. Task-number: QTCREATORBUG-17656 Change-Id: If69f2265ac7eee0d230bd77a9aa9500e97ebeff6 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* | | Merge remote-tracking branch 'origin/5.13' into devLiang Qi2019-06-141-13/+26
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: qmake/generators/makefile.cpp qmake/generators/unix/unixmake2.cpp src/corelib/thread/qthread_unix.cpp tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp Change-Id: I1df0d4ba20685de7f9300bf07458c13376493408
| * | Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-06-071-13/+26
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: qmake/generators/makefile.cpp src/plugins/platforms/cocoa/qcocoaintegration.h src/plugins/platforms/cocoa/qcocoaintegration.mm Done-With: Jörg Bornemann <joerg.bornemann@qt.io> Change-Id: I5a61e161784cc6f947abe370aab8f2971a9cbe78
| | * Fix determination of source and build rootsJoerg Bornemann2019-06-041-13/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QMake searches a .qmake.conf file to determine the source root of the project, and a .qmake.cache to determine the build root. If a .qmake.conf exists but no .qmake.cache in the build directory is found, a build root would be set that is only valid if the build directory is at the same depth as the source directory. The invalid build root resulted in the creation of .qmake.cache files at "interesting" locations (e.g. high up in the directory tree), a potential cause for even more interesting build failures in the future. Fix this by splitting up the loop that determined build and source root. Both are now determined independently of each other. Fixes: QTBUG-76140 Change-Id: Ib5c922b87879fcf2f076298a69abcdbc4e8587b3 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | | qmake: replace QLinkedList with std::listMarc Mutz2019-05-132-7/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is in preparation of deprecating QLinkedList. There is but one substantial change: Instead of copying the linked list, we move it now, and instead of copying items between these two lists, we use std::list::splice(), which just relinks nodes. It is a bit surprising that the comment on the ProValueMapStack suggests references into the container must remain stable, and then some code changes addresses by making copies of the elements. This was probably a bug waiting to manifest itself. Since nothing else in qmake is using QLinkedList now, remove qlinkedlist.o from the qmake build. Change-Id: I08a5b0661466bf50ad8f9f8abf58bc801aef4ddc Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | | qmake: use std names on a linked listMarc Mutz2019-05-133-18/+18
| | | | | | | | | | | | | | | | | | | | | | | | This is preparation of moving from QLinkedList to std::list, which is in preparation of deprecating QLinkedList. Change-Id: Ief259bc8c7178be5ca04812c6890cf65d86c069d Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | | QRegExp include cleanupSamuel Gaist2019-04-193-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QRegExp includes can be found in several files where there's not even a use of the class. This patch aims to avoid needless includes as well as follow the "include only what you use" moto. This patch removes a QRegExp include from the QStringList header which means that there is likely going to be code breaking since QStringList is used in many places and would get QRegExp in. [ChangeLog][Potentially Source-Incompatible Changes] qstringlist.h no longer includes qregexp.h. Change-Id: I32847532f16e419d4cb735ddc11a26551127e923 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Replace Q_DECL_NOTHROW with noexcept the remaining placesAllan Sandfeld Jensen2019-04-091-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The first replacement had missed objective-C++ code some places ourside the src dir. In C-files Q_DECL_NOTHROW is replaced with Q_DECL_NOEXCEPT as we still need to turn it off when compiled in C mode, but can get rid of the old NOTHROW moniker. Change-Id: I6370f57066679c5120d0265a69e7e378e09d4759 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | QString: mark obsolete functions as deprecatedChristian Ehrlicher2019-03-041-2/+1
|/ / | | | | | | | | | | | | | | | | | | Mark obsolete functions in QString as deprecated so they can be removed with Qt6: - QString::sprintf() - QString::vsprintf() Change-Id: I9b7748db95291c34b95ff3ad3e3aabc8215aeaae Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-02-151-1/+6
|\| | | | | | | Change-Id: I8cad26f17834dbc9f7151edc0f17786f9e32025d
| * Recognize UNC paths as absolute (i.e. not relative)Edward Welbourne2019-02-131-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | IoUtils::isRelativePath() didn't attempt to consider UNC paths, due to a belief that qmake fails on them so badly that it wasn't worth the extra code. However, it turns out Qt Creator's copy of this code does need to take this into account, so start the change off in qmake's version so as to keep in sync. Task-number: QTCREATORBUG-21881 Change-Id: I3084b87c1d3ca6508255e94e04ac8db3ceaebb7e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | QFile/QFileInfo: mark readLink() as deprecatedChristian Ehrlicher2019-01-231-1/+1
|/ | | | | | | | | | | QFile/QFileInfo::readLink() functions are obsolete but were not marked as deprecated. Explicit mark them as deprecated so they can be removed with Qt6. Change-Id: I52424dc5441e1f5b01015713df990bbec5186caa Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
* qmake: add $$read_registry() functionOswald Buddenhagen2019-01-053-1/+270
| | | | | Change-Id: I7f9f17e0f44c273e4754d1decc92a8594cad8658 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix crash in qmake parsingAllan Sandfeld Jensen2018-11-291-2/+2
| | | | | | | | | | | | | The read from a QHash needs to be protected too if other threads are writing. sync-up with qtc, no actual effect on qmake itself. Fixes: QTCREATORBUG-21416 Change-Id: I75e5634e11b10056d6dbb6fdceef482ca2222ca1 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from qtcreator/5f79b5d2e5e33321cdcd00362f0d6d9442a73ec2) Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>