Newlibのマルチプラットフォームのライブラリってどうやって作っているのかと思っていろいろ見ていた。
../configure --prefix=${RISCV} --target=riscv64-unknown-elf make -j$(nproc)
本質的には以下のようなパラメータからとってくるらしい。
/home/msyksphinz/riscv_gcc_rvv/bin/riscv64-unknown-elf-gcc --print-multi-lib .; rv32i/ilp32;@march=rv32i@mabi=ilp32 rv32im/ilp32;@march=rv32im@mabi=ilp32 rv32iac/ilp32;@march=rv32iac@mabi=ilp32 rv32imac/ilp32;@march=rv32imac@mabi=ilp32 rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f rv64imac/lp64;@march=rv64imac@mabi=lp64 rv64imafdc/lp64d;@march=rv64imafdc@mabi=lp64d
この情報をもとにNewlibのライブラリのコンパイルオプションが決まるらしい。
Adding multilib support to Makefile in ../../../newlib multidirs=rv32i/ilp32 rv32im/ilp32 rv32iac/ilp32 rv32imac/ilp32 rv32imafc/ilp32f rv64imac/lp64 rv64imafdc/lp64d
.../build$ ls -1 riscv64-unknown-elf/ libgloss newlib rv32i rv32iac rv32im rv32imac rv32imafc rv64imac rv64imafdc