aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Add documentation for the ib module.Jake Petroules2014-07-221-0/+212
| | | | | Change-Id: If772a815a9f0d99d00dc5037b236a71b7928a641 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Add support for compiling Interface Builder storyboards.Jake Petroules2014-07-227-12/+764
| | | | | | | | As a side effect, some capabilities introduced here also apply to XIBs. Task-number: QBS-466 Change-Id: I27eaf1a9a73ef25475b4f6b2bc971dcd941b6371 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Add support for compiling Xcode asset catalogs.Jake Petroules2014-07-2210-4/+190
| | | | | | Task-number: QBS-389 Change-Id: I2d93a55228c6ada801ed889404fac753182b82f6 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* fix Qt4 buildJoerg Bornemann2014-07-221-1/+1
| | | | | Change-Id: Icbfb31d435b804254e1df95ed188763360f7c33b Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* put the project file artifact into artifactsByFileTagJoerg Bornemann2014-07-221-0/+1
| | | | | | | | | | The qbs file artifact was missing in that particular lookup table, because the "qbs" file tag is added after insertArtifact is called. This fixes tst_blackBox::testEmbedInfoPlist on OS X. This commit amends 32c4d3d7. Change-Id: Ibab9f301ca4cc4e562b4a397953add70351403bb Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* make it possible to set module properties on artifacts in outputArtifactsJoerg Bornemann2014-07-224-1/+88
| | | | | | | | | | | | | | | | | | Example: outputArtifacts: { return [{ fileTags: "blubb", filePath: "x", cpp: { includePaths: "mydir" defines: ["BLA", "BLUBB"] } }] } Task-number: QBS-646 Change-Id: I3defa656e1a5b10fe56e4bbba7c354612144552c Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* Export information about project file updates being available.Christian Kandeler2014-07-223-1/+6
| | | | | | | Clients need to set the define as well when including the header. Change-Id: I0aa73cb2f530258685dc44b9da99d04d8d737b13 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Fix build.Christian Kandeler2014-07-212-3/+3
| | | | | Change-Id: I5bda4b7941506c39465b2462b24cc0fdf7c3f813 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Fix JS command canceling for the "dry run" case.Christian Kandeler2014-07-211-1/+2
| | | | | | | No JavaScript is ever run, so it cannot be canceled either. Change-Id: I322b2b1bb599273562f60028c07ac6bb09b4dd66 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* add a simple Version classJoerg Bornemann2014-07-218-63/+135
| | | | | | | | This class replaces the Version struct in setup-qt and the ImportVersion class of the loader. Change-Id: Ic65eaf62de44ce0c082fe805431463defce1fe3b Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* don't print usage on missing project fileJoerg Bornemann2014-07-211-4/+2
| | | | | | | | | | This error is obvious enough to not show the entire help. Also, this behavior is consistent with "qbs -f /dir" where /dir doesn't contain a project file. Change-Id: Icb0a4d8ce41d7480e02aca262faf14922aecab6e Task-number: QBS-655 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* Doc: document qbs_enable_project_file_updatesJoerg Bornemann2014-07-211-0/+2
| | | | | | Change-Id: I1bc53e14219acec3ee9b3b88720bef25609e0a1b Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com> Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* Add artifact to transformer outputs earlier.Christian Kandeler2014-07-211-1/+1
| | | | | | | | | Namely, at the same time we set the transformer on the artifact. Otherwise there will be a time window where the build graph is inconsistent (and there'd probably be a memory leak as well). Change-Id: Ief5d253e672ffcd76dfceab1572a5dcfdf4cdaa3 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Fix possible assertion in Executor.Christian Kandeler2014-07-211-2/+1
| | | | | | | | We can get an exception in build() when there are already jobs running, which was not the case originally. Adapt to this. Change-Id: I6c10983f9635950d1597c2b34f1b885112f3877d Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Add support for compiling OS X icon sets.Jake Petroules2014-07-2111-2/+82
| | | | | | Task-number: QBS-493 Change-Id: Ie6e4a00f672ce4305f03e00ec0b0b7ebcbd942c3 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* More error message fine-tuning.Christian Kandeler2014-07-212-1/+4
| | | | | | | | | | | - Make sure errors are not overwritten in the executor. - Do not report a process result for canceled processes. Such bogus errors currently spam the output, making it difficult to find the actual error that caused us to cancel the process in the first place. Change-Id: I76d724d084532fbce243bf180d955d6f34ac0a91 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Import some shellquote utility functions from qmake.Jake Petroules2014-07-184-0/+160
| | | | | | | | Will be used by future patches. Change-Id: I20bc0cdcbf8bde8d351e3fce30d3e15f1cb444e8 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* API: Make the ability to update project files optional.Christian Kandeler2014-07-1810-19/+52
| | | | | | | | | | | | This is the functionality that allows callers to add files to groups etc. Unfortunately, the QML/JS rewriter we use for this purpose pulls in the Qt GUI module, which results in unnecessary library dependencies if one only wants to use the command-line frontend. Therefore, allow this feature to be compiled out. Task-number: QBS-565 Change-Id: Ic134ff9cf37bd552ad493b388c05bcece983fd65 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* fix occasional crash when applying dynamic rulesJoerg Bornemann2014-07-181-2/+10
| | | | | | | | | | When creating the set of input artifacts we must not include compatible artifacts that have been created by this rule. This can e.g. happen for the ["cpp", "hpp"] to ["hpp", "cpp", "unmocable"] rule and led to occasional crashes in TestBlackbox::track_qobject_change. Change-Id: I8bf5e8285fa22c8ec89619fb7d3bec60b9797ef0 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* add assertion in RulesApplicatorJoerg Bornemann2014-07-183-6/+12
| | | | | | | | Bail out if we try to remove an input artifact of a rule while applying this rule. This indicates a serious flaw of the calling code. Change-Id: I19110ececa02e5a795474a99f5ba911e4d2c9faa Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* fix up-to-date check wrt missing file dependenciesJoerg Bornemann2014-07-186-0/+36
| | | | | | | | | Missing file dependencies (e.g. header files that are not part of the project) must trigger a rebuild their dependents. Change-Id: I502e696d886c86a503e8950ae60254075f7e9415 Task-number: QBS-631 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* Cpp module: Fix "visibility" property.Christian Kandeler2014-07-183-5/+7
| | | | | | | | The GCC visibility options can be combined. Change-Id: I9fe5c9bb80f2fcc97cd5a5bc0651314ecd180e51 Reviewed-by: Jake Petroules <jake.petroules@petroules.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* invalidate artifacts if a dependency is removedJoerg Bornemann2014-07-189-1/+52
| | | | | | | | | | | Artifacts must be invalidated if a dependency is removed. Consider a foo.cpp that includes bar.h. If bar.h is removed from the project, then we must recompile foo.cpp to trigger the compile error that stems from the wrong include. Change-Id: Ifc2bc3085be553f87685a17c5ff05273daa6579c Task-number: QBS-631 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* Organize and split IB module logic into a JS file for code reuse.Jake Petroules2014-07-172-79/+110
| | | | | | | | | The autoUpgrade property is also gone because it is not an operation that could be applied during a nib compilation workflow; it is an operation that would be performed on a source document. Change-Id: I5a6e6455a3fa6d9ab120c17169430db5f38175dd Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* extend debug output of the up-to-date checkJoerg Bornemann2014-07-171-4/+8
| | | | | | | | It's sometimes valuable to know which file a timestamp belongs to... Change-Id: I41e748840bb07ff9755f33769b1b97b19066871a Reviewed-by: Jake Petroules <jake.petroules@petroules.com> Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* Expose additional properties in the ProductData API.Jake Petroules2014-07-174-0/+52
| | | | | Change-Id: I825deb8f44aa8e0fa2a1e89cae7a1c0c3e314073 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* remove special ActiveQt case from moduleNameWithoutPrefixJoerg Bornemann2014-07-171-3/+3
| | | | | Change-Id: I03f52f26fe8b8b657177d7a3128231619788ebb2 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* fix deprecation warning in Qt.gui moduleJoerg Bornemann2014-07-171-1/+1
| | | | | Change-Id: Ie3f4296e6006f37b74644018f399c7694171fa74 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* rename QtModuleInfo::moduleName to moduleNameWithoutPrefixJoerg Bornemann2014-07-173-3/+3
| | | | | | | ...because that's what it returns. Change-Id: Ie0c8f27ea1d6b686fc1f825dbc8b42c56f1a7b68 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* fix library names for Qt4 ActiveQtJoerg Bornemann2014-07-171-1/+1
| | | | | Change-Id: I906b5642a9285d9db47fe7230743f02b2a264413 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* remove unused property qtModulePrefix from Qt modulesJoerg Bornemann2014-07-173-7/+0
| | | | | | | | This was used to calculate include and library names. That's done in setup-qt now. Change-Id: Ief2b17e9fdf65e829dc563dac49e70d8dcbaebee Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* remove property includeDirName from QtModule.qbsJoerg Bornemann2014-07-171-1/+0
| | | | | | | The usage of this property was removed in 04e5834e. Change-Id: Ib938d9761f432b5b3cfad27d6c4008061edb69c7 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* fix MinGW compiler detectionJoerg Bornemann2014-07-171-1/+2
| | | | | | | We must take the executable suffix into account. Change-Id: Idcb6abbf7801d2a1d49239ed81521d83a278e4f1 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* fix calculation of added/removed artifactsJoerg Bornemann2014-07-1714-214/+102
| | | | | | | | | | | We kept lists of added and removed artifacts in ProductBuildData. It was never quite clear when to invalidate those lists, which led to QBS-635. Instead we let the RuleNode decide which artifacts it considers as "added or removed for this rule". Task-number: QBS-635 Change-Id: I390e0ab775c695045c6e91ade3ac7326692cb314 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* speed up ResolvedProduct::lookupArtifactsByFileTagJoerg Bornemann2014-07-176-8/+18
| | | | | Change-Id: Id2f55d64dcbaf6c1b80009a13d48ed823ee213cd Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* Fix typo in share.qbs.Christian Kandeler2014-07-161-1/+1
| | | | | Change-Id: I95a93d0fa27dc68d8a3d1efbcb4563ee6fa8b72f Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Take product type changes into account when change tracking.Christian Kandeler2014-07-165-0/+32
| | | | | | | | | | This property is special: We cannot just test for relevance by checking whether it is used in any transformers, because changing it can cause new transformers to get pulled in. Task-number: QBS-650 Change-Id: If18495b47c7238fc8a1256146f4e935ce9655b18 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Add missing metatype registration.Christian Kandeler2014-07-165-1/+29
| | | | | | | | The code path where this is relevant has apparently never been taken, so add an autotest as well (and fix the wording of the error message). Change-Id: I314f1cb888264d30920a58f4e9cbbbf01fbcc4e6 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Fix qbs build of API autotest.Christian Kandeler2014-07-161-1/+1
| | | | | | | | The "share" directory was no longer being found due to the recent semantic change for product.buildDirectory. Change-Id: I89eee64aa18510fe592765e32a99784f0659d400 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Fix "build graph locking" autotest for Qt < 5.1.Christian Kandeler2014-07-161-0/+3
| | | | | | | | The locking is not implemented there, so we actually expect a failure in that case. Change-Id: Ie70aa2318915223b968f78015a796dcd390fb1c5 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Speed up project re-resolving by skipping the loading from file.Christian Kandeler2014-07-1611-91/+133
| | | | | | | | When re-resolving an existing project, the build graph already exists in memory and does not have to be read from disk. Change-Id: Icf5cf7396a859d4ee1c495b8cc4fa7a1ee61ff1d Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* deprecate Artifact.fileName in favor of Artifact.filePathJoerg Bornemann2014-07-1640-87/+128
| | | | | | | | This property is actually a file path, not a mere name. Task-number: QBS-579 Change-Id: I04e8f03eac97b5f86fe743a4923888a3d2a82c5d Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* qtprofilesetup: Only copy module files if necessary.Christian Kandeler2014-07-161-66/+76
| | | | | | | | | To get rid of unnecessary project resolving due to time stamp updates. This is particularly relevant for Qt Creator, which often calls this code for no reason. Change-Id: Ic28464fa470c79efb800800ddb4f1c368d1e527d Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Rename "lockBuildGraph" to "lockProject".Christian Kandeler2014-07-162-8/+8
| | | | | | | To distinguish this lock better from the build graph file lock. Change-Id: Ib520bea568c5f9bf0ea5c87347f5576d82c935c4 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Fix race condition in project locking.Christian Kandeler2014-07-163-9/+13
| | | | | | | | We did the unlocking in a different thread, which does not seem like a good idea. Change-Id: Id3427bf52e993011d0f18b0d7f526901e31e9c30 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* remove outdated commentJoerg Bornemann2014-07-161-1/+0
| | | | | | | We don't support that much control over the build dir's contents. Change-Id: I50cd5e254551e109925b0265a52319df326142f2 Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
* Put a system-wide lock on the build directory.Joerg Bornemann2014-07-1610-3/+215
| | | | | | | | | | | | | So that two qbs instances can't overwrite each other's build graphs. In practice, this is probably most relevant for IDEs, as these hold a build graph for potentially long periods of time. Facilitates QLockFile that was introduced in Qt 5.1. For older Qt versions, no locking happens. Task-number: QBS-162 Change-Id: Ib598617fb1742eb57b6a017f40b9631d1d54e627 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* remove deprecated Product.additionalFileTagsJoerg Bornemann2014-07-151-11/+0
| | | | | Change-Id: I98b4ddc32266eaa83ece5ed4ba814d183206671e Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* Refactor BuildGraphLoader::load().Christian Kandeler2014-07-152-28/+35
| | | | | | | | | Move the code that actually loads the project from a file into its own function. Change-Id: I258f97e8411a54e99fa274041f9054ce0703e273 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* Introduce a private header class for qbs::Project.Christian Kandeler2014-07-154-68/+122
| | | | | | | This is needed for a follow-up patch. Change-Id: Ica5b5f42028020595e7362953879a51e9ca2e28e Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>