Skip to content

Commit 26b2e8e

Browse files
committed
RISC-V: Add Zephyr multilib configuration
This commit adds a Zephyr-specific multilib configuration file for the RISC-V architecture in order to ensure that the multilibs are built for all RISC-V targets supported in the upstream Zephyr RTOS. Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
1 parent 662e235 commit 26b2e8e

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed

gcc/config.gcc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2472,6 +2472,9 @@ riscv*-*-linux*)
24722472
riscv*-*-elf* | riscv*-*-rtems*)
24732473
tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
24742474
case ${target} in
2475+
*-zephyr*)
2476+
tmake_file="${tmake_file} riscv/t-zephyr"
2477+
;;
24752478
*-*-rtems*)
24762479
tm_file="${tm_file} riscv/rtems.h rtems.h"
24772480
tmake_file="${tmake_file} riscv/t-rtems"

gcc/config/riscv/t-zephyr

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# Multilib target configurations
2+
MULTILIB_SRC_ARCH = rv32im_zicsr_zifencei
3+
MULTILIB_SRC_ARCH += rv32imc_zicsr_zifencei
4+
MULTILIB_SRC_ARCH += rv32imac_zicsr_zifencei
5+
MULTILIB_SRC_ARCH += rv32imafc_zicsr_zifencei
6+
MULTILIB_SRC_ARCH += rv32imafd_zicsr_zifencei
7+
MULTILIB_SRC_ARCH += rv32imafdc_zicsr_zifencei
8+
MULTILIB_SRC_ARCH += rv32g
9+
MULTILIB_SRC_ARCH += rv32gc
10+
MULTILIB_SRC_ARCH += rv32em_zicsr_zifencei
11+
MULTILIB_SRC_ARCH += rv32ema_zicsr_zifencei
12+
MULTILIB_SRC_ARCH += rv32emc_zicsr_zifencei
13+
MULTILIB_SRC_ARCH += rv32emac_zicsr_zifencei
14+
MULTILIB_SRC_ARCH += rv64imac_zicsr_zifencei
15+
MULTILIB_SRC_ARCH += rv64imafdc_zicsr_zifencei
16+
MULTILIB_SRC_ARCH += rv64gc
17+
MULTILIB_SRC_ARCH += rv64imafd_zicsr_zifencei
18+
MULTILIB_SRC_ARCH += rv64g
19+
20+
MULTILIB_SRC_ABI = ilp32
21+
MULTILIB_SRC_ABI += ilp32f
22+
MULTILIB_SRC_ABI += ilp32d
23+
MULTILIB_SRC_ABI += ilp32e
24+
MULTILIB_SRC_ABI += lp64
25+
MULTILIB_SRC_ABI += lp64d
26+
27+
MULTILIB_SRC_MCMODEL = medany
28+
29+
# Multilib build configurations
30+
MULTILIB_REQUIRED = \
31+
march=rv32im_zicsr_zifencei/mabi=ilp32 \
32+
march=rv32imac_zicsr_zifencei/mabi=ilp32 \
33+
march=rv32imafc_zicsr_zifencei/mabi=ilp32f \
34+
march=rv32imafd_zicsr_zifencei/mabi=ilp32d \
35+
march=rv32em_zicsr_zifencei/mabi=ilp32e \
36+
march=rv32emc_zicsr_zifencei/mabi=ilp32e \
37+
march=rv64imac_zicsr_zifencei/mabi=lp64 \
38+
march=rv64imafdc_zicsr_zifencei/mabi=lp64d \
39+
march=rv64imafd_zicsr_zifencei/mabi=lp64d \
40+
march=rv64imac_zicsr_zifencei/mabi=lp64/mcmodel=medany \
41+
march=rv64imafdc_zicsr_zifencei/mabi=lp64d/mcmodel=medany \
42+
march=rv64imafd_zicsr_zifencei/mabi=lp64d/mcmodel=medany
43+
44+
# Multilib alternate mapping
45+
MULTILIB_REUSE = \
46+
march.rv32im_zicsr_zifencei/mabi.ilp32=march.rv32imc_zicsr_zifencei/mabi.ilp32 \
47+
march.rv32imafd_zicsr_zifencei/mabi.ilp32d=march.rv32imafdc_zicsr_zifencei/mabi.ilp32d \
48+
march.rv32imafd_zicsr_zifencei/mabi.ilp32d=march.rv32g/mabi.ilp32d \
49+
march.rv32imafd_zicsr_zifencei/mabi.ilp32d=march.rv32gc/mabi.ilp32d \
50+
march.rv32em_zicsr_zifencei/mabi.ilp32e=march.rv32ema_zicsr_zifencei/mabi.ilp32e \
51+
march.rv32emc_zicsr_zifencei/mabi.ilp32e=march.rv32emac_zicsr_zifencei/mabi.ilp32e \
52+
march.rv64imafdc_zicsr_zifencei/mabi.lp64d=march.rv64gc/mabi.lp64d \
53+
march.rv64imafd_zicsr_zifencei/mabi.lp64d=march.rv64g/mabi.lp64d
54+
55+
# Automatically generate multilib options and directory names from the target configurations
56+
space := $(subst ,, )
57+
58+
MULTILIB_OPTIONS = $(subst $(space),/,$(patsubst %,march=%,$(MULTILIB_SRC_ARCH)))
59+
MULTILIB_OPTIONS += $(subst $(space),/,$(patsubst %,mabi=%,$(MULTILIB_SRC_ABI)))
60+
MULTILIB_OPTIONS += $(subst $(space),/,$(patsubst %,mcmodel=%,$(MULTILIB_SRC_MCMODEL)))
61+
62+
MULTILIB_DIRNAMES = $(MULTILIB_SRC_ARCH) $(MULTILIB_SRC_ABI) $(MULTILIB_SRC_MCMODEL)

0 commit comments

Comments
 (0)