diff options
author | Kirill K. Smirnov <kirill.k.smirnov@gmail.com> | 2023-07-09 23:06:17 +0300 |
---|---|---|
committer | Chris Packham <judge.packham@gmail.com> | 2023-07-14 14:01:08 +1200 |
commit | ada71ff2a078b5de3c42f5b5a7c00e89fd2f708d (patch) | |
tree | 28cd707f243d94f084a8b9d71b0a7bfba23bff97 | |
parent | 11d286dbc9e045cd5c7c6d809a679d77db123cae (diff) | |
download | crosstool-ng-ada71ff2a078b5de3c42f5b5a7c00e89fd2f708d.tar.gz crosstool-ng-ada71ff2a078b5de3c42f5b5a7c00e89fd2f708d.tar.bz2 crosstool-ng-ada71ff2a078b5de3c42f5b5a7c00e89fd2f708d.zip |
Properly build multilib bare-metal RISC-V
To build multilib RISC-V toolchain one should use --with-multilib-generator
option instead of --with-multilib-list.
Add corresponding example configuration file.
Signed-off-by: Kirill K. Smirnov <kirill.k.smirnov@gmail.com>
-rw-r--r-- | config/cc/gcc.in | 13 | ||||
-rw-r--r-- | samples/riscv64-multilib-elf/crosstool.config | 10 | ||||
-rw-r--r-- | samples/riscv64-multilib-elf/reported.by | 3 | ||||
-rw-r--r-- | scripts/build/cc/gcc.sh | 6 |
4 files changed, 32 insertions, 0 deletions
diff --git a/config/cc/gcc.in b/config/cc/gcc.in index 6d2e0e38..1f50460a 100644 --- a/config/cc/gcc.in +++ b/config/cc/gcc.in @@ -81,6 +81,7 @@ config CC_GCC_EXTRA_CONFIG_ARRAY config CC_GCC_MULTILIB_LIST string "List of multilib variants" depends on MULTILIB + depends on ! (ARCH_RISCV && BARE_METAL) default "m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single" if GCC_11_or_later && ARCH_SH default "aprofile,rmprofile" if ARCH_ARM && ARCH_32 help @@ -89,6 +90,18 @@ config CC_GCC_MULTILIB_LIST for the format of this option for a particular architecture. Leave empty to use the default list for this architecture. +config CC_GCC_MULTILIB_GENERATOR + string "Generator of RISC-V multilib variants" + depends on MULTILIB + depends on (ARCH_RISCV && BARE_METAL) + default "" + help + Multilib generator for RISC-V architecture. + + For more information please refer to gcc manual + + If unsure, leave empty. + config STATIC_TOOLCHAIN bool select CC_GCC_STATIC_LIBSTDCXX diff --git a/samples/riscv64-multilib-elf/crosstool.config b/samples/riscv64-multilib-elf/crosstool.config new file mode 100644 index 00000000..99795791 --- /dev/null +++ b/samples/riscv64-multilib-elf/crosstool.config @@ -0,0 +1,10 @@ +CT_CONFIG_VERSION="4" +CT_EXPERIMENTAL=y +CT_ARCH_RISCV=y +CT_MULTILIB=y +CT_ARCH_USE_MMU=y +CT_ARCH_64=y +CT_ARCH_ARCH="rv64gc" +CT_TARGET_VENDOR="multilib" +CT_CC_GCC_MULTILIB_GENERATOR="rv32e-ilp32e--;rv32ea-ilp32e--;rv32em-ilp32e--;rv32eac-ilp32e--;rv32emac-ilp32e--;rv32i-ilp32--;rv32ia-ilp32--;rv32im-ilp32--;rv32if-ilp32f--;rv32ifd-ilp32d--;rv32iaf-ilp32f--;rv32iafd-ilp32d--;rv32imf-ilp32f--;rv32imfd-ilp32d--;rv32iac-ilp32--;rv32imac-ilp32--;rv32imafc-ilp32f--;rv32imafdc-ilp32d--;rv64i-lp64--;rv64ia-lp64--;rv64im-lp64--;rv64if-lp64f--;rv64ifd-lp64d--;rv64iaf-lp64f--;rv64iafd-lp64d--;rv64imf-lp64f--;rv64imaf-lp64f--;rv64iac-lp64--;rv64imac-lp64--;rv64imafc-lp64f--;rv64imafdc-lp64d--" +CT_CC_LANG_CXX=y diff --git a/samples/riscv64-multilib-elf/reported.by b/samples/riscv64-multilib-elf/reported.by new file mode 100644 index 00000000..1b486ece --- /dev/null +++ b/samples/riscv64-multilib-elf/reported.by @@ -0,0 +1,3 @@ +reporter_name="Kirill K. Smirnov" +reporter_url="" +reporter_comment="Example of multilib bare-metal RISC-V" diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh index 35ac96e1..f14f31da 100644 --- a/scripts/build/cc/gcc.sh +++ b/scripts/build/cc/gcc.sh @@ -541,6 +541,9 @@ do_gcc_core_backend() { if [ -n "${CT_CC_GCC_MULTILIB_LIST}" ]; then extra_config+=("--with-multilib-list=${CT_CC_GCC_MULTILIB_LIST}") fi + if [ -n "${CT_CC_GCC_MULTILIB_GENERATOR}" ]; then + extra_config+=("--with-multilib-generator=${CT_CC_GCC_MULTILIB_GENERATOR}") + fi fi CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'" @@ -1202,6 +1205,9 @@ do_gcc_backend() { if [ -n "${CT_CC_GCC_MULTILIB_LIST}" ]; then extra_config+=("--with-multilib-list=${CT_CC_GCC_MULTILIB_LIST}") fi + if [ -n "${CT_CC_GCC_MULTILIB_GENERATOR}" ]; then + extra_config+=("--with-multilib-generator=${CT_CC_GCC_MULTILIB_GENERATOR}") + fi fi CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'" |