summaryrefslogtreecommitdiff
path: root/share/qbs/modules/cpp
Commit message (Collapse)AuthorAgeFilesLines
* msvc: check for clang-cl firstIvan Komissarov2023-05-151-12/+11
| | | | | | | | | 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>
* js_versionCompare: allow build numberIvan Komissarov2023-05-121-1/+2
| | | | | | | | It is not clear why it worked before. Task-number: QBS-1733 Change-Id: Ib870f669d9151c91635b7078fae8cb217c9955f3 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* mingw: workaround for cpp.minimumWindowsVersionIvan Komissarov2023-04-111-0/+3
| | | | | | | | | | | | 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>
* Prefer built-in JS function in modulesChristian Kandeler2023-02-2031-172/+172
| | | | | | | contains -> includes Change-Id: Id893c2ea0659d9bded4f5cec1a3160ccd802118b Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Switch JavaScript back-endChristian Kandeler2023-02-073-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* IAR: Fix compiler macros and include paths retrievalChristian Kandeler2022-12-241-0/+2
| | | | | | Written-by: Denis Shienkov <denis.shienkov@gmail.com> Change-Id: I2a11dcd11a98300035ccac8d5872d15f46d18299 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
* Darwin: Set NSSupportsAutomaticGraphicsSwitching to true by defaultIvan Komissarov2022-08-241-0/+3
| | | | | | | | | | 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>
* Add executableSuffix to the FileInfo serviceRaphael Cotty2022-08-081-2/+2
| | | | | Change-Id: I86c24c6ad1ea0daf298b71501a6719c8b2650c1c Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix passing linker scripts to iar and keil toolchainsIvan Komissarov2022-08-032-2/+2
| | | | | | | | | | | | 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>
* MSVC: Support cLanguageVersionOrgad Shaneh2022-08-011-2/+28
| | | | | | | | | | 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>
* Support c17 and c2x values for cLanguageVersionOrgad Shaneh2022-08-013-9/+25
| | | | | | | | | | 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>
* Qt support: Fix static buildsChristian Kandeler2022-07-071-4/+12
| | | | | | | | - 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>
* Fix build for android when the project has file named "version"Dmitrii Kolpakov2022-04-061-1/+1
| | | | | | | | | 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>
* baremetal: Add simple test for linking with shared librariesDenis Shienkov2022-02-213-33/+22
| | | | | | | | | | | | | | | | 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>
* Add support for other platforms supported by Digital MarsDenis Shienkov2022-02-172-15/+84
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Darwin: Set MinimumOSVersion property for mobile Apple platformsChristian Kandeler2022-02-151-0/+7
| | | | | | Fixes: QBS-1690 Change-Id: I34b4d3f96ec2790d47e33a018892c67fea5f838d Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Add support for other platforms supported by Open WatcomDenis Shienkov2022-02-092-24/+83
| | | | | | | | | | | | | 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>
* Long live Open Watcom toolchainDenis Shienkov2022-02-043-2/+712
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* baremetal: Allow to configure job limitsDenis Shienkov2022-02-015-0/+21
| | | | | Change-Id: Ie79f92852ab4895f472d247cfd3dd51c6fb1228f Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Use Host and FileInfo serviceRaphael Cotty2022-01-3114-21/+34
| | | | | | | | 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>
* Merge branch '1.21' into masterIvan Komissarov2021-12-132-0/+3
|\ | | | | | | Change-Id: Ia540ffdfbcb1e51146dba53337defd09ded66f1a
| * cpp Module: Implement runtimeLibrary property for MinGWBjörn Schäpers2021-11-292-0/+3
| | | | | | | | | | | | | | | | 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>
* | Ignore weak symbols when re-linking in non-strict modeChristian Kandeler2021-12-061-2/+7
| | | | | | | | | | | | | | | | 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>
* | Fix descriptions for JS commandsDenis Shienkov2021-11-156-6/+6
| | | | | | | | | | | | | | | | | | | | | | * 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>
* | Qt support: Use cpp.systemIncludePaths for Qt headersChristian Kandeler2021-11-101-0/+2
|/ | | | | | | | 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>
* Use more common functions from cpp.js for GCC and MSVC toolchainsDenis Shienkov2021-10-053-63/+22
| | | | | | | | | 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>
* Add android testing with different ndk versionsRaphael Cotty2021-09-301-0/+5
| | | | | | | | | | | | | 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>
* Simplify all single-line 'prepare' scriptsDenis Shienkov2021-09-283-43/+15
| | | | | Change-Id: I4e87e8aa98330c9d12a5d23cd2183edbb55d1a4d Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Unify generation of precompiled headersDenis Shienkov2021-09-284-32/+39
| | | | | | | | 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>
* baremetal: Get rid of relative paths where it is possible for COSMICDenis Shienkov2021-09-231-39/+24
| | | | | | | | | | | | | | | | | | | | | | | | 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>
* Remove duplicated values or properties from CPP modulesDenis Shienkov2021-09-212-4/+0
| | | | | | | ... because they are already declared in the main CppModule. Change-Id: I5030193f8b7ee8c38b37980be2564d1a922da94f Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Merge branch '1.20' into masterIvan Komissarov2021-09-211-3/+25
|\ | | | | | | Change-Id: Iac2a17ef4bacf25becc7f2082a8a73a21b2f4d76
| * freebsd: fix TestBlackbox::assemblyIvan Komissarov2021-09-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | 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>
| * freebsd: fix target linker flagsIvan Komissarov2021-09-201-2/+24
| | | | | | | | | | | | Fixes: QBS-1312 Change-Id: Ic9cf4d7a9a980f31063a93c49a6f07c4b8c6abfa Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Use common Cpp.resourceCompilerOutput{Tags|Artifacts} functionsDenis Shienkov2021-09-205-22/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... 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>
* | baremetal: Use common Cpp.relativePath() function in COSMIC toolchainDenis Shienkov2021-09-181-28/+22
| | | | | | | | | | | | | | ... instead of redundant internal detectRelativePath() function. Change-Id: I56f4268142f4dbc2722a5d09741cba47a97f6a2d Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Android: Add buildId option to the ndk for the linkerRaphael Cotty2021-09-031-1/+1
| | | | | | | | | | | | | | | | 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>
* | cpp module: Add support for C++23Christian Kandeler2021-08-232-5/+21
| | | | | | | | | | Change-Id: Iccc5c9a10d1934e2170f75d194ed103b45bfac53 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Use more FileInfo.joinPaths() in artifacts generatorsDenis Shienkov2021-08-225-30/+35
| | | | | | | | | | | | | | | | | | 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>
* | Merge "Merge 1.20 into master"The Qt Project2021-08-218-6/+20
|\ \ | |/
| * MSVC: Understand "c++20" as language versionChristian Kandeler2021-08-061-1/+1
| | | | | | | | | | | | | | | | 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>
| * Remove `import qbs` from all project filesDenis Shienkov2021-08-045-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ... 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>
| * msvc: fix passing /Zc:__cplusplus flagIvan Komissarov2021-08-033-0/+19
| | | | | | | | | | | | | | | | | | 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>
* | Use common Cpp.collectLibraryDependencies() functionDenis Shienkov2021-08-202-76/+13
|/ | | | | | | | | | | | ... 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>
* Fix typo in MSVC toolchain when handling cpp.linkerWrapper propertyDenis Shienkov2021-07-311-2/+2
| | | | | | Fixes: QBS-1653 Change-Id: Ide8e3b75b86ef5bf2018d1cf962e7429796e59e4 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Android: fix link with static stlRaphael Cotty2021-07-301-0/+1
| | | | | | | | | | 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>
* Merge branch '1.19' into 1.20Ivan Komissarov2021-07-271-11/+15
|\ | | | | | | Change-Id: I2c7c200d4b0057bf7115306d000c13e60d2e8bd2
| * baremetal: Revert usage of toWindowsSeparators() for KEIL C51/251/166v1.19.2Denis Shienkov2021-06-281-13/+17
| | | | | | | | | | | | | | | | | | | | | | | | 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>
* | Long live Digital Mars toolchainDenis Shienkov2021-07-274-20/+725
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | Separate Cpp.{assembler|compiler}Output{Tags|Artifacts}Denis Shienkov2021-06-295-17/+35
| | | | | | | | | | | | | | | | | | 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>