|
1 | | -Feature: Compile source code into working software |
| 1 | +Feature: Compilation |
2 | 2 |
|
3 | | - As a developer |
4 | | - To generate working software |
5 | | - Source code needs to be compiled successfully |
| 3 | + As a software developer |
| 4 | + To generate a working product |
| 5 | + Source code needs to be compiled into working software |
6 | 6 |
|
7 | | - Scenario: Compile valid source code into working software targeting the host architecture |
| 7 | + Rule: Compile for container host architecture and operating system |
| 8 | + amp-devcontainer *SHALL* be able to compile valid source code into a working executable targeting the container host architecture and operating system. |
8 | 9 |
|
9 | | - Compiling valid source code into working software, able to run on the host architecture, |
| 10 | + Compiling valid source code into working software, able to run on the container host architecture and operating system, |
10 | 11 | can be necessary in several scenarios; for example when: |
11 | 12 |
|
12 | | - - the host is the deployment target |
13 | | - - running tests on the host |
14 | | - - building plug-ins, extensions, code generators, or other additional tools that need to run on the host |
| 13 | + - the container host is the deployment target |
| 14 | + - running tests on the container host |
| 15 | + - building plug-ins, extensions, code generators, or other additional tools that need to run on the container host |
15 | 16 |
|
16 | | - Given build configuration "gcc" is selected |
17 | | - And build preset "gcc" is selected |
18 | | - When the selected target is built |
19 | | - Then the output should contain "Build finished with exit code 0" |
| 17 | + @flavor:cpp |
| 18 | + Scenario: Compile valid source code into working software targeting the container host architecture |
| 19 | + Given build configuration "gcc" is selected |
| 20 | + And build preset "gcc" is selected |
| 21 | + When the selected target is built |
| 22 | + Then the output should contain "Build finished with exit code 0" |
| 23 | + |
| 24 | + Rule: Compile for ARM Cortex target architecture |
| 25 | + amp-devcontainer *SHALL* be able to compile valid source-code into a working ELF executable targeting the ARM Cortex architecture. |
| 26 | + |
| 27 | + Compiling valid source-code into working ELF executables, able to run on the ARM Cortex architecture, |
| 28 | + is a primary function for amp-devcontainer. It enables building firmware for micro-controllers based |
| 29 | + on the ARM Cortex architecture. |
| 30 | + |
| 31 | + Rule: Compile for Microsoft® Windows operating system |
| 32 | + amp-devcontainer *SHALL* be able to compile valid source-code into a working executable targeting the Microsoft® Windows operating system. |
| 33 | + |
| 34 | + Compiling valid source-code into working executables, able to run on the Microsoft® Windows operating system, can be necessary in several scenarios e.g. |
| 35 | + |
| 36 | + - Cross platform code is written and needs to be compiled and deployed |
| 37 | + - Executables needs to be deployed outside of container context to a host running the Microsoft® Windows operating system |
| 38 | + |
| 39 | + Rule: Compilation cache |
| 40 | + amp-devcontainer *SHOULD* be able to cache the results of a compilation to speed-up subsequent compilations. |
| 41 | + |
| 42 | + Maintaining a compilation cache can be useful in both local and ci development scenarios. A compilation cache can provide benefits like: |
| 43 | + |
| 44 | + - Reduce developer waiting time and context switches, [maintaining flow-state](https://azure.microsoft.com/en-us/blog/quantifying-the-impact-of-developer-experience/) |
| 45 | + - Reduce CPU usage at the cost of more storage usage, potentially reducing energy consumption and cost for metered ci-systems |
0 commit comments