master
sh 60 lines 1.26 KB
Raw
1 # Copyright (C) 2025 Red Hat, Inc.
2 #
3 # Based on rust_to_clang_target() from rust-bindgen.
4 #
5 # SPDX-License-Identifier: GPL-2.0-or-later
6
7 rust_to_clang_target() {
8 rust_target="$1"
9
10 # Split the string by hyphens
11 triple_parts=""
12 old_IFS="$IFS"
13 IFS='-'
14 for part in $rust_target; do
15 triple_parts="$triple_parts $part"
16 done
17 IFS="$old_IFS"
18 set -- $triple_parts
19
20 # RISC-V
21 case "$1" in
22 riscv32*)
23 set -- "riscv32" "${2}" "${3}" "${4}"
24 ;;
25 riscv64*)
26 set -- "riscv64" "${2}" "${3}" "${4}"
27 ;;
28 esac
29
30 # Apple
31 if [ "$2" = "apple" ]; then
32 if [ "$1" = "aarch64" ]; then
33 set -- "arm64" "${2}" "${3}" "${4}"
34 fi
35 if [ "$4" = "sim" ]; then
36 set -- "${1}" "${2}" "${3}" "simulator"
37 fi
38 fi
39
40 # ESP-IDF
41 if [ "$3" = "espidf" ]; then
42 set -- "${1}" "${2}" "elf" "${4}"
43 fi
44
45 # Reassemble the string
46 new_triple=""
47 first=1
48 for part in "$@"; do
49 if [ -n "$part" ]; then
50 if [ "$first" -eq 1 ]; then
51 new_triple="$part"
52 first=0
53 else
54 new_triple="$new_triple-$part"
55 fi
56 fi
57 done
58
59 echo "$new_triple"
60 }