An open API service indexing awesome lists of open source software.

https://github.com/lethalbit/xc-build

Cross-compiler toolchain manager and construction utility
https://github.com/lethalbit/xc-build

Last synced: 10 months ago
JSON representation

Cross-compiler toolchain manager and construction utility

Awesome Lists containing this project

README

          

# XC-Build

XC-Build is a tool much like [Crosstool-NG](https://crosstool-ng.github.io/) in the sense that it helps with the building of cross-compilation toolchains. However XC-Build differs in the key sense that it helps you also manage them, and keep them up to date.

> **Note** XC-Build is **NOT** a replacement for Crosstool-NG, while
> they both build cross-compiling toolchains XC-Build is more geared
> to purely embedded and bare-metal use-cases. So it may be unsuitable
> for producing a toolchain for other purposes. However contributions
> to make it more fit for purpose are more than welcome!

## XC-Build support matrix

Symbol Key:

| Symbol | Meaning | Symbol | Meaning |
|:------:|--------------------------|:------:|-------------------------------|
| ✖️ | Does not currently build | ✔️ | Builds and is known working |
| ❔ | Builds, not been tested | 🚫 | Not applicable for the target |




Target
Components



binutils
gdb
gcc
standalone
libc



glibc
newlibc
ulibc
other




aarch64-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



aarch64-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



aarch64-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



arm-none-eabi
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



arm-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



avr
✖️
✖️
✖️
✖️
🚫
avr-libc



frv-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



frv-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



frv-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



ia64-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



ia64-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



ia64-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



microblaze-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



microblaze-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



microblaze-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



mips-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



mips-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



mips-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



mips64-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



mips64-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



mips64-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



m68k-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



m68k-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



m68k-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



lm32-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



ppcle-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



ppcle-none-eabi
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



ppcle-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



ppcle-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



ppc-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



ppc-none-eabi
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



ppc-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



ppc-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



ppc64le-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



ppc64le-none-eabi
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



ppc64le-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



ppc64le-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



ppc64-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



ppc64-none-eabi
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



ppc64-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



ppc64-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



rv32-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



rv32-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



rv32-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



rv64-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



rv64-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



rv64-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



rx-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



rx-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



rx-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



s390-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



s390x-ibm-tpf
✖️
✖️
✖️
✖️
✖️
🚫



s390x-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



sh4-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



sh4-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



sh4-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



sparc-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



sparc-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



sparc-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



sparc64-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



sparc64-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



sparc64-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



x86_64-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



x86_64-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



x86_64-unknown-linux
✖️
✖️
✖️
✖️
✖️
🚫



hppa-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



hppa-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



hppa64-none-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



hppa64-unknown-elf
✖️
✖️
✖️
✖️
✖️
✖️
✖️
🚫



hppa1.1-hp-hpux10
✖️
✖️
✖️
✖️
🚫



hppa1.1-hp-hpux11
✖️
✖️
✖️
✖️
🚫



hppa2.0-hp-hpux10
✖️
✖️
✖️
✖️
🚫



hppa2.0-hp-hpux11
✖️
✖️
✖️
✖️
🚫



xtensa-none-elf
✖️
✖️
✖️
✖️
🚫



xtensa-esp32-elf
✖️
✖️
✖️
✖️
🚫



xtensa-lx106-elf
✖️
✖️
✖️
✖️
🚫



vax-linux-gnu
✖️
✖️
✖️
✖️
🚫


## Parameter Expansion and Variables

The JSON definition files for the components and toolchains implement a bash-like parameter expansion with some pre-defined variables. They can be accessed using the standard `${VARIABLE}` notation. For example `--prefix=${PREFIX}`

| Variable | Value |
|-----------------|---------------------------------------------------------------------------|
| `VERSION` | The current version string for the component being built |
| `PREFIX` | The current toolchain prefix |
| `COMMON_PREFIX` | The common component prefix. Where GMP, MPFR, MPC, et. al. are installed |
| `HOST_TRIP` | The host machines target triple. e.g. `x86_64-pc-linux-gnu` |
| `TARGET_TRIP` | The target triple of the currently being build toolchain |
| `SYSROOT` | The sysroot for the currently being built toolchain |
| `HAS_LTO` | Expands to `--enable-lto` if target supports LTO, otherwise is empty |
| `INSTALL_DIR` | Expands to the install directory for the target toolchain |
| `GNU_HASH` | Expands to `--with-linker-hash-style=gnu` on targets that support it |

There is also a collection of compound variables:

| Variable | Value |
|-----------------|---------------------------------------------------------------------------|
| `COMMON_BIN` | Is equivalent to `${COMMON_PREFIX}/bin` |
| `COMMON_LIB` | Is equivalent to `${COMMON_PREFIX}/lib` |
| `PLAT_BIN` | Is equivalent to `${PREFIX}/bin` |
| `PLAT_LIB` | Is equivalent to `${PREFIX}/lib` |
| `SYS_LOCAL` | Is equivalent to `${SYSROOT}/local` |
| `WITH_GMP` | Expands to `--with-gmp=${COMMON_PREFIX}` |
| `WITH_MPFR` | Expands to `--with-mpfr=${COMMON_PREFIX}` |
| `WITH_MPC` | Expands to `--with-mpc=${COMMON_PREFIX}` |
| `WITH_SYSROOT` | Expands to `--with-sysroot=${SYSROOT}` |
| `PLAT_RPATH` | Expands to `-Wl,-rpath,${PREFIX}/lib` |
| `COMMON_RPATH` | Expands to `-Wl,-rpath,${COMMON_PREFIX}/lib` |

## License
XC-Build licensed under the [BSD-3-Clause](https://spdx.org/licenses/BSD-3-Clause.html), the full text of which can be found in the [`LICENSE`](./LICENSE) file.