Configuration file guide¶
This guide explains how to create and configure your project’s configuration file.
See an example configuration file here.
General structure¶
The YAML configuration file consists of the following top-level fields:
Field |
Type |
Description |
|---|---|---|
build_system[1] |
string |
(Optional) Name of the build system |
runner[2] |
string |
(Optional) Name of the runner (low-level build system) |
platforms |
list of dictionaries |
Describes the platforms used for building and running the project |
recipes |
list of dictionaries |
Build configuration parameters |
builds |
list of dictionaries |
Describes builds tasks |
build_system: CMake
runner: Make
platforms: [{}]
recipes: [{}]
builds: [{}]
Platforms¶
The platforms section describes the machines on which the project will be built and run.
Field |
Type |
Description |
|---|---|---|
id |
integer |
Unique id of the platform |
arch |
string |
Architecture (e.g. x86, riscv) |
address |
string |
(Optional) IP address or domain name |
username |
string |
(Optional) Username of the remote machine |
port[3] |
integer |
(Optional) Port of the remote machine |
password[4] |
string |
(Optional) Password for the remote machine |
Note:
If the
addressfield is not specified, the local machine is assumed.For a local machine,
username,password, andportdo not need to be specified.If an
addressis specified, the machine is treated as remote, and the fieldsusername,password, andportmust be provided.If you connect with SSH keys instead of a password, run
eval "$(ssh-agent -s)"and then add the keys for the target machines manually, for examplessh-add ~/.ssh/id_remote_machine, before starting Amphimixis.
Recipes¶
The recipes section describes the build configuration and compiler flags.
Field |
Type |
Description |
|---|---|---|
id |
integer |
Unique ID of the recipe |
config_flags |
string |
(Optional) Build configuration options |
compiler_flags[5] |
dict |
(Optional) Compiler flags used during the build process |
toolchain[6] |
dict |
(Optional) Path to the toolchain used for building the project |
sysroot |
string |
(Optional) Path to the folder with system headers and libraries used by the toolchain |
jobs |
integer |
(Optional) Number of parallel jobs used by the build system |
Builds¶
The builds section links platforms and recipes, defining which configurations should be built on which machines.
Field |
Type |
Description |
|---|---|---|
build_machine |
integer |
|
run_machine |
integer |
|
recipe_id |
integer |
ID of the |
executables[7] |
list |
(Optional) List of executables to profile for this build |
Example:
builds:
- build_machine: 1
run_machine: 1
recipe_id: 1
executables:
- bin/my_app
- tests/my_benchmark
Example:
# Define a reusable list of executables
executables: &my_executables
- bin/my_app
- tests/my_benchmark
builds:
- build_machine: 1
run_machine: 1
recipe_id: 1
executables: *my_executables # reference the list above
Note:
YAML references (& and *) let you reuse the same
executableslist across multiple builds, reducing duplication.