aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/blackbox/tst_blackboxbaremetal.cpp
Commit message (Collapse)AuthorAgeFilesLines
* baremetal: Fix generation of compiler listing filesDenis Shienkov2021-04-121-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ... with custom extension for SDCC compiler. The SDCC compiler always generates the listing files in the format of 'module.c.lst', and there is no way to disable a generation, or to specify a different name for the listing file. In addition, we cannot change or delete the generated listing file until the linking is complete (this is such a feature of the SDCC compiler). So, to turn off the listing file generation, or to specify a custom listing file extension, we need to do the following extra steps: 1. If the custom cpp.compilerListingSuffix property is set, then we need to make a copy of the generated listing file after the compilation completes. And then to delete the all listing files with the '*.lst' extension after the linking completes. 2. If the cpp.generateCompilerListingFiles property is disabled, then we need to remove the all generated listing files with the '*.lst' extension after the linking completes. Change-Id: Ia235f7e2ebf88695e4648fb894624c7420968079 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Fix generation compiler listing using ARMCC compilerDenis Shienkov2021-04-081-6/+2
| | | | | | | | | | | | | | | | | | | | | The ARMCC compiler has no options for specifying the name of the output listing file; it only has an options for specifying an output directory. In addition, the generated listing files are in truncated format, e.g. instead of the 'module.{c|cpp}.lst' file will be generated the 'module.lst' file. This behavior complicates the writing of unit tests, and also complicates the implementation if the user wants to change the cpp.compilerListingSuffix property. A workaround is to post-process the compiler listing files after they are generated. In this case, we only need to rename the generated compiler listing file to the desired one. Change-Id: I89c81896711b90b146a94c35d2ec75e296824752 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Improve 'compiler-listing' testDenis Shienkov2021-04-071-11/+25
| | | | | | | | | | | We do not need multiple test data instances (*.qbs) for each property, because we can pass the required properties from the C++ code directly. Also now we can know about the compiler listing file suffix directly, through the cpp.compilerListingSuffix property. Change-Id: I644277458e3ae460cbfb6bba4a24583d9e6ba3e1 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Improve linkerMapFile() testDenis Shienkov2021-04-051-25/+29
| | | | | | | | | | | | | | | Right now we can use the cpp.linkerMapSuffix property to find out the currently used linker map suffix. Also we can set a custom cpp.linkerMapSuffix value to make sure that this applies to the module. In addition, the generation of a custom linker map file for SDCC toolchain has been fixed. Change-Id: I8798cd6bea0ab6b5ea9728400827b8c98b11ba7b Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
* baremetal: Improve 'linker-map' testDenis Shienkov2021-04-011-10/+11
| | | | | | | | We don't need in multiple test data instances (*.qbs) for each property, because we can pass the required properties from the C++ code directly. Change-Id: I3bc05db5f6c0d2533f9799cbadb830c0c687e1e5 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Add new 'compiler-defines-by-language' testDenis Shienkov2021-02-101-0/+7
| | | | | | | | | This test is an adaptation of a similar existing test. A main difference it that this test intended only for a `bare-metal` toolchains where there may be no support for a C ++ compiler. Change-Id: I4ea023743a4940c96dd9abc96ffda8cd06385b0b Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Improve detection of IAR compiler includesDenis Shienkov2021-02-021-0/+28
| | | | | | | | | | | | | | | | | | The IAR compiler has an undocumented command line option `--IDE3`, which allows you to print a list of compiler include paths as: `$$TOOL_BEGIN $$VERSION "3" $$INC_BEGIN $$FILEPATH "<path\\to\\directory>" $$TOOL_END` Besides, the same approach is used in the IAR extension for the VSCode IDE. So we can use this approach to implement it the Qbs module as well. In addition, this commit contains an autotest to check the `cpp.compilerIncludePaths` property. Change-Id: I434dd630913e5afd6cba5b4e31e1021ee0c5fe31 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Pass 'compiler-listing-files' test for KEIL ARM toolchainDenis Shienkov2020-08-131-3/+4
| | | | | | | | | | | KEIL ARM compiler generates a listing files with 'short' names. For example, for the source 'main.c' file it will produce the listing 'main.lst' file, instead of the 'main.c.lst' file. Thus, we have to account for this behavior in our tests. Change-Id: I69ef693cbdd0aacf838eaf382e13e09d7fadbfb1 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Implement cpp.generateCompilerListingFiles for MSVC toolchainDenis Shienkov2020-08-121-1/+1
| | | | | | | | | | We need to use the /Fa compiler option as described here: * https://docs.microsoft.com/en-us/cpp/build/reference/fa-fa-listing-file?view=vs-2019 Change-Id: I81470bfbf84563a49bd5336e7204a07d5b2c910e Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Fix linker MAP file generation for KEIL C51/C251/C166Denis Shienkov2020-08-081-1/+1
| | | | | | | | | | | | 1. We need to use the {NO}PRINT linker options: * https://www.keil.com/support/man/docs/bl51/bl51_noprint.htm 2. The KEIL C251 should generate the linker MAP file with the *.map extension. Change-Id: Ibc1f362c7010a1c2812c21382b617e246c81e100 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Add new 'generate-linker-map-file' testDenis Shienkov2020-08-071-3/+46
| | | | | | | | | | | | | This test checks the cpp.generateLinkerMapFile property, which enables or disables generation for the linker map file. Take into account, that currently not all toolchains completely supports or implements this feature, and this test skips such toolchains. Change-Id: I5ba90116ab0481bb65ff866cf02f8a1963cf00a9 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Add new 'generate-compiler-listing-files' testDenis Shienkov2020-08-071-39/+50
| | | | | | | | | | | | | This test checks the cpp.generateCompilerListingFiles property, which enables or disables generation for the compiler listing files. Take into account, that currently not all toolchains completely supports or implements this feature, and this test skips such toolchains. Change-Id: I533e6b2e5b4af5668cf24f851334b9530bc3a901 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Add new 'defines' testDenis Shienkov2020-08-051-0/+6
| | | | | | | This test checks the cpp.defines property. Change-Id: If5ba39ef48c91147b883b2fe0dcab894b54e3cdb Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Add new 'external-static-libraries' testDenis Shienkov2020-08-041-0/+15
| | | | | | | | | | | | | | This test checks the cpp.libraryPaths and the cpp.staticLibraries properties. This test excluded for the KEIL C51/C251/C166 toolchains, because this toolchains has not the options to specify the library search paths: * https://www.keil.com/support/docs/1298.htm Change-Id: I17b5dc64ae3baacb32621b359863ba42c908d416 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Introduce new 'none' choosing for qbs.targetPlatformDenis Shienkov2020-08-041-0/+18
| | | | | | | | | | | | | | | | | This 'none' value should be used for a bare-metal toolchains in the qbs.targetPlatform and the qbs.targetOS properties. Now this value is set in the profiles during automatic detection of such toolchains as IAR, KEIL and SDCC. Take into account, that it is impossible to do the same and for the GCC toolchain, because there are not exists a proper way to know that a current GCC is for a 'bare-metal'. So, the users should change the qbs.targetPlatform manually. Change-Id: I178fd526bbb5ae44f18e35ff12970ed0718c476d Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* baremetal: Skip 'preinclude-headers' test for KEIL MCS51 toolchainDenis Shienkov2020-07-161-1/+10
| | | | | | | | ... because this toolchain does not support the pre-include headers. Change-Id: I3b34a39da01500540cbaca62244104c8262875fc Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* baremetal: Add 'one-object-asm-application' test for KEIL MCS51Denis Shienkov2020-07-071-1/+26
| | | | | | | | | This commit adds an auto-test which compiles an application using one asm-source main module to check that an assembler does work correctly. Change-Id: I38d512f62bab2e96781405632822f81c13673064 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Implement cpp.prefixHeaders for IAR and KEIL toolchainsDenis Shienkov2020-06-291-0/+6
| | | | | | | | | | | Right now it is possible to use the cpp.prefixHeaders property for the KEIL ARM MDK and the IAR EW toolchains. Take into account that the IAR EW toolchain support only one preinclude file. Change-Id: I9e367825575409fa446f3b012a0e1e8d156643ef Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Add auto-test for 'static library' dependentiesDenis Shienkov2020-06-251-0/+13
| | | | | | | | | | | | | This commit adds a blackbox auto-test which provides a project with a multiple static library products 'a-e' and an one application product. An application depends on the 'e' library, but this library also depends on other libraries 'a-d'. Tested for MCS51 architecture with IAR, KEIL, and SDCC toolchains. Change-Id: Ib79f4f7bed4ac0bf6f06d39705bb19bd4284f22d Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Add auto-test for cpp.distributionIncludePaths propertyDenis Shienkov2020-06-171-0/+6
| | | | | | | | | | | This commit adds a blackbox auto-test which compiles an application using two include paths foo and bar. Tested for MCS51 architecture with IAR, KEIL, and SDCC toolchains. Change-Id: I0eb480ee700ee1d44df69bbcfe9d7d87681212d6 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Add auto-test for cpp.systemIncludePaths propertyDenis Shienkov2020-06-171-0/+6
| | | | | | | | | | | This commit adds a blackbox auto-test which compiles an application using two include paths foo and bar. Tested for MCS51 architecture with IAR, KEIL, and SDCC toolchains. Change-Id: If68be8f120a0ef760f6ca5b3674dfd49f2cf8a7f Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Add auto-test for cpp.includePaths propertyDenis Shienkov2020-06-171-0/+6
| | | | | | | | | | | This commit adds a blackbox auto-test which compiles an application using two include paths foo and bar. Tested for MCS51 architecture with IAR, KEIL, and SDCC toolchains. Change-Id: I4d6114ac2d0b4d8afaf976d5752da8e08d6c73a7 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* baremetal: Long live "application" product type testDenis Shienkov2020-06-161-0/+54
This commit adds a blackbox auto-test which compiles two applications: * first - is an application from the one object file * second - is an application from the two object files Tested for MCS51 architecture with IAR, KEIL, and SDCC toolchains. Change-Id: Ib33430a6d87d3cdda48861e688b233e182d96b51 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>