You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qemu/scripts/rust-to-clang-target.sh

61 lines
1.3 KiB
Bash

# 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"
}