| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
This patch unifies the functions to generate the output file tags, and the
output artifacts for the precompiled headers.
Change-Id: I84be3f56037220ae5ade6e3d1d1a4e7d0a46847f
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds an experimental support for the Digital Mars
C/C++ compiler for Windows:
* https://www.digitalmars.com/
This compiler is only distributed for Windows host platform,
but allows to create the binaries for Win32, Win16, DOS32 and
DOS targets.
This patch implements only the Win32 targets and has the
following limitations:
* Support for precompiled headers is not implemented yet
(but which is supported by the compiler).
* There is no support for the CI autotests due to the fact
that the compiler has the following restrictions:
- it needs a separate masm386 assembler.
- it needs a special format of DLL library sources (required
the DLL main function).
- it needs the `kernel32.lib` to be always explicitly linked.
- and, maybe other unexpected stuff.
The following features are currently supported:
* Compiling a source files in the C or the C++ mode.
* Compiling the source resource (RC) files.
* Creation of an applications (both console and GUI).
* Creation of an dynamic (DLL) libraries with its import files.
* Creation of a static libraries.
Task-number: QBS-1598
Change-Id: I5a6ac05a7e7513a1c6d2403db037c309b0f12b90
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|
|
|
|
|
|
|
| |
It makes sense to share the cpp.compilerExtension property,
because this property is used in almost all CPP modules.
Change-Id: I0bf44a83c722772b93d7f2febbef7b4e38d11103
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|
|
|
|
|
|
| |
.. to reduce the number of if/else conditions and to simplify the code.
Change-Id: Id4e6574b719986d3fc7f8b27106a60b00cbd67ea
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|
|
|
|
|
|
|
| |
It makes sense to check the architecture inside of the 'validate'
script in the module; and then we can throw an error only once.
Change-Id: I17821404ad854e38bafc70f1ca6904c33c48147f
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|
|
|
|
|
|
|
|
| |
It makes sense to minimize the copy-paste errors by moving the
repetitive code into the separate functions to the cpp.js file.
This will simplify the code and improve the maintenance.
Change-Id: Id5a2914ff28619553b855cc6f09810ad370c408c
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It makes sense to add the cpp.assemblerListingSuffix and
the cpp.compilerListingSuffix properties to the base
CppModule due the following reasons:
1. It is possible that the user wants to change the extension for
the generated listing files, which makes working with Qbs more flexible.
2. It will be easier to write an autotests that check the generation
of the listing files for a bare metal platforms, where listing files can
have various extensions such as ".lst", ".ls", and so forth.
Change-Id: I9989288bff0659dd3e8b7a443d0354bb78475270
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It makes sense to add the cpp.linkerMapSuffix property to the base
CppModule due the following reasons:
1. It is possible that the user wants to change the extension for
the generated map files, which makes working with Qbs more flexible.
2. It will be easier to write an autotests that check the generation
of the map files for a bare metal platforms, where object files can
have various extensions such as ".map", ".m51", ".m66", and so forth.
Change-Id: I1e5e3b39bf84fddfe8c06f2db9d3936c6a3ff027
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It makes sense to add the cpp.objectSuffix property to the base
CppModule due the following reasons:
1. It is possible that the user wants to change the extension for
the generated object files, which makes working with Qbs more flexible.
2. It will be easier to write an autotests that check the generation
of the object files for a bare metal platforms, where object files can
have various extensions such as ".rel", ".r90", ".r43", and so forth.
Change-Id: Ib73836d5e614a6924d312d061f02437c3b318785
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|\
| |
| |
| | |
Change-Id: I37c359289dcd957fbc964a35fab381a047f7d04a
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add archSuffix to generate the library with the architecture name for
Qt > 5.14 (before the lib was renamed which prevented debugging).
Remove rpaths as they are not used on android and generate warnings.
Update target and defines to comply with android's Build System
Maintainers Guide.
Remove stripping step in Qt.android_support as androiddeployqt
actually does the stripping.
Change-Id: I46a273c1cded753223c7b759670477815b625267
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|/
|
|
|
|
|
|
| |
This property re-declared in each of toolchain modules. So, it
makes sense to declare this property once in a base CppModule.
Change-Id: I1df76b288660d4b999c918a0019a01825ee0890a
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
========== Performance data for Resolving ==========
Old instruction count: 10195378481
New instruction count: 10238464294
Relative change: 0 %
[ChangeLog] Qbs now checks string and stringList values according to the
allowedValues property in PropertyOptions
Change-Id: Ide88987c74b35f4172ffaf71aacd991536131ee5
Reviewed-by: Richard Weickelt <richard@weickelt.de>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
| |
Fixes: QBS-1304
Change-Id: Ie7d2c4827119dbdc6c807c56912431fb3111f712
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To be able to use cpp.driverFlags and cpp.driverLinkerFlags with clang-
cl. This patchset makes possible to use clang-cl with "-
fsanitize=address" flag without passing the sanitizer libraries manually
to the linker
There's also a behavior change in which linker is used - clang-cl uses
native linker by default. Old behavior can be restored by setting
cpp.linkerVariant to "lld"
Fixes: QBS-1522
Change-Id: I9528ce40aa5fdfab987672b15fffd830fa2d6376
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Long command lines are especially a problem when building statically in
MXE. This commit tries to replicate the logic employed by qmake, where
before adding a new object to the command line, all of its previous
appearences get removed.
Fixes: QBS-1273
Change-Id: I51c843c4a7cfc170ed4fab30deae6c4229690dd0
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Task-number: QBS-1316
Change-Id: Ibf9da364610c260ead088a8990a70c7739d53c39
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|\
| |
| |
| | |
Change-Id: I056a96c062881c2a07ec15b1803efa9c9aa1a02a
|
| |
| |
| |
| |
| | |
Change-Id: Ibb98b4a9166e3cd61fe9aacd0e6a5a2eb9eb7624
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|/
|
|
|
|
|
| |
This is the platform standard, and it gives us smart relinking for free.
Change-Id: Iee9e14fe66c9418adaa14893fe2b4f573408f77d
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
| |
This was forgotten in 2bda52aa3d. Also added autotest.
Change-Id: Iba8c7c7aa6629f321017315b03964ce20809ac23
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
... 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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
The standard is out now.
Task-number: QBS-1020
Change-Id: Ie8249e1c860d5ebc2f9dadf02551544ddaaf2868
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
|
|\
| |
| |
| | |
Change-Id: Iecddc2722d22d7c15d4b32efd676fa8e7c00e99f
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
...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>
|
| |
| |
| |
| |
| |
| |
| | |
This helps to block inappropriate host compilers when cross compiling.
Change-Id: Ied22fce094fdb726babea4e94a7ef1d78afc9a98
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|\ \
| |/
| |
| | |
Change-Id: Iab942ed25d06038cf8c172eb70dcd8e9a720e1c8
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| | |
[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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
|/
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
[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>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
Will be used in a following patch.
Change-Id: I43c0c093fd0c0278e4bfd72e6ed457b57bc6ba32
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|