aboutsummaryrefslogtreecommitdiffstats
path: root/share
Commit message (Collapse)AuthorAgeFilesLines
* Don't add compiler defines to the Info.plist replacement variable listJake Petroules2017-05-101-9/+0
| | | | | | | | | This was not implemented correctly (Xcode substitutes environment variables using this syntax, not compiler defines) and not documented anyways. Further, qbs has better functions for dealing with this. Change-Id: I26c51457c059feddea42de2b13969a842be89696 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix default value of cpp.minimum{Macos,Ios}VersionChristian Kandeler2017-05-092-0/+2
| | | | | | | | Usage of libc++ implies a deployment target >= 10.7 and 5.0, respectively. Change-Id: I8c839ad055b2f07cae1523acbca390c824b2a90e Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Add support for building multi-resolution TIFFs on macOSJake Petroules2017-05-082-0/+86
| | | | | Change-Id: If13357888685c630d1d9a7423c8f086ab03a6566 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add support for 64-bit ARM targets with Microsoft Visual C++Jake Petroules2017-05-083-2/+8
| | | | | | | | | | | | | | | | | | | Although the compiler has not yet been publicly released, we can find references for the names of things in order to future-proof qbs for when it is. The name of the 64-bit ARM assembler can be found in two locations: - https://github.com/Microsoft/ChakraCore/blob/master/Build/armasm.props - https://msdn.microsoft.com/en-us/magazine/mt795185.aspx The name of the 64-bit linker option: - https://github.com/dotnet/coreclr/blob/master/CMakeLists.txt The name of the ARM64 compiler macro: - https://msdn.microsoft.com/en-us/library/b0084kay.aspx Change-Id: I7ec9c112f149845e2a84a5907bb5b2eb87235a11 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Merge 1.8 into masterChristian Kandeler2017-05-052-2/+2
|\ | | | | | | Change-Id: Ie4ec88083aa4c85bbe872d8dc175960292f75d5c
| * Support command files in cpp.{static,dynamic}LibrariesChristian Kandeler2017-04-282-2/+2
| | | | | | | | | | | | | | We will make use of that in a follow-up patch. Change-Id: I1fb6ca0938bbcc6f53bd0046761023a1b8563949 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Recognize __ARM64__ as a valid compiler defineJake Petroules2017-04-271-2/+2
| | | | | | | | | | | | | | This is apparently used by the GHS INTEGRITY toolchain. Change-Id: I1b93f71d318ec641aa68fee1eb6796f15aa445ed Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Merge 1.8 into masterChristian Kandeler2017-04-213-25/+21
|\| | | | | | | Change-Id: I0009732184b3c54965c974f6f9d15185c5d505a8
| * GCC: Do not mess with the list of external librariesChristian Kandeler2017-04-211-8/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consider the following: There are external static libraries libA and libB, with libB having a dependency on libA. Some module pulls in libA, another one pulls in libB and libA. The raw contents of cpp.staticLibraries for the product might end up as ["libA","libB","libA"]. Before this patch, our library collection code "simplified" this list to ["libA","libB"], which leads to a linker error. Since we generally do not know about the dependencies of external libraries, we should not touch these lists. Change-Id: I4a94dfc8505ee9ece2562dc3aa3d66244ec7fdac Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
| * Detect QNX SDK on Windows in C:\ (one of the default locations)Jake Petroules2017-04-181-1/+2
| | | | | | | | | | | | Change-Id: I78f0619fad050672e296d192f0a3fa2f25dcafd4 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
| * GCC: remove escaped linker flags compatibility modeChristian Kandeler2017-04-122-16/+17
| | | | | | | | | | | | | | | | | | | | | | 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>
* | Make utility function slightly more generalJake Petroules2017-04-182-6/+11
| | | | | | | | | | | | | | | | This prepares it for use in a followup patch. Change-Id: I8d51efc7c2d90918689c2aa3381a68648519e710 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Fix cpp module for MSVCJoerg Bornemann2017-04-141-3/+4
| | | | | | | | | | | | | | Handle the case of products without native.pe.manifest artifacts. Change-Id: Ic6ae8684fd9298f3089b36339138bce6d0390738 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* | Improve support for Windows SxS assembly manifestsJake Petroules2017-04-133-9/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's no reason to limit manifest embedding solely to the manifest generated by link.exe. Additionally, this makes it easier to add content to the manifest by adding files with manifest fragments rather than having to manually compose them and create Windows Resource files to apply them. On MSVC, this allows the manifest tool to merge multiple manifests into the final assembly without having to manually create a .rc file or perform the merging. On MinGW, this allows a manifest to be merged into the final assembly without having to manually create a .rc file. Unlike MSVC, manifest merging is not yet supported because the toolchain does not provide this capability. Qbs may begin to emulate this capability at some point, but for now specifying multiple manifest files in a product with MinGW will result in an error. Change-Id: I12e2db809c8b638168567f4342288eac568a57ca Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Merge 1.8 into masterChristian Kandeler2017-04-102-20/+26
|\| | | | | | | Change-Id: Ifb2f2be3b37344b6ec17dc25f8436f3fedf71d12
| * cpp module: Add toolchain install path to build environmentChristian Kandeler2017-04-061-1/+6
| | | | | | | | | | | | | | | | ... for mingw. There are DLLs there which are needed by helper tools located in a different path. Change-Id: I20f4937f5e88a75d7261d86885182317965eee91 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
| * cpp module: Fix artifact inconsistency for mingwChristian Kandeler2017-04-062-12/+13
| | | | | | | | | | | | | | | | | | We declared the existence of the symbols file unconditionally, but did not actually create it in the mingw case, leading to assertions in the executor. Change-Id: Icf135182f79c55fc4f636fd3d7642f08dcfe16d9 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
| * cpp module: Fix mingw supportChristian Kandeler2017-04-032-6/+6
| | | | | | | | | | | | | | | | The output format is not ELF for Windows targets. Change-Id: I04d98379763924229393d82da4057dbe0e99beb5 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * Make cpp.internalVersion writableJoerg Bornemann2017-03-311-1/+1
| | | | | | | | | | | | | | | | People are settings this property to prevent producing libraries with version numbers in their name while still setting product.version. Change-Id: I0a0e9643a0177541dc4492a9034421d2e6b8174c Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | MSVC: let the linker embed manifestsJoerg Bornemann2017-04-071-10/+13
|/ | | | | | | | | | | | | Since VS 2012 the /MANIFEST:embed linker option is supported that automatically embeds the linker-generated manifest. A separate call to mt.exe is not needed. This speeds up linking with VS >= 2012 a bit. Change-Id: I4b573b6ce36df025e98ab7cd6982d5f0f5f8a9e6 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Make some adjustments necessary for QNX < 7 supportJake Petroules2017-03-292-3/+5
| | | | | Change-Id: I978772eff14a1120921b34b861ff853e8d50c971 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Specify target linker flags for GNU ldJake Petroules2017-03-291-0/+4
| | | | | | | | Facilitates cross compiling between x86 and x86_64 on non-Darwin Unix when using the system linker. Change-Id: I4cb8fc7f7eb4ee13527fabcf91e8cf1d0fe1fcef Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix assembler invocation with older XcodeJake Petroules2017-03-293-39/+44
| | | | | | | | | | Xcode prior to 7 uses GNU as, not the Apple clang-based driver which supports the -target option. Now: Clang as uses -target, GNU as uses -arch, no other options. Change-Id: I389a43cf7118f3b6330a2aea16d47d7f21dbb2e6 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add support for QNX and the QCC toolchainJake Petroules2017-03-225-6/+216
| | | | | | | [ChangeLog] Added support for QNX and the QCC toolchain Change-Id: Id5b1c451d3ca7c3a1445f2481af3bc4caf90798f Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Introduce cpp.target[Assembler,Driver,Linker]FlagsJake Petroules2017-03-225-76/+66
| | | | | | | | | | 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>
* Provide a hook to pass environment variables to GccProbeJake Petroules2017-03-213-4/+12
| | | | | | | This will be needed for the QCC (GCC-like) toolchain used for QNX. Change-Id: I1a241a8a6ff5c3620100ee384e4c0a07e1e53037 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Do not access the qbs module inside Probe configure scriptsChristian Kandeler2017-03-213-3/+5
| | | | | | | | The code inside a configure property is supposed to be "pure" in that it can only access other properties of the Probe. Change-Id: I904875b90b23715c429efbca82b23ca576fe182d Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Remove some usage of product.modulePropertyJoerg Bornemann2017-03-167-178/+176
| | | | | | | | | | | Keep moduleProperty calls for cpp.{flags|platformFlags|usePrecompiledHeader}, because ModUtils.moduleProperty maps those to their language-specific properties (e.g. cxxflags). Change-Id: Id2280a42b26318b3a320d9df22801626336c72e6 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Introduce cpp.useRPathLinkJoerg Bornemann2017-03-154-2/+4
| | | | | | | | | [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>
* Let toolchains configure themselves if the binary is in the PATHChristian Kandeler2017-03-132-2/+16
| | | | | | | | This will allow us to build without a profile. Change-Id: Ie1bfed8590c876342668fc359b0bd49e35a3a0d2 Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Give qbs.toolchain a sensible default valueChristian Kandeler2017-03-131-1/+10
| | | | | | | | Preparation for allowing to build without a profile. Change-Id: I959148d1f8b19c2e35e649aac55c5a1165cb4a21 Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Do not pass --undefined-symbols=ignore-in-shared-libsJoerg Bornemann2017-03-091-6/+10
| | | | | | | | | | | | | | | | | | | | | | | Now that we correctly add -rpath-link to the linker command line we want errors regarding missing symbols to be reported. This patch removes the --undefined-symbols=ignore-in-shared-libs argument that was added in commit d9127c78. Since ld's man page claims that report-error is the default, do not pass an --undefined-symbols=XXX argument. On Darwin the behavior is not changed. Interestingly, passing --undefined-symbols=report-all on FreeBSD will result in the weird linker errors mentioned in commit d9127c78. The libc on FreeBSD refers to symbols that only occur in applications, such as "__progname" and "environ". Thus, no dynamic library can be linked with "report-all". The ld documentation is not correct in claiming that this option is the default; the linker clearly does some additional magic, like blacklisting some symbols or whatever. Change-Id: I330b8ab7dd9fbf777946992914239cce5a43fd8d Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Re-work linking library dependenciesJoerg Bornemann2017-03-094-84/+166
| | | | | | | | | | | | | Traverse the dependency graph and collect library dependencies top-down. Do not "push" library information "upwards" when building a library. For gcc, differentiate between "public" and "private" library dependencies. Public library dependencies are added to the command line with -l. Private library dependencies are transitive shared object dependencies of shared objects. Those are added with -rpath-link. Change-Id: I4c0015910b746fb2d996fc9cf3074050512f02d5 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix FreeBSD host buildsJake Petroules2017-03-022-1/+12
| | | | | | | | Clang requires the system component of the target triple to have a specific version number suffix for this platform. Change-Id: I9e02060aec0ea3f7002cc0a86fe75ed0bc265572 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Reduce some unnecessary reliance on product.typeJake Petroules2017-02-285-42/+64
| | | | | | | | | | | | This reduces unnecessary implicit dependencies on the output of linker rules being root artifacts. It also makes anything that depends on the Bundle module a bundle by default, now including static libraries. This is a slight behavior change. Change-Id: I1ee8d17e29c36ef54f9ff7eb2ad27e3923cbd8b2 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Remove out-dated commentJoerg Bornemann2017-02-281-2/+0
| | | | | | | | The code this comment was for is gone. Change-Id: Id32f65ebed025e0586e31fe2fe61d7ac74ffb13e Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add function ModUtils.sanitizedModulePropertyJoerg Bornemann2017-02-261-3/+7
| | | | | | | | This function can be used on objects where the property moduleName is not set, e.g. artifacts. It will be used in a subsequent commit. Change-Id: I4c3fdba2f329d010306a1577f7c6e42155b3ddd5 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Make sure the bundle rule only accepts inputs from compatible rulesJake Petroules2017-02-243-9/+50
| | | | | | | | This fixes a regression introduced in e9fb1cc which broke all bundle products on Apple platforms. Change-Id: Ice17bb1d6d6b535d8c654ae6c717f32d9b2ea41e Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Support multiple package names in PkgConfigProbeChristian Kandeler2017-02-241-8/+9
| | | | | | | Reduces the overhead when querying for related packages. Change-Id: I217942447740987e6890b25fe48ddf7336debacd Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* PkgConfigProbe: Extract defines from cflagsChristian Kandeler2017-02-231-0/+4
| | | | | | | In addition to include paths, libraries etc. Change-Id: I24bc5c7db5ba2016b6c1d323ba7687e083ff8ea6 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* lex_yacc: Suppress compiler warnings for the generated C/C++ filesChristian Kandeler2017-02-211-0/+5
| | | | | | | | | | | | | These tools are known to produce sources that trigger compiler warnings, so switch warnings off by default. [ChangeLog] lex_yacc module: Introduced property enableCompilerWarnings. Task-number: QBS-1104 Change-Id: If13535dde5a580cd0cec215da22b8b8d22d7105b Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix cpp.optimization: "none" for MSVCJoerg Bornemann2017-02-211-4/+9
| | | | | | | Turning off MSVC compiler optimization never worked. Change-Id: If4e339e28ed66863797f97f741054e520a3af460 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Utilize Utilities.cStringQuoteJake Petroules2017-02-171-1/+1
| | | | | Change-Id: I12170fe79d560b4312a29efde0e5a140dfb95aad Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Merge 1.7 into masterChristian Kandeler2017-02-171-4/+6
|\ | | | | | | Change-Id: Iad9c533e769700b3ec2b6caed898301e14345607
| * Fix App Extension builds on older versions of Xcode/macOSv1.7.2Jake Petroules2017-02-171-4/+6
| | | | | | | | | | Change-Id: Ib25d942da9ba019ceb5b7a64e1fd703d6f4b9baa Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Cpp module: Allow a set of source files to be combined into oneChristian Kandeler2017-02-172-4/+92
| | | | | | | | | | | | | | | | | | | | | | 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>
* | Deprecate loadFile and loadExtension in favor of requireJake Petroules2017-02-1517-62/+62
| | | | | | | | | | | | | | | | | | | | | | | | This is more in line with mainstream JavaScript (especially node.js) which uses the CommonJS/RequireJS scheme for loading external modules. [ChangeLog] The loadFile and loadExtension functions are deprecated in favor of the new require function, which accepts arguments of either form accepted by the deprecated functions. Change-Id: Icc00aa3eb7c136a5be787f28ef38435e4ce261bb Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Don't look for an architecture-specific JDK when compiling for AndroidJake Petroules2017-02-081-1/+3
| | | | | | | | | | | | | | | | | | This allows building for a specific Android architecture profile to work correctly, as otherwise Qbs will try to find an architecture specific profile that will likely not exist on macOS unless building for x86_64. Change-Id: Ib26278356caf0c644e47ab91a2cd1a9513035080 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Handle single-architecture Android builds more gracefullyJake Petroules2017-02-082-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We only set a default list of architectures to compile for, if the current profile does not have a qbs.architecture property set (as should be the case for a top-level Android profile). Otherwise, the architectures list is set to undefined, which allows the Product to use the default architecture set in the profile. This allows products which do not touch the architectures property to work in Qt Creator out of the box by default, until such time as Qt Creator adds support for multi-arch Android building. Change-Id: Iaaab5e10b025aa1504e9ce9dbe28d41f7148bfb0 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Fix -fPIC flags handlingJake Petroules2017-02-082-27/+6
| | | | | | | | | | | | | | | | | | | | | | | | 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>