Building the ML SDK Model Converter
The build system must have:
C/C++ 17 compiler: GCC, or optionally Clang on Linux and MSVC on Windows®.
CMake 3.25 or later.
Ninja 1.8.2 or later.
Python 3.10 or later and
uv0.9.26. Test and tooling dependencies are declared inpyproject.tomland locked inuv.lock.
The following dependencies are also needed:
For the preferred dependency versions see the manifest file.
Building with the script
Arm® provides a python build script to make build configuration options easily discoverable. When the script is run from a git-repo manifest checkout, the script uses default paths and does not require any additional arguments. Otherwise the paths to the dependencies must be specified.
To build on Linux, run:
SDK_PATH="path/to/sdk"
python3 ${SDK_PATH}/sw/model-converter/scripts/build.py -j $(nproc) \
--vgf-lib-path ${SDK_PATH}/sw/vgf-lib \
--flatbuffers-path ${SDK_PATH}/dependencies/flatbuffers \
--argparse-path ${SDK_PATH}/dependencies/argparse \
--tosa-tools-path ${SDK_PATH}/dependencies/tosa-tools \
--external-llvm ${SDK_PATH}/dependencies/llvm-project
To build on Windows®, run:
$env:SDK_PATH="path\to\sdk"
$cores = [System.Environment]::ProcessorCount
python3 "$env:SDK_PATH\sw\model-converter\scripts\build.py" -j $cores `
--vgf-lib-path "$env:SDK_PATH\sw\vgf-lib" `
--flatbuffers-path "$env:SDK_PATH\dependencies\flatbuffers" `
--argparse-path "$env:SDK_PATH\dependencies\argparse" `
--tosa-tools-path "$env:SDK_PATH\dependencies\tosa-tools" `
--external-llvm "$env:SDK_PATH\dependencies\llvm-project"
If the components are in their default locations, it is not necessary to specify
the --vgf-lib-path, --flatbuffers-path, --argparse-path,
--tosa-tools-path, and --external-llvm options.
Tests can be enabled and run with --test and linting by --lint. To enable
tests and documentation building python dependencies must be installed:
uv sync --locked --no-install-project --no-default-groups --group test --group tooling
Run build commands with uv run --no-sync python scripts/build.py to use the
locked environment. To build documentation, pass --doc; Doxygen must also be
installed on the machine.
You can install the project build artifacts into a specified location by passing
the option --install with the required path.
To create an archive containing the build artifacts, pass the --package-type
option with an archive type such as zip or tgz. Use --package-dir to
choose where the archive is written; by default, packages are written to the
build directory.
For more information, see the help output:
python3 scripts/build.py --help
Code coverage
Sync the locked test and tooling dependencies, then run the unit and lit tests on Linux with GCC coverage instrumentation:
uv sync --locked --no-install-project --no-default-groups --group test --group tooling
uv run --no-sync python scripts/build.py --coverage --build-dir build-coverage
The coverage command writes a detailed HTML report to
build-coverage/coverage/index.html and a machine-readable JSON summary to
build-coverage/coverage/summary.json. Coverage is collected for Model
Converter sources; tests, LLVM, and bundled dependencies are excluded.