aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* baremetal: Fix typo in cppLanguageOption() for IAR toolchainDenis Shienkov2020-03-161-2/+2
| | | | | | | | ... related to wrong compilers base names for the Renesas RL78 and RX architectures. Change-Id: I7600a2a36559082c2b32d280796a86d7a5cae1fa Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* baremetal: Auto-detect IAR toolchain for Renesas RX architectureDenis Shienkov2020-03-121-2/+7
| | | | | | Change-Id: Ifbf58bb93210808eeb35c9529765a9c464128f76 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Add IAR Renesas RX toolchain supportDenis Shienkov2020-03-121-1/+19
| | | | | | | | | | | This commit adds a basic support of the IAR Embedded Workbench toolchain for the Renesas RX processors family: * https://www.renesas.com/us/en/products/microcontrollers-microprocessors/rx.html Change-Id: I68d43eed4d89a5921eb55b56fdd3380b59c56054 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Add qbs.hostArchitecture propertyIvan Komissarov2020-03-117-1/+43
| | | | | | | | | | This property can be useful when some parts of the project (e.g. helper tools) should be compiled for the host platform/architecture disregarding what targetPlatform/architecture the rest of the project is being built for Change-Id: I8c76ef65470130df59826603157083fd20809592 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix emptyProfile autotestChristian Kandeler2020-03-101-13/+21
| | | | | | | | | | | It was broken for e.g. mingw. Prevent future failures by simply forwarding qbs.toolchainType from the profile. Also forward the toolchain install path for non-MSVC profiles if it's not in the PATH. Change-Id: I73a799387af2e746ebdd634171129f9d201478db Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Simplify the emptyProfile autotestChristian Kandeler2020-03-091-3/+1
| | | | | | | | | There is no need for a temporary settings dir: We have the special "none" value for profiles. Change-Id: I4a07053e81e94d999f3a6827c51b04d32725ffcb Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Qt: Add support for the new QML type registration mechanismChristian Kandeler2020-03-0910-2/+507
| | | | | | | | | | This implements the Qt 5.15 type registration approach via the qmltyperegistrar tool. Fixes: QBS-1531 Change-Id: Id77572a521513dc1759b02a7f7299377c2bcaabb Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* setup-toolchains now sets the qbs.toolchainType, not qbs.toolchainIvan Komissarov2020-03-0914-63/+75
| | | | | Change-Id: I21f0626a093db358f8f5dfa6248672c44edc82e2 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Qt Support: Handle MinGW pure debug from Qt 5.14Björn Schäpers2020-03-091-2/+7
| | | | | | | | | | | Beginning with Qt 5.14 [0] the d suffix for MinGW builds is only added to debug builds when configured with debug_and_release. Pure debug builds now have the same library names as release builds. [0] QTBUG-80792 Change-Id: I260ffb262a807569985413496897ce4c63135ea7 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* doc: fix candidateFilter exampleIvan Komissarov2020-03-091-1/+1
| | | | | | | We cannot use wildcards in this context, the example is misleading Change-Id: I125128908652e196c3e33813275fe88597f56481 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add "profiling" build variantIvan Komissarov2020-03-067-11/+61
| | | | | | | Also known as "release-with-debug-info" Change-Id: Ieed358810ea423ea7a9a1a52a36fa35cf165dfac Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* doc: add How-To section about separating debug infoIvan Komissarov2020-03-062-0/+61
| | | | | Change-Id: I8ae6f90da242b47ecbae7f9aeb11cebdf227ca73 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix GRPC exampleIvan Komissarov2020-03-061-1/+1
| | | | | Change-Id: I59a4655776d58ac1bb9ff19261cfdac94693e639 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Document the fact that PathProbe.candidatePaths is always populatedIvan Komissarov2020-03-061-0/+18
| | | | | | | Even when PathProbe.found is false Change-Id: I52ee359d498076d017865c739a9ceb1d575aa2a1 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add clang-cl to the list of known toolchainsIvan Komissarov2020-03-062-1/+10
| | | | | Change-Id: I4521ac3de8822a9b7fecb33f6aa27cb380f01ed9 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Qt support: Add support for moc metatype filesChristian Kandeler2020-03-0610-6/+165
| | | | | | | | From Qt 5.15 on, moc can generate metatype information in JSON format. Task-number: QBS-1531 Change-Id: Ie6969f70bac51cc80f11057841ba8d4b7947c646 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Documentation: Fix some macrosChristian Kandeler2020-03-051-2/+2
| | | | | Change-Id: I5efbb14d73f90665f8ff015075b681238d9c5244 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Rule execution: Fix potential infinite loopChristian Kandeler2020-03-055-0/+45
| | | | | | | | | | | | | | | | | | Dependency scanning can generate inverse dependencies. For instance, a Qt C++ file "myobject.cpp" containing the Q_OBJECT macro will typically include a file "myobject.moc", which is generated from the cpp file. When scanning the inputs of "myobject.moc", the artifact will encounter itself as a scan dependency. There is code that prevents a dependency cycle in this case. Let's now consider the case where such a rule has a second output artifact: When scanning the inputs of that artifact, we will encounter the first artifact as a scan dependency. This case was not handled, leading to an infinite loop in rule execution. We fix this by rejecting scan dependencies that have the same transformer as the artifact whose inputs are being scanned. Change-Id: I767ceaad387c2e315738070e01ef9322764afb65 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* GccBinaryProbe: Exit early if we didn't find anythingChristian Kandeler2020-03-041-3/+4
| | | | | | | | | Otherwise, we potentially access undefined objects. Fixes: QBS-1385 Change-Id: I98aa99b51c80e5f60ebb335917552529b340a8e8 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Artifact Scanning: Prefer scan results from product dependenciesChristian Kandeler2020-03-039-2/+78
| | | | | | | | | | | | | | | | If scanning finds an artifact in more than one product, we so far randomly used one of them. We now prefer artifacts from product dependencies, because the other ones might get lost during change tracking, as we don't keep an "is scan result of" type of information in our RescuableArtifactData. This should fix the linked bug in the vast majority of actual projects. It's also conceptually the right thing to do, because the artifact in the product dependency is much more likely to be the one that was intended to be found. Task-number: QBS-1532 Change-Id: Idd8662bb00570bc57f5861ce83517f0adb845b49 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Use std::vector for the probeBindings in ModuleLoader::resolveProbe()Ivan Komissarov2020-03-021-4/+4
| | | | | | Change-Id: Idaaed904006e421a015eefab6daf2b1b392b2ad4 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
* Use std::vector instead of QList in ModuleLoader::m_currentProbesIvan Komissarov2020-03-022-2/+2
| | | | | Change-Id: Ic48a8ddba1fd4d461a7ecc2e6d2c256323d9375c Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Use std::vector instead of QList in ModuleLoader::m_oldProjectProbesIvan Komissarov2020-03-021-1/+1
| | | | | Change-Id: I2f45445bab160997ea2724a58b45189d624158d3 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Simplify ModuleLoader::searchAndLoadModuleFileIvan Komissarov2020-02-271-34/+36
| | | | | | | | | | | | | | | | The algorithm is more natural now: - first, we try to find module files in the current searchPaths - second, if nothing was found, we try to extend the search paths by using Providers - third, we try to load module Items from the found files - finally, choose a candidate or give up if nothing was loaded This allows to get rid of the recursive call which was needed to execute the logic from step 3 with newly added search paths as step 3 was done in the same loop as step 1 Change-Id: Ie6c244c5f649bcb1b96eb2c5edca503439f3f7a7 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Extract some code to ModuleLoader::findExistingModulePaths()Ivan Komissarov2020-02-272-8/+19
| | | | | | | | This allows to get rid of the matchingDirectoryFound variable to reduce possible states in the function Change-Id: I2a86ba7e4e9a35d5c15ae48756c84136c855bcfa Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Avoid useless allocations in Item::propertyDeclarationIvan Komissarov2020-02-271-7/+7
| | | | | | | | PropertyDeclaration() allocates Private class which can be easily avoided by using iterator API Change-Id: I8240fe845b8a4d8f3ad8f8372f5bca178982ab29 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix the error when the last module candidate is not a moduleIvan Komissarov2020-02-277-3/+25
| | | | | | | | | | Previously, if the last module candidate was not a module item, the value of triedToLoadModule was set to 'false'. However, we could try to load the one of the previous candidates which means that triedToLoadModule should be set to 'true' Change-Id: I03278d51804568ebbd4dee93313c16517fd774e9 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix erasing elements in the vectorIvan Komissarov2020-02-271-1/+1
| | | | | | | | | end() should be re-calculated after erase() This amends e5f115d25 Change-Id: I6ce59cf8d475f561390ccab0ee41dbf67aeeafe5 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Introduce QBS_TEST_SOURCE_ROOT environment variableRichard Weickelt2020-02-275-7/+32
| | | | | | | | | | | | | | | This patch introduces QBS_TEST_SOURCE_ROOT environment variable that can be used to customize the source location of test data. Previously, the original testdata location was compiled into the test binaries. Thus it was impossible to run the test suites on a different host than the build host. In order to improve test coverage, we want to build the test suites once (for instance in a Docker environment) and then run them multiple times in different environments which might have a different file layout. In that case, the testdata location must be configurable. Change-Id: I7673826e6ea6f2e3aa893e657351a84c49a1033e Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Extract some searchAndLoadModuleFile() code into getModuleFileNames()Ivan Komissarov2020-02-262-10/+18
| | | | | | | | | To reduce the complexity of this function and make it more readable Also, avoid triple lookup in the m_moduleDirListCache map Change-Id: Ia838148593b9781092314fce24844e4db3e257da Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Do not call isFileCaseCorrect that oftenIvan Komissarov2020-02-262-5/+16
| | | | | | | | 'qbs resolve qtcreator.qbs' results: macOs: 0m31.510s -> 0m26.417s Change-Id: Ibd69ba87f5515e99776e6af2f87587e711213b41 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Correctly join paths in artifactInstalledFilePathIvan Komissarov2020-02-261-1/+1
| | | | | | | | | | | | When building in the root directory (e.g. Q:/) make-release-archives.bat failed to create archive with the error "share\qbs\xamples: no such file or directory". This happened because artifactInstalledFilePath expected no trailing / in installSourceBase. Luckily, FileInfo.joinPaths handles leading / correctly: FileInfo.joinPaths("Q:/foo/", "/bar") results in "Q:/foo/bar" Change-Id: I895288e6bf4c56c2b2972931c3fa1d98e8419aa0 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add XFAIL-ing autotest for newly discovered bugChristian Kandeler2020-02-269-0/+69
| | | | | | Task-number: QBS-1532 Change-Id: I54480b044610fc5018938866700e6ba53ce05f15 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add OpenGL to bionic-android Docker imageRichard Weickelt2020-02-262-3/+3
| | | | | | | | This is needed to run Qbs binaries created with qbsbuildconfig.enableProjectFileUpdates:true. Change-Id: I9a5f5065df46e90d54bd47d8559fc36cf58fa590 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Use python3 in Travis for building docs and running clang-tidyIvan Komissarov2020-02-216-15/+25
| | | | | | Change-Id: I2f0d72abdf12a4e64b79bf9a3c02b32cf4cbeed6 Reviewed-by: Richard Weickelt <richard@weickelt.de> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* doc: More info about qbs.toolchainType and qbs.toolchain propertiesIvan Komissarov2020-02-211-28/+106
| | | | | | Change-Id: I76b711aa16827e44eabea44113853ac3ee4e67e2 Reviewed-by: Richard Weickelt <richard@weickelt.de> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Autodetect clang-cl by using ProbeIvan Komissarov2020-02-179-113/+384
| | | | | | | | This allows to build projects without calling "qbs setup-toolchains" first by simply calling "qbs build qbs.toolchainType:clang-cl" Change-Id: I86d135ddf2cb588f322709e4e7a265cb6fd7772f Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Avoid double lookup in ModuleLoader::handleSubProjectIvan Komissarov2020-02-171-1/+1
| | | | | Change-Id: Ia26b49324377c00d9c897932f4df7624436ef96b Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Adds missing documentation of timeout property for autotestsJochen Ulrich2020-02-153-1/+48
| | | | | | Change-Id: I10aa20a8d621030b3d0bea1a465cdbdb9ba6193c Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add ConanfileProbe item for querying conan recipe filesRichard Weickelt2020-02-158-0/+488
| | | | | | | | | | | | Conan is a popular C/C++ package manager. Conan packages including their configuration and dependencies are usually described as conanfile.txt/.py. ConanfileProbe runs 'conan install -g json' and parses the resulting conanbuildinfo.json. The resulting JS object tree contains relevant information about the dependencies and can be used to set module properties in Product, Profile or even Module items. Change-Id: Ied6b917f061dac67fb2260eab099bcce4037750d Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Autotedect MSVC compiler by using a probeIvan Komissarov2020-02-1412-303/+516
| | | | | | | | This allows to build projects without calling "qbs setup-toolchains" first by simply calling "qbs build". Change-Id: Iba4af8bf77d0ee5d209564ea371328d3c6cf2aa2 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* clang-cl: Fix macro dumpingIvan Komissarov2020-02-143-25/+34
| | | | | | | | | | Previously, clang.exe was used to dump macro as clang-cl does not support the MSVC way. Also, architecture was not detected correctly because of the wrong assumption that clang-cl respects arch variables set by the vcvarsall.bat Change-Id: Ic6464c2bd90f1a2fceb2f8aa884721872179ff49 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix code signing for Core Foundation bundlesLeon Buckel2020-02-133-57/+67
| | | | | | | | | | | | | | | | xcode.qbs: - Change the contents of xcode._actualSigningIdentity as expected by the actualSigningIdentity and actualSigningIdentityDisplayName properties - Use Utilities.signingIdentities() to get rid of warning ’Suspicious use of Process during property evaluation...’ - Throw error if specified identity was not found BundleModule.qbs: - Add ‘_CodeSignature/CodeResources’ to outputArtifacts with the tag ‘bundle.code-signature’ and ‘bundle.content’ - Remove local var ‘bundles’ which was always undefined - Fix ‘ModUtils.moduleProperty("qbs", "pathSeparator")’ resulting in ‘TypeError: Result of expression 'obj.moduleProperty' [undefined] is not a function.’ Change-Id: I1a529efb6164906d21203ff3f3be6e570137e8ab Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Disable CI build with xcode-9Richard Weickelt2020-02-101-0/+1
| | | | | | | The job fails quite often. Build it only on master instead. Change-Id: Ice52cb0eff51870ef49e97d961549ad92e46df44 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Install more packages in bionic image to run more testsIvan Komissarov2020-02-102-6/+18
| | | | | | Change-Id: I21691196660a6f5650f6328abe43ec2269a09dbc Reviewed-by: Richard Weickelt <richard@weickelt.de> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* More meaningful SKIP messages for macOSIvan Komissarov2020-02-061-4/+9
| | | | | | | | Otherwise, it's quite hard to understand why the test is skipped in CI without looking into the code Change-Id: I5e4450c22c6b0474dac291d488e8f49d0607e290 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Install some packages on Mac jobs to run more testsIvan Komissarov2020-02-063-2/+17
| | | | | Change-Id: I90865ba6908df1550c2646a57d348dcb82e244ab Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix Qt base profile for Mac jobsIvan Komissarov2020-02-061-1/+1
| | | | | | | | | Some GCC tests were skipped on Mac because of the empty qbs.toolchain value Change-Id: I977eecad416ffd074f6e997c71da12c0a4ee8ace Reviewed-by: Richard Weickelt <richard@weickelt.de> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Print profiles on Mac os jobsIvan Komissarov2020-02-061-0/+1
| | | | | | Change-Id: Ie5ac3de1b6f1505ddf79a775dcfdedc9afaedae8 Reviewed-by: Richard Weickelt <richard@weickelt.de> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Use consistent names in PathProbesIvan Komissarov2020-02-051-10/+10
| | | | | | | | This code is copy&paste but different variable names make it easy to make a mistake doing changes Change-Id: Iab5b923ac010e1aa1fb158ee1d66986f41a0fa2a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>