Skip to content

toolchain: $(TARGET_CROSS) portability + Bootlin gcc 15.1 on all boards#275

Open
gretel wants to merge 2 commits intoF5OEO:futurefrom
gretel:pr/target-cross-gcc15
Open

toolchain: $(TARGET_CROSS) portability + Bootlin gcc 15.1 on all boards#275
gretel wants to merge 2 commits intoF5OEO:futurefrom
gretel:pr/target-cross-gcc15

Conversation

@gretel
Copy link
Copy Markdown

@gretel gretel commented Apr 9, 2026

Adopt Bootlin gcc 15.1 / libstdc++ 15.1 / glibc 2.41 across all Tezuka boards. libstdc++ 14.2 (from Arm GNU 14.2) lacks GLIBCXX_3.4.34, which blocks any C++23 consumer from loading on the target at runtime.

Two-commit series (the package portability fix must land with the toolchain bump so maia-httpd/futuresdr continue to cross-compile correctly after the toolchain switch):

  1. package(maia-httpd, futuresdr): use $(TARGET_CROSS) for toolchain-agnostic prefix — replaces hardcoded arm-none-linux-gnueabihf- (maia-httpd) and arm-linux- (futuresdr) with Buildroot's canonical $(TARGET_CROSS). Zero behavioural change on Arm GNU 14.2.
  2. toolchain: bump all Tezuka boards to Bootlin gcc 15.1 bleeding-edge-2025.08-1 — swaps all 12 defconfigs from BR2_TOOLCHAIN_EXTERNAL_ARM_ARM=y to BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_BLEEDING_EDGE=y.

Matrix CI: 12/12 boards build green (kernel, U-Boot, userspace, maia-httpd, futuresdr all cross-compile cleanly with Bootlin gcc 15.1). Hardware-validated on FISH Ball Rev.A (libstdc++.so.6.0.34, GLIBCXX_3.4.34 present, maia-httpd runs).

gretel added 2 commits April 9, 2026 16:27
…ostic prefix

Both packages had hard-coded MAIA_HTTPD_CROSS_COMPILE and linker config
paths pointing at specific toolchain prefixes:
- maia-httpd.mk originally had "arm-none-linux-gnueabihf-" (Arm GNU 14.2)
- futuresdr.mk originally had "arm-linux-gcc" (Bootlin)

Neither worked across both toolchains. Now that fishball7020 uses
Bootlin gcc 15.1 while the other 11 boards stay on Arm GNU 14.2, the
hardcoded prefix approach is broken by construction: any choice works
for half the boards and breaks the other half.

Replace with Buildroot's canonical $(TARGET_CROSS) variable, which
expands to:
- $(HOST_DIR)/bin/arm-none-linux-gnueabihf-   on Arm GNU external
- $(HOST_DIR)/bin/arm-linux-                   on Bootlin external
- $(HOST_DIR)/bin/arm-buildroot-linux-gnueabihf- on internal Buildroot

so Cargo's OPENBLAS_CC / linker config / FC pick up the right wrapper
for whichever toolchain is active. The gcc/gfortran suffix is added at
the call site because $(TARGET_CROSS) is only the prefix.

Hardware-validated on fishball7020 (Bootlin path) and CI-validated on
all 11 Arm GNU boards via run 24134967462 / 24135179341 follow-ups.

Signed-off-by: Tom Hensel <[email protected]>
…025.08-1

Replaces Arm GNU 14.2.Rel1 (gcc 14.2 / libstdc++ 14.2 / glibc 2.39) with
Bootlin armv7-eabihf--glibc--bleeding-edge-2025.08-1 (gcc 15.1 / libstdc++
15.1 / glibc 2.41 / binutils 2.44) across all 12 Tezuka defconfigs.

Rationale: pre-built ARMv7 C++ binaries sourced from external cross-build
pipelines (which track mainline gcc) need a matching libstdc++ on the
rootfs at runtime.  GLIBCXX_3.4.34 (libstdc++ 15.1) is not available in
Arm GNU 14.2, which blocks any C++23 consumer from loading on the target.

Applies uniformly to all 12 boards so every Tezuka variant gets the same
C++ runtime ABI.  Matrix CI validates the toolchain swap does not break
any board's build.

Signed-off-by: Tom Hensel <[email protected]>
@gretel gretel marked this pull request as ready for review April 9, 2026 15:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant