Skip to content

Add ARM clang and bindgen wrappers#1982

Open
NickeZ wants to merge 1 commit into
BitBoxSwiss:masterfrom
NickeZ:nickez/sysroot-wrappers
Open

Add ARM clang and bindgen wrappers#1982
NickeZ wants to merge 1 commit into
BitBoxSwiss:masterfrom
NickeZ:nickez/sysroot-wrappers

Conversation

@NickeZ
Copy link
Copy Markdown
Collaborator

@NickeZ NickeZ commented Jun 3, 2026

Summary

This is in preparation for supporting new targets and clang. Move all target specific flags out of build scripts.

In both cases it is necessary to wrap like this so that it works both for our crates but also for any dependency that generates rust headers or compiles C code.

One limiting factor is that arm-none-eabi-gcc -print-sysroot depends on the build machine so it needs to be detected at runtime.

Considerations:

To avoid a cargo wrapper, we could introduce a bootstrap/configure step that creates a ~/.cargo/config.toml file with the appropriate BINDGEN variable in it.


Route CMake cargo invocations through scripts/cargo-wrapper so bindgen
gets target-specific clang arguments from one place. The wrapper
supplies --target for explicit cargo targets, the ARM sysroot and enum
ABI flags for thumb targets, and cortex-m4 soft-float flags for thumbv7
builds.

Add a clang wrapper with the same ARM sysroot discovery for non-GCC
compiler use. Remove hard-coded bindgen sysroot, target, and ABI flags
from Rust build scripts while keeping crate-specific defines there.

Update AGENTS.md to document wrapper usage.

@NickeZ NickeZ requested a review from cedwies June 3, 2026 08:10
@NickeZ NickeZ force-pushed the nickez/sysroot-wrappers branch from f3132c0 to 6f98e81 Compare June 3, 2026 09:23
Route CMake cargo invocations through scripts/cargo-wrapper so bindgen
gets target-specific clang arguments from one place. The wrapper
supplies --target for explicit cargo targets, the ARM sysroot and enum
ABI flags for thumb targets, and cortex-m4 soft-float flags for thumbv7
builds.

Add a clang wrapper with the same ARM sysroot discovery for non-GCC
compiler use. Remove hard-coded bindgen sysroot, target, and ABI flags
from Rust build scripts while keeping crate-specific defines there.

Update AGENTS.md to document wrapper usage.
@NickeZ NickeZ force-pushed the nickez/sysroot-wrappers branch from 6f98e81 to 5f9950e Compare June 3, 2026 09:38
@NickeZ NickeZ requested a review from benma June 3, 2026 09:46
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