aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* qbspkgconfig: fix mergeDependencies propv2.2.22.2Ivan Komissarov2024-01-221-0/+1
| | | | | | | | | This prop was broken during refactoring. This amends d99256dd79460628aafb5fa34a8dde7761ff7b1c. Change-Id: I7932fc22e97c7af18bb269ddc2344c8745a82002 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* qbspkgconfig: do not run qmake when not requestedIvan Komissarov2024-01-223-10/+14
| | | | | | | | | | | | Fix the probe by returning only paths to qmake which are later passed to real Qmake probe which checks if it should be run (e,g. for Qt modules). This amends d99256dd79460628aafb5fa34a8dde7761ff7b1c. Fixes: QBS-1779 Change-Id: Ie901befcc74713a41258ba18c436435fe50cfb4d Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add changelog for 2.2.2Christian Kandeler2024-01-191-0/+18
| | | | | Change-Id: I1ebd7fd0266bc058d3bef725abb664662d749600 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* DependenciesResolver: Fix module name prefix collision checkChristian Kandeler2024-01-1916-10/+66
| | | | | | | | | The algorithm did not properly handle names with more than two components. Fixes: QBS-1772 Change-Id: Ia680c69907c449e46977f2c5615707805a3b785f Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* DependenciesResolver: Don't attach properties on non-present modulesChristian Kandeler2024-01-1813-19/+74
| | | | | | | | | | | | | | | | | | | | | | We used to do that anyway and then suppress the resulting exception, but that can lead to an unexpected state later. The sequence that triggered the linked bug was as follows: - load module via non-required dependency in other module - exchange placeholder item in the product item and try to attach non-existing property on the module instance - suppress the resulting exception (because the dependency was not required) and continue - load module again (required this time) on product level - exchange placeholder item again -> assertion, because we have a module instance instead of the expected placeholder Another way to fix this would have been to revert exchanging the placeholder item after encountering an error, but that would be more complex, and there is no reason to attach properties to non-existing modules anyway. Fixes: QBS-1776 Change-Id: I581a076d1d872616b186e4015873baeea211b647 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Fix qbspkgconfig Qt provider in case there is no QtIvan Komissarov2024-01-154-2/+17
| | | | | | | | | | | Our tests did not cover the case when there is obviously no Qt that come from this provider. Add this case and check that we only get the error about missing module but no error come from the provider. Fixes: QBS-1777 Change-Id: Id3e80fd54e1519c91be37346276fd781d9f81b0a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* protobuf: Usable without qbspkgconfigproviderBjörn Schäpers2024-01-116-17/+25
| | | | | | | | | | | | | | | | It only fails with "Can't find cpp protobuf runtime. Make sure .pc files are present" which is not helpful, since they are present. Additionally remove the grpcpp to grpc++ mapping in both pkg-config probes. This kind of amends 1772df50a3bacd91ba8125ececf774aa0e6311f9, I readded the tests. Task-number: QBS-1663 Change-Id: I73b7b76a66cc2b8eea5dddd57e5221715b6e6014 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* qbspkgconfig: Add support for the definePrefix optionIvan Komissarov2024-01-1013-34/+239
| | | | | | | | | | | | | | | | On windows/msys, it is crucial to use autodetection for package paths - otherwise, Qbs is not able to detect e.g. protobuf package. The pkg-config has the --define-prefix switch that overrides the ${prefix} variables on the package with one based on the .pc file locaiton. Implement similar option and set it to true on Windows. Also fix setting sysroot to avoid duplication of sysroot in paths when prefix is autodetected. Change-Id: I2754e48a96cb2e5f01ecace616188782cb5b0d7a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* msvc: fix asm flagsIvan Komissarov2024-01-096-3/+23
| | | | | | | | Filename should be the last argument. Fixes: QBS-1774 Change-Id: I6a45df6deacdba44bbb28d54ec8a90c2ade4525d Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* GitHub actions: bump Xcode versionIvan Komissarov2024-01-081-19/+19
| | | | | Change-Id: I1527740715b362fa4ff0be176e1b813baebad557 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Bump versionChristian Kandeler2023-12-131-1/+1
| | | | | Change-Id: I6205f1ad4955966e8dbc5a93bc94d84490c6d011 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* qbspkgconfig: Fix issues with msys/mingwIvan Komissarov2023-12-121-3/+8
| | | | | | | | | The pkgconf in MSYS reports relative paths which we treat as relative to the binary. Also, on windows, ';' is used as a separator between paths. Change-Id: I3425ce896e42f87da0cab3f8f06892e28d4e5727 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* GitHub actions: fix Windows buildIvan Komissarov2023-12-111-0/+1
| | | | | Change-Id: I52622831cf9d0641ce1c24f53697baf24c891528 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* apple: disable lazy linker mode for Xcode 15Ivan Komissarov2023-12-112-0/+4
| | | | | | | | | | According to the ld man, this mode is deprecated; with clang 15.0.0, it is no longer possible to pass this option via compiler frontend (it treats -lazy_library flag as -l flag and tries to link to "azy_library"). Change-Id: I74a877c359ae3550d372486e055a9b4c3e9be997 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix linkerMode test with recent clangIvan Komissarov2023-12-111-0/+1
| | | | | | | | For some reason, Apple clang complains about missing _main; adding single ret instruction fixes this. Change-Id: I286f774e462e747dcff9e0c9e44b1e6a68fa432f Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Evaluator: Do not let C++ exceptions travel through QuickJSv2.2.1Christian Kandeler2023-12-011-1/+13
| | | | | | | | We have to turn them into JS values at the API border. Task-number: QBS-1770 Change-Id: Ia3178c9cc7611b9609cb8d006c742434d299873c Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Add 2.2.1 change logChristian Kandeler2023-11-291-0/+12
| | | | | Change-Id: Ifb7b2f6de53db9f709952439749d89ff1234d1f9 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* quickjs: Fix current date on WindowsChristian Kandeler2023-11-281-1/+2
| | | | | | | | Microsoft's baseline is a couple of hundred years before Unix's. Fixes: QBS-1768 Change-Id: I1845036b59665cbc1640887840a7d03edbc0cb54 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Bump versionChristian Kandeler2023-11-271-1/+1
| | | | | Change-Id: I4d2116c29012604971024cd960499dc0464e1673 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Update changelogIvan Komissarov2023-11-271-2/+12
| | | | | Change-Id: Id776483cffb79f7a0de56f50136ae14684ca2737 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* GitHub actions: fix building release packagesIvan Komissarov2023-11-272-2/+2
| | | | | | | | | After updating Qt version, old Xcode we use to build packages were no longer able to target the minimum required macOS veriosn. Fix that by using newer Xcode version. Change-Id: Idf5171bc20a1f8e2053e45d4920917e769025955 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Docker: Update Qt version in Windows imageChristian Kandeler2023-11-242-3/+3
| | | | | | | | With Qt 6.5, qhelpgenerator crashes when building the documentation, which prevents us from building release packages. Change-Id: I51b30ef6a6bf18d9032aa27ac6afae5edf558c18 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* MSVC support: Prevent cl.exe from crashingChristian Kandeler2023-11-231-0/+1
| | | | | | | | ... when retrieving the built-in defines. Fixes: QBS-1743 Change-Id: I7c2f49cdf90eb10c24ea8e54b2510c672c3d6749 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* apple: update dmgbuildIvan Komissarov2023-11-208-542/+293
| | | | | | | | | | | This fixes some licensing issues, for instance, inability to add a combobox to select a license language. Also, restore tests deleted in 8da87e0f8d5aa27bb012b78bd18bd3379e2d618e. Change-Id: If62c76a8b75ec21230d91cb137382d50ec536ea6 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add 2.2.0 change logv2.2.0Christian Kandeler2023-11-142-2/+28
| | | | | | | Change-Id: I0e2b7a4d7e0595d6be90399f140d28154fe14a4e Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> (cherry picked from commit 17ec1be9c4d965f432de34f22fb2a4a2dfc04548) Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add 'mold' as possible value for cpp.linkerVariantThorbjørn Lindeijer2023-11-093-3/+4
| | | | | Change-Id: Ia9a874f09d87020c6f6999e6267596a03b64e721 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* providers: cache qbs module evaluationIvan Komissarov2023-11-083-3/+6
| | | | | | | | 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 <christian.kandeler@qt.io>
* Style fixIvan Komissarov2023-11-031-1/+2
| | | | | | | This amends e89f504db24796e934cdbf9a7ecc0bbd89347191. Change-Id: I35017113e9619a461ae97d8f955782fc2404e85c Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Handle systemIncludePaths correctly for clang-clDmitrii Meshkov2023-11-032-8/+12
| | | | | | | | | | | "/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 <ABBAPOH@gmail.com>
* Make Qt and qbspkgconfig providers non-eagerIvan Komissarov2023-10-2617-1466/+1786
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <christian.kandeler@qt.io>
* Loader: Emit a proper error when binding to module propertiesChristian Kandeler2023-10-183-0/+10
| | | | | | | | | | ... 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 <ABBAPOH@gmail.com>
* BuildGraphLoader: Reset expanded build config dataChristian Kandeler2023-10-161-1/+3
| | | | | | | | | ... 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 <ABBAPOH@gmail.com>
* Loader: Restore candidates when switching preferred valueChristian Kandeler2023-10-161-0/+5
| | | | | | | | ... on the final module properties merge. Fixes: QBS-1763 Change-Id: Ie57f0e493ffb90a36cd0c6cd9c1bd48ccac0e42f Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* GCC: Filter compiler built-ins from list of library pathsChristian Kandeler2023-10-131-2/+2
| | | | | | | | | | ... 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 <ABBAPOH@gmail.com>
* Improve the dependency parameters implementationChristian Kandeler2023-10-1215-59/+408
| | | | | | | | | | | | - 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 <ABBAPOH@gmail.com>
* Qt support: Do not include properties that are not applicableChristian Kandeler2023-10-122-16/+28
| | | | | | | | | ... 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 <ABBAPOH@gmail.com>
* protobuf: remove probe-based library lookupIvan Komissarov2023-10-113-135/+12
| | | | | | | | | | 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 <christian.kandeler@qt.io>
* capnproto: make outputDir mutableIvan Komissarov2023-10-092-4/+2
| | | | | | Fixes: QBS-1760 Change-Id: Ia58ce88c7981ec35a132e783a4faa2a4cdda3328 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* GitHub actions: print tests stederr on failureIvan Komissarov2023-10-051-1/+1
| | | | | Change-Id: I1cf09f8dfffdb67b311418433fe039f8d66bd5ce Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Loader: Prevent accumulating follow-up errors in failed productsChristian Kandeler2023-10-051-0/+4
| | | | | | | | | | For concrete reasons, we continue with dependency resolving even in the presence of errors, but there is no need to run Probes and validate modules after that. Fixes: QBS-1761 Change-Id: Ie280dc3738c835b18ecd5a04ac354eea98260a71 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Loader: Fix dependency parameter extractionChristian Kandeler2023-10-042-27/+13
| | | | | | | | | The implementation was strangely convoluted and unnecessarily limiting regarding what users can do with Depends items. Fixes: QBS-1762 Change-Id: Id633a3b790fde5fb478ef1145e97535682f39703 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Make scan scripts interruptibleChristian Kandeler2023-10-029-8/+62
| | | | | | Fixes: QBS-785 Change-Id: I5aeb24419e2ff2831105ae2a07d2d325dc0583f1 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* VS generator: Fix clang-tidy complaintsChristian Kandeler2023-09-301-2/+2
| | | | | | | Amends 8b6426a5af4a7b397d8ed3bb799902d281ea6984. Change-Id: Id9ad05d056535de22008d861a5a81594237e334d Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* C/C++ support: Keep built-in includes out of the compiler command lineChristian Kandeler2023-09-261-2/+8
| | | | | | | | We are asking for trouble if we let e.g. -I/usr/include appear in the compiler arguments. Change-Id: Iccbf9648299e02d408f69e5069cc7443b5be672c Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Use full product names in command line frontendChristian Kandeler2023-09-255-12/+48
| | | | | | Fixes: QBS-1207 Change-Id: I92cbca8d2842e843670f27a358b19dfe6006afbc Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Add groups support for MS build projectNick Karg2023-09-221-76/+169
| | | | | | | | | | | | Added the ability to create Visual Studio project filters according to groups in the qbs configuration file. Information about standard filters has been moved to static constants to reduce the number of memory allocations when processing a large number of qbs products. Change-Id: I9b230f28ae0f7ea0ccd5aab9994ba370b4ba3b4a Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Merge 2.1 into masterChristian Kandeler2023-09-221-2/+3
|\ | | | | | | Change-Id: I90fe01f29faa7b3a53ff8a38137af08ea32b85bd
| * doc: fix BinaryProbe examplev2.1.2-12.1Ivan Komissarov2023-09-181-2/+3
| | | | | | | | | | | | Change-Id: I6d9b26057f1e45458d42f18779d499953cae7e41 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* | Qt support: Let the user decide whether to use RPATH when linkingChristian Kandeler2023-09-212-2/+10
| | | | | | | | | | | | Fixes: QBS-1035 Change-Id: Idce0d39423b64c7cf04e1c84dd1a90de7bc4aeda Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Remove duplication of dependencies for Visual Studio solutionNick Karg2023-09-201-14/+0
| | | | | | | | | | Change-Id: I2368ab3a2ed0dd179bb47c7c6cb755ba13ffd432 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>