diff options
| author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2025-09-24 16:04:04 +0400 |
|---|---|---|
| committer | Marc-André Lureau <marcandre.lureau@redhat.com> | 2025-09-30 19:33:25 +0400 |
| commit | 0d4fb8f746d7ff215146dbd96efbe9cc87cb98ff (patch) | |
| tree | 7b671522c0179769846e0118b03c6f945e4a8d2c /scripts/rust-to-clang-target.sh | |
| parent | c102f036bf601434de7d83f861bb74b5d2efc6da (diff) | |
| download | focaccia-qemu-0d4fb8f746d7ff215146dbd96efbe9cc87cb98ff.tar.gz focaccia-qemu-0d4fb8f746d7ff215146dbd96efbe9cc87cb98ff.zip | |
configure: set the bindgen cross target
Implement a bash version of rust-bindgen rust_to_clang_target() to convert from rust target to clang target. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Message-ID: <20250924120426.2158655-8-marcandre.lureau@redhat.com>
Diffstat (limited to 'scripts/rust-to-clang-target.sh')
| -rw-r--r-- | scripts/rust-to-clang-target.sh | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/scripts/rust-to-clang-target.sh b/scripts/rust-to-clang-target.sh new file mode 100644 index 0000000000..72db7e1300 --- /dev/null +++ b/scripts/rust-to-clang-target.sh @@ -0,0 +1,60 @@ +# Copyright (C) 2025 Red Hat, Inc. +# +# Based on rust_to_clang_target() from rust-bindgen. +# +# SPDX-License-Identifier: GPL-2.0-or-later + +rust_to_clang_target() { + rust_target="$1" + + # Split the string by hyphens + triple_parts="" + old_IFS="$IFS" + IFS='-' + for part in $rust_target; do + triple_parts="$triple_parts $part" + done + IFS="$old_IFS" + set -- $triple_parts + + # RISC-V + case "$1" in + riscv32*) + set -- "riscv32" "${2}" "${3}" "${4}" + ;; + riscv64*) + set -- "riscv64" "${2}" "${3}" "${4}" + ;; + esac + + # Apple + if [ "$2" = "apple" ]; then + if [ "$1" = "aarch64" ]; then + set -- "arm64" "${2}" "${3}" "${4}" + fi + if [ "$4" = "sim" ]; then + set -- "${1}" "${2}" "${3}" "simulator" + fi + fi + + # ESP-IDF + if [ "$3" = "espidf" ]; then + set -- "${1}" "${2}" "elf" "${4}" + fi + + # Reassemble the string + new_triple="" + first=1 + for part in "$@"; do + if [ -n "$part" ]; then + if [ "$first" -eq 1 ]; then + new_triple="$part" + first=0 + else + new_triple="$new_triple-$part" + fi + fi + done + + echo "$new_triple" +} |