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