| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
Current LLVM version is 16, so relatively soon
the checks if (msvc) compiler version >= 18 will start
to pass with clang-cl toolchain.
Change-Id: Id0e2e458195371fab1c1d358f35f2cae94fbc74b
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
| |
It is not clear why it worked before.
Task-number: QBS-1733
Change-Id: Ib870f669d9151c91635b7078fae8cb217c9955f3
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
It seems that mingw is broken and produces invalid
binaries when using cpp.minimumWindowsVersion >= 6.3.
Also, update minimumSystemVersion test to use 6.2
aka Windows 8.
Task-number: QBS-1724
Change-Id: Icea9b21ce6c3b7709495a28114a8c933a88b4647
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
| |
contains -> includes
Change-Id: Id893c2ea0659d9bded4f5cec1a3160ccd802118b
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Newer clang versions seem to expose serious bugs in QtScript, whose
complexity makes it difficult to track them down.
We therefore switch to the more light-weight QuickJS, which offers all
the features we need (most notably property access interception), as
well as good performance.
To save some porting effort, we removed the long-deprecated loadFile()
and loadExtension() functions.
During the porting procedure, we noticed and fixed thread safety issues
in artifact access from JS commands.
We consider this change important enough to bump the major version, so
the next release will be 2.0.
Detailed benchmarking data is below. In summary, we see a modest speed-
up at the cost of a similarly modest increase in memory consumption
(with the exception of project resolving on macOS, which has become a
bit slower). Importantly, the increase does not rise with project size,
as the comparison of qbs vs Qt Creator shows.
Output of qbs_benchmarker on Linux with qbs as test project:
========== Performance data for Resolving ==========
Old instruction count: 12870602895
New instruction count: 11923459780
Relative change: -8 %
Old peak memory usage: 61775848 Bytes
New peak memory usage: 67583424 Bytes
Relative change: +9 %
========== Performance data for Rule Execution ==========
Old instruction count: 4074062223
New instruction count: 3887473574
Relative change: -5 %
Old peak memory usage: 35123704 Bytes
New peak memory usage: 38398392 Bytes
Relative change: +9 %
========== Performance data for Null Build ==========
Old instruction count: 1104417596
New instruction count: 1011033948
Relative change: -9 %
Old peak memory usage: 24461824 Bytes
New peak memory usage: 25325920 Bytes
Relative change: +3 %
Output of qbs_benchmarker on Linux with Qt Creator as test project:
========== Performance data for Resolving ==========
Old instruction count: 67166450352
New instruction count: 60772791018
Relative change: -10 %
Old peak memory usage: 327011616 Bytes
New peak memory usage: 343724176 Bytes
Relative change: +5 %
========== Performance data for Rule Execution ==========
Old instruction count: 71684351183
New instruction count: 67051936965
Relative change: -7 %
Old peak memory usage: 374913688 Bytes
New peak memory usage: 387790992 Bytes
Relative change: +3 %
========== Performance data for Null Build ==========
Old instruction count: 8383156078
New instruction count: 7930705668
Relative change: -6 %
Old peak memory usage: 180468360 Bytes
New peak memory usage: 182490384 Bytes
Relative change: +1 %
Real-world data building Qt Creator (using qbs --log-time, several runs,
removing outliers):
macOS:
Resolving: 43s -> 47s
Rule execution: 17s -> 14s
Windows:
Resolving: 18s -> 16s
Rule execution: 22s -> 17s
Fixes: QBS-913
Fixes: QBS-1103
Fixes: QBS-1126
Fixes: QBS-1227
Fixes: QBS-1684
Change-Id: Ie5088155026e85bbd1e303f1c67addb15810a3cb
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
|
|
|
|
|
|
| |
Written-by: Denis Shienkov <denis.shienkov@gmail.com>
Change-Id: I2a11dcd11a98300035ccac8d5872d15f46d18299
Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
|
|
|
|
|
|
|
|
|
|
| |
User can set it to false using the bundle.infoPlist property
if needed.
Fixes: QBS-1670
Change-Id: Ie009bd7f366c09ae6a77134ba0290dea62ae6e35
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
| |
Change-Id: I86c24c6ad1ea0daf298b71501a6719c8b2650c1c
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Those toolchains expect separate parameters for linker script flag
and script itself.
This amends ff04acd64d85d460e0f52a7ead233ae503e616d7.
Fixes: QBS-1704
Change-Id: Icd7028be89457ea539b5edae9c572bffdad6d997
Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
It is supported since MSVC 16.8[1] and clang-cl 13[2].
[1] https://devblogs.microsoft.com/cppblog/c11-and-c17-standard-support-arriving-in-msvc/
[2] https://github.com/llvm/llvm-project/commit/d087d805acb664e885e9c31a916f6cfa5dbc2186
Change-Id: I858beadf20c357d8a4c369ab7bc32f69ef956ebb
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|
|
|
|
|
|
|
|
|
| |
Compiler version sources:
https://en.wikipedia.org/wiki/C17_(C_standard_revision)
https://en.wikipedia.org/wiki/C2x
https://en.wikipedia.org/wiki/Xcode#Xcode_11.0_-_14.x_(since_SwiftUI_framework)
Change-Id: I3bdb54334e0cbf326a5d25d31c45f331cbb36c55
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
| |
- prl files can refer to QT_INSTALL_PLUGINS
- object files can appear in QMAKE_PRL_LIBS
Change-Id: I2ab707ab3677a1e7be71c93f211677b5df04b23f
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
| |
The assembly for android breaks when there is a "version" file in the
root folder of the project.
Fixes: QBS-1691
Change-Id: Ie86d23618dff5fa0e28cbf3b756133df5751160f
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As we use the baremetal tests for non-baremetal compilers
(for example, for `watcom` and `dmc`), then we need a test for
linking the application and the shared library.
We cannot use the existing tests for `watcom` and `dmc` toolchains,
because these toolchains have specific behavior and also do not
fully support the STL. Therefore, the simplest dependency linking
test is used here.
Also fixed the shared library creation for these toolchains.
Change-Id: I0e5d5ede39fa0c9b4bf7db54adc3f161e0aea91c
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds support for the following target platforms:
* DOS - both 32/16 bit.
* Windows - 16 bit.
Also, more specifically, the target is controlled by the
`cpp.extenderName` property, which is the DOS extender to use.
The Digital Mars support the following DOS extenders:
* Rational 16 bit DOS Extender
* ZPM 16 bit DOS Extender
* DOSX 32 bit DOS Extender
* Pharlap 32 bit DOS Extender
which have the following names `dosr`, `dosz`, `dosx`, `dosp`.
The user can set any of the desired values in the `cpp.extenderName`
property (also this property can be empty that means no any
extender is used).
Right now the `qbs-setup-toolchain` utility creates all possible
supported profiles with the required pre-configured properties:
Profile 'dmc-8_57_0-windows-x86' created for 'C:/dm/bin/dmc.exe'.
Profile 'dmc-8_57_0-windows-x86_16' created for 'C:/dm/bin/dmc.exe'.
Profile 'dmc-8_57_0-dosx-x86' created for 'C:/dm/bin/dmc.exe'.
Profile 'dmc-8_57_0-dosp-x86' created for 'C:/dm/bin/dmc.exe'.
Profile 'dmc-8_57_0-dosr-x86_16' created for 'C:/dm/bin/dmc.exe'.
Profile 'dmc-8_57_0-dosz-x86_16' created for 'C:/dm/bin/dmc.exe'.
Profile 'dmc-8_57_0-dos-x86_16' created for 'C:/dm/bin/dmc.exe'.
Compiling with DOS extenders requires additional external utilities
and libraries (depending on the extender type). Some of them are no
longer available at the moment, so the tests in CI are only done for
the `dmc-windows-x86`, `dmc-windows-x86_16`, and `dmc-dos-x86_16`
profiles.
Change-Id: I221d2995900c63605c8552b825bf0c4d55171f5c
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
| |
Fixes: QBS-1690
Change-Id: I34b4d3f96ec2790d47e33a018892c67fea5f838d
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds support for the following target platforms:
* DOS - both 32/16 bit.
* OS/2 - both 32/16 bit.
* Windows - 16 bit.
Also all these platforms covered in CI tests.
Change-Id: Ie75d9203c50f4d61546b19328992ff0e107d9942
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds basic support for the Open Watcom toolchain.
This patch uses the `owcc` compiler (supplied with the toolchain),
which is a wrapper that supports the POSIX standard.
Reason is that the native OW compiler and linker has a limitations
in the command line arguments (e.g. they have wrong quotes handling
and so on).
This patch supports both the latest official version v1.9 and also
its fork v2.0.
Also added the CI autotests for the version v2.0 for the Windows
host. These autotests only perform a limited number of tests (only
the bare-metal tests) due to the following toolchain limitations:
* The toolchain does not have STL support (there seems to be some
kind of the partial support in the form of separate legacy STL ports).
* The toolchain support something compatible with the C++98 standard.
* The toolchain does not support the shared libraries on Linux hosts.
These limitations make it impossible or unjustified to reuse most
of the available tests (it requires a lot of work).
There was also an attempt to set up CI for tests on Linux host, but
for some reason the toolchain installer crashes on CI (although it
works fine on a local PC with Ubuntu).
Change-Id: Iecf76f51f0b09d31a89683f786b9cd7a825f235e
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|
|
|
|
| |
Change-Id: Ie79f92852ab4895f472d247cfd3dd51c6fb1228f
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
| |
Replace all the possible use of the qbs module that can be replaced by
the Host and FileInfo services.
Change-Id: I0d6f820bb2577eacd9081ec2df1eb53adf94d50e
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|\
| |
| |
| | |
Change-Id: Ia540ffdfbcb1e51146dba53337defd09ded66f1a
|
| |
| |
| |
| |
| |
| |
| |
| | |
Otherwise there is no possibility to add these arguments, since
cpp.linkerFlags are put into -Wl which is not correct for them.
Change-Id: I4b9355e082269d390b2afc20bec1376c5d1fcd59
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Weak symbols can very easily get pulled into binaries. Make sure this
does not mess with our re-linking detection logic.
Change-Id: I013cc12728528e684d6cd4ba3c61cb56f1f854b4
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* All descriptions start with a small letter.
* Trailing dots have been removed from all descriptions.
* For all static library rules replaced 'linking' with 'creating'
in descriptions.
* Added 'ing' ending to all descriptions where it was missing.
Change-Id: I2a4cb9dd53980d33628e097efaae53a68573af42
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|/
|
|
|
|
|
|
| |
This is the correct property for an external library. It's also what
Qt's own cmake build system uses these days.
Change-Id: Ieba1a9b89ed4bccadbfa21881e0ce12aefa109a8
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|
|
|
|
|
|
|
|
| |
It makes sense to use the {assembler|compiler}OutputTags() and
the {assembler|compiler}OutputArtifacts() functions also in GCC
and MSVC toolchains, that simplifies and unifies a code.
Change-Id: Ie8cfd185c30322139fb8871b75ea69a888c1f471
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New docker images are added to test different android ndks. Those
images don't have Qt so only a subset of the tests are run.
So far I added 3 images: r23 (LTS), r21e (LTS) and r19c
(minimum one).
The other android images also have a new ANDROID_NDK_VERSION
argument set to the r23.
Change-Id: Iaa7c80b9cac1c7888b3297fac13333d22a9ad0bc
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|
|
|
|
| |
Change-Id: I4e87e8aa98330c9d12a5d23cd2183edbb55d1a4d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The COSMIC linker has some restrictions on the length of the object
paths, and it reports the error, like this:
ERROR: #error clnk cosmic.lkf:1 object pathname too long: (...)
Also the problem is that the COSMIC toolchain does not support the
response files. So, we used the workaround, where for each command
we set the working directory to the build directory, and instead of
the full paths to the files, we used the relative paths for all rules.
But this limitation makes it impossible to parse the compilation
warnings or errors at integrating with the various IDEs, because
the paths to the files are not absolute (e.g. integration with the
'problem' panes or something else).
Right now it is enough to leave the relative paths only when
specifying the paths to the libraries in the linker rule, while the
rest of the other paths are made absolute.
Change-Id: I159bf4e8163e5f9d0aaa1e2555df3dbd81f390c5
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|
|
|
|
|
|
| |
... because they are already declared in the main CppModule.
Change-Id: I5030193f8b7ee8c38b37980be2564d1a922da94f
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|\
| |
| |
| | |
Change-Id: Iac2a17ef4bacf25becc7f2082a8a73a21b2f4d76
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously, we used -I flag to pass system includes to as. Revert this
behavior since FreeBSD as does not have the -isystem flag.
This amends ff04acd64d85d460e0f52a7ead233ae503e616d7.
Change-Id: I7b36839698634ab2ca9ef8ff199356ebc471eebb
Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
| |
| |
| |
| |
| |
| | |
Fixes: QBS-1312
Change-Id: Ic9cf4d7a9a980f31063a93c49a6f07c4b8c6abfa
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
... to unify a codebase.
Resource output artifacts are now tagged with the 'res' instead of
the 'obj' as before (also the output file extensions are also changed
from '*.obj' to '*.res'). This only affected to the additional
processing for the new 'res' tags in the linker rules for the MSVC
and the MinGW.
The reason for adding the new 'res' tag is that for some compilers
(e.g. the future Open Watcom), the resource files must be linked using
the special flags (and not passed as like regular object files to the
linker).
Change-Id: Ibfc52a384816d3769a7c1f6564db079c118011a0
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
... instead of redundant internal detectRelativePath() function.
Change-Id: I56f4268142f4dbc2722a5d09741cba47a97f6a2d
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Allow to overwrite default value (sha1) for the --build-id linker flag.
Task-number: QBS-1668
Change-Id: Ib26904019eb68c94d345d0e33648b04ccf830de1
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Iccc5c9a10d1934e2170f75d194ed103b45bfac53
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It makes sense to use the FileInfo.joinPaths() instead of the '/'
separators in the paths, because the FileInfo.joinPaths() automatically
use the best separators for a specific platforms.
Change-Id: If518cca7f9edf0f199c146b1f22f07ddb51c1d51
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|\ \
| |/ |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Otherwise, this value will not result in the /std:c++latest flag.
Task-number: QBS-1656
Change-Id: I26c077e8200c2a3aff865327cb6c0569f7fdbaab
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
... because we don't need in this inclusion at all.
But for some cases it is impossible to remove that inclusions
(and even to move on next lines) because then the some tests
are failed by unknown reason. For those tests were added the
following comments on the inclusion lines:
`// FIXME: Don't remove this import because then the test fails!`
Change-Id: I9153fd0e38b94af08168e499ee46a23889ee4d73
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It is mandatory to pass /Zc:__cplusplus when building
with Qt 6.2 and MSVC.
Fixes: QBS-1655
Change-Id: I27d928a568d0ac2075ce3f77f4142e20342be358
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|/
|
|
|
|
|
|
|
|
|
|
| |
... for MSVC and all bare-metal toolchains.
We can use this common function because it has the same implementation.
The only addition is that we have separated the handling of static and
dynamic libraries that is related with their suffixes.
Change-Id: Id83cb0bc9c3aa08a2f32915851a8ac58d7865588
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
|
|
|
|
|
|
| |
Fixes: QBS-1653
Change-Id: Ide8e3b75b86ef5bf2018d1cf962e7429796e59e4
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|
|
|
|
|
|
|
|
|
| |
Commit e7f204c4b82475f39c3f5a3870a7393857b1a29a removed assignation of
staticLibraries with staticStlFilePath which made impossible to link
with static stl.
Fixes: QBS-1654
Change-Id: I83a176918d423a371741a97b4c48c0f6eda03138
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
|\
| |
| |
| | |
Change-Id: I2c7c200d4b0057bf7115306d000c13e60d2e8bd2
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previous commit 9e5ef99 introduces regression where the non Windows path
separators does not work in some cases, that lead to the compilation
errors (although CI tests are succeed). This strange behavior seems
related to the old engine of these toolchains. Thus, we need to use the
Windows path separators again, besides everywhere in the KEIL
documentation are used only the Windows separators.
Change-Id: I2aa0f28651b914414bcd6b67bf451b0af1b73c18
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We need to separate the functionality of these functions, since their
content will differ in the future (for example, the 'intermediate_obj'
tag will be added for the compiler).
Change-Id: Ife65aed95966b92a3646d73512a0a0add4cd1aac
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
|