25 lines
1.0 KiB
Bash
Executable File
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 "$@"
|