aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/buildgraph/buildgraph.pri
Commit message (Collapse)AuthorAgeFilesLines
* Remove most load() and store() methodsChristian Kandeler2018-02-161-1/+0
| | | | | | | | | | | | For all serializable types whose load() and store() methods simply forward these calls to their members, the methods are removed. Instead, the serialization is now done by the persistence facility itself, which detects such classes by the presence of a member template with a fixed name (using SFINAE). If the template is present, it is called, otherwise we fall back to calling load() and store() methods. Change-Id: I42dbbdd622e0ea0db28325acc506e41c472e0f0c Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Track accesses to product.artifactsChristian Kandeler2018-02-161-0/+2
| | | | | | | | ... and take the data into account when deciding whether to re-run rules and commands. Change-Id: Ib0f733028617eaa91cbf902c5537f30375900646 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Move transformer change tracking to a dedicated set of filesChristian Kandeler2018-01-311-0/+2
| | | | | | | | We want to call it from a different context in a follow-up patch. No functional changes. Change-Id: I868a7e5eafc6e7b6cf6ac140b2199ef252d9af1f Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Implement change tracking for the product.dependencies arrayChristian Kandeler2018-01-291-0/+2
| | | | | | | | We added change tracking for the elements of the array in 898d09d479, but the array itself was not covered. Change-Id: I7d4083e8bf77f52e1f4a3b5da85ba13cf52fe750 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Re-use product, module and project script valuesChristian Kandeler2018-01-261-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These script values were set up from scratch not only for every rule, but also when creating the dependencies array. As a result, a rule traversing the dependencies of a product recursively would potentially create a huge amount of identical script values for modules appearing more than once in the dependency graph, such as the qbs module. See the benchmark data below for how the performance degraded with the size of the project. Instead, we now re-use these values, which stay valid throughout the lifetime of the script engine. For prepare scripts, that's the same as the lifetime of the executor. As a side effect, this also gives us change tracking for accesses to product and module properties via the dependencies array. These were completely unobserved before. Benchmarker result using qbs as the test project: ========== Performance data for Rule Execution ========== Old instruction count: 3265471304 New instruction count: 2733833913 Relative change: -17 % Old peak memory usage: 19023592 Bytes New peak memory usage: 19871640 Bytes Relative change: +4 % Benchmarker result using Qt Creator as the test project: ========== Performance data for Rule Execution ========== Old instruction count: 318848392341 New instruction count: 75056789023 Relative change: -77 % Old peak memory usage: 248922136 Bytes New peak memory usage: 258454408 Bytes Relative change: +3 % Change-Id: Id69062eea4dd8f9c7153599610c52bf4ea986464 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Factor out the setup of the product.artifacts script valueChristian Kandeler2018-01-251-0/+2
| | | | | | | We will need to call it from different places in a follow-up patch. Change-Id: Ie44c7c55cfdf3859e09526c58a4593bd078e1096 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Make Module.setup{Build,Run}Environment first-class citizensChristian Kandeler2017-11-201-0/+2
| | | | | | | | | | | They did not have the project and product variables available, and they accessed module properties in a way that made it look as if they were normal properties rather than scripts, which was misleading. Now everything works the same as in Rule scripts and JS commands. Task-number: QBS-744 Change-Id: I11d70876185d528282a56747747dd8310a77fbc4 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Move the buildgraph, language and tools tests into the proper locationsJake Petroules2017-06-221-5/+0
| | | | | | | Also export necessary symbols that they need. Change-Id: I3023893a3da82cf0d86b0d08df38943db867cf3a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Make scanning information persistentChristian Kandeler2017-01-101-2/+3
| | | | | | | | | This way, a change in some artifact or dependency will not cause re- scanning of tons of other header files anymore. Task-number: QBS-1052 Change-Id: I1713da416b47b19275641cbbacd0a5c9da866578 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Give the two copies command.{cpp,h} non-ambiguous namesJake Petroules2017-01-051-2/+2
| | | | | | | | | | | The pair in tools/buildgraph becomes rulecommands.{cpp,h} The pair in parser becomes parsercommand.{cpp,h} This resolves a conflict which prevented compilation of the entire set of qbs sources with MSVC and the /Fo option. Change-Id: Ic909d02a230d8e59f3bf4d00fc895bf54739961a Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Move class ScanResultCache::Dependency into its own fileChristian Kandeler2017-01-051-0/+1
| | | | | | | We plan to use it in a wider scope. Change-Id: I5a098a7e65513b2d4279eac3ff109386d8001666 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Use a sorted vector rather than QSet or std::setChristian Kandeler2017-01-051-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | ========== Performance data for Resolving ========== Old instruction count: 2324724447 New instruction count: 2317712921 Relative change: -1 % Old peak memory usage: 21411584 Bytes New peak memory usage: 21070552 Bytes Relative change: -2 % ========== Performance data for Rule Execution ========== Old instruction count: 4231322611 New instruction count: 4246208129 Relative change: +0 % Old peak memory usage: 19239000 Bytes New peak memory usage: 18181072 Bytes Relative change: -6 % ========== Performance data for Null Build ========== Old instruction count: 542161499 New instruction count: 505511534 Relative change: -7 % Old peak memory usage: 13599040 Bytes New peak memory usage: 11892952 Bytes Relative change: -13 % Change-Id: I36b3dbd3fd2a4bc7503ee7779d31bd0217000785 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* fix default value of QBS_INSTALL_PREFIXJoerg Bornemann2015-05-051-0/+2
| | | | | | | | Do not install to / by default but to /usr/local. Change-Id: Ib8fc6d5410fa0d8363a6098dba5c8488279118de Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
* Add command for showing a tree of build graph nodes.Christian Kandeler2014-12-171-0/+2
| | | | | | | | This is helpful for getting an overview of the parent-child relationships. Change-Id: I097921fc77e36ca3f34e548aa6132ef8e1cd9295 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* Make qmake CONFIG value names consistent.Christian Kandeler2014-08-151-1/+1
| | | | | | | | By giving them all the "qbs" prefix. This also reduces the risk of clashes with values from other sources. Change-Id: I9406edccbc813e4759c840e17cf07926ae86a2d4 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Make sure to remove empty parent directories when removing artifacts.Christian Kandeler2014-07-021-0/+2
| | | | | | | | | | | We create these directories when we create the artifacts, so we have to remove them when the artifacts are removed. For safety, we do not do that for artifacts located outside of the build directory. Task-number: QBS-630 Change-Id: I4da91a2b940ddea6837cb881bf3dc777b71fe702 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Add new qml item ScannerMaxim Zaitsev2014-03-121-0/+2
| | | | | | | This item allows to write custom dependency scanners in modules. Change-Id: I6cb49969973ee29896d1909e7a16bf5da50f8aef Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* support transformers with an unknown number of outputsJoerg Bornemann2014-02-131-2/+11
| | | | | | | | | | | | | | | | To support different types of nodes in the build graph, we introduce the base class BuildGraphNode. Artifact now derives from BuildGraphNode. A RuleNode class is introduced that represents a rule in the build graph. Rules are applied in the build phase and not in a pre-build phase anymore. The handling of moc has been revisited. The fixed automoc pre-build phase is no more. This is the squashed merge of a feature branch. Task-number: QBS-370 Change-Id: If27cdc51cba8c9542e4282c2caa456faa723aeff Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* rename ArtifactList to ArtifactSetJoerg Bornemann2014-01-161-2/+2
| | | | | | | Now the name reflects reality. Change-Id: I3997b99de86819c973434240103d25d6915d838b Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* Move Qt profile setup into a dedicated library.Christian Kandeler2014-01-101-0/+65
Otherwise all changes to the implementation will have to be duplicated in IDEs. Change-Id: I61e6d4fa1ee9b724eb5d9de9f233dc915a6c8bc3 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>