Github Push to hicknhack-software/Qt-Qbs
-
capnproto: make outputDir mutable
Fixes: QBS-1760
Change-Id: Ia58ce88c7981ec35a132e783a4faa2a4cdda3328
Reviewed-by: Christian Kandeler
-
protobuf: remove probe-based library lookup
It is not reliable these days and it is hard to maintain it.
Only leave provider-based lookup or built-in runtime (via
private _linkLibraries property).
Task-number: QBS-1663
Change-Id: I1cc3e3a7b18f721fe252d9b5489ed7495a9a6366
Reviewed-by: Christian Kandeler
-
Qt support: Do not include properties that are not applicable
... to the respective Qt version.
We used to set such values to "original", which is not necessarily a no-
op, so let's avoid that.
Change-Id: Id6cdbbb7f1d1e6b4be33bd5596b6512d2b920cde
Reviewed-by: Ivan Komissarov
-
Improve the dependency parameters implementation
- It was strange that Export items could declare Parameters items,
but Module items could not, so allow this for symmetry.
- Implement priorities for parameter bindings in Depends items, so
that higher-level modules can overwrite parameters set in lower-level
modules.
Fixes: QBS-1300
Change-Id: I05edd816c6a30f59aa934ac37378f9b12ad48a7c
Reviewed-by: Ivan Komissarov
-
Merge 2.2 into master
Change-Id: I1b274180cb0ef09f9487101d17b1545fefa9aa7f
-
GCC: Filter compiler built-ins from list of library paths
... rather than the paths of the dynamic linker.
Amends 8d75be48c2bbe314390ff292e3a26c5403a5896a, which was based on a
false analogy with rpaths.
Fixes: QBS-1436
Change-Id: I5c8c64f22d65b07a43d7a9ca097ff450a16b738a
Reviewed-by: Ivan Komissarov
-
Loader: Restore candidates when switching preferred value
... on the final module properties merge.
Fixes: QBS-1763
Change-Id: Ie57f0e493ffb90a36cd0c6cd9c1bd48ccac0e42f
Reviewed-by: Ivan Komissarov
-
BuildGraphLoader: Reset expanded build config data
... after updating the top-level profile. Otherwise we will continue with
properties from the wrong profile.
Fixes: QBS-1765
Change-Id: I9723dd38739fac350453417e76b7f2da5e4495c2
Reviewed-by: Ivan Komissarov
-
Remove dependency of SourceWildCards on ResolvedGroup
SourceWildCards had an unnecessary dependency on ResolvedGroup which
could be a historical relic. However, it is functionally independent and
can be useful in other contexts as well, for example wildcard project
references. We really do not want to duplicate the complicated wildcard
expansion code.
This patch is a first step in a refactoring series.
Task-number: QBS-1749
Change-Id: I2ce0e784d4668f7cee686cd4c2101aef3ce38eda
Reviewed-by: Christian Kandeler
-
Loader: Emit a proper error when binding to module properties
... in Project items.
This can only happen for the pseudo-qbs module that we load for Project
items.
Fixes: QBS-1752
Change-Id: I34fae59e14bcd2d3c06aedcf43d5c93583a3a5de
Reviewed-by: Ivan Komissarov
-
Make Qt and qbspkgconfig providers non-eager
To avoid doing unnesessary work we make all providers non-eager,
meaning they instantiate modules only when requested.
Also, now all providers behave in the same way, allowing
to drop eager providers and simplify code.
Qt provider was split into a Probe, Provider responsible
for setting up a single module and a bunch of util
functions.
Resolving Qbs, 3 runs per configuraion, best of each:
=== before ===
Starting activity 'Resolving project for configuration default'.
Setting up Qt at '/Applications/Qt/5.15.2/clang_64/bin/qmake'...
Qt was set up successfully.
Activity 'Resolving project for configuration default' took 16s, 948ms.
Project file loading and parsing took 484ms.
Preparing products took 1ms.
Setting up Groups took 77ms.
Setting up product dependencies took 3s, 296ms.
Running module providers took 1s, 50ms.
Instantiating modules took 0ms.
Merging module property values took 2ms.
Running Probes took 6s, 619ms.
598 probes encountered, 26 configure scripts executed, 569 re-used from current run, 0 re-used from earlier run.
Property checking took 60ms.
Property evaluation took 1s, 293ms.
Resolving groups (without module property evaluation) took 1s, 801ms.
Starting activity 'Setting up build graph for configuration default'.
Activity 'Setting up build graph for configuration default' took 111ms.
Starting activity 'Storing build graph'.
Activity 'Storing build graph' took 203ms.
Setting up imports took 130ms.
=== after ===
Activity 'Resolving project for configuration default' took 16s, 400ms.
Project file loading and parsing took 413ms.
Preparing products took 0ms.
Setting up Groups took 74ms.
Setting up product dependencies took 3s, 14ms.
Running module providers took 815ms.
Instantiating modules took 0ms.
Merging module property values took 2ms.
Running Probes took 7s, 4ms.
611 probes encountered, 27 configure scripts executed, 581 re-used from current run, 0 re-used from earlier run.
Property checking took 62ms.
Property evaluation took 1s, 276ms.
Resolving groups (without module property evaluation) took 1s, 728ms.
Starting activity 'Setting up build graph for configuration default'.
Activity 'Setting up build graph for configuration default' took 94ms.
Starting activity 'Storing build graph'.
Activity 'Storing build graph' took 202ms.
Setting up imports took 97ms.
The overall time is about the same.
As for the pkgconfig provider, resolving GRPC example is about 2 times
slower (479ms -> 927ms), but there's room for optimizations:
=== before ===
Activity 'Resolving project for configuration default' took 2s, 257ms.
Project file loading and parsing took 288ms.
Preparing products took 1ms.
Setting up Groups took 23ms.
Resolving products took 2s, 232ms.
Property evaluation took 55ms.
Resolving groups (without module property evaluation) took 8ms.
Setting up product dependencies took 1s, 339ms.
Running module providers took 479ms.
Instantiating modules took 13ms.
Merging module property values took 20ms.
There were 0 product deferrals with a total of 2 products.
Running Probes took 715ms.
32 probes encountered, 15 configure scripts executed, 15 re-used from current run, 0 re-used from earlier run.
Property checking took 4ms.
=== after ===
Activity 'Resolving project for configuration default' took 2s, 673ms.
Project file loading and parsing took 600ms.
Preparing products took 0ms.
Setting up Groups took 17ms.
Resolving products took 2s, 660ms.
Property evaluation took 53ms.
Resolving groups (without module property evaluation) took 7ms.
Setting up product dependencies took 1s, 864ms.
Running module providers took 927ms.
Instantiating modules took 14ms.
Merging module property values took 21ms.
There were 0 product deferrals with a total of 2 products.
Running Probes took 746ms.
188 probes encountered, 16 configure scripts executed, 170 re-used from current run, 0 re-used from earlier run.
Property checking took 3ms.
Change-Id: Ic1727d937185a8aed4514e56d46e69f53ed0fbc6
Reviewed-by: Christian Kandeler
-
Merge 2.2 into master
Change-Id: I20763ec5ea0f96f01837b59b76e7bfcbcbf681e2
-
Loader: Make Item::Module::LoadingItemInfo a proper class
To be extended in follow-up patches.
Also makes for more readable code.
Change-Id: I7a4841789fc8670d5509f912b70b35cc66c3ddeb
Reviewed-by: Ivan Komissarov
-
Loader: Store Depends item in Item::Module::LoadContext
We want to make use of its location in follow-up patches.
Change-Id: If6324ca94a82dbcbc231c64ee8444623ef8758ee
Reviewed-by: Ivan Komissarov
-
Consolidate expansion and modification test in SourceWildcard
In order to make use of SourceWildcard in other contexts, any special
relationship to ResolvedGroup is now removed. All information needed
to re-expand the wildcards is stored inside the object. The re-expansion
test has been moved into the class and the API has been simplified.
SourceArtifact objects, no matter if wildcard-based or not are now
stored inside ResolvedGroup and are marked by a boolean flag.
Task-number: QBS-1749
Change-Id: I53bf2776685b5abf4713341387d1efa23ad316b2
Reviewed-by: Christian Kandeler
-
Handle systemIncludePaths correctly for clang-cl
"/imsvc" flag must be used for adding directory to system include
paths. It affects on suppressing warnings in headers such directories.
This flag can be found in [clang 4.0 user manual](https://releases.llvm.org/4.0.0/tools/clang/docs/UsersManual.html)
at leasst so it is ok to expect that this flag exists in any
user-supplied clang-cl compiler.
Change-Id: Ie08cac2ac02acfeceba4ff4c50043c925ce75168
Reviewed-by: Ivan Komissarov
-
Style fix
This amends e89f504db24796e934cdbf9a7ecc0bbd89347191.
Change-Id: I35017113e9619a461ae97d8f955782fc2404e85c
Reviewed-by: Christian Kandeler
-
Add an LSP server
This provides IDE-agnostic tooling via the Language Server Protocol
(https://microsoft.github.io/language-server-protocol).
The protocol implementation is taken from Qt Creator, plus a minimal set
of dependencies.
For now, our server provides only the "Goto definition" capability,
which
allows IDE users to click on a Depends item and get to the corresponding
module or product.
Task-number: QBS-395
Change-Id: Ia444aa7a6d1c114e4fd456098c74134ccdaadcec
Reviewed-by: Ivan Komissarov
-
providers: cache qbs module evaluation
This is quite heavy operation and there is no need to do
this on every call to provider.
Change-Id: I1aa7f16d9f84fb9632cfb143d58ea8448b99e582
Reviewed-by: Christian Kandeler
-
Add Rust-like Mutex
This change implements a Rust-like Mutex class
that prevents unlocked access to the underlying data.
As seen recently, it is easy to make a mistake and lock
the wrong mutex. Also, this prevents micro-optimizations
where shared state is accessed without locking corresponding
mutex in hope that there is some other barrier.
Change-Id: I52c7a2fa68cc97be07a490c35aa76fe717032fdf
Reviewed-by: Christian Kandeler