aboutsummaryrefslogtreecommitdiffstats
path: root/share/qbs/modules/cpp/CppModule.qbs
Commit message (Collapse)AuthorAgeFilesLines
* baremetal: Introduce new cpp::generate{Assembler|Compiler}ListingFilesDenis Shienkov2019-10-171-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This properties enables or disables generation of a compiler or assembler listing files. Reason why we need in this property is in that some compilers (e.g. KEIL C51) generates a listing files by default, that spams a project sources directory. So, we need to have a possibility e.g. to disable it or to generate to an output directory. This patch implements this feature for KEIL, IAR, SDCC compilers with the following restrictions: * IAR (8051, AVR, STM8, MSP430, ARM) - full support. * KEIL (8051) - full support. * KEIL (ARM) - has only one restriction in that a compiler does not support specifying of an output listing file name. It is possible to specify only an output listing directory. So, a listing file names will be a bit different than for other compilers (e.g. if a source file name is 'foo.c', then the listing file name will be 'foo.lst', instead of 'foo.c.lst'). * SDCC (8051, STM8) - seems, has not possibility to disable an auto-generated listing files. But it generates an output listing files to a right output directory with the object files. Besides, a listing files has a correct names (e.g. for the 'foo.c' file, the listing file will be 'foo.c.lst'). Change-Id: Ic3516101e69eed156cf71606a7144efc72d40204 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Refactor the map file generation propertyDenis Shienkov2019-10-011-0/+6
| | | | | | | | | | | | | | 1. It is makes sense to define this property once inside of CppModule, instead of duplicate it in each other module. 2. A new property name 'generateLinkerMapFile' will be better than a previous, so, we can rename this property. 3. The map file generation is not necessary to be always enabled, so, we can disable this property by default. Change-Id: I0439e8b3e0273593c8456d32b1c099ff09498fad Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Set minimumTvosVersion to "6.0" by defaultIvan Komissarov2019-07-151-1/+1
| | | | | | | | | | | | | | This fixes (at least) two compile errors: - clang: error: invalid deployment target for -stdlib=libc++ (requires iOS 5.0 or later) - ld: library not found for -ldylib1.o The dylib1 is only present on macOS and not present in recent tvOS/iOS SDKs, clang tries to link to it if deployment target is less or equal to "5.0". Change-Id: Ie77a514bb2661312823df054f0dfca07d69e3059 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Set cpp.minimumIosVersion to "6.0" by defaultIvan Komissarov2019-07-051-1/+1
| | | | | | | | | This is required because earlier iOS versions are broken in recent XCode installations (at least, for XCode >= 7.0.0) Change-Id: Ib55e2eafcf26357695ab057da8109921518b7fea Reviewed-by: Qbs CI Bot <travis-bot@weickelt.de> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add support for the clang-cl compilerIvan Komissarov2019-04-101-33/+39
| | | | | | Task-number: QBS-1316 Change-Id: Ibf9da364610c260ead088a8990a70c7739d53c39 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Enable the Application item to create Android appsChristian Kandeler2018-08-101-1/+1
| | | | | | | | | | | | | | | The formerly required AndroidApk item is no longer needed: We just tag the APK file as an application and let the Application item pull in the Android.sdk module for Android targets. It is also possible to have native code directly in the Application product; in that case, the multiplexed variants become dynamic libraries and the APK file is built for the aggregate. [ChangeLog] The AndroidApk item was deprecated, a normal Application item can be used instead. Change-Id: I04f5f3892f354ca9eb4f2da8055abcd8d072aba0 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Merge 1.12 into masterChristian Kandeler2018-07-121-1/+1
|\ | | | | | | Change-Id: I056a96c062881c2a07ec15b1803efa9c9aa1a02a
| * Update link for minimumWindowsVersionOrgad Shaneh2018-07-111-1/+1
| | | | | | | | | | Change-Id: Ibb98b4a9166e3cd61fe9aacd0e6a5a2eb9eb7624 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | mingw: Create import libraries alongside DLLsChristian Kandeler2018-07-051-0/+1
|/ | | | | | | This is the platform standard, and it gives us smart relinking for free. Change-Id: Iee9e14fe66c9418adaa14893fe2b4f573408f77d Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix the type of the cpp.cLanguageVersion propertyChristian Kandeler2018-05-281-1/+1
| | | | | | | This was forgotten in 2bda52aa3d. Also added autotest. Change-Id: Iba8c7c7aa6629f321017315b03964ce20809ac23 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Make cpp.cxxLanguageVersion a listChristian Kandeler2018-05-141-1/+1
| | | | | | | | | | | ... 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>
* Only use fallback values for the -std= command line option when neededJake Petroules2018-02-211-0/+7
| | | | | | | | | | | | | | | Instead of always using the fallback value, we instead always use the standard value unless we know we're running an older toolchain which does not support it. This alleviates the potential for differing behavior in newer versions of compilers which may attempt to remain compatible with earlier drafts of corresponding standards. [ChangeLog] Always use standard values for -std= when possible Change-Id: I61ff3ecd863caa24cb8fb54500e62dc310a2af02 Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Officially provide "c++17" as possible value for cpp.cxxLanguageVersionChristian Kandeler2018-02-071-1/+1
| | | | | | | | The standard is out now. Task-number: QBS-1020 Change-Id: Ie8249e1c860d5ebc2f9dadf02551544ddaaf2868 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Merge 1.10 into masterChristian Kandeler2017-12-221-12/+12
|\ | | | | | | Change-Id: Iecddc2722d22d7c15d4b32efd676fa8e7c00e99f
| * cpp module: Init all suffix and prefix properties to the empty stringChristian Kandeler2017-12-191-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ...rather than leaving them undefined. This way, the string "undefined" will not end up in file names. It's safer to do it this way compared to checking for "undefined" in all the places that could make use of the properties. Due to the semantics of these properties, there is also no value in treating "undefined" in a special way. Task-number: QBS-1265 Change-Id: I6ce7626485baa284a6c782b513740f9d150e18c3 Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | Validate the compiler's target platform as well as arch and endiannessJake Petroules2017-12-191-0/+2
| | | | | | | | | | | | | | This helps to block inappropriate host compilers when cross compiling. Change-Id: Ied22fce094fdb726babea4e94a7ef1d78afc9a98 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Merge 1.10 into masterChristian Kandeler2017-12-151-0/+2
|\| | | | | | | Change-Id: Iab942ed25d06038cf8c172eb70dcd8e9a720e1c8
| * Fix GCC support for "bare metal" systems againChristian Kandeler2017-12-111-0/+2
| | | | | | | | | | | | | | | | | | This was fixed before in 8176a4d419 and broken again in 72eedbb0a4. Fix it for good this time using module priorities. Task-number: QBS-1263 Change-Id: Ib1702299ef6c51b19a9082da96485ef5387dc1bb Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* | Introduce cpp.rpathOriginJake Petroules2017-12-081-0/+1
| | | | | | | | | | | | | | | | [ChangeLog] Added property cpp.rpathOrigin which evaluates to @loader_path on Darwin and $ORIGIN on other Unix-like platforms. Change-Id: If5770a83ae32f29ee520fd00b07ed8f0caf6bd48 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Consider library dependencies when setting up run environmentChristian Kandeler2017-11-221-7/+3
| | | | | | | | | | | | | | | | | | | | There is no need to hardcode a heuristic in qbs.commonRunEnvironment when we can find out the actual paths. Task-number: QTCREATORBUG-19274 Change-Id: I7a07eb9ff658e38a15c954972370242651114b11 Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | Make Module.setup{Build,Run}Environment first-class citizensChristian Kandeler2017-11-201-3/+3
| | | | | | | | | | | | | | | | | | | | | | 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>
* | cpp module: Add property for linking-only driver flagsChristian Kandeler2017-11-021-0/+6
|/ | | | | | | | | | | | For instance, GCC has various flags that are only used for linking, but that are not ld flags and thus must not be escaped via "-Wl,". [ChangeLog] Added cpp.driverLinkerFlags for flags to be passed to the compiler driver only when linking. Task-number: QBS-1236 Change-Id: Idc1498a74e0219306fda99de9adad2730f3a6f73 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Introduce the cpufeatures moduleChristian Kandeler2017-08-281-0/+3
| | | | | | | | | Provides an abstraction for the respective compiler flags. The initial set of properties is the superset of what Qt can configure and what MSVC supports. Change-Id: I1be90361f2f104a55d2a784a69625396680b0713 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Introduce property cpp.discardUnusedDataChristian Kandeler2017-08-251-0/+1
| | | | | | | | | Maps to linker options that strip unneeded symbols or sections. [ChangeLog] Added new property cpp.discardUnusedData. Change-Id: I2f2c7f449e9ac426af859fac4d1e3b941be2a2ab Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Automatically determine built-in compiler definesJake Petroules2017-08-111-2/+7
| | | | | | | | This provides users with access to the full list of macros defined by the MSVC, GCC, Clang, or MinGW compiler in use. Change-Id: I6e7f6841bbc18aed13958724b268283d97b17320 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Don't force -undefined into linker flagsJake Petroules2017-08-031-1/+1
| | | | | | | | | | | | This is important if the user wants to use a different value than the ones supported here. Also, change the default of cpp.allowUnresolvedSymbols to undefined in accordance with the design philosophy that 'undefined' typically results in no flags passed. This will make no difference for user projects since the only platform affected is Darwin and on that platform '-undefined error' is default. Change-Id: I5557da37f4ed8c609e98a6f74ad4b553cae0b817 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add initial support for Universal Windows PlatformJake Petroules2017-08-011-0/+3
| | | | | | | | | | | [ChangeLog] Added initial support for the Universal Windows Platform (properties for which API families/partitions are available to code being compiled, and whether compiled binaries require an app container context to load/execute). Change-Id: Idd3e117bbb40bd547ae06c16318b2d2e38f07bb4 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Cpp module: Default value for use*PrecompiledHeader is now trueChristian Kandeler2017-07-051-4/+4
| | | | | | | | | | | | | This is of course the right default: If a precompiled header is present, then you will tpyically want to use it. We just couldn't do that so far, because we did not have access to the "explicitlyDependsOn" artifacts in the compiler rule. Now we do. [ChangeLog] The property cpp.useCxxPrecompiledHeader, as well as the variants for the other languages, now default to true. Change-Id: Ie04172790ad21b0ebdfbf3366b6f549f705e774c Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Re-introduce endianness propertyJake Petroules2017-06-291-0/+2
| | | | | | | | | | | | | Now it can actually be useful, in order to select a specific endianness when building for architectures that are bi-endian. For example, MIPS and PowerPC. This patch makes it possible to build for ppc64le, which is the only variant of the PowerPC architecture that seems to be relevant today. ppc32 and all big-endian variants seem to have fallen out of use. Change-Id: Id1b9f9b397990136ab9aa899829345d426465824 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add a property to specify the -rpath-link flagJake Petroules2017-06-231-0/+1
| | | | | | | Will be used in a following patch. Change-Id: I43c0c093fd0c0278e4bfd72e6ed457b57bc6ba32 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Introduce dependency parameter cpp.symbolLinkModeJake Petroules2017-05-301-0/+3
| | | | | | | | | | | | | | | | Maps to -lazy_library, -reexport_library, -upward_library, or -weak_library on Apple platforms. [ChangeLog][Parameters] When pulling in library products, the new Depends parameter cpp.symbolLinkMode can now be specified to control how the library is linked into the target binary on Apple platforms: specifically, whether the library is linked as weak, lazy, reexported, and/or upward (see the ld64 man page for more information). Task-number: QBS-200 Task-number: QBS-874 Change-Id: Ia68cfdf6d99f300c5a28f5638980711022d32d2f Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Implement basic support for multi-config products on Darwin and AndroidJake Petroules2017-05-231-0/+1
| | | | | | | | Task-number: QBS-13 Task-number: QBS-292 Change-Id: I63c2e0a4de5949c73ca33af7381c32606190a43a Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Introduce dependency parameter cpp.linkWholeArchiveChristian Kandeler2017-05-221-0/+3
| | | | | | | | | | | | | Maps to --whole-archive, -force_load and /WHOLEARCHIVE on the toolchain level. [ChangeLog][Parameters] When pulling in static library products, the new Depends parameter cpp.linkWholeArchive can now be specified to force all the library's objects into the target binary. Task-number: QBS-701 Change-Id: Ic6482092f39f9ecb1ffb8e37d3031a94dc830be8 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Make it possible to parametrize dependenciesJoerg Bornemann2017-05-221-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Modules can declare dependency parameters, e.g. Module { name: "cpp" Parameter { property bool link } } Those parameters can be set in Depends items: CppApplication { Depends { name: "otherProduct" cpp.link: false } } Export items can provide default values for dependency parameters: DynamicLibrary { ... Export { Parameters { cpp.link: false } } } Rules can react on dependency parameters by accessing dep.parameters where dep is an object from the product.dependencies hierarchy. Showcase and test the feature by adding the cpp.link parameter, which can be set to false for library dependencies that should not be linked. [ChangeLog] Added a way to parametrize dependencies. [ChangeLog][Parameters] Added the cpp.link parameter to enable library dependencies to be excluded from linking. Task-number: QBS-585 Change-Id: I3b445ed65d5949a94426879e07a533a1c2af24d8 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* GCC: remove escaped linker flags compatibility modeChristian Kandeler2017-04-121-0/+1
| | | | | | | | | | | The old warning was incredibly noisy and almost always unnecessary. Users should have had enough time to migrate their projects by now, so specifying pre-escaped linker flags will now properly result in a linker error, but a helpful warning remains by default, which is only emitted if the linker flags look suspicious to begin with. Change-Id: I1ad1e9647fd490619eeb65eeb88f5bbbf58aa18f Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Introduce cpp.target[Assembler,Driver,Linker]FlagsJake Petroules2017-03-221-0/+4
| | | | | | | | | | These are internal properties that deduplicates architecture/vendor/system/abi related flags between the compiler invocation and compiler probe, and reduces tight coupling between gcc.js, GccProbe, and the individual cpp toolchain modules. Change-Id: I7ea57ea1dd4c5eb42fc8983e4c9c45aa01284521 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Introduce cpp.useRPathLinkJoerg Bornemann2017-03-151-0/+1
| | | | | | | | | [ChangeLog] Added the cpp.useRPathLink property to control whether to use the -rpath-link linker option. Change-Id: I4f7ca342285fe51975fed5ff8cbf8d3f0d50fae9 Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Cpp module: Allow a set of source files to be combined into oneChristian Kandeler2017-02-171-4/+80
| | | | | | | | | | | We introduce file tags and properties to support the concept of "amalgamation builds" for C, C++, Objective-C and Objective-C++. [ChangeLog] Provided the means to easily combine source files for the C language family in order to support "amalgamation builds". Change-Id: Ia3d248203c29418907178b47dba84ca3a18a0857 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix -fPIC flags handlingJake Petroules2017-02-081-1/+1
| | | | | | | | | | | | Object.prototype.hasOwnProperty returns a boolean, not a number, and so the first expression where hasOwnProperty was always used. This change simply removes all special app vs lib handling for position independent code and leaves it entirely to the value of the cpp.positionIndependentCode property. Change-Id: Id2cbc7778399883adab8c553659ca7f623818737 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Make it configurable whether system headers become dependenciesChristian Kandeler2017-01-121-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | We spent an inordinate amount of resources on scanning and collecting system headers, of which there are a lot and which typically do not change in a relevant way. Make this behavior opt-in. ========== Performance data for Rule Execution ========== Old instruction count: 4331820265 New instruction count: 2557300533 Relative change: -41 % Old peak memory usage: 18892592 Bytes New peak memory usage: 16887880 Bytes Relative change: -11 % ========== Performance data for Null Build ========== Old instruction count: 521956733 New instruction count: 443021349 Relative change: -16 % Old peak memory usage: 12498888 Bytes New peak memory usage: 11186984 Bytes Relative change: -11 % [ChangeLog] Introduced cpp.treatSystemHeadersAsDependencies Change-Id: Iae9d9ca63852fb38a68e8dd2cc10b512eafe15e1 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add distribution-specific properties for include, library, and framework pathsJake Petroules2016-12-191-0/+3
| | | | | | | | | | This allows to ensure that custom (user) locations come before canonical shared locations of a particular distribution like MacPorts (/opt/local/include) or FreeBSD (/usr/local/include). Change-Id: Ia37b28408312300a42ccc31c7532ffdaf49c1c51 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Modules: Adapt to introduction of built-in "version" propertyChristian Kandeler2016-10-191-0/+1
| | | | | | | | - Remove redefinitions of the property. - Set the property, where applicable. Change-Id: Ie3f4bd3c4cc9b809667287045c10b22ff6b71e21 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Introduce property cpp.linkerWrapperThomas Epting2016-10-101-0/+1
| | | | | | | | | | This allows integration with tools like Bullseye Coverage. Task-number: QBS-1000 Change-Id: I318599a9df0f082a096fb72db7a8878b15e571cc Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* Introduce cpp.driverFlagsJake Petroules2016-08-151-0/+7
| | | | | | | | | | | | | This property allows specifying a set of flags to pass to the compiler driver. Effectively this is similar to specifying flags in both *compilerFlags and linkerFlags, except driverFlags will never be passed to the system linker. [ChangeLog] Introduced cpp.driverFlags, which allows specifying flags to be passed to the compiler driver (in any mode), but never the system linker. Change-Id: I2171246f3b20cbaca74114cf4fa0b6d38c23c621 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Merge 1.5 into 1.6Jake Petroules2016-06-281-3/+5
|\ | | | | | | Change-Id: If1a2c368170d89d5e6e11b08a32b37901d51eb1d
| * Do the OS X to macOS rename.v1.5.2Jake Petroules2016-06-271-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog] The "osx" value in qbs.hostOS and qbs.targetOS has been replaced with "macos". For backwards compatibility, qbs.hostOS will still contain "osx" in addition to "macos", and an error will be printed if qbs.targetOS contains "osx" but not "macos". Specifying "macos" without "osx" is allowed. These checks are subject to be removed in a future version of qbs, so update your hostOS and targetOS checks accordingly. [ChangeLog] cpp.minimumOsxVersion has been deprecated and replaced with cpp.minimumMacosVersion. cpp.minimumOsxVersion is subject to be removed in a future version of qbs, so update your projects accordingly. Change-Id: I479891829dff6eb6750cb2a04e1395f085896f63 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* | Determine Visual Studio architecture & build environment automatically.Jake Petroules2016-06-271-0/+8
| | | | | | | | | | | | | | | | | | This moves one step further to making the setup-toolchains tool unnecessary and also makes the toolchainInstallPath of MSVC profiles consistent with what Qt Creator sets. Change-Id: I3eb11b456bf02bde8993ec0dac7e0f9950174a08 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Decouple image format from OS using new cpp.imageFormat property.Jake Petroules2016-06-211-0/+1
| | | | | | | | | | Change-Id: If95ab5693a105ed5d442d5d0250cdc8204238a53 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Add new cpp property "systemRunPaths".Christian Kandeler2016-06-201-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The concrete use case is to prevent such paths from getting into the list of rpaths, which can mess with the look-up of libraries in the case where we linked against a different version than the one provided by the system. [ChangeLog] Introduced property cpp.systemRunPaths. Task-number: QBS-921 Change-Id: I67a17bbebca22bfadf0932ecc6cc0cfcffea310a Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Merge remote-tracking branch 'origin/1.5'Joerg Bornemann2016-06-081-1/+19
|\| | | | | | | | | | | | | | | Conflicts: doc/reference/items/transformer.qdoc share/qbs/modules/cpp/GenericGCC.qbs Change-Id: I45560834560019b18274c373c45651eb8aadd206