if $for_release then {
  output: "release",
  profile: "release",
  # Use build-std to build a std library optimized for size and abort immediately on abort,
  # so that format string for `unwrap`/`expect`/`unreachable`/`panic` can be optimized out.
  args: ($matrix.release_build_args // "-Z build-std=std,panic_abort -Z build-std-features=panic_immediate_abort"),
  features: ($matrix.release_features // []),
} else {
  output: "debug",
  profile: "dev",
  args: ($matrix.debug_build_args // ""),
  features: ($matrix.debug_features // ["rustls", "fancy-with-backtrace"]),
} end
|
.rustflags = (
  if $for_release and $matrix.target == "aarch64-unknown-linux-musl" or $matrix.target == "armv7-unknown-linux-musleabihf"
  then "-C link-arg=-lgcc -Clink-arg=-static-libgcc"
  else "" end
)
|
.features = (
  if (.features | length > 0)
  then "--no-default-features --features \(.features | join(","))"
  else "" end
)
|
{
  CBIN: (if ($matrix.target | test("windows")) then "cargo-binstall.exe" else "cargo-binstall" end),
  CTOOL: (if ($matrix."use-cross" // false) then "cross" else "cargo" end),
  COUTPUT: .output,
  CARGS: "--target \($matrix.target) --profile \(.profile) \(.features) \(.args)",
  RUSTFLAGS: .rustflags,
}
|
to_entries[] | "\(.key)=\(.value)"