summaryrefslogtreecommitdiffstats
path: root/qmake
Commit message (Collapse)AuthorAgeFilesLines
* support a cache that is really just a cacheOswald Buddenhagen2013-11-145-28/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | unlike .qmake.cache & co., the presence of this file has no magic effects on where mkspecs, modules and other things are searched. as the obvious name "cache" is of course already taken, we call it "stash". the file is searched up to the super cache (if present), otherwise up to the normal cache/conf (if present), otherwise up to the root. if it's not found, it is created next to the super cache (if present), otherwise next to the cache/conf (if present), otherwise in the current output directory. note that the cache really should be created and populated by the top-level project if there are subprojects: otherwise, if there is an "anchor" (super/cache/conf), subprojects would race for updating the cache and make a mess. without an "anchor", each subproject would just create its own cache, kind of defeating its purpose. this is no different from the existing "cache", but it's worth mentioning that removing the "anchoring" function does not remove the "nesting order" constraint. Task-number: QTBUG-31340 Change-Id: I786d40cef40d14582a0dd4a9407863001bec4c98 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* clean superfile and cachefile paths upon creationOswald Buddenhagen2013-11-141-2/+2
| | | | | | | | | otherwise, if the output dir is the root, the path would be denormalized. the code for finding existing files already does that. Change-Id: I56d70477e9c9ffcd936325068624a84df10ffd87 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Doc: Updated url variable in qdocconf files.Jerome Pasion2013-11-061-2/+1
| | | | | | | | | | | | | | In 5.2, the HTML output is in a flatter structure and when they are hosted in qt-project.org/doc, the documentation will be found at http://qt-project.org/doc/qt-$QT_VER The url variable is used by projects outside of Qt 5 which need to link to Qt 5 documentation, such as Qt Creator. Task-number: QTBUG-34584 Change-Id: Ifa55fcd9e402b0e184a41e316340e46aeb7101de Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
* move setting of _QMAKE_{SUPER,CONF,CACHE}_ to a more logical locationOswald Buddenhagen2013-11-041-24/+25
| | | | | | | | | | | | | there is no point in setting the variables already when peeking into the caches, as that is done in a separate evaluator anyway. it also makes no sense to have them set while loading the spec itself, as it's not permitted to do anything with the caches. so set them at the next convenient point, which is right before actually loading the caches. Change-Id: I3717ddf94353dc04e12c52e542f16ed27b578e14 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* bring fake qmake project up to snuffOswald Buddenhagen2013-11-042-27/+26
| | | | | Change-Id: Ib5b51ea2198db9fb202d957ab08b47cd32e99723 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* fix warnings about unused variables & parametersOswald Buddenhagen2013-11-043-5/+6
| | | | | Change-Id: Ia5816671267ea21dae0d90560b239c4498f9156c Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* shrink #ifdef'd sectionOswald Buddenhagen2013-11-041-4/+5
| | | | | | | for better compile-time coverage Change-Id: I594303cca6f22b68f99c0f35e0767032b90c9eae Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* make-gcc-happy variable-may-be-uninitialized (but-is-not) commitOswald Buddenhagen2013-11-041-1/+1
| | | | | Change-Id: If214d3bce7fd23e2c30b6b9bc1bfec2e9fff3958 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* fix initialization order warningsOswald Buddenhagen2013-11-041-4/+4
| | | | | Change-Id: Ia12973f7c4cabff77133ef4b9a840b76e8881759 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* fix signedness warningsOswald Buddenhagen2013-11-041-2/+2
| | | | | Change-Id: I86952c06176dd334a3f029c34b74260ea43434cb Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* kill dead codeOswald Buddenhagen2013-11-041-11/+0
| | | | | Change-Id: I713c5504126fab40389ecb3a248b6c10048fc6c4 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* xcode generator: warn if QMAKE_INFO_PLIST is not validRichard Moe Gustavsen2013-11-012-0/+4
| | | | | | | | | | | Warn the user if QMAKE_INFO_PLIST is set, but file not found. An iOS application will not run or deploy without an Info.plist present, and the error message given by xcodebuild is not very informative. Change-Id: I54f0e06de320a43c9f3261fe88761c41e3ccd022 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* fix VS version selectionJoerg Bornemann2013-10-311-31/+16
| | | | | | | | | | | | | | | | On machines where multiple versions of VS are installed, the VS version for the vc(x)proj generator is selected by the entries in the PATH variable. The first VS installation that's found in PATH is used. The former logic printed a warning if multiple VS installations were in PATH and also fell back to the lowest version if a VS version was registered with multiple install paths. That's the case for VC 2012 express and prevented its usage. Task-number: QTBUG-34357 Change-Id: Ia5c66a1aea0c40e4b7460b3aa6c7daee6673da44 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* qmake: Pick up default bundle prefix from Xcode preferencesTor Arne Vestbø2013-10-311-1/+4
| | | | | | | | | But still fall back to 'com.yourcompany', just like Xcode does for the initial launch. Change-Id: I89afadefafc254a0014aca197741d42a0199943e Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* xcode generator: resolve QMAKE_INFO_PLIST from source dirRichard Moe Gustavsen2013-10-301-1/+1
| | | | | | | | | | If QMAKE_INFO_PLIST is set, check if the file it points to is located inside the project source dir rather than the build dir. Change-Id: I6fb176349dae8e841b5e2dfdb9f9cb87f51a1e76 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* Fix msvc project dependencies as specificed by .dependsChris Gilbert2013-10-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the full path to the qmake project file was specified as the key for projGuids when inserting the project GUID into this hash table. The only place that items are inserted into projGuids is in VcprojGenerator::collectDependencies at: projGuids.insert(val.first, newDep->target); In this case, val.first contains the full path for the given project being processed at this point. (e.g.: c:\testproject\testproject.pro) Further in sln/vcproj generation, projGuids is queried with the contents of <TARGET>.depends so that users may specify another qmake project as a dependency for a given target. This occurs in two places, in two ways: 1) In VcprojGenerator::collectDependencies() at: QString depend = dep.toQString(); if (!projGuids[depend].isEmpty()) { ... In this case QString depend contains whatever is put into <TARGET>.depends. Typically this is the plain name of the project you depend on. (e.g.: testproj) 2) In VcprojGenerator::writeSubDirs(QTextStream &t) by proxy of extraSubdirs which is a QStringList of the project depends should the mapping in case 1 fail. This case works much like the above case, attempting to use each QString entry of the extraSubdirs list as a key in projGuids. If either of the above two attempts are successful, the msvc solution is configured in a way that creates a project dependency, ensuring correct compilation order and other related behavior. The fix here stores the target project (e.g.: testproject) as opposed to the full project path, as that is what is expected in the <TARGET>.depends statements contained in the qmake project. Change-Id: Iee05661a64d7a3e4467c5ade48d801fbbfe981b5 Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Chris Gilbert <cgilbert@knaldtech.com>
* fix /SAFESEH linker option for VS >= 2010Joerg Bornemann2013-10-293-4/+9
| | | | | | | | | | In VS 2010 and newer the /SAFESEH linker option is not passed as additional option but is represented by the property ImageHasSafeExceptionHandlers. Task-number: QTBUG-34392 Change-Id: I3bd19078e695716050dd20736b6bc589bcb1cefd Reviewed-by: Andy Shaw <andy.shaw@digia.com>
* Add QMAKE_PKGCONFIG_VERSION variable to allow version overridingKonstantin Ritt2013-10-281-1/+5
| | | | | Change-Id: Ibba50c74f308d81e0058e4dacec7ed84e738473e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* xcode: Move Qt preprocessor steps to separate targetTor Arne Vestbø2013-10-251-2/+24
| | | | | | | | | | | | | | | Xcode resolves dependencies at the beginning of each target, so if a Qt preprocessor such as moc or rcc updates a cpp file Xcode will not rebuild the cpp file until the next build. We solve this by moving the Qt proceprocesor handling to a separate aggregate build tool target, which the main application target then depends on. Change-Id: I8f9225b9603dc5f279b1cb60976fe709bd97963e Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* qmake: Expose qmake arguments as QMAKE_ARGSTor Arne Vestbø2013-10-245-4/+5
| | | | | | | | Allows project files or mkspecs to call qmake recursively using system() with the right arguments, which we use to fix the ios default_post.prf. Change-Id: I90d69e2b156bb0f0af1279188b11f81c84c24fb8 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Skip extra PKGCONFIG variables with empty valueKonstantin Ritt2013-10-221-1/+2
| | | | | | | The fallback value is an empty string anyways. Change-Id: I77a2d3ad275321cb8b2e059fb6359f921cbc697c Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* qmake: Add support for QMAKE_{PRE,POST}_LINK in the Xcode generatorTor Arne Vestbø2013-10-171-0/+39
| | | | | Change-Id: I038cf0aebb74d7ecfe6cb3ed868287042342eb7e Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* Add JSON parsing support to qmake.Morten Johan Sørvig2013-10-175-6/+143
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add qjson* implementation files from corelib/json to the qmake build. Add a read-only compile mode, enabled by defining QT_JSON_READONLY. Add qmake built-in function parseJson(file, into) which parses a json file into the given variable. qmake uses a flat key -> value-list implementation for storing variables, which means that some hackery is need to represent arbitrarily nested JSON. Use a special "_KEYS_" variable for arrays and objects: Arrays: ["item1", "item2"] $${array._KEYS_} -> 0 1 2 $${array.0} -> "item1" $${array.1} -> "item2" Objects: { "key1" : "value1", "key2" : "value2" } $${object._KEYS_} -> key1 key2 $${object.key1} -> value1 $${object.key2} -> value2 Change-Id: I0aa2e4e4ae14fa25be8242bc16d3cffce32504d2 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Xcode: Dynamically choose release/debug libs based on current configurationTor Arne Vestbø2013-10-161-0/+14
| | | | | | | | | | | | | | Non-framework builds would automatically link to whatever Qt library matched the config at the time of running qmake, eg hard-coded to libQtCore_debug, while Xcode itself allowed the user to switch between release and debug configurations. We now append an Xcode settings variable to the library path, which gets resolved at build time depending on the current config in Xcode. Change-Id: I12873e38a28d9595ef3fd0ae0ad849e6744833a9 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Andy Shaw <andy.shaw@digia.com>
* make sure that installed meta files are always postprocessedOswald Buddenhagen2013-10-113-2/+131
| | | | | | | | | | the problem is that there is no sed command on windows ... so build it into qmake and invoke that from the generated makefiles. cmake does the same, after all. ^^ Task-number: QTBUG-33794 Change-Id: Ib7077e18acbc5edd79f714c5779a5ed31ea6c093 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* fix setting of output directory of SUBDIRS with -tp vsOswald Buddenhagen2013-10-111-1/+1
| | | | | | | | | | amends ec145129c. Investigated-by: Nikolai Tasev Task-number: QTBUG-32375 Change-Id: Iff27c03c0bb4f739dad9d10bae9576946948041b Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* qmake: Update internal mkspec on changes to QMAKESPECTor Arne Vestbø2013-10-112-1/+9
| | | | | | | | | | Allows the macx-xcode mkspec to be a wrapper around other mkspecs. Since QMAKESPEC can now be set in the spec, we have to ensure not to append to QMAKESPEC. Change-Id: Idf33ff38147f14c488f14b426c02d9a739fdaecf Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* qmake: Allow QMAKE_MAC_XCODE_SETTINGS to be limited to debug or releaseTor Arne Vestbø2013-10-111-8/+22
| | | | | | | | | | | | | | | The Xcode generator does not support exclusive builds, but still generates projects that contain both debug and release configurations, each with hard-coded differences such as whether or not to strip or to generate debug symbols. As a stop-gap solution we allow projects and mkspecs to add extra settings that are limited to a given build. Long term we want to rewrite the Xcode generator to support exclusive builds, but that is a much bigger task. Change-Id: I85056164bb1b3c8c6e0cf66410348cca7138eca5 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* qmake: Centralize TARGET sanitization in default_post.prfTor Arne Vestbø2013-10-112-27/+1
| | | | | | | | | | | | | | | Shared between UNIX and Win generators, and allows prfs after default_post to rely on sane TARGET and DESTDIR values. This allows us to clean up the DESTDIR logic in testcase.prf, which was completely busted. Doing the two in separate commits is unfortunately not possible as the old testcase.prf logic was so broken it would barf if only looked at. Change-Id: Ibf21216195c760ee46ae679c162b207b77a9d813 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* qmake: Evaluate extra configs before loading default_preTor Arne Vestbø2013-10-112-6/+19
| | | | | | | | | | Exclusive builds uses setExtraConfigs to apply the particular CONFIG of each build pass. Unfortunately we were not applying these extra configs early enough in QMakeEvaluator::visitProFile() for them to be picked up/usable by default_pre, something that can be useful. Change-Id: I423a4688250a15f0c1a2cc65a48f0bbc14ad4497 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* qmake: Load extra variables only if also loading pre-filesTor Arne Vestbø2013-10-111-4/+4
| | | | | | | | | | The extra variables only need to be applied once, when we are loading the pro file (and hence are loding pre files), not for every single pri/prf that's loaded as a result of that (which do not load pre files themselves). Change-Id: I3118694a8eeccf2dc32c4f62df754033fad13528 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* *.sln not generated correctly for VS2012 and VS2010Katja2013-10-091-4/+4
| | | | | | | | | | msbuild fails to build project since sln not generated correctly Task-number: QTBUG-33446 Change-Id: If92ea743b1b407446873210090aa8591a491abad Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Mention that the c++11 CONFIG flag sometimes has no effect.Mitch Curtis2013-10-091-2/+3
| | | | | | | | It has no effect when the compiler doesn't support it. Task-number: QTBUG-33952 Change-Id: I23b1fcdf4ec31924b1b59987846f7e0fbf17c6c9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Document c++11 CONFIG flag.Mitch Curtis2013-10-081-0/+2
| | | | | | Task-number: QTBUG-33952 Change-Id: I752c85ba1a6d42d9794c18fb3f3198df50952c61 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* clarify intended operator precedenceOswald Buddenhagen2013-10-071-1/+1
| | | | | Change-Id: I176bf225d4cb388f1d328ac140741fe32667e89c Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* add default branch to switch in platformToolSetVersion()Oswald Buddenhagen2013-10-071-1/+2
| | | | | Change-Id: Icf399ffd7e41aca207ea3b4b08b9e3dead7c821a Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* make setting a bad $$[QMAKEFEATURES] not crash qmakeOswald Buddenhagen2013-10-073-12/+17
| | | | | | Task-number: QTBUG-29642 Change-Id: I9cc209eb313f03bf342bcb64b1de3005755700a7 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* make it possible to disable debug information in vcxproj filesJoerg Bornemann2013-10-011-1/+2
| | | | | | | Task-number: QTBUG-32885 Change-Id: I53a2208935a1c52bc7ca757651df6a0125979787 Reviewed-by: Andy Shaw <andy.shaw@digia.com>
* qmake: add $$title() function to convert strings to title caseTor Arne Vestbø2013-09-241-2/+10
| | | | | Change-Id: Ic535a8f7cc2ab7b7f1948b2d0237ebe9a71c7ec7 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Xcode: Quote variable names with invalid characters in themTor Arne Vestbø2013-09-241-1/+4
| | | | | | | | | | Allows us to have scoped variables such as eg FOO[arch=armv7]. We could quote all variables, but Xcode doesn't, and we try to stay close to the native behavior. Change-Id: Ia6634a33e42031fe7e69c4f680803fa347e5de4a Reviewed-by: Andy Shaw <andy.shaw@digia.com>
* Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Sergio Ahumada2013-09-211-1/+1
|\ | | | | | | refs/staging/dev
| * Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-09-161-1/+1
| |\ | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/tools/qstring.cpp Change-Id: Ifc6cd3a0f1cf14cc0fe6cf30afb0c7f40cfdbc3e
| | * Xcode: Resolve extra compiler (e.g qrc) dependenciesTor Arne Vestbø2013-09-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Xcode generator relies on the generic makefile generator for extra compilers such as qrc and moc, by generating makefiles that are then executed as separate build steps in the Xcode build. These makefiles are generated by entering a special mode in the Xcode generator, in which case we _do_ want to resolve dependencies, so that e.g. the files referenced inside a qrc file are added as dependencies to the makefile rule that generates the qrc-cpp file. Change-Id: I96bdcb165e9774a6328ae1980986fa2c6b00c6d9 Reviewed-by: Andy Shaw <andy.shaw@digia.com>
* | | qmake: Expose ARGC to qmake functions to be able to check argument countTor Arne Vestbø2013-09-212-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | ARGS already exists, but is a flattened list of the arguments, so both foo(bar, baz) and foo(bar baz) will give count(ARGS, 2), making it unreliable for validating arguments to qmake functions. Change-Id: I0bcc16614c64000169431327da48fd1a26708e67 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | | qmake: Don't create OBJECTS_DIR and friends for TEMPLATE = subdirsTor Arne Vestbø2013-09-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | A bunch of empty and never-to-be-used directories makes the build tree noisy and harder to navigate. Change-Id: Iebef91c82d58a8d6a0047fb5439d50eb6806f557 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | | Sanitize QMAKE_EXTRA_COMPILERS paths in makefilesTor Arne Vestbø2013-09-211-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There was a mismatch of how we sanitized paths for dependencies of the target and how those dependencies were sanitized (or not sanitized), resulting in the target depending on 'some/path/foo.o' while the extra compiler target was named 'some/path//foo.o', with an extra slash. This confused 'make' enough to decide that it didn't know how to build the dependencies for the target. Change-Id: I181b86c291286cbbbb1f7b4c3b929a5f1dc163a3 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | | Strengthen check for combined QMAKE_EXTRA_COMPILER with variable outputTor Arne Vestbø2013-09-211-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The pattern ${QMAKE_ needs to be at the beginning of the line, or not start with a $ (which would make it a regular qmake variable). Also, it's fine that the variable is of the QMAKE_VAR_foo type, as these variables are resolved at generator time, but are constant and do not depend on the inputs. This means we have to replace extra variables in the output. Change-Id: I21ad24ae770f2137e2d5d92a20ee54e2f3f4ca06 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | | qmake: added WMAppManifest generation for winphone targetKamil Trzcinski2013-09-172-0/+68
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | Platform specific qmakespec needs to enable: autogen_wmappmanifest and winphone. Manifest will be generated once and only for the application template. The Manifest will generated from following variables: * PRODUCTID - the GUID (application specific) * PUBLISHERID - GUID (publisher specific) * TARGET - short application name (executable) * AUTHOR * PUBLISHER * DESCRIPTION - application description Change-Id: I225c24dc256c57451775e37658080e88b842a7d8 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | qmake: added file deployment support for winrt and winphone targetsKamil Trzcinski2013-09-155-60/+123
| | | | | | | | | | | | | | | | | | | | | | | | | | The user needs to specify the DEPLOYMENT variable. The syntax is the same as previously used for DEPLOYMENT. For more info please refer to the qmake documentation. The change adds a new itemgroup, "Deployment Files". All files in this itemgroup are marked as DeploymentContent and are then packaged with the application either as XAP or the WinRT specific file format. Change-Id: Icf85887287c1c97eb782704340eaa3f8dde6719e Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | qmake: added support for WindowsMetadataFileKamil Trzcinski2013-09-153-0/+19
| | | | | | | | | | | | | | | | | | In order to be able to use the linker's /WINMD and /WINMDFILE options Change-Id: I2673e20aa073c6b807e8c9f191fd408c7976efc4 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>