You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Tamir Duberstein 27e7867528 Add cross-compilation to CI
Updates the README to use cargo target config instead of RUSTFLAGS to
avoid setting the linker for ebpf in cargo-in-cargo.
3 months ago
.cargo Move dependencies to workspace 3 months ago
.github Add cross-compilation to CI 3 months ago
xtask Replace xtask builds with build scripts 3 months ago
{{project-name}} Add cross-compilation to CI 3 months ago
{{project-name}}-common Move dependencies to workspace 3 months ago
{{project-name}}-ebpf Test execution of projects 3 months ago
.gitignore chore: remove Cargo.lock from .gitignore (#113) 6 months ago
Cargo.toml Replace xtask builds with build scripts 3 months ago
README.md Add cross-compilation to CI 3 months ago
cargo-generate.toml Remove branch specifications 2 years ago
pre-script.rhai include and use clap only if needed 2 years ago
rustfmt.toml Add rustfmt to CI 3 months ago
test.sh Add cross-compilation to CI 3 months ago

README.md

{{project-name}}

Prerequisites

  1. stable rust toolchains: rustup toolchain install stable
  2. nightly rust toolchains: rustup toolchain install nightly --component rust-src
  3. (if cross-compiling) rustup target: rustup target add ${ARCH}-unknown-linux-musl
  4. (if cross-compiling) LLVM: (e.g.) brew install llvm (on macOS)
  5. (if cross-compiling) C toolchain: (e.g.) brew install filosottile/musl-cross/musl-cross (on macOS)
  6. bpf-linker: cargo install bpf-linker (--no-default-features on macOS)

Build & Run

Use cargo build, cargo check, etc. as normal. Run your program with xtask run.

Cargo build scripts are used to automatically build the eBPF correctly and include it in the program. When not using xtask run, eBPF code generation is skipped for a faster developer experience; this compromise necessitates the use of xtask to actually build the eBPF.

Cross-compiling on macOS

Cross compilation should work on both Intel and Apple Silicon Macs.

AYA_BUILD_EBPF=true CC=${ARCH}-linux-musl-gcc cargo build --package {{project-name}} --release \
  --target=${ARCH}-unknown-linux-musl \
  --config=target.${ARCH}-unknown-linux-musl.linker=\"${ARCH}-linux-musl-gcc\"

The cross-compiled program target/${ARCH}-unknown-linux-musl/release/{{project-name}} can be copied to a Linux server or VM and run there.