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
- Host: GitHub
- URL: https://github.com/lethalbit/xc-build
- Owner: lethalbit
- License: bsd-3-clause
- Created: 2023-08-27T16:21:12.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-10-05T13:18:31.000Z (over 2 years ago)
- Last Synced: 2025-02-16T01:27:02.774Z (12 months ago)
- Language: Python
- Size: 47.9 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
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.