aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* GCC: Fix input tags for static librariesChristian Kandeler2018-06-083-1/+10
| | | | | | | | | | We forgot to adapt the static library rule back when we implemented smart relinking. Change-Id: Iea952c868ca7b5c0bda89690865d554be4893bb5 Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix observation of JS imports pulled in via "require"Christian Kandeler2018-06-071-4/+3
| | | | | | | | | If we call import() with ObserveMode::Disabled, we still need to gather all the results for possible later observation, because due to caching, we will not re-collect them on the next import() call. Change-Id: Ia7ccbe7cc3c47d6c2f1612bcf37c4a6c144c6ea2 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix property values that are pure assignments of importsJoerg Bornemann2018-06-065-1/+49
| | | | | | | | Those were broken, because QScriptValue::toVariant() doesn't take QScriptValue::prototype() into account, which we set for imports. Change-Id: I571f7a4b63df08b1768f61bcc1d622f3730c2a73 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Exporter.pkgconfig: Add support for custom variablesChristian Kandeler2018-06-064-0/+24
| | | | | Change-Id: I42a01e549c15c91428d0f8bd9be03ea59c773032 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Update man pageChristian Kandeler2018-06-051-3/+3
| | | | | Change-Id: I46d015812d0cb49716123dc5a6748acf48c8bb3f Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix the qmlcachegen functionalityChristian Kandeler2018-06-053-5/+37
| | | | | | | | | | | | | The qmlcache module was broken in an impressive number of ways: - We forgot to adapt the Probe to a5cc49f2c6. - The return value of the validate property is never evaluated; you have to throw an error for it to have an effect. - From 5.11 on, qmlcachegen does not support the --target-architecture option anymore. Task-number: QBS-1353 Change-Id: I770ddc18ad2519c1d5db83bee9634717b1768d67 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add module Exporter.pkgconfigChristian Kandeler2018-06-0421-0/+740
| | | | | | | | | | | | This module generates .pc files for products, optionally attempting to derive some of the entries from the contents of the Export item. [ChangeLog] Added new module "Exporter.pkgconfig" for creating pkg- config metadata files. Task-number: QBS-1232 Change-Id: Ic41e645e4462e8f85ad6c2025fb967e88d3438f9 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Make sure probe results are also cached for shadow productsChristian Kandeler2018-06-044-1/+31
| | | | | | | | | | | | Because we don't turn shadow products into actual products in the ProjectResolver, the results of probes run in their context did not end up in the build graph and the configure scripts were therefore needlessly re-executed on the next project resolving. Fix this by storing these probe results along with the project-level ones. Change-Id: I647bbedbbe3fa6f36b536fd1b80fd321894362f8 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add info about system-level settings to changelogChristian Kandeler2018-06-041-0/+1
| | | | | Change-Id: Ia0580bbf3dcd50036e4b7010a722e84cf3bf6e8e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add support for system-level settingsChristian Kandeler2018-06-0138-90/+460
| | | | | | | | | | | | | In addition to the traditional per-user settings, there is now also a system-wide settings file affecting all users. The file's platform- specific default location can be overridden at build time. The qbs-config tool can write these settings via the new --system option. [ChangeLog] Introduced the concept of system-level qbs settings Change-Id: Ie6f675a74e96ce1fa7b2dd0712f6106071e848a6 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* AutotestRunner: Make sure to run only the actual autotestsChristian Kandeler2018-05-301-0/+7
| | | | | | | | | If products that come in via auxiliaryInputs are also applications, then these would get run as well, which is wrong. Prevent that from happening. Change-Id: I9580fa4e5198f8a9ab2a0a36ef221c52e3881df8 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* AutotestRunner: Fix default working dirChristian Kandeler2018-05-301-1/+1
| | | | | | | ... for the case of an installed test. Change-Id: Ib064da968cb7aae4531c0b7177c044ee6d97bcde Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* C++ scanner: Properly handle UTF-8 byte order markChristian Kandeler2018-05-306-0/+35
| | | | | | | | | | | | | | Includes in the first line of a source file starting with a byte order mark would not get detected, resulting in failure to recompile after a header file change. Skip over the BOM before passing the data to the lexer. Task-number: QBS-1348 Done-with: Ola Røer Thorsen <ola@silentwings.no> Change-Id: I894a5b1667e49be5f8ce9b5cc66e4e796fd073f1 Reviewed-by: Ola Røer Thorsen <ola@silentwings.no> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Doc: Fix a typoLeena Miettinen2018-05-301-1/+1
| | | | | Change-Id: I143997ecbda03a290307d62c30adbca1527f7e0a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix copy/paste artifact in AutotestRunner documentationChristian Kandeler2018-05-291-1/+1
| | | | | | | The workingDir property is of course a string. Change-Id: If0c5dbccb4debe20640cb4add0d0d13d0dc85d8e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add how-to for running autotestsChristian Kandeler2018-05-291-0/+31
| | | | | Change-Id: I438c6e754ea03a53306cc7d55debcc6574d2c2f9 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix the type of the cpp.cLanguageVersion propertyChristian Kandeler2018-05-288-1/+58
| | | | | | | This was forgotten in 2bda52aa3d. Also added autotest. Change-Id: Iba8c7c7aa6629f321017315b03964ce20809ac23 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Documentation: Work around qdoc quirkChristian Kandeler2018-05-254-5/+5
| | | | | | | | Apparently, the name of a snippet identifier cannot have the name of another snippet identifier as a substring. Change-Id: Ic82a26f3e05daa627f2de36d330e31216cf0a76e Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* qbs-setup-toolchains: Check for presence of cl.exe in MSVC bin pathsJoerg Bornemann2018-05-241-3/+6
| | | | | | | | | | | | | Now we check for the presence of cl.exe also for VS versions >= 15. This fixes warnings like: WARNING: Failed to set up MSVC2017-_1033: Could not start C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.14.26428/bin/arm/1033/cl.exe (Process failed to start: The system cannot find the file specified.) Change-Id: I2d8350abaa1b8a96a3e832d4bfc121f5fa2e52ba Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Move msvcVersion out of QtEnvironmentJoerg Bornemann2018-05-244-18/+29
| | | | | | | | | This member is only used in qbs-setup-qt and is possibly invalid when used from Qt Creator. The removal stops us from trying to use the member in the qtprofilesetup lib again. Change-Id: Ib356b0f69fe479321aa7c3148acdb95fb805239a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix file tag for Qt libraries in qtprofilesetupJoerg Bornemann2018-05-241-1/+2
| | | | | | | | | The check env.msvcVersion.isValid() doesn't work for Qt Creator, because we never set the MSVC version for a QtEnvironment there. Use the isMsvcQt function instead. Change-Id: I9cfef1bc6383551fc3382408d18a239c4f7d0339 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Move MSVC-related functions to qtprofilesetup libJoerg Bornemann2018-05-245-36/+137
| | | | | | | This will avoid code duplication in the next commit. Change-Id: I90d99860dce04bf56c81d4f363aa6e5bafe1224c Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add a changelog file for 1.12.0Christian Kandeler2018-05-221-0/+39
| | | | | Change-Id: Ic2857b55f4d5725d1eefbcf5663c2b2b634dbabf Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* ModuleLoader: Set project-level search pathsChristian Kandeler2018-05-191-0/+1
| | | | | | | | ... when adding transitive dependencies. This was forgotten in 7e630a1436. Change-Id: If1a4bbecb8ee7b828d8b32ae79933ac07ad58d12 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Include settingsrepresentation.h in the main header fileChristian Kandeler2018-05-191-0/+1
| | | | | Change-Id: Ifcb9d418d9646ae9bbc2aad816518fd6cb732659 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix CLOCK_REALTIME not being available on macOS SDK < 10.11Alexandru Croitor2018-05-181-0/+5
| | | | | | | | | Just define it to a dummy value, it's not used anyway. Amends 2aa3131bef6444a800f6e6259cecf44851eb0454 . Change-Id: Ib11e4158b274ef6b49013107cc0815007b6544d6 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix TestBlackbox:vcsGit testAlexandru Croitor2018-05-181-0/+1
| | | | | | | | Need to wait for a new timestamp, to make sure rules see all the changes. Change-Id: I972737e44d89d10cfa55eae41c5ac44c3c69e021 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix vcsSubversion test on macOSAlexandru Croitor2018-05-181-1/+1
| | | | | | | | | | The output of the repoState property contains additional whitespace for subversion case on macOS. Make sure to trim the output of any whitespace. Change-Id: Idb17361dc4e7fb95a18c3e789877347e789e5575 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix FileTime and FileInfo stat times implementation on macOSAlexandru Croitor2018-05-183-8/+43
| | | | | | | | | | | | | | | | | | | | | | This requires a couple of changes: 1) When targeting macOS 10.12+, clock_gettime is available and can be used directly for FileTime::currentTime(). 2) For lower versions, we partially implement the clock_gettime CLOCK_REALTIME usecase, as it is done in macOS libc sources, and explicitly use that version. 3) The file stat structure has slightly different field names on macOS, so the accessed names were adjusted in FileInfo::lastModified() and FileInfo::lastStatusChange(). Two more things are worth mentioning: 1) Both the stock and custom implementations of clock_gettime() have 1000nsec = 1microsecond resolution, and not a 1ns one. 2) The stat.st_mtimespec field can store nanosecond values, but in practice with HFS+ the date resolution is 1 second. This is not true for APFS, which has a 1ns resolution. Change-Id: I1ecdc6e9db7a9c1dc5f9a9a0859ec25a34165c4d Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* ModuleLoader: Remove modules of disabled product modulesChristian Kandeler2018-05-181-6/+4
| | | | | | | | | | | ... before setting up the transitive dependencies. Otherwise, there is the danger that other code will look at the original modules list and stumble over inconsistencies. For instance, propagateModulesFromParent() does that, which caused asserts on macOS. Change-Id: I8cd1adb15d8341e8f528f221dcca22fa27b0d68e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Do not export anything from disabled productsChristian Kandeler2018-05-183-29/+73
| | | | | | | | | | | | | | | | | Before this patch, if a product had a non-required dependency on another product and that product's condition was false, then the dependencies from the disabled product's Export item still got into the importing product, which is not what users expect. The fix is achieved by splitting up the addTransitiveDependencies() function and moving the part that is not required for determining the dependencies between products into handleProduct(). In that function we already have definite knowledge about which dependencies are enabled, so we can simply filter out dependencies of modules representing products that are disabled. Task-number: QBS-1250 Change-Id: I787a4554b2ced3924e0c6ab7e78bd73221fbecdc Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Mark parent artifacts explicitly as out of dateChristian Kandeler2018-05-1810-2/+53
| | | | | | | | | | ... after a transformer finishes. This makes our "out of date" check independent of the local clock resolution for generated artifacts that do not have source artifacts as children. Change-Id: If3d47f1fd859c30846806fabaddf3b47a840a6d3 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* ModuleLoader: Remove unneed loadBaseModule() callChristian Kandeler2018-05-178-6/+59
| | | | | | | | | | | | | | | That call was probably conceptually unneeded since d08ce8f643 (because from then on the module instance, which already has a qbs instance, was used to evaluate the condition), and harmful since be8432fac9 (because the loadBaseModule() call then happened on the shared module prototype). This patch also needs to touch the module merger: Because the prototype is now not tainted with qbs properties from the product item anymore, we have to make sure that variant values are not ignored during module merging; otherwise, qbs properties set by the multiplexing procedure could get lost in the merge process. Change-Id: Iae5d47dbe018d330f4c96e919bb0f83c086ae1df Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Make Depends.productTypes in Export items workChristian Kandeler2018-05-164-33/+174
| | | | | Change-Id: I441c0454ee7a4b928c132052c49db1cddc34d3c9 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* ModuleLoader: Split up the module prototype cacheChristian Kandeler2018-05-162-43/+67
| | | | | | | | | | We only need one prototype item per file path and profile. Other differences, such as the multiplex configuration, only influence whether the module condition is true and do not require loading the module file again. Change-Id: Ia352bca1859566d5db6bfc86ce4d24888ef45f30 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Allow module instances with the same priority in different search pathsChristian Kandeler2018-05-1511-18/+66
| | | | | | | | | | The search path order provides additional prioritization. Conflicts can now only occur between candidates in the same directory. This is needed e.g. to allow distributions to provide global search paths. Change-Id: I698a96e8943041fb0c4536901f75394bacd7fb40 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* ModuleLoader: Move some code out of a loopChristian Kandeler2018-05-151-15/+16
| | | | | | | These values are the same in all iterations. Change-Id: I53f5f2bb5c76605eae089f546537c58d396787f1 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix TestBlackbox::makefileGenerator on macOS againChristian Kandeler2018-05-141-0/+2
| | | | | | | One of our test machines still had problems. Change-Id: I49ec0ffd9831fbe768155a132f2d8db674e0db87 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix TestBlackbox::maximumCxxLanguageVersion() againChristian Kandeler2018-05-141-2/+4
| | | | | | | | | It turns out that the gcc versions on some of our test machines are so old that they don't even know the deprecated "c++1z" value yet. So don't require the compiler call to actually succeed. Change-Id: I751223f073edbd207e078c2bb018cdea4cd95e64 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix TestBlackbox::maximumCxxLanguageVersion()Christian Kandeler2018-05-141-3/+4
| | | | | | | | Some of our test machines have older compilers, so also check for the deprecated command-line options. Change-Id: I589c29faf3cafd6bd22e975e3d80ea4f24e39507 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Properly handle Depends.profilesChristian Kandeler2018-05-145-14/+102
| | | | | | | | | ... when adjusting dependencies for multiplexing. If the profiles property is set, it must override our heuristic about which variant of the dependency to use. Change-Id: I207dd6cdee91fb2715b5abcd634573f850f14404 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Make cpp.cxxLanguageVersion a listChristian Kandeler2018-05-1412-6/+105
| | | | | | | | | | | ... and choose the highest entry. This enables different modules to specify their requirements without introducing conflicts. Same for cpp.cLanguageVersion. Task-number: QBS-1225 Change-Id: I96ed6c370eb190023fdb69274dcb080d967f512d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix makefileGenerator() autotest on macOSChristian Kandeler2018-05-141-0/+7
| | | | | Change-Id: I7ef04109d22956bf7d6d63dd0f5f4cda87245561 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix FileInfo::isDir() on WindowsChristian Kandeler2018-05-091-1/+1
| | | | | | | The function returned true for non-existing files. Change-Id: If3c3d9d1d89b3b1b70414d1b3168bd091d4f75a8 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Merge "Merge remote-tracking branch 'origin/1.11'"Joerg Bornemann2018-05-093-4/+13
|\
| * Merge remote-tracking branch 'origin/1.11'Joerg Bornemann2018-05-093-4/+13
| |\ | | | | | | | | | Change-Id: I407596d75413e43aa61e7d1fe8591f4a0f388340
| | * Prevent empty strings in qbsSearchPaths1.11Joerg Bornemann2018-05-081-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As QFileInfo::canonicalFilePath might return an empty string, we must remove all empty strings from the result of makePathsCanonical. All other search path handling code is not prepared for handling empty strings. This fixes ---snip--- SOFT ASSERT: isAbsolute(base, hostOs) && !isCurrentDrivePath(rel, hostOs) in ../../../../master/src/lib/corelib/tools/fileinfo.cpp:192 base: , rel: qbs/base ---snap--- we would get when having a non-existent path in qbsSearchPaths. Change-Id: I62c3c1054fd762b521005ab8da08b194148428b4 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
| | * setupRunEnv: Try harder to keep system run paths out of the environmentChristian Kandeler2018-05-071-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | A simple string comparison is not always enough, because of soft links. Change-Id: Id1889fa70d5948a1db66d8e6a69b8a2fbb0e34dd Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
| | * Version bumpChristian Kandeler2018-05-041-1/+1
| | | | | | | | | | | | | | | Change-Id: I0beba429dca8dff03e7dc977a78f75bade916865 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
| | * qbs build: Fix core lib's Export itemChristian Kandeler2018-05-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | We overwrote the defines from QbsLibrary.qbs, breaking static builds. Task-number: QBS-1230 Change-Id: Ia146e39f6278bf21c2415008c91520399065b20d Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>