Commit Graph

29 Commits

Author SHA1 Message Date
Oswald Buddenhagen
14505bbfea qmake: remove seemingly pointless QString::detach() calls
it's not clear why detaching would be necessary; there is no danger of a
raw data leak here.
concatenating a QStringRef with a non-empty QLatin1String (the only
expected use of this overload) will yield a detached QString anyway, so
this makes little difference in practice.

amends f137957e08.

Change-Id: I521c0e89a8b0c1ae62b1450e81b0ae91a931bcfa
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-08-26 12:11:57 +00:00
Oswald Buddenhagen
eb0ba90b0a qmake: make yet more use of ProString::toQStringRef()
in most cases, the main advantage is not using toQString(m_tmp), which
reduces the possibility of raw data leaks. in cases where we used
toQString() without temporary, this is a slight optimization.

Change-Id: Ib343acffd383aa2c4fefab75fb52762fb534dfc6
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-08-26 12:11:35 +00:00
Oswald Buddenhagen
190aa94be7 Change source identifier type in ProString
The strings remember in which file they were created/assigned.

However, this used a non-counting reference to a ProFile, which could
become dangling. If a subsequent ProFile re-used the exact same address,
a string's source would be mis-identified, which would be fatal in
conjunction with discard_from().

Since we actually need only a unique id for comparison, let's use an
integer for that.

Task-number: QTBUG-62434
Started-by: Simon Hausmann <simon.hausmann@qt.io>
Change-Id: I395153afaf7c835d0119690ee7f4b915e6f90d4a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-08-15 10:54:50 +00:00
Oswald Buddenhagen
b6b44b368c qmake: introduce magic bypassNesting() scope
will be needed by configure.

Change-Id: If14e6944fe84767bd67604ecde98076f873749ef
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-12-13 18:56:20 +00:00
Oswald Buddenhagen
1df4b2a360 fix build with QT_NO_CAST_FROM_ASCII
necessary for use outside qmake itself.

amends f137957e08.

Change-Id: Ie069f7b6efc969ab112e1f0ecd966eb06248fb94
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-10-07 11:21:17 +00:00
Oswald Buddenhagen
3277143f96 make include(,<into>) implementation a bit less convoluted
this goes at the cost of <into> without the subsequent dot not being
filtered before the result insertion any more. that's not expected to
be a problem, as it's not particularly useful to iterate the target
namespace without the dot in the first place.

Change-Id: Ib3497a60613b4c8c26676fe76b731239e427b8a7
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-25 11:54:32 +00:00
Oswald Buddenhagen
f137957e08 optimize operator+ ProString vs. char*
we have all necessary overloads now.

Change-Id: Ic4472eba15d4234e968fcb9443d0f79011aa43fd
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-25 11:54:27 +00:00
Oswald Buddenhagen
50e22c7653 add $$sorted() function.
[ChangeLog][qmake] Added $$sorted() function.

Change-Id: Ic069d3ef7c0b7a260c714c76eecc71c41417d01f
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
2016-05-25 06:19:16 +00:00
Oswald Buddenhagen
11d957d043 make QMakeEvaluator::isActiveConfig() take a QStringRef argument
saves some more cheap but pointless conversions to QString.

this makes the introduction of the ProStringList::contains(QStringRef)
overload necessary.

Change-Id: Ic61993bd9a4b28fbba1b8e346345fd5f5636c6f0
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-05-24 12:38:53 +00:00
Oswald Buddenhagen
e45a9fe457 add ProStringList::join(ProString) overload and make use of it
this introduces an ambiguity, so some char* arguments need explicit
QString construction now.

Change-Id: Ic3919a1fa9419bbb3b57dd1aa7eb95643ee59e53
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-05-24 12:38:47 +00:00
Oswald Buddenhagen
e6b755e702 add ProString::toLongLong() and make use of it
this is just a bit cleaner.

Change-Id: I03e628aca9e2e53c602a4db724da277a0e2c2486
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-05-19 17:32:50 +00:00
Oswald Buddenhagen
e8bdca74b5 optimize ProString::toInt()/toShort()
QStringRef has respective overloads now.

Change-Id: I9b94c53092ef3fdd62a68f5d3c5bacb98a14d8ec
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-05-19 17:32:27 +00:00
Marc Mutz
9c63ad562b qmake: restore nothrow move special members
The user-defined copy assignment, copy constructor
and dtor inhibit the move special member functions.

Implement them manually.

Change-Id: I0d38d7cf6c9611e13b5b081d734d01d6fe4d5276
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-02-26 16:57:26 +00:00
Jani Heikkinen
f776595cc1 Updated license headers
From Qt 5.7 -> tools & applications are lisenced under GPL v3 with some
exceptions, see
http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/

Updated license headers to use new GPL-EXCEPT header instead of LGPL21 one
(in those files which will be under GPL 3 with exceptions)

Change-Id: I42a473ddc97101492a60b9287d90979d9eb35ae1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-21 18:55:18 +00:00
Daniel Teske
b4e6409fea add ProFile::tokPtrEnd()
just syncing up with qtcreator.

Change-Id: I2bda6961f6f1164bdc58acd78fa3d2221977f0cf
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
(cherry picked from qtcreator/765ad6c3d28813d4baa0aeafd03076ba76557d3d)
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-10-27 17:54:15 +00:00
Oswald Buddenhagen
df43683975 move get{,Hash}Str from QMakeEvaluator to ProFile
this makes it possible to use these functions without an evaluator.

Change-Id: I23e4ec141b427f4c3c8b647305532be179058c07
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-05-20 18:11:28 +00:00
Oswald Buddenhagen
9d4641f56e add autotest for qmake parser
Change-Id: Ib3dcb6c1aaac20ca6a3bc0dc564e16ec7bd152db
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
2015-02-25 13:55:12 +00:00
Oswald Buddenhagen
ab74cf09a8 move some functions into ProStringList for saner OO design
Change-Id: I60f00f38f459fc9f8eebee9187158e4198fc9546
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-02-12 19:00:36 +00:00
Jani Heikkinen
83a5694dc2 Update copyright headers
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.

Outdated header.LGPL removed (use header.LGPL21 instead)

Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing
combination. New header.LGPL-COMM taken in the use file which were
using old header.LGPL3 (src/plugins/platforms/android/extract.cpp)

Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license
combination

Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe
Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
2015-02-11 06:49:51 +00:00
Matti Paaso
974c210835 Update license headers and add new license files
- Renamed LICENSE.LGPL to LICENSE.LGPLv21
- Added LICENSE.LGPLv3
- Removed LICENSE.GPL

Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
2014-09-24 12:26:19 +02:00
Oswald Buddenhagen
5957a8e01b update size calculations for assignment statements
this was forgotten when the value lists were extended by a size hint.

Change-Id: I6f9b55ed671224a9b8735c8d937f94aac4a73a42
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
(cherry picked from qtcreator/f24c9865306624c2fc150d4bd262a5c4d5a3689a)
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-05-20 15:20:26 +02:00
Sergio Ahumada
48e0c4df23 Update copyright year in Digia's license headers
Change-Id: Ic804938fc352291d011800d21e549c10acac66fb
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-01-18 09:07:35 +01:00
Debao Zhang
4d55b473b3 qmake:Add a case sensitivity flag to ProString::{starts,ends}With()
Change-Id: I457cd8288ae8a0138f7b28321fe87be3308b5215
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-12-21 17:11:46 +01:00
Joerg Bornemann
9a1183b400 add base parameter to ProString::toInt and ProString::toShort
Change-Id: I0c8b48e6491486ca829ce24ca2e284294ba0138a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-12-17 14:08:17 +01:00
Iikka Eklund
be15856f61 Change copyrights from Nokia to Digia
Change copyrights and license headers from Nokia to Digia

Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
2012-09-22 19:20:11 +02:00
Marc Mutz
cbf447069c qmake: add ProStringList::join(QChar)
Same reasoning as for 68e04c3ac1 applies.

Adding the overload was easier than to teach a Perl script to distinguish
between QStringList and ProStringList instances...

Change-Id: I6de6ecf21fdad135ac213b5c794927a9bc120a92
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-09-21 02:44:22 +02:00
Oswald Buddenhagen
8400896cfe don't pretend that break()/next()/return() are functions
it's a pretty braindead thing to implement control flow statements as
(built-in) functions.

as a "side effect", this fixes return() value handling for lists.

(cherry picked from qtcreator/f53ed6c4b3feca59a94d4f0de8b1a7411122e30e)
(cherry picked from qtcreator/f529e22ec38fb9a656d74394e484d2453cf42c69)
Change-Id: I59c8efa0e4d65329327115f7f8ed20719e7f7546
Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org>
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-09-13 03:42:44 +02:00
Oswald Buddenhagen
0e78e50802 port qmake to qt creator's qmake language evaluator
this is a monster commit which does the following things:
- import the evaluator as-is from qt creator into qmake/library/
  - integrate it into qmake's makefiles
  - overwrite proitems.h with actual special types
- remove the parts of Option which are redundant with QMakeGlobals
- make QMakeProperty a singleton owned by Option::globals. the dynamic
  handling so far made no sense.
- make QMakeProject a subclass of QMakeEvaluator, with relatively few
  extensions

the changes to existing qmake code outside project.* and option.* are
minor. implementing the changes gradually would mean changing a lot of
code which will be just replaced in the next commit, so i'm not wasting
my time on it.

Change-Id: I9746650423b8c5b3fbd8c3979a73228982a46195
Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org>
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-09-11 00:13:01 +02:00
Oswald Buddenhagen
df175f190d introduce qmake variable abstractions
this is preparation for adapting to a new evaluator.

Change-Id: I6fc59f5525735754a00afa6629fbfe257e84db97
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-09-07 15:39:31 +02:00