diff options
-rw-r--r-- | community/gcc-cross-embedded/APKBUILD | 6 | ||||
-rw-r--r-- | community/gcc-cross-embedded/riscv-extensions.patch | 168 |
2 files changed, 172 insertions, 2 deletions
diff --git a/community/gcc-cross-embedded/APKBUILD b/community/gcc-cross-embedded/APKBUILD index 65199c9d962..50dc598ae82 100644 --- a/community/gcc-cross-embedded/APKBUILD +++ b/community/gcc-cross-embedded/APKBUILD @@ -20,7 +20,7 @@ case "$CARCH" in esac pkgname=gcc-cross-embedded pkgver=11.2.0 -pkgrel=0 +pkgrel=1 pkgdesc="The GNU Compiler Collection for embedded targets" url="https://gcc.gnu.org/" depends="gcc" @@ -34,7 +34,8 @@ for target in $_targets; do makedepends="$makedepends binutils-$target newlib-$target-stage1" done -source="https://mirrors.kernel.org/gnu/gcc/gcc-$pkgver/gcc-$pkgver.tar.xz" +source="https://mirrors.kernel.org/gnu/gcc/gcc-$pkgver/gcc-$pkgver.tar.xz + riscv-extensions.patch" options="!check" @@ -188,4 +189,5 @@ aarch64_none_elf() { sha512sums=" d53a0a966230895c54f01aea38696f818817b505f1e2bfa65e508753fcd01b2aedb4a61434f41f3a2ddbbd9f41384b96153c684ded3f0fa97c82758d9de5c7cf gcc-11.2.0.tar.xz +62dc3480140c3d255176a8121ba0086da5a1ab7024c84182c6edf41de176603a8ed0c9164ff2de55829f06efa7b8b1e12a42207d10b453a8582a1e8b5c6e247f riscv-extensions.patch " diff --git a/community/gcc-cross-embedded/riscv-extensions.patch b/community/gcc-cross-embedded/riscv-extensions.patch new file mode 100644 index 00000000000..c9e4a4a483a --- /dev/null +++ b/community/gcc-cross-embedded/riscv-extensions.patch @@ -0,0 +1,168 @@ +By default, GCC will only builds the following multilibs for RISC-V: + + 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 + +This patch enables quite a few additional multilibs for a variety of +different RISC-V extensions. The enabled multilibs have been taken from +Debian [1]. Instead of patching the default RISC-V configuration file, +it would also be possible to use the --with-multilib-generator= +configure option instead. + +[1]: https://salsa.debian.org/debian/gcc-riscv64-unknown-elf/-/blob/4a1de76060cb8721c06bcfb4c846bc82ee6b3fc3/debian/patches/0002-Add-more-multi-lib-for-rv32-and-rv64.patch + +diff -upr gcc-11.2.0.orig/gcc/config/riscv/t-elf-multilib gcc-11.2.0/gcc/config/riscv/t-elf-multilib +--- gcc-11.2.0.orig/gcc/config/riscv/t-elf-multilib 2021-12-04 15:09:53.633432461 +0100 ++++ gcc-11.2.0/gcc/config/riscv/t-elf-multilib 2021-12-04 15:11:00.750169088 +0100 +@@ -1,30 +1,136 @@ + # This file was generated by multilib-generator with the command: +-# ./multilib-generator rv32i-ilp32--c rv32im-ilp32--c rv32iac-ilp32-- rv32imac-ilp32-- rv32imafc-ilp32f-rv32imafdc- rv64imac-lp64-- rv64imafdc-lp64d-- +-MULTILIB_OPTIONS = march=rv32i/march=rv32ic/march=rv32im/march=rv32imc/march=rv32iac/march=rv32imac/march=rv32imafc/march=rv32imafdc/march=rv32gc/march=rv64imac/march=rv64imafdc/march=rv64gc mabi=ilp32/mabi=ilp32f/mabi=lp64/mabi=lp64d +-MULTILIB_DIRNAMES = rv32i \ ++# ./gcc/config/riscv/multilib-generator rv32e-ilp32e--c rv32ea-ilp32e--m rv32em-ilp32e--c rv32eac-ilp32e-- rv32emac-ilp32e-- rv32i-ilp32--c rv32ia-ilp32--m rv32im-ilp32--c rv32if-ilp32f-rv32ifd-c rv32iaf-ilp32f-rv32imaf,rv32iafc-d rv32imf-ilp32f-rv32imfd-c rv32iac-ilp32-- rv32imac-ilp32-- rv32imafc-ilp32f-rv32imafdc- rv32ifd-ilp32d--c rv32imfd-ilp32d--c rv32iafd-ilp32d-rv32imafd,rv32iafdc- rv32imafdc-ilp32d-- rv64i-lp64--c rv64ia-lp64--m rv64im-lp64--c rv64if-lp64f-rv64ifd-c rv64iaf-lp64f-rv64imaf,rv64iafc-d rv64imf-lp64f-rv64imfd-c rv64iac-lp64-- rv64imac-lp64-- rv64imafc-lp64f-rv64imafdc- rv64ifd-lp64d--m,c rv64iafd-lp64d-rv64imafd,rv64iafdc- rv64imafdc-lp64d-- ++MULTILIB_OPTIONS = march=rv32e/march=rv32ec/march=rv32ea/march=rv32ema/march=rv32em/march=rv32emc/march=rv32eac/march=rv32emac/march=rv32i/march=rv32ic/march=rv32ia/march=rv32ima/march=rv32im/march=rv32imc/march=rv32if/march=rv32ifc/march=rv32ifd/march=rv32ifdc/march=rv32iaf/march=rv32iafc/march=rv32iafd/march=rv32iafdc/march=rv32imaf/march=rv32imafd/march=rv32imf/march=rv32imfc/march=rv32imfd/march=rv32imfdc/march=rv32iac/march=rv32imac/march=rv32imafc/march=rv32imafdc/march=rv64i/march=rv64ic/march=rv64ia/march=rv64ima/march=rv64im/march=rv64imc/march=rv64if/march=rv64ifc/march=rv64ifd/march=rv64ifdc/march=rv64iaf/march=rv64iafc/march=rv64iafd/march=rv64iafdc/march=rv64imaf/march=rv64imafd/march=rv64imf/march=rv64imfc/march=rv64imfd/march=rv64imfdc/march=rv64iac/march=rv64imac/march=rv64imafc/march=rv64imafdc mabi=ilp32e/mabi=ilp32/mabi=ilp32f/mabi=ilp32d/mabi=lp64/mabi=lp64f/mabi=lp64d ++MULTILIB_DIRNAMES = rv32e \ ++rv32ec \ ++rv32ea \ ++rv32ema \ ++rv32em \ ++rv32emc \ ++rv32eac \ ++rv32emac \ ++rv32i \ + rv32ic \ ++rv32ia \ ++rv32ima \ + rv32im \ + rv32imc \ ++rv32if \ ++rv32ifc \ ++rv32ifd \ ++rv32ifdc \ ++rv32iaf \ ++rv32iafc \ ++rv32iafd \ ++rv32iafdc \ ++rv32imaf \ ++rv32imafd \ ++rv32imf \ ++rv32imfc \ ++rv32imfd \ ++rv32imfdc \ + rv32iac \ + rv32imac \ + rv32imafc \ + rv32imafdc \ +-rv32gc \ ++rv64i \ ++rv64ic \ ++rv64ia \ ++rv64ima \ ++rv64im \ ++rv64imc \ ++rv64if \ ++rv64ifc \ ++rv64ifd \ ++rv64ifdc \ ++rv64iaf \ ++rv64iafc \ ++rv64iafd \ ++rv64iafdc \ ++rv64imaf \ ++rv64imafd \ ++rv64imf \ ++rv64imfc \ ++rv64imfd \ ++rv64imfdc \ ++rv64iac \ + rv64imac \ +-rv64imafdc \ +-rv64gc ilp32 \ ++rv64imafc \ ++rv64imafdc ilp32e \ ++ilp32 \ + ilp32f \ ++ilp32d \ + lp64 \ ++lp64f \ + lp64d +-MULTILIB_REQUIRED = march=rv32i/mabi=ilp32 \ ++MULTILIB_REQUIRED = march=rv32e/mabi=ilp32e \ ++march=rv32ea/mabi=ilp32e \ ++march=rv32em/mabi=ilp32e \ ++march=rv32eac/mabi=ilp32e \ ++march=rv32emac/mabi=ilp32e \ ++march=rv32i/mabi=ilp32 \ ++march=rv32ia/mabi=ilp32 \ + march=rv32im/mabi=ilp32 \ ++march=rv32if/mabi=ilp32f \ ++march=rv32iaf/mabi=ilp32f \ ++march=rv32imf/mabi=ilp32f \ + march=rv32iac/mabi=ilp32 \ + march=rv32imac/mabi=ilp32 \ + march=rv32imafc/mabi=ilp32f \ ++march=rv32ifd/mabi=ilp32d \ ++march=rv32imfd/mabi=ilp32d \ ++march=rv32iafd/mabi=ilp32d \ ++march=rv32imafdc/mabi=ilp32d \ ++march=rv64i/mabi=lp64 \ ++march=rv64ia/mabi=lp64 \ ++march=rv64im/mabi=lp64 \ ++march=rv64if/mabi=lp64f \ ++march=rv64iaf/mabi=lp64f \ ++march=rv64imf/mabi=lp64f \ ++march=rv64iac/mabi=lp64 \ + march=rv64imac/mabi=lp64 \ ++march=rv64imafc/mabi=lp64f \ ++march=rv64ifd/mabi=lp64d \ ++march=rv64iafd/mabi=lp64d \ + march=rv64imafdc/mabi=lp64d +-MULTILIB_REUSE = march.rv32i/mabi.ilp32=march.rv32ic/mabi.ilp32 \ ++MULTILIB_REUSE = march.rv32e/mabi.ilp32e=march.rv32ec/mabi.ilp32e \ ++march.rv32ea/mabi.ilp32e=march.rv32ema/mabi.ilp32e \ ++march.rv32em/mabi.ilp32e=march.rv32emc/mabi.ilp32e \ ++march.rv32i/mabi.ilp32=march.rv32ic/mabi.ilp32 \ ++march.rv32ia/mabi.ilp32=march.rv32ima/mabi.ilp32 \ + march.rv32im/mabi.ilp32=march.rv32imc/mabi.ilp32 \ ++march.rv32if/mabi.ilp32f=march.rv32ifc/mabi.ilp32f \ ++march.rv32if/mabi.ilp32f=march.rv32ifd/mabi.ilp32f \ ++march.rv32if/mabi.ilp32f=march.rv32ifdc/mabi.ilp32f \ ++march.rv32iaf/mabi.ilp32f=march.rv32iafc/mabi.ilp32f \ ++march.rv32iaf/mabi.ilp32f=march.rv32iafd/mabi.ilp32f \ ++march.rv32iaf/mabi.ilp32f=march.rv32iafdc/mabi.ilp32f \ ++march.rv32iaf/mabi.ilp32f=march.rv32imaf/mabi.ilp32f \ ++march.rv32iaf/mabi.ilp32f=march.rv32imafd/mabi.ilp32f \ ++march.rv32imf/mabi.ilp32f=march.rv32imfc/mabi.ilp32f \ ++march.rv32imf/mabi.ilp32f=march.rv32imfd/mabi.ilp32f \ ++march.rv32imf/mabi.ilp32f=march.rv32imfdc/mabi.ilp32f \ + march.rv32imafc/mabi.ilp32f=march.rv32imafdc/mabi.ilp32f \ +-march.rv32imafc/mabi.ilp32f=march.rv32gc/mabi.ilp32f \ +-march.rv64imafdc/mabi.lp64d=march.rv64gc/mabi.lp64d ++march.rv32ifd/mabi.ilp32d=march.rv32ifdc/mabi.ilp32d \ ++march.rv32imfd/mabi.ilp32d=march.rv32imfdc/mabi.ilp32d \ ++march.rv32iafd/mabi.ilp32d=march.rv32iafdc/mabi.ilp32d \ ++march.rv32iafd/mabi.ilp32d=march.rv32imafd/mabi.ilp32d \ ++march.rv64i/mabi.lp64=march.rv64ic/mabi.lp64 \ ++march.rv64ia/mabi.lp64=march.rv64ima/mabi.lp64 \ ++march.rv64im/mabi.lp64=march.rv64imc/mabi.lp64 \ ++march.rv64if/mabi.lp64f=march.rv64ifc/mabi.lp64f \ ++march.rv64if/mabi.lp64f=march.rv64ifd/mabi.lp64f \ ++march.rv64if/mabi.lp64f=march.rv64ifdc/mabi.lp64f \ ++march.rv64iaf/mabi.lp64f=march.rv64iafc/mabi.lp64f \ ++march.rv64iaf/mabi.lp64f=march.rv64iafd/mabi.lp64f \ ++march.rv64iaf/mabi.lp64f=march.rv64iafdc/mabi.lp64f \ ++march.rv64iaf/mabi.lp64f=march.rv64imaf/mabi.lp64f \ ++march.rv64iaf/mabi.lp64f=march.rv64imafd/mabi.lp64f \ ++march.rv64imf/mabi.lp64f=march.rv64imfc/mabi.lp64f \ ++march.rv64imf/mabi.lp64f=march.rv64imfd/mabi.lp64f \ ++march.rv64imf/mabi.lp64f=march.rv64imfdc/mabi.lp64f \ ++march.rv64imafc/mabi.lp64f=march.rv64imafdc/mabi.lp64f \ ++march.rv64ifd/mabi.lp64d=march.rv64ifdc/mabi.lp64d \ ++march.rv64ifd/mabi.lp64d=march.rv64imfd/mabi.lp64d \ ++march.rv64iafd/mabi.lp64d=march.rv64iafdc/mabi.lp64d \ ++march.rv64iafd/mabi.lp64d=march.rv64imafd/mabi.lp64d |