Skip to main content

The xPack Binary Development Tools

There are several tools, grouped by their expected use.

Main tools​

The intended use case for the main tools is building and testing C/C++ projects, with an emphasis on embedded projects, but native projects can benefit as well.

Toolchains​

The core tools are the toolchains. There are two Arm Embedded GCC toolchains, one for 32-bit devices (arm-none-eabi-gcc) and one for 64-bit devices (aarch64-none-elf-gcc). The second supported embedded architecture is RISC-V, with the riscv-none-elf-gcc toolchain that generates both 32 and 64-bit executables.

For native builds, the two main toolchains (gcc and clang) are supported.

To cross-build Windows projects, the mingw-w64-gcc toolchain is included.

Build tools​

The main system build generators (cmake and meson) are supported.

As a modern replacement to make, the ninja small build system is included.

Emulators​

To test the Arm and RISC-V executables, the qemu-system-arm, qemu-system-aarch64 and qemu-system-riscv emulators are supported.

OpenOCD​

To flash and debug bare metal boards, the openocd on-chip debugger is incuded.

Supplementary tools​

The supplementary tools were needed to build the main tools. Since these tools are exclusively built on macOS and GNU/Linux, to reduce maintenance efforts, currently there are no Windows binaries. However, the projects are versatile and can be used in any builds; if necessary, Windows binaries can be added in future releases.

The bison, flex, m4, patchelf, pkg-config, realpath, sed, wine are provided.

Work in progress​

Some projects are not yet production ready, and need some more work.

Common internal projects​

The xPack Build Box (XBB)​

For reproducibility, the GNU/Linux builds, also used to build the Windows binaries, are based on several Docker images.

The scripts to create these Docker images are hosted in a separate project.

The xPack Build Box Helper​

The build procedures for all projects have many things in common; to avoid code duplication, the common scripts and other resources were grouped in a helper project.