| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
This patch fixes a regression introduced in e8637511. Probes in Project items
could no longer reference project properties by writing project.xxx on the
right hand side of a property assignment expression.
Change-Id: I7d04c71f4c493481a00411f12666bd6c2caa8caa
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
| |
This test cover only the applications using the MSVC and
GCC-like toolchains yet. Other toolchains and a product
types can be added later if it will required.
Change-Id: I37db96015774447e1e30b503d9853599be0177f2
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Offers a JSON-based API for interaction with other tools via stdin/
stdout.
This allows for proper qbs support in IDEs that do not use Qt or even
C++.
Change-Id: Ib051a40b7ebe1c6e0c3147cca9bd96e7daec1fde
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
|
|\
| |
| |
| | |
Change-Id: Ic9ee11d628ba278271517aae0af020aec28ecbf7
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
... when redirecting process output. Only do that if there is an output
filter function. Otherwise, we break redirection of binary data.
Fixes: QBS-1488
Change-Id: Ic5a1d2653fa8fc9c4f0eb5d31b7315d7aba3e030
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Icf6b9f7528bdb4b062b6586b12a08d8b410090fd
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is about clang in "mingw mode", not clang-cl.
When targeting Windows, clang is a lot like mingw, so factor out the
common parts into a new base module.
Testing uncovered a number of invalid assumptions in our autotests,
which are also fixed in this patch. In addition, minor adjustments had
to be made to the Qt.core module and to the qbscore lib.
Change-Id: I73085dc62a65e2a9d0397cf234c8641989246f22
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Amends 923f98062b.
Change-Id: Ib98279e962128573a46d8d6f9cfd822494d0dfd8
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Jochen Ulrich <jochenulrich@t-online.de>
|
|/
|
|
|
|
|
| |
Task-number: QBS-1454
Change-Id: I6e2514d10cca0cba0a14456ecd2abfb495539ee4
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
|
|
|
|
|
|
|
|
| |
This implements support for the gRPC framework: https://www.grpc.io
Change-Id: Ia85461b9618e73827114c137fce8615e5a8139e3
Reviewed-by: Qbs CI Bot <travis-bot@weickelt.de>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This property can be used to check if candidate conforms with some
conditions. For example, an architecture of a shared
library candidate should match the current qbs.architecture.
Also, this will allow to implement support for the "text based stub
libraries" (yaml files that point to a real library in a system) on
macOS - instead of checking real file architecture, it should be read
from .tbd file
Change-Id: Ie84a3e70d883dec949440358e2f08213a8501982
Reviewed-by: Qbs CI Bot <travis-bot@weickelt.de>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
|
|
|
|
|
|
| |
Change-Id: I6ae2dd130cbafb03e51bc6e8e8a3e262d6d45fc6
Reviewed-by: Qbs CI Bot <travis-bot@weickelt.de>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
This illustrates the warning emitted by clang-cl
when macro definition differs in a file and pch.
Warning is emitted because of -Wclang-cl-pch flag
which is enabled by default
Change-Id: I48f39bd77db5be85b9cd2e0226c0b4e7931a9d5b
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|\
| |
| |
| | |
Change-Id: Ic02d717f80f5d831f0cedb3b7c565a9bfef3a2a3
|
| |
| |
| |
| |
| |
| |
| | |
LC_BUILD_VERSION was introduced in apple clang 10.0
Change-Id: I06dd5bba7cab7d28d83c50f2878b5b434e97cca0
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Qt Creator uses non-latin letters in path to the build directory in case
of ru_RU.UTF-8 $LANG on Linux. Now QBS does handle that correctly.
Change-Id: Ifc727b120a5f0ee60972c5e3ed24067426db8df2
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|/
|
|
|
|
| |
Task-number: QBS-1316
Change-Id: Ibf9da364610c260ead088a8990a70c7739d53c39
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
| |
Change-Id: I592d433e7c473ae9f27ca08e701516efe53650ba
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a dependency is not found, we now search for a matching module
provider that can generate one for us.
We also provide a generic fall-back provider which uses pkg-config to
locate the dependency (but could be extended to incorporate other
methods in the future). This is the most important part of this change
for practical purposes, as it makes hundreds of popular libraries
available for use in qbs projects without users having to write any
boilerplate code.
In a future patch, a module provider could also be used to implement the
functionality of the qtprofilesetup library, relieving users of the need
to create a profile for building Qt applications.
[ChangeLog] The Depends item now falls back to pkg-config to locate
dependencies whose names do not correspond to a qbs module.
Fixes: QBS-1107
Change-Id: Ifd4f05c237cf58cd9fe707c3da648d3dbb33e82b
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Linkerscripts may contain INCLUDE and SEARCH_DIR commands that allows
it to include other linkerscripts in a similary way as headers are
included in C++. This commit adds a scanner that adds these additional
dependencies.
[ChangeLog] Added recursive dependency scanning of GNU ld
linkerscripts that contain INCLUDE and SEARCH_DIR commands.
Change-Id: I7549e27aad4fe7ade2a6a26eba14f66880261077
Reviewed-by: Ola Røer Thorsen <ola@silentwings.no>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
For the C++ scanner, the search paths depend on module properties, not
on the actual input file. This assumption does not generally hold for
Scanner items, which was not taken into account when this feature was
originally introduced. As a result, the first input to get scanned by a
Scanner item erroneously provided the search paths for all others.
Change-Id: I0159d826dac1f5605494d54cfe96fe468044ca34
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
...via cpp.linkerVariant.
[ChangeLog] Added new cpp property linkerVariant to force use of gold,
bfd or lld.
Task-number: QBS-1421
Change-Id: I98f9d2581515ac8e9c984a2f8d70f4a7a3ab230b
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes it possible to use readLine in a while loop until the
complete stream is read, even when reading empty lines.
[ChangeLog] Added atEnd() function to the Process service,
to make it possible to use readLine() in a while loop until
the complete stream is read.
Change-Id: Ie5f047651977195d6a93c4575bd7a8796b83ab5d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
| |
The path passed to canonicalPath has to exist.
Change-Id: Ibcc0a142ab5714e6a937c688fd1fd035fdfea9e3
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
| |
[ChangeLog] Added the canonicalPath() function to the FileInfo
extension.
Task-number: QBS-742
Change-Id: I8490b1bbdb3ac4ce84b80e82ca9f37bd2816e150
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
| |
The naming was misleading - prefixes had the same logical meaning as
platformPaths, despite the fact completely different
PathProbe.pathSuffixes property exists.
Change-Id: Ie593b5e03d27de4f8aafed821a3b37cc1b3b0b9e
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Product-level probes run before module validate scripts, so we cannot
use a Probe to determine whether the protobuf module was successfully
set up.
Change-Id: I6debc86f1b6b06c8bbdb276a7ff786828b9f9819
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
These modules implement google protobuf support for QBS for c++ and
objective-c languages
[ChangeLog] Added protobuf support for C++ and Objective-C.
Fixes: QBS-563
Change-Id: I4bb7e0bdfc1e09ea26c0cd3d3739a741ff834e5d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Values such as artifact objects are not plain data and we therefore must
not attempt to make deep copies of them. Catch attempts to assign them
to command properties.
Fixes: QBS-1404
Change-Id: I1fa02720a3543cd8e2c734ed9437d31b5a573d57
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
|
|\
| |
| |
| | |
Change-Id: I96c735aeda89e02f1fa9107ecfc10ebf4b554dbc
|
| |
| |
| |
| |
| | |
Change-Id: I0d218f415eedbfc75c2cf10877646f6831f38f89
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Ia115255ae46772a83c1196fbe291ff295927ee92
|
| |
| |
| |
| |
| |
| |
| |
| | |
An artifact whose alwaysUpdated property is false does not need to exist
and is therefore not required to have a valid timestamp.
Change-Id: I642349c49a53e6e45d6b09d1acc87f4c9a0edae9
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If an import lib is unexpectedly not present, the reason is usually that
no symbols are exported from the DLL. This is not obvious at all, so
catch this condition and explain what is happening.
Task-number: QBS-1291
Change-Id: Ia2df8e1a27e0231e855413245703ffc05221722e
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
It's just a heuristic, because we don't have access to single elements
of JS arrays, but it should cover the most common cases.
Change-Id: I02f9ff215394d108f7ba52662eff7b4f5e8e1a62
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I20256cb4a06cab8d191e389f08d77ace82e4d6b9
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Our code assumed that products with the same profile and the same
multiplex configuration would also evaluate a module's condition to the
same value, which is not true: Properties such as qbs.architecture,
which are commonly checked in module conditions, can be set in a product
item independently of multiplexing.
We now evaluate the module condition for every product. According to our
benchmarker, the slowdown is a very modest 2% and does not appear to
increase for larger projects.
This patch amends 08ce978733, which tried to address the same problem,
but succeeded only for a subset of the possible cases.
Change-Id: I992e0f0d5cf207949cf5d863f242b9476ecdfc05
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|\ \ |
|
| |\|
| | |
| | |
| | | |
Change-Id: I0ce6c28f9117f945c9fec0654bd06daf3d13ace0
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We used to invalidate a script if it accessed the artifacts map and that
map's keys are now different from what they were. However, that logic
was too coarse: All rules that run after the command will add new
artifacts, so such changes will be the norm, at least when the project
is built for the first time. As a result, some artifacts might get
rebuilt unnecessarily on the next qbs invocation.
The reason why we did it that way was that we needed to consider the
case where a script iterated over the elements of an artifacts map, e.g.
using a for..in loop. In such a case, we cannot know which part of the
map the code is interested in and the script needs to be re-run if the
keys change. This is now solved with the help of a QScriptClass, which
informs us if a script enumerates the keys. In all other cases, the
script only accesses well-known tags, so we only have to compare the
respective artifact lists and do not care about other keys getting added
or removed.
Change-Id: I182a50c34ece28f7ff3f7eba7a8f246e9b79b30e
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The RuleNode class disconnects removed input artifacts, which could
break an assertion in the RulesApplicator in the case that a rule that
can provide different tags to the same artifact switches back and forth
between these tags. Fix this by re-establishing the connection between
output artifact and parent rule node if necessary.
Change-Id: I8d50190cba782ffe63d3a73b3d5400d95c99ea0e
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Verify also that the final output artifact disappears if we cut the
connection between the rules.
Change-Id: I31df34136e8b6305578e004abe06cd4a53f7dee5
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
There can be input artifacts that are produced by a rule that is not
connected to the current rule. This happens if at least one of the
outputs of the rule that produces the input matches the excluded inputs
of the current rule, in which case there is no connection between the
rules.
Change-Id: If51344e95e971ae89745ce7c20c2623774af42ae
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Our change tracking information is stored per transformer. However, if
Rule.outputArtifacts returns an empty array, then no transformer gets
created. For this case, we need to "manually" force re-application of
the rule if properties of the input artifact have changed, in case
they've been accessed in the outputArtifacts script.
Change-Id: I0f2b8a9834f5268a282c775a945e240d3d1d9763
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
There's no general need for wholesale removal from the artifacts map,
followed by (re-)adding. Instead, do just what is necessary.
Change-Id: I5d4aa3c456d91bde94a8c77fb85f4e28ad5742d0
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The old code had a number of problems:
- It partially overlapped with the calculation of compatible inputs.
- It was wrong in that it failed to consider inputs from dependencies.
- It was wrong in that it assumed that after rule application, input
artifacts always have parent artifacts to later compare timestamps with.
This is not the case for e.g. a generated cpp file without a Q_OBJECT
macro on which moc is run: No transformer is created in such a case,
because the outputArtifacts array is empty.
The last problem was glossed over by the fact that we held a global list
of "changed source artifacts" in the executor, so such changes were
spotted when they happened in source artifacts. However, that code was
also rather dubious in itself because the criterion for "changed" was
that the timestamp was newer than it was on the last run of the
executor, so I don't think it was completely safe when doing partial
builds.
We solve these problems by remembering when we last applied the rule. An
input artifact is considered "changed" if it has been modified after
that.
Change-Id: Ib1bafd9e1078122776626155c4f2cc11ad622191
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The artifacts a dynamic rule produces need to be consistent with what it
declares in its outputFileTags property.
Somewhat suprisingly, such a check was missing so far, so we managed to
make such mistakes in our very own modules. These are also fixed here.
Change-Id: I9052a8c4b0423e8fd146c9fc67bf5c3ce752c638
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
There are rules that access e.g. input.fileTags to look at file tags
that are not the rules' declared tags. Such accesses were not tracked,
so we did not re-run the respective prepare script or command when the
tags changed.
Change-Id: I7615c0c058ce42fb85963c8f481c18331c29ada7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|\ \ |
|
| |\|
| | |
| | |
| | | |
Change-Id: I616949b321c26699ada0f2ae81b20a88db40b610
|