Files
fds-os/tools/cargo-build
T
2026-09-21 22:29:23 +08:00

25 lines
1.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# Preserve normal Cargo target/linker flags and normalize embedded source paths.
source "$(dirname -- "${BASH_SOURCE[0]}")/lib.sh"
cd "$FDS_ROOT"
fds_cargo_home=${CARGO_HOME:-$HOME/.cargo}
fds_rustup_home=${RUSTUP_HOME:-$HOME/.rustup}
mappings=("$FDS_ROOT=/usr/src/fds" "$fds_rustup_home=/usr/src/fds/rustup")
for registry in "$fds_cargo_home"/registry/src/*; do
[[ -d $registry ]] || continue
mappings+=("$registry=/usr/src/fds/crates")
done
flags=
for mapping in "${mappings[@]}"; do
# This creates TOML data passed as one argument, not executable shell text.
escaped=${mapping//\\/\\\\}
escaped=${escaped//\"/\\\"}
flags+="\"--remap-path-prefix=$escaped\","
done
# Cargo merges these arrays with the configured target flags, including static
# CRT and self-contained linking. The flags participate in Cargo's cache key.
exec cargo \
--config "target.aarch64-unknown-linux-musl.rustflags=[$flags]" \
--config "target.x86_64-unknown-linux-gnu.rustflags=[$flags]" \
build "$@"