Files
avr-webee/rustc-wrapper.sh
2023-08-24 01:53:41 +02:00

38 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
# rustc-wrapper
#
# Use this script in the `[build]`,`rustc-wrapper` section of your
# `.cargo/config.toml` configuration file to correctly set the
# `RUST_TARGET_PATH` environment variable before running rustc.
#
# This is to workaround a bug whereby `rustc --print cfg` fails when you
# use a custom `target.json` file, unless `RUST_TARGET_PATH` is set to the
# directory containing the target description.
# `cargo` passes "rustc " as the first parameter to the wrapper; pop it off
shift
# Extract the target config JSON from the `config.toml`
#
# NOTE: We assume that this wrapper script is in the root of your project, and
# that the `build.target` value is relative to the location of the same.
#
TARGET_JSON_FILE=$(cargo config -Z unstable-options get --format json-value build.target 2>/dev/null || echo "")
if [ ! -z "${TARGET_JSON_FILE}" ]; then
TARGET_JSON_DIR=$(dirname "${TARGET_JSON_FILE//\"/}")
# Work out where we are and which rustup we're wrapping
BASEDIR=$(dirname "$0")
# Set the env variable
export RUST_TARGET_PATH="${BASEDIR}/${TARGET_JSON_DIR}"
fi
RUSTC=$(rustup which rustc)
# Now let rustc do its thing
"${RUSTC}" $@