mirror of https://gitlab.com/qemu-project/qemu
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.
61 lines
1.3 KiB
Bash
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"
|
|
}
|