Mission statement
In short: help developers manage dependencies and multi-configuration builds.
Based on a simple multi-version dependencies manager (built on top of npm), the xPack project aims to provide a set of cross-platform tools to manage, configure and build complex, modular, multi-target (multi-architecture, multi-board, multi-toolchain) projects, in a reproducible way, with an emphasis on C/C++ and bare-metal embedded projects.
The expected benefits are more efficient code sharing and reusing during the life cycle of libraries and applications.
xPacks overview
Did you ever face the situation when building a perfectly fine and functional project suddenly failed after upgrading the system? If so, xPacks may help you.
xPacks are general purpose versioned software projects, built on top of the highly successful npm packages in the Node.js JavaScript ecosystem. xPacks do not introduce a new package format, but use exactly the same format as npm packages, and can be stored in the same repositories.
By design the xPacks tools are multi-version, which means not only that packages can have multiple versions, but they can be installed in parallel, each project/configuration having its own set of dependencies, thus upgrading the system no longer impacts the project.
Although the current focus is on C/C++, most of the tools are language agnostic and can be used with other programming languages as well.
Based on the installed content, there are currently two types of xPacks: source and binary:
- source xPacks are packages that install source files, generally libraries
- binary xPacks are packages that install binary/executable files, generally tools used during the build process, like toolchains, builders, etc.
For more details, read the xPack 101 page.
The entire xPack project is split amongst several groups, published as separated GitHub organisations (xpack, xpack-dev-tools, micro-os-plus, xpack-3rd-party).
xPack Core Tools
The core xPack tools are:
xpm
- the xPack Project Manager
Planned:
@xpack/xpmake
- the xPack Project Builder@xpack/xpliquid
- the xPack Liquid Template Engine@xpack/xpjson
- the xPack JSON Manager@xpack/xpninja
- the xPack Build Runner
These projects are hosted in the GitHub
xpack
organization.
xPack Binary Development Tools
There are more than 20 binary tools, each with their own project
(hosted in the GitHub
xpack-dev-tools
organization)
and their own web site.
An index is available as:
Visual Studio Code
Support for VS Code is provided via the xPack extension. This extension allows to navigate through the project xPack actions, and run them with a click of the mouse; it can also create new projects using the xPack project templates.
Eclipse
Eclipse Embedded CDT can be configured to use the xPack binary tools during builds (the Arm & RISC-V embedded toolchains) and during the debug sessions (OpenOCD and QEMU); it also uses some xPack project templates to create Eclipse projects.
Source xPacks
µOS++
Packages part of the µOS++ framework:
- @micro-os-plus/architecture-aarch32 - A source xPack with the µOS++ AArch32 architecture port
- @micro-os-plus/architecture-aarch64 - A source xPack with the µOS++ AArch64 architecture port
- @micro-os-plus/architecture-cortexm - A source xPack with the µOS++ Arm Cortex-M architecture port
- @micro-os-plus/architecture-riscv - A source xPack with the µOS++ RISC-V architecture port
- @micro-os-plus/architecture-synthetic-posix - A source xPack with the µOS++ synthetic POSIX architecture port
- @micro-os-plus/build-helper - A source xPack to assist the µOS++ builds
- @micro-os-plus/cmsis-os - A source xPack with the µOS++ CMSIS RTOS compatibility layer
- @micro-os-plus/devices-qemu-aarch32 - A source xPack with µOS++ QEMU AArch32 devices files
- @micro-os-plus/devices-qemu-aarch64 - A source xPack with µOS++ QEMU AArch64 devices files
- @micro-os-plus/devices-qemu-cortexm - A source xPack with µOS++ QEMU Cortex-M devices files
- @micro-os-plus/devices-qemu-riscv - A source xPack with µOS++ QEMU RISC-V devices files
- @micro-os-plus/devices-stm32f0-extras - A source xPack with µOS++ complementary STM32F0 files
- @micro-os-plus/devices-stm32f4-extras - A source xPack with µOS++ complementary STM32F4 files
- @micro-os-plus/diag-trace - A source xPack with the µOS++ trace::printf() tracing infrastructure
- @micro-os-plus/libs-c - A source xPack with µOS++ complementary C library functions
- @micro-os-plus/libs-cpp - A source xPack with complementary C++ library functions
- @micro-os-plus/libs-cpp-estd - A source xPack with µOS++ embedded std:: support
- @micro-os-plus/memory-allocators - A source xPack with µOS++ memory allocators
- @micro-os-plus/micro-test-plus - A source xPack with µTest++ testing framework
- @micro-os-plus/posix-io - A source xPack with POSIX I/O
- @micro-os-plus/rtos - A source xPack with the µOS++ RTOS
- @micro-os-plus/semihosting - A source xPack with the portable semihosting definitions
- @micro-os-plus/startup - A source xPack with the µOS++ startup code for bare-metal platforms
- @micro-os-plus/utils-lists - A source xPack with C++ lists support for µOS++
- @micro-os-plus/version - A source xPack with the µOS++ version definitions
3rd Party
Packages with 3rd party content:
- @xpack-3rd-party/arm-cmsis-core - A source xPack with Arm CMSIS Core-M and Core-A files
- @xpack-3rd-party/boost-ut - A source xPack with Boost-UT files
- @xpack-3rd-party/catch2 - A source xPack with Catch2 files
- @xpack-3rd-party/googletest - A source xPack with Google Test files
Planned:
@xpack-3rd-party/freertos
- FreeRTOS@xpack-3rd-party/chan-fatfs
- Chan-FatFS
xPack Build Box (XBB)
The xPack Build Box is an elaborated build environment focused on obtaining reproducible builds while creating cross-platform standalone binaries for GNU/Linux, macOS and Windows.
Notifications
To stay up-to-date with new binary tools releases, the recommended way is to follow @xpack_project on Twitter.
Alternatively you can subscribe to this site RSS feed https://xpack.github.io/feed.xml.
To stay current with changes to individual projects, enable watching in the GitHub web interface for each project of interest.
License
Unless otherwise mentioned, all xPack tools with original content are provided free of charge under the terms of the MIT License.
Credits
Special thanks to MacStadium, for providing the Apple Silicon development infrastructure as part of their Open Source Program.
Let us know if you enjoyed using this project
If you enjoyed using this project, please let us know; here are some advices:
- the best way to praise us would be to donate; if you want to speed up development and help future versions include more and more great features, please consider donating; any contribution, small or generous, will be highly appreciated;
- star the projects you liked on GitHub (xPack or xPack Dev Tools);
- follow the project on Twitter, to get notifications on new releases.