diff --git a/website/blog/2017-07-02-riscv-none-gcc-v7-1-1-1-20170702-released.md b/website/blog/2017-07-02-riscv-none-gcc-v7-1-1-1-20170702-released.mdx similarity index 100% rename from website/blog/2017-07-02-riscv-none-gcc-v7-1-1-1-20170702-released.md rename to website/blog/2017-07-02-riscv-none-gcc-v7-1-1-1-20170702-released.mdx diff --git a/website/blog/2017-09-13-riscv-none-gcc-v7-1-1-2-20170912-released.md b/website/blog/2017-09-13-riscv-none-gcc-v7-1-1-2-20170912-released.mdx similarity index 100% rename from website/blog/2017-09-13-riscv-none-gcc-v7-1-1-2-20170912-released.md rename to website/blog/2017-09-13-riscv-none-gcc-v7-1-1-2-20170912-released.mdx diff --git a/website/blog/2017-11-09-riscv-none-gcc-v7-2-0-1-20171109-released.md b/website/blog/2017-11-09-riscv-none-gcc-v7-2-0-1-20171109-released.mdx similarity index 100% rename from website/blog/2017-11-09-riscv-none-gcc-v7-2-0-1-20171109-released.md rename to website/blog/2017-11-09-riscv-none-gcc-v7-2-0-1-20171109-released.mdx diff --git a/website/blog/2018-01-13-riscv-none-gcc-v7-2-0-2-20180111-released.md b/website/blog/2018-01-13-riscv-none-gcc-v7-2-0-2-20180111-released.mdx similarity index 100% rename from website/blog/2018-01-13-riscv-none-gcc-v7-2-0-2-20180111-released.md rename to website/blog/2018-01-13-riscv-none-gcc-v7-2-0-2-20180111-released.mdx diff --git a/website/blog/2018-05-06-riscv-none-gcc-v7-2-0-3-20180506-released.md b/website/blog/2018-05-06-riscv-none-gcc-v7-2-0-3-20180506-released.mdx similarity index 100% rename from website/blog/2018-05-06-riscv-none-gcc-v7-2-0-3-20180506-released.md rename to website/blog/2018-05-06-riscv-none-gcc-v7-2-0-3-20180506-released.mdx diff --git a/website/blog/2018-06-06-riscv-none-gcc-v7-2-0-4-20180606-released.md b/website/blog/2018-06-06-riscv-none-gcc-v7-2-0-4-20180606-released.mdx similarity index 100% rename from website/blog/2018-06-06-riscv-none-gcc-v7-2-0-4-20180606-released.md rename to website/blog/2018-06-06-riscv-none-gcc-v7-2-0-4-20180606-released.mdx diff --git a/website/blog/2018-10-19-riscv-none-gcc-v8-1-0-2-20181019-released.md b/website/blog/2018-10-19-riscv-none-gcc-v8-1-0-2-20181019-released.mdx similarity index 100% rename from website/blog/2018-10-19-riscv-none-gcc-v8-1-0-2-20181019-released.md rename to website/blog/2018-10-19-riscv-none-gcc-v8-1-0-2-20181019-released.mdx diff --git a/website/blog/2019-04-25-riscv-none-gcc-v8-2-0-2-1-20190425-released.md b/website/blog/2019-04-25-riscv-none-gcc-v8-2-0-2-1-20190425-released.mdx similarity index 100% rename from website/blog/2019-04-25-riscv-none-gcc-v8-2-0-2-1-20190425-released.md rename to website/blog/2019-04-25-riscv-none-gcc-v8-2-0-2-1-20190425-released.mdx diff --git a/website/blog/2019-05-21-riscv-none-gcc-v8-2-0-2-2-20190521-released.md b/website/blog/2019-05-21-riscv-none-gcc-v8-2-0-2-2-20190521-released.mdx similarity index 100% rename from website/blog/2019-05-21-riscv-none-gcc-v8-2-0-2-2-20190521-released.md rename to website/blog/2019-05-21-riscv-none-gcc-v8-2-0-2-2-20190521-released.mdx diff --git a/website/blog/2019-07-31-riscv-none-embed-gcc-v8-2-0-3-1-released.md b/website/blog/2019-07-31-riscv-none-embed-gcc-v8-2-0-3-1-released.mdx similarity index 100% rename from website/blog/2019-07-31-riscv-none-embed-gcc-v8-2-0-3-1-released.md rename to website/blog/2019-07-31-riscv-none-embed-gcc-v8-2-0-3-1-released.mdx diff --git a/website/blog/2019-11-01-riscv-none-embed-gcc-v8-3-0-1-1-released.md b/website/blog/2019-11-01-riscv-none-embed-gcc-v8-3-0-1-1-released.mdx similarity index 100% rename from website/blog/2019-11-01-riscv-none-embed-gcc-v8-3-0-1-1-released.md rename to website/blog/2019-11-01-riscv-none-embed-gcc-v8-3-0-1-1-released.mdx diff --git a/website/blog/2020-07-04-riscv-none-embed-gcc-v8-3-0-1-2-released.md b/website/blog/2020-07-04-riscv-none-embed-gcc-v8-3-0-1-2-released.mdx similarity index 100% rename from website/blog/2020-07-04-riscv-none-embed-gcc-v8-3-0-1-2-released.md rename to website/blog/2020-07-04-riscv-none-embed-gcc-v8-3-0-1-2-released.mdx diff --git a/website/blog/2020-10-10-riscv-none-embed-gcc-v8-3-0-2-1-released.md b/website/blog/2020-10-10-riscv-none-embed-gcc-v8-3-0-2-1-released.mdx similarity index 100% rename from website/blog/2020-10-10-riscv-none-embed-gcc-v8-3-0-2-1-released.md rename to website/blog/2020-10-10-riscv-none-embed-gcc-v8-3-0-2-1-released.mdx diff --git a/website/blog/2020-10-13-riscv-none-embed-gcc-v8-3-0-2-2-released.md b/website/blog/2020-10-13-riscv-none-embed-gcc-v8-3-0-2-2-released.mdx similarity index 100% rename from website/blog/2020-10-13-riscv-none-embed-gcc-v8-3-0-2-2-released.md rename to website/blog/2020-10-13-riscv-none-embed-gcc-v8-3-0-2-2-released.mdx diff --git a/website/blog/2020-10-25-riscv-none-embed-gcc-v8-3-0-2-3-released.md b/website/blog/2020-10-25-riscv-none-embed-gcc-v8-3-0-2-3-released.mdx similarity index 100% rename from website/blog/2020-10-25-riscv-none-embed-gcc-v8-3-0-2-3-released.md rename to website/blog/2020-10-25-riscv-none-embed-gcc-v8-3-0-2-3-released.mdx diff --git a/website/blog/2021-01-05-riscv-none-embed-gcc-v10-1-0-1-1-released.md b/website/blog/2021-01-05-riscv-none-embed-gcc-v10-1-0-1-1-released.mdx similarity index 100% rename from website/blog/2021-01-05-riscv-none-embed-gcc-v10-1-0-1-1-released.md rename to website/blog/2021-01-05-riscv-none-embed-gcc-v10-1-0-1-1-released.mdx diff --git a/website/blog/2021-11-04-riscv-none-embed-gcc-v10-1-0-1-2-released.md b/website/blog/2021-11-04-riscv-none-embed-gcc-v10-1-0-1-2-released.mdx similarity index 100% rename from website/blog/2021-11-04-riscv-none-embed-gcc-v10-1-0-1-2-released.md rename to website/blog/2021-11-04-riscv-none-embed-gcc-v10-1-0-1-2-released.mdx diff --git a/website/blog/2021-11-06-riscv-none-embed-gcc-v10-2-0-1-1-released.md b/website/blog/2021-11-06-riscv-none-embed-gcc-v10-2-0-1-1-released.mdx similarity index 100% rename from website/blog/2021-11-06-riscv-none-embed-gcc-v10-2-0-1-1-released.md rename to website/blog/2021-11-06-riscv-none-embed-gcc-v10-2-0-1-1-released.mdx diff --git a/website/blog/2021-11-11-riscv-none-embed-gcc-v10-2-0-1-2-released.md b/website/blog/2021-11-11-riscv-none-embed-gcc-v10-2-0-1-2-released.mdx similarity index 100% rename from website/blog/2021-11-11-riscv-none-embed-gcc-v10-2-0-1-2-released.md rename to website/blog/2021-11-11-riscv-none-embed-gcc-v10-2-0-1-2-released.mdx diff --git a/website/blog/2022-05-14-riscv-none-elf-gcc-v11-3-0-1-released.md b/website/blog/2022-05-14-riscv-none-elf-gcc-v11-3-0-1-released.mdx similarity index 99% rename from website/blog/2022-05-14-riscv-none-elf-gcc-v11-3-0-1-released.md rename to website/blog/2022-05-14-riscv-none-elf-gcc-v11-3-0-1-released.mdx index af836dd..81c515e 100644 --- a/website/blog/2022-05-14-riscv-none-elf-gcc-v11-3-0-1-released.md +++ b/website/blog/2022-05-14-riscv-none-elf-gcc-v11-3-0-1-released.mdx @@ -56,10 +56,10 @@ The binary files are available from GitHub ## Prerequisites - GNU/Linux Intel 64-bit: any system with **GLIBC 2.27** or higher - (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - GNU/Linux Arm 32/64-bit: any system with **GLIBC 2.27** or higher - (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - Intel Windows 64-bit: Windows 7 with the Universal C Runtime ([UCRT](https://support.microsoft.com/en-us/topic/update-for-universal-c-runtime-in-windows-c0514201-7fe6-95a3-b0a5-287930f3560c)), diff --git a/website/blog/2022-05-15-riscv-none-elf-gcc-v12-1-0-1-released.md b/website/blog/2022-05-15-riscv-none-elf-gcc-v12-1-0-1-released.mdx similarity index 99% rename from website/blog/2022-05-15-riscv-none-elf-gcc-v12-1-0-1-released.md rename to website/blog/2022-05-15-riscv-none-elf-gcc-v12-1-0-1-released.mdx index ec2323e..4d65903 100644 --- a/website/blog/2022-05-15-riscv-none-elf-gcc-v12-1-0-1-released.md +++ b/website/blog/2022-05-15-riscv-none-elf-gcc-v12-1-0-1-released.mdx @@ -47,10 +47,10 @@ The binary files are available from GitHub ## Prerequisites - GNU/Linux Intel 64-bit: any system with **GLIBC 2.27** or higher - (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - GNU/Linux Arm 32/64-bit: any system with **GLIBC 2.27** or higher - (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - Intel Windows 64-bit: Windows 7 with the Universal C Runtime ([UCRT](https://support.microsoft.com/en-us/topic/update-for-universal-c-runtime-in-windows-c0514201-7fe6-95a3-b0a5-287930f3560c)), diff --git a/website/blog/2022-05-18-riscv-none-elf-gcc-v12-1-0-2-released.md b/website/blog/2022-05-18-riscv-none-elf-gcc-v12-1-0-2-released.mdx similarity index 99% rename from website/blog/2022-05-18-riscv-none-elf-gcc-v12-1-0-2-released.md rename to website/blog/2022-05-18-riscv-none-elf-gcc-v12-1-0-2-released.mdx index 3d5f8ff..13c6edb 100644 --- a/website/blog/2022-05-18-riscv-none-elf-gcc-v12-1-0-2-released.md +++ b/website/blog/2022-05-18-riscv-none-elf-gcc-v12-1-0-2-released.mdx @@ -47,10 +47,10 @@ The binary files are available from GitHub ## Prerequisites - GNU/Linux Intel 64-bit: any system with **GLIBC 2.27** or higher - (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - GNU/Linux Arm 32/64-bit: any system with **GLIBC 2.27** or higher - (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - Intel Windows 64-bit: Windows 7 with the Universal C Runtime ([UCRT](https://support.microsoft.com/en-us/topic/update-for-universal-c-runtime-in-windows-c0514201-7fe6-95a3-b0a5-287930f3560c)), diff --git a/website/blog/2022-08-30-riscv-none-elf-gcc-v12-2-0-1-released.md b/website/blog/2022-08-30-riscv-none-elf-gcc-v12-2-0-1-released.mdx similarity index 99% rename from website/blog/2022-08-30-riscv-none-elf-gcc-v12-2-0-1-released.md rename to website/blog/2022-08-30-riscv-none-elf-gcc-v12-2-0-1-released.mdx index ce9087d..8cd63c4 100644 --- a/website/blog/2022-08-30-riscv-none-elf-gcc-v12-2-0-1-released.md +++ b/website/blog/2022-08-30-riscv-none-elf-gcc-v12-2-0-1-released.mdx @@ -47,10 +47,10 @@ The binary files are available from GitHub ## Prerequisites - GNU/Linux Intel 64-bit: any system with **GLIBC 2.27** or higher - (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - GNU/Linux Arm 32/64-bit: any system with **GLIBC 2.27** or higher - (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - Intel Windows 64-bit: Windows 7 with the Universal C Runtime ([UCRT](https://support.microsoft.com/en-us/topic/update-for-universal-c-runtime-in-windows-c0514201-7fe6-95a3-b0a5-287930f3560c)), diff --git a/website/blog/2023-02-05-riscv-none-elf-gcc-v12-2-0-3-released.md b/website/blog/2023-02-05-riscv-none-elf-gcc-v12-2-0-3-released.mdx similarity index 99% rename from website/blog/2023-02-05-riscv-none-elf-gcc-v12-2-0-3-released.md rename to website/blog/2023-02-05-riscv-none-elf-gcc-v12-2-0-3-released.mdx index 0ca2b8a..7107b9c 100644 --- a/website/blog/2023-02-05-riscv-none-elf-gcc-v12-2-0-3-released.md +++ b/website/blog/2023-02-05-riscv-none-elf-gcc-v12-2-0-3-released.mdx @@ -53,10 +53,10 @@ The binary files are available from GitHub ## Prerequisites - GNU/Linux Intel 64-bit: any system with **GLIBC 2.27** or higher - (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - GNU/Linux Arm 32/64-bit: any system with **GLIBC 2.27** or higher - (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - Intel Windows 64-bit: Windows 7 with the Universal C Runtime ([UCRT](https://support.microsoft.com/en-us/topic/update-for-universal-c-runtime-in-windows-c0514201-7fe6-95a3-b0a5-287930f3560c)), diff --git a/website/blog/2023-08-24-riscv-none-elf-gcc-v13-2-0-1-released.md b/website/blog/2023-08-24-riscv-none-elf-gcc-v13-2-0-1-released.mdx similarity index 98% rename from website/blog/2023-08-24-riscv-none-elf-gcc-v13-2-0-1-released.md rename to website/blog/2023-08-24-riscv-none-elf-gcc-v13-2-0-1-released.mdx index 0ed2800..631cb4c 100644 --- a/website/blog/2023-08-24-riscv-none-elf-gcc-v13-2-0-1-released.md +++ b/website/blog/2023-08-24-riscv-none-elf-gcc-v13-2-0-1-released.mdx @@ -30,7 +30,7 @@ Version **13.2.0-1** is a new release; it follows the GNU GCC release. import Image from '@theme/IdealImage'; -[The xPack GNU RISC-V Embedded GCC](/) +[The xPack GNU RISC-V Embedded GCC](https://xpack.github.io/riscv-none-elf-gcc/) is a standalone cross-platform binary distribution of the [GNU GCC](https://gcc.gnu.org/releases.html). @@ -53,10 +53,10 @@ The binary files are available from GitHub ## Prerequisites - GNU/Linux Intel 64-bit: any system with **GLIBC 2.27** or higher - (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - GNU/Linux Arm 32/64-bit: any system with **GLIBC 2.27** or higher - (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - Intel Windows 64-bit: Windows 7 with the Universal C Runtime ([UCRT](https://support.microsoft.com/en-us/topic/update-for-universal-c-runtime-in-windows-c0514201-7fe6-95a3-b0a5-287930f3560c)), diff --git a/website/blog/2023-08-25-riscv-none-elf-gcc-v12-3-0-1-released.md b/website/blog/2023-08-25-riscv-none-elf-gcc-v12-3-0-1-released.mdx similarity index 98% rename from website/blog/2023-08-25-riscv-none-elf-gcc-v12-3-0-1-released.md rename to website/blog/2023-08-25-riscv-none-elf-gcc-v12-3-0-1-released.mdx index dd34ae9..a6a4aa9 100644 --- a/website/blog/2023-08-25-riscv-none-elf-gcc-v12-3-0-1-released.md +++ b/website/blog/2023-08-25-riscv-none-elf-gcc-v12-3-0-1-released.mdx @@ -30,7 +30,7 @@ Version **12.3.0-1** is a new release; it follows the GNU GCC release. It also a import Image from '@theme/IdealImage'; -[The xPack GNU RISC-V Embedded GCC](/) +[The xPack GNU RISC-V Embedded GCC](https://xpack.github.io/riscv-none-elf-gcc/) is a standalone cross-platform binary distribution of the [GNU GCC](https://gcc.gnu.org/releases.html). @@ -53,10 +53,10 @@ The binary files are available from GitHub ## Prerequisites - GNU/Linux Intel 64-bit: any system with **GLIBC 2.27** or higher - (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - GNU/Linux Arm 32/64-bit: any system with **GLIBC 2.27** or higher - (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - Intel Windows 64-bit: Windows 7 with the Universal C Runtime ([UCRT](https://support.microsoft.com/en-us/topic/update-for-universal-c-runtime-in-windows-c0514201-7fe6-95a3-b0a5-287930f3560c)), diff --git a/website/blog/2023-09-22-riscv-none-elf-gcc-v12-3-0-2-released.md b/website/blog/2023-09-22-riscv-none-elf-gcc-v12-3-0-2-released.mdx similarity index 98% rename from website/blog/2023-09-22-riscv-none-elf-gcc-v12-3-0-2-released.md rename to website/blog/2023-09-22-riscv-none-elf-gcc-v12-3-0-2-released.mdx index 7846ebc..24a8611 100644 --- a/website/blog/2023-09-22-riscv-none-elf-gcc-v12-3-0-2-released.md +++ b/website/blog/2023-09-22-riscv-none-elf-gcc-v12-3-0-2-released.mdx @@ -30,7 +30,7 @@ Version **12.3.0-2** is a maintenance release; it fixes the GNU/Linux GDB issues import Image from '@theme/IdealImage'; -[The xPack GNU RISC-V Embedded GCC](/) +[The xPack GNU RISC-V Embedded GCC](https://xpack.github.io/riscv-none-elf-gcc/) is a standalone cross-platform binary distribution of the [GNU GCC](https://gcc.gnu.org/releases.html). @@ -53,10 +53,10 @@ The binary files are available from GitHub ## Prerequisites - GNU/Linux Intel 64-bit: any system with **GLIBC 2.27** or higher - (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - GNU/Linux Arm 32/64-bit: any system with **GLIBC 2.27** or higher - (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - Intel Windows 64-bit: Windows 7 with the Universal C Runtime ([UCRT](https://support.microsoft.com/en-us/topic/update-for-universal-c-runtime-in-windows-c0514201-7fe6-95a3-b0a5-287930f3560c)), diff --git a/website/blog/2023-09-25-riscv-none-elf-gcc-v13-2-0-2-released.md b/website/blog/2023-09-25-riscv-none-elf-gcc-v13-2-0-2-released.mdx similarity index 98% rename from website/blog/2023-09-25-riscv-none-elf-gcc-v13-2-0-2-released.md rename to website/blog/2023-09-25-riscv-none-elf-gcc-v13-2-0-2-released.mdx index e8fa9e6..b4ac8d3 100644 --- a/website/blog/2023-09-25-riscv-none-elf-gcc-v13-2-0-2-released.md +++ b/website/blog/2023-09-25-riscv-none-elf-gcc-v13-2-0-2-released.mdx @@ -30,7 +30,7 @@ Version **13.2.0-2** is a maintenance release; it fixes the GNU/Linux GDB issues import Image from '@theme/IdealImage'; -[The xPack GNU RISC-V Embedded GCC](/) +[The xPack GNU RISC-V Embedded GCC](https://xpack.github.io/riscv-none-elf-gcc/) is a standalone cross-platform binary distribution of the [GNU GCC](https://gcc.gnu.org/releases.html). @@ -53,10 +53,10 @@ The binary files are available from GitHub ## Prerequisites - GNU/Linux Intel 64-bit: any system with **GLIBC 2.27** or higher - (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - GNU/Linux Arm 32/64-bit: any system with **GLIBC 2.27** or higher - (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - Intel Windows 64-bit: Windows 7 with the Universal C Runtime ([UCRT](https://support.microsoft.com/en-us/topic/update-for-universal-c-runtime-in-windows-c0514201-7fe6-95a3-b0a5-287930f3560c)), diff --git a/website/blog/2024-07-24-riscv-none-elf-gcc-v14-1-0-1-released.md b/website/blog/2024-07-24-riscv-none-elf-gcc-v14-1-0-1-released.mdx similarity index 92% rename from website/blog/2024-07-24-riscv-none-elf-gcc-v14-1-0-1-released.md rename to website/blog/2024-07-24-riscv-none-elf-gcc-v14-1-0-1-released.mdx index e19601a..62c8b1c 100644 --- a/website/blog/2024-07-24-riscv-none-elf-gcc-v14-1-0-1-released.md +++ b/website/blog/2024-07-24-riscv-none-elf-gcc-v14-1-0-1-released.mdx @@ -30,13 +30,13 @@ Version **14.1.0-1** is a new release; it follows the GNU GCC release. import Image from '@theme/IdealImage'; -[The xPack GNU RISC-V Embedded GCC](/) -is a standalone cross-platform binary distribution of -[GNU GCC](https://gcc.gnu.org/releases.html) for embedded RISC-V. +[The xPack GNU RISC-V Embedded GCC](https://xpack.github.io/riscv-none-elf-gcc/) +is a standalone cross-platform binary distribution of the +[GNU GCC](https://gcc.gnu.org/releases.html). -There are separate binaries for **Windows** (x64), -**macOS** (x64 and arm64) -and **GNU/Linux** (x64, arm64 and arm). +There are separate binaries for **Windows** (Intel 64-bit), +**macOS** (Intel 64-bit) +and **GNU/Linux** (Intel 64-bit, Arm 32/64-bit). :::note Raspberry Pi @@ -52,17 +52,17 @@ The binary files are available from GitHub ## Prerequisites -- GNU/Linux x64: any system with **GLIBC 2.27** or higher +- GNU/Linux Intel 64-bit: any system with **GLIBC 2.27** or higher (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) -- GNU/Linux Arm 64/32-bit: any system with **GLIBC 2.27** or higher - (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, - RedHat 8 or later, Fedora 29 or later, etc) -- Windows x64: Windows 7 with the Universal C Runtime +- GNU/Linux Arm 32/64-bit: any system with **GLIBC 2.27** or higher + (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, + Fedora 29 or later, etc) +- Intel Windows 64-bit: Windows 7 with the Universal C Runtime ([UCRT](https://support.microsoft.com/en-us/topic/update-for-universal-c-runtime-in-windows-c0514201-7fe6-95a3-b0a5-287930f3560c)), Windows 8, Windows 10 -- macOS x64: 10.13 or later -- macOS arm64: 11.6 or later +- Intel macOS 64-bit: 10.13 or later +- Apple Silicon macOS 64-bit: 11.6 or later ## Install @@ -169,14 +169,14 @@ The solution is to add `_zicsr` and/or `_zifencei` to the `-march` option, e.g. `-march=rv32imac` becomes `-march=rv32imac_zicsr_zifencei`. -In Eclipse, until the GUI is updated, select the *Toolchain Default* +In Eclipse, until the GUI will be updated, select the *Toolchain Default* for _Architecture_ and enter the new string separately as _Other target flags_. ### newlib-nano Support for **newlib-nano** is available using the -`--specs=nano.specs` option. For best results, this option must be +`--specs=nano.specs` option. For better results, this option must be added to both compile and link time. ### nosys.specs @@ -193,7 +193,7 @@ compiled with `-Os -mcmodel=medany`. It is mandatory for the applications to be compiled with -`-mcmodel=medany`, otherwise the link will fail. +`-mcmodel=medany`, otherwise the link might fail. ::: @@ -203,9 +203,9 @@ Support for Python scripting was added to GDB. This distribution provides a separate binary, `riscv-none-elf-gdb-py3` with support for **Python { frontMatter.python_version }**. -The Python 3 runtime is included, so GDB does not need any version of -Python to be installed, and is not impacted by the presence of other -versions installed on the system. +The Python 3 run-time is included, so GDB does not need any version of +Python to be installed, and is insensitive to the presence of other +versions. ### Text User Interface (TUI) diff --git a/website/blog/2024-07-25-riscv-none-elf-gcc-v13-3-0-1-released.md b/website/blog/2024-07-25-riscv-none-elf-gcc-v13-3-0-1-released.mdx similarity index 98% rename from website/blog/2024-07-25-riscv-none-elf-gcc-v13-3-0-1-released.md rename to website/blog/2024-07-25-riscv-none-elf-gcc-v13-3-0-1-released.mdx index 1f8147f..8ca0e34 100644 --- a/website/blog/2024-07-25-riscv-none-elf-gcc-v13-3-0-1-released.md +++ b/website/blog/2024-07-25-riscv-none-elf-gcc-v13-3-0-1-released.mdx @@ -30,7 +30,7 @@ Version **13.3.0-1** is a new release; it follows the GNU GCC release. import Image from '@theme/IdealImage'; -[The xPack GNU RISC-V Embedded GCC](/) +[The xPack GNU RISC-V Embedded GCC](https://xpack.github.io/riscv-none-elf-gcc/) is a standalone cross-platform binary distribution of the [GNU GCC](https://gcc.gnu.org/releases.html). @@ -53,10 +53,10 @@ The binary files are available from GitHub ## Prerequisites - GNU/Linux Intel 64-bit: any system with **GLIBC 2.27** or higher - (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - GNU/Linux Arm 32/64-bit: any system with **GLIBC 2.27** or higher - (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - Intel Windows 64-bit: Windows 7 with the Universal C Runtime ([UCRT](https://support.microsoft.com/en-us/topic/update-for-universal-c-runtime-in-windows-c0514201-7fe6-95a3-b0a5-287930f3560c)), diff --git a/website/blog/2024-07-26-riscv-none-elf-gcc-v12-4-0-1-released.md b/website/blog/2024-07-26-riscv-none-elf-gcc-v12-4-0-1-released.mdx similarity index 98% rename from website/blog/2024-07-26-riscv-none-elf-gcc-v12-4-0-1-released.md rename to website/blog/2024-07-26-riscv-none-elf-gcc-v12-4-0-1-released.mdx index 997b535..48d8e09 100644 --- a/website/blog/2024-07-26-riscv-none-elf-gcc-v12-4-0-1-released.md +++ b/website/blog/2024-07-26-riscv-none-elf-gcc-v12-4-0-1-released.mdx @@ -30,7 +30,7 @@ Version **12.4.0-1** is a new release; it follows the GNU GCC release. import Image from '@theme/IdealImage'; -[The xPack GNU RISC-V Embedded GCC](/) +[The xPack GNU RISC-V Embedded GCC](https://xpack.github.io/riscv-none-elf-gcc/) is a standalone cross-platform binary distribution of the [GNU GCC](https://gcc.gnu.org/releases.html). @@ -53,10 +53,10 @@ The binary files are available from GitHub ## Prerequisites - GNU/Linux Intel 64-bit: any system with **GLIBC 2.27** or higher - (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - GNU/Linux Arm 32/64-bit: any system with **GLIBC 2.27** or higher - (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - Intel Windows 64-bit: Windows 7 with the Universal C Runtime ([UCRT](https://support.microsoft.com/en-us/topic/update-for-universal-c-runtime-in-windows-c0514201-7fe6-95a3-b0a5-287930f3560c)), diff --git a/website/blog/2024-07-27-riscv-none-elf-gcc-v11-5-0-1-released.md b/website/blog/2024-07-27-riscv-none-elf-gcc-v11-5-0-1-released.mdx similarity index 98% rename from website/blog/2024-07-27-riscv-none-elf-gcc-v11-5-0-1-released.md rename to website/blog/2024-07-27-riscv-none-elf-gcc-v11-5-0-1-released.mdx index a8ee26f..1520bb4 100644 --- a/website/blog/2024-07-27-riscv-none-elf-gcc-v11-5-0-1-released.md +++ b/website/blog/2024-07-27-riscv-none-elf-gcc-v11-5-0-1-released.mdx @@ -30,7 +30,7 @@ Version **11.5.0-1** is a new release; it follows the GNU GCC release. import Image from '@theme/IdealImage'; -[The xPack GNU RISC-V Embedded GCC](/) +[The xPack GNU RISC-V Embedded GCC](https://xpack.github.io/riscv-none-elf-gcc/) is a standalone cross-platform binary distribution of the [GNU GCC](https://gcc.gnu.org/releases.html). @@ -53,10 +53,10 @@ The binary files are available from GitHub ## Prerequisites - GNU/Linux Intel 64-bit: any system with **GLIBC 2.27** or higher - (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - GNU/Linux Arm 32/64-bit: any system with **GLIBC 2.27** or higher - (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 later, + (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, Fedora 29 or later, etc) - Intel Windows 64-bit: Windows 7 with the Universal C Runtime ([UCRT](https://support.microsoft.com/en-us/topic/update-for-universal-c-runtime-in-windows-c0514201-7fe6-95a3-b0a5-287930f3560c)), diff --git a/website/blog/_common/_deprecation-notices-glib-2.27.mdx b/website/blog/_common/_deprecation-notices-glib-2.27.mdx new file mode 100644 index 0000000..b50b28e --- /dev/null +++ b/website/blog/_common/_deprecation-notices-glib-2.27.mdx @@ -0,0 +1,40 @@ + +{/* DO NOT EDIT! */} +{/* Automatically generated from xbb-helper/templates/docusaurus/common. */} + +{/* ------------------------------------------------------------------------ */} + +## Deprecation notices + +### Linux minimum requirements + +The minimum requirement is **GLIBC 2.27**, available starting +with Ubuntu 18, Debian 10 and RedHat 8. +Support for RedHat 7 was dropped in 2022. + +### 32-bit support + +Support for 32-bit Intel Linux and Intel Windows was +dropped in 2022. + +### Pre-deprecation notice for 32-bit Arm Linux + +Due to the large user base of 32-bit Raspberry Pi systems, +support for 32-bit Arm Linux (armv7l) will be preserved +for a little while, but expect it to be dropped by 2025, +so it is recommended to consider an upgrade to a RPi 4 or 5 with +at least 4 GB (preferably 8 GB) of RAM. + +## Pre-deprecation notice for Ubuntu 18.04 + +Ubuntu 18.04 LTS _Bionic Beaver_ reached the end of the standard five-year +maintenance window for Long-Term Support (LTS) release on 31 May 2023. + +As a courtesy, the xPack GNU/Linux releases will continue to be based on +Ubuntu 18.04 for another year. + +From 2025 onwards, the GNU/Linux binaries will be built on **Debian 10**, +(**GLIBC 2.28**), and are also expected to run on RedHat 8. + +Users are urged to update their build and test infrastructure to +ensure a smooth transition to the next xPack releases. diff --git a/website/blog/_common/_download-analytics.mdx b/website/blog/_common/_download-analytics.mdx new file mode 100644 index 0000000..fb11920 --- /dev/null +++ b/website/blog/_common/_download-analytics.mdx @@ -0,0 +1,20 @@ +{/* DO NOT EDIT! */} +{/* Automatically generated from xbb-helper/templates/docusaurus/common. */} + +import Image from '@theme/IdealImage'; + +{/* ------------------------------------------------------------------------ */} + +## Analytics + +- GitHub [xpack-dev-tools/riscv-none-elf-gcc-xpack](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/) + - this release Github Release + - all xPack releases [![Github All Releases](https://img.shields.io/github/downloads/xpack-dev-tools/riscv-none-elf-gcc-xpack/total.svg)](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/) + - [individual file counters](https://somsubhra.github.io/github-release-stats/?username=xpack-dev-tools&repository=riscv-none-elf-gcc-xpack) (grouped per release) +- npmjs.com [@xpack-dev-tools/riscv-none-elf-gcc](https://www.npmjs.com/package/@xpack-dev-tools/riscv-none-elf-gcc) + - latest releases [![npm](https://img.shields.io/npm/dw/@xpack-dev-tools/riscv-none-elf-gcc.svg)](https://www.npmjs.com/package/@xpack-dev-tools/riscv-none-elf-gcc/) + - all @xpack-dev-tools releases [![npm](https://img.shields.io/npm/dt/@xpack-dev-tools/riscv-none-elf-gcc.svg)](https://www.npmjs.com/package/@xpack-dev-tools/riscv-none-elf-gcc/) + +Credit to [Shields IO](https://shields.io) for the badges and to +[Somsubhra/github-release-stats](https://github.com/Somsubhra/github-release-stats) +for the individual file counters. diff --git a/website/blog/_common/_prerequisites-glib-2.27.mdx b/website/blog/_common/_prerequisites-glib-2.27.mdx new file mode 100644 index 0000000..84a578b --- /dev/null +++ b/website/blog/_common/_prerequisites-glib-2.27.mdx @@ -0,0 +1,18 @@ +{/* DO NOT EDIT! */} +{/* Automatically generated from xbb-helper/templates/docusaurus/common. */} + +{/* ------------------------------------------------------------------------ */} + +## Prerequisites + +- x64 GNU/Linux: any system with **GLIBC 2.27** or higher + (like Ubuntu 18 or later, Debian 10 or later, RedHat 8 or later, + Fedora 29 or later, etc) +- arm64/arm GNU/Linux: any system with **GLIBC 2.27** or higher + (like Raspberry Pi OS, Ubuntu 18 or later, Debian 10 or later, + RedHat 8 or later, Fedora 29 or later, etc) +- x64 Windows: Windows 7 with the Universal C Runtime + ([UCRT](https://support.microsoft.com/en-us/topic/update-for-universal-c-runtime-in-windows-c0514201-7fe6-95a3-b0a5-287930f3560c)), + Windows 8, Windows 10, Windows 11 +- x64 macOS: 10.13 or later +- arm64 macOS: 11.6 or later diff --git a/website/docs/developer-info/_common/_platform-docker-section.mdx b/website/docs/developer-info/_common/_platform-docker-section.mdx index 1749ab1..f5d5787 100644 --- a/website/docs/developer-info/_common/_platform-docker-section.mdx +++ b/website/docs/developer-info/_common/_platform-docker-section.mdx @@ -10,69 +10,48 @@ import { durations } from '../_durations.mdx' {/* Arguments: props.platform */} -export const platforms = { - "linux-x64": { - sectionName: 'x64 GNU/Linux', - machineName: 'a 64-bit x86_64 GNU/Linux' - }, - "win32-x64": { - sectionName: 'x64 Windows', - machineName: 'a 64-bit x86_64 GNU/Linux' - }, - "linux-arm64": { - sectionName: 'arm64 GNU/Linux 64-bit', - machineName: 'a 64-bit Arm aarch64 GNU/Linux' - }, - "linux-arm": { - sectionName: 'arm GNU/Linux 32-bit', - machineName: 'a 32-bit Arm armhf GNU/Linux' - }, -} - -#### Build the { platforms[props.platform].sectionName } binaries - { props.platform == "win32-x64" ? (

The Windows builds run on GNU/Linux, using mingw-w64.

) : ''} -To prepare the docker build on { platforms[props.platform].machineName }: +To prepare the docker build: { -`xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \\ -xpm run docker-prepare --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git` +`xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +xpm run docker-prepare --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets` }
... or, with the writable helper ... { -`xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \\ -xpm run link-deps -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \\ -xpm run docker-prepare --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \\ -xpm run docker-link-deps --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git` +`xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +xpm run link-deps -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +xpm run docker-prepare --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +xpm run docker-link-deps --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets` }
-To run the build: +To run the docker build: { -`xpm run docker-build --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git` +`xpm run docker-build --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets` } -or, for more verbosity, invoke the development build: +or, for more verbosity, run the similar development build: { -`xpm run docker-build-development --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git` +`xpm run docker-build-development --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets` } { durations[ props.platform ] }, the output of the build script is a compressed -archive and its SHA signature, created in the `deploy` folder: +archive and its SHA signature, created in +the buils-assets/build/{ props.platform }/deploy folder: * xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-{ props.platform }.tar.gz * xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-{ props.platform }.tar.gz.sha -To rerun the build, invoke the deep-clean action and repeat from install: +To rerun the build, invoke the **deep-clean** action and repeat from install: { -`xpm run deep-clean --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git` +`xpm run deep-clean --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets` } - diff --git a/website/docs/developer-info/_common/_platform-native-section.mdx b/website/docs/developer-info/_common/_platform-native-section.mdx index abfa790..d3174c2 100644 --- a/website/docs/developer-info/_common/_platform-native-section.mdx +++ b/website/docs/developer-info/_common/_platform-native-section.mdx @@ -10,58 +10,45 @@ import { durations } from '../_durations.mdx' {/* Arguments: props.platform */} -export const platforms = { - "darwin-x64": { - sectionName: 'x64 macOS', - machineName: 'an Intel Mac' - }, - "darwin-arm64": { - sectionName: 'arm64 macOS', - machineName: 'an Apple Silicon Mac' - } -} - -#### Build the { platforms[props.platform].sectionName } binaries - -To prepare the native build on { platforms[props.platform].machineName }: +To prepare the native build: { -`xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \\ -xpm install --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git` +`xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +xpm install --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets` }
... or, with the writable helper ... { -`xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \\ -xpm run link-deps -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \\ -xpm install --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git` +`xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +xpm run link-deps -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +xpm install --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets` }
-To run the build: +To run the native build: { -`xpm run build --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git` +`xpm run build --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets` } -or, for more verbosity, invoke the development build: +or, for more verbosity, run the similar development build: { -`xpm run build-development --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git` +`xpm run build-development --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets` } { durations[ props.platform ] }, the output of the build script is a compressed -archive and its SHA signature, created in the `deploy` folder: +archive and its SHA signature, created in +the buils-assets/build/{ props.platform }/deploy folder: * xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-{ props.platform }.tar.gz * xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-{ props.platform }.tar.gz.sha -To rerun the build, invoke the deep-clean action and repeat from install: +To rerun the build, invoke the **deep-clean** action and repeat from install: { -`xpm run deep-clean --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git` +`xpm run deep-clean --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets` } - diff --git a/website/docs/developer-info/index.mdx b/website/docs/developer-info/index.mdx index b7c0fe1..9d0a8dd 100644 --- a/website/docs/developer-info/index.mdx +++ b/website/docs/developer-info/index.mdx @@ -26,12 +26,6 @@ This page is intended for those who want to build the **xPack GNU RISC-V Embedded GCC** binaries themselves. -:::note - -The content of this page is still work in progress and will be updated shortly. - -::: -
The xPack Build Box @@ -114,9 +108,9 @@ The build configurations are defined in the `package.json` file, in the }, "actions": { "build": "{{ properties.commandBashBuild }} --windows", - "build-development": "{{ properties.commandBashBuild }} --windows --develop", - "build-development-debug": "{{ properties.commandBashBuild }} --windows --develop --debug", - "build-development-tests-only": "{{ properties.commandBashBuild }} --windows --develop --tests-only" + "build-development": "{{ properties.commandBashBuild }} --windows --development", + "build-development-debug": "{{ properties.commandBashBuild }} --windows --development --debug", + "build-development-tests-only": "{{ properties.commandBashBuild }} --windows --development --tests-only" } } } @@ -184,7 +178,7 @@ invoked via a single mouse click, for example: ## Prerequisites The build scripts run on GNU/Linux and macOS. The Windows binaries are -generated on x64 GNU/Linux, using [mingw-w64](https://mingw-w64.org). +compiled on x64 GNU/Linux, using [mingw-w64](https://mingw-w64.org). For details on installing the prerequisites, please read the [XBB prerequisites page](https://xpack.github.io/xbb/prerequisites/). @@ -201,12 +195,12 @@ The project is hosted on GitHub: Apart from the unused `master` branch, there are two active branches: - `xpack`, with the latest stable version (default) -- `xpack-develop`, with the current development version +- xpack-development, with the current development version -All development is done in the `xpack-develop` branch, and contributions via +All development is done in the xpack-development branch, and contributions via Pull Requests should be directed to this branch. -When new releases are published, the `xpack-develop` branch is merged +When new releases are published, the xpack-development branch is merged into `xpack`.
@@ -221,13 +215,13 @@ git clone https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack.git \ ```
-For development purposes, clone the `xpack-develop` branch. +For development purposes, clone the xpack-development branch. ```sh rm -rf ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ mkdir -p ~/Work/xpack-dev-tools && \ git clone \ - --branch xpack-develop \ + --branch xpack-development \ https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack.git \ ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git ``` @@ -235,19 +229,19 @@ git clone \
-Get the helper sources (optional, for development purposes) +Get the writable helper sources (optional, for development purposes) The project has a dependency to a common **helper**, that is normally installed as a read-only dependency; **for development -purposes**, to be able to make changes to the scripts located in the helper, -clone the `xpack-develop` branch and link it to the central -xPacks store: +purposes**, to be able to make changes to the scripts located inside the helper, +clone the xpack-development branch and link it to +the central xPacks store: ```sh rm -rf ~/Work/xpack-dev-tools/xbb-helper-xpack.git && \ mkdir -p ~/Work/xpack-dev-tools && \ git clone \ - --branch xpack-develop \ + --branch xpack-development \ https://github.com/xpack-dev-tools/xbb-helper-xpack.git \ ~/Work/xpack-dev-tools/xbb-helper-xpack.git && \ xpm link -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git @@ -282,23 +276,31 @@ git -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git pull
-### macOS builds +### Build the x64 macOS binaries +### Build the arm64 macOS binaries + -### GNU/Linux & Windows builds +### Build the x64 GNU/Linux binaries +### Build the x64 Windows binaries + +### Build the arm64 GNU/Linux binaries + +### Build the arm GNU/Linux (32-bit) binaries + -### Debug builds +### Compile with debug info In some cases it is necessary to run a debug session with the binaries. @@ -307,7 +309,7 @@ For these cases, the build script accepts the `--debug` options. There are also xPack actions that use this option (`build-development-debug` and `docker-build-development-debug`). -### Files cache +### Use a local cache The XBB build scripts use a local cache such that files are downloaded only during the first run, later runs being able to use the cached files. diff --git a/website/docs/getting-started/_common/_gcc-release-schedule.mdx b/website/docs/getting-started/_common/_gcc-release-schedule.mdx index 409de75..0ac9b34 100644 --- a/website/docs/getting-started/_common/_gcc-release-schedule.mdx +++ b/website/docs/getting-started/_common/_gcc-release-schedule.mdx @@ -1,3 +1,5 @@ +{/* DO NOT EDIT! */} +{/* Automatically generated from xbb-helper/templates/docusaurus/common. */} import versionMajor from '@site/src/libs/versionMajor'; diff --git a/website/docs/getting-started/_documentation.mdx b/website/docs/getting-started/_documentation.mdx index b76f990..3822559 100644 --- a/website/docs/getting-started/_documentation.mdx +++ b/website/docs/getting-started/_documentation.mdx @@ -4,4 +4,4 @@ ## Documentation The original documentation is available from the -[GCC online documentation](https://gcc.gnu.org/onlinedocs/) site. +[GCC online documentation](https://gcc.gnu.org/onlinedocs/) web site. diff --git a/website/docs/install/_common/_automated-install.mdx b/website/docs/install/_common/_automated-install.mdx index 71bb0b8..4f87936 100644 --- a/website/docs/install/_common/_automated-install.mdx +++ b/website/docs/install/_common/_automated-install.mdx @@ -133,7 +133,7 @@ within the home folder), thereby conserving disk space when the same tools are used across multiple projects. In order to allow the projects to access the binary tools installed in the -central folder, instead of unpacking the archives in `xpacks`, +central store, instead of unpacking the archives in `xpacks`, **xpm** adds symbolic links pointing to the **central xPacks store**. The outcome is functionally equivalent to installing the tools into @@ -151,6 +151,18 @@ creating local (see below). +
+The central xPacks cache + +To save download time, all archives are first stored in a +cache, and all subsequent downloads are replaced with the +cached content. + +Therefore all published archives should be read-only and +it is not allowed to replace them at a later time. + +
+ ### Initialise the project Upon initial use, ensure that a `package.json` file is present in the @@ -277,8 +289,8 @@ This is particularly useful for CI/CD environments. ### Install globally For older development environments, -it is also possible to install GNU RISC-V Embedded GCC only globally in the **central -xPacks store**, without any +it is also possible to install GNU RISC-V Embedded GCC only globally in +the **central xPacks store**, without any local ; it is the developer's responsibility to configure the path to the tools. diff --git a/website/docs/install/_common/_automated-uninstall.mdx b/website/docs/install/_common/_automated-uninstall.mdx index 1d88df1..d6b4ddc 100644 --- a/website/docs/install/_common/_automated-uninstall.mdx +++ b/website/docs/install/_common/_automated-uninstall.mdx @@ -15,7 +15,8 @@ The binaries do not use any form of installer; instead they are distributed as portable { props.isWindows ? .zip : .tar.gz } archives; therefore they do not require to run any uninstaller; simply removing the -links and possibly the central store folder is enough. +links and possibly the central xPack store folder and +the central cache folder is enough. To remove the created by **xpm** in the current project, @@ -31,7 +32,7 @@ and ask **xpm** to uninstall the package: `xpm uninstall @xpack-dev-tools/riscv-none-elf-gcc --verbose` } -To completely remove the package from the central store: +To completely remove the package from the central xPack store: { `xpm uninstall --global @xpack-dev-tools/riscv-none-elf-gcc --verbose` diff --git a/website/docs/maintainer-info/_check-upstream-release.mdx b/website/docs/maintainer-info/_check-upstream-release.mdx new file mode 100644 index 0000000..8f86ee0 --- /dev/null +++ b/website/docs/maintainer-info/_check-upstream-release.mdx @@ -0,0 +1,11 @@ + +{/* ------------------------------------------------------------------------ */} + +### Check the latest upstream release + +The current release must be announced in the +[GCC Timeline](https://gcc.gnu.org/releases.html) page. +Compare the latest release with the current xPack +[release](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases). +If necessary, update the triplet, otherwise increase the fourth number, +as below. diff --git a/website/docs/maintainer-info/_ci-durations.mdx b/website/docs/maintainer-info/_ci-durations.mdx new file mode 100644 index 0000000..6ed7a71 --- /dev/null +++ b/website/docs/maintainer-info/_ci-durations.mdx @@ -0,0 +1,11 @@ + +{/* ------------------------------------------------------------------------ */} + +The full builds take about 22 hours (7 hours without multi-libs): + +- `darwin-x64`: 6h38 (1h27) (nuc) +- `darwin-arm64`: 3h19 (0h48) (m1) +- `linux-x64`: 4h17 (1h06) (amd) +- `win32-x64`: 4h17 (1h01) (amd) +- `linux-arm64`: 21h56 (6h58) (rpi4) +- `linux-arm`: 20h32 (6h24) (rpi4) diff --git a/website/docs/maintainer-info/_common/_platform-docker-build.mdx b/website/docs/maintainer-info/_common/_platform-docker-build.mdx new file mode 100644 index 0000000..8725d48 --- /dev/null +++ b/website/docs/maintainer-info/_common/_platform-docker-build.mdx @@ -0,0 +1,45 @@ +{/* DO NOT EDIT! */} +{/* Automatically generated from xbb-helper/templates/docusaurus/common. */} + +import CodeBlock from '@theme/CodeBlock'; + +import customField from '@site/src/libs/customField'; + +import { durations } from '../_durations.mdx' + +{/* ------------------------------------------------------------------------ */} + +To update the build scripts and build the development binaries: + + { +`rm -f ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/package-lock.json && \\ +git -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git pull && \\ +xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +git -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git pull && \\ +xpm link -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git && \\ +xpm run link-deps -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +\\ +xpm run deep-clean --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +xpm run docker-prepare --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +xpm run docker-link-deps --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +xpm run docker-build-development --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets` +} + +{ durations[ props.platform ] }, the output of the build script is a compressed +archive and its SHA signature, created in +the buils-assets/build/{ props.platform }/deploy folder: + +* xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-{ props.platform }.tar.gz +* xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-{ props.platform }.tar.gz.sha + +To update the build scripts and build the release binaries: + + { +`rm -f ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/package-lock.json && \\ +git -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git pull && \\ +xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +\\ +xpm run deep-clean --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +xpm run docker-prepare --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +xpm run docker-build-development --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets` +} diff --git a/website/docs/maintainer-info/_common/_platform-native-build.mdx b/website/docs/maintainer-info/_common/_platform-native-build.mdx new file mode 100644 index 0000000..d96090c --- /dev/null +++ b/website/docs/maintainer-info/_common/_platform-native-build.mdx @@ -0,0 +1,44 @@ +{/* DO NOT EDIT! */} +{/* Automatically generated from xbb-helper/templates/docusaurus/common. */} + +import CodeBlock from '@theme/CodeBlock'; + +import customField from '@site/src/libs/customField'; + +import { durations } from '../_durations.mdx' + +{/* ------------------------------------------------------------------------ */} + +To update the build scripts and build the development binaries: + + { +`rm -f ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/package-lock.json && \\ +git -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git pull && \\ +xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +git -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git pull && \\ +xpm link -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git && \\ +xpm run link-deps -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +\\ +xpm run deep-clean --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +xpm install --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +xpm run build-development --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets` +} + +{ durations[ props.platform ] }, the output of the build script is a compressed +archive and its SHA signature, created in +the buils-assets/build/{ props.platform }/deploy folder: + +* xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-{ props.platform }.tar.gz +* xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-{ props.platform }.tar.gz.sha + +To update the build scripts and build the release binaries: + + { +`rm -f ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/package-lock.json && \\ +git -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git pull && \\ +xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +\\ +xpm run deep-clean --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +xpm install --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \\ +xpm run build --config ${ props.platform } -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets` +} diff --git a/website/docs/maintainer-info/_durations.mdx b/website/docs/maintainer-info/_durations.mdx new file mode 100644 index 0000000..b446e80 --- /dev/null +++ b/website/docs/maintainer-info/_durations.mdx @@ -0,0 +1,13 @@ + +{/* ------------------------------------------------------------------------ */} + +{/* Below 5 minutes use "Several TODO minutes later" */} +export const durations = { + "work": "about 114 minutes (1h54) (with reduced multi-libs)", + "darwin-x64": "About 86 minutes (1h26) later", + "darwin-arm64": "About 51 minutes later", + "linux-x64": "About 57 minutes later", + "win32-x64": "About 43 minutes later", + "linux-arm64": "About 373 minutes (6h13) later (98 minutes, 1h38m on ampere)", + "linux-arm": "About 362 minutes (6h02) later", +} diff --git a/website/docs/maintainer-info/_functional-tests.mdx b/website/docs/maintainer-info/_functional-tests.mdx new file mode 100644 index 0000000..2a39939 --- /dev/null +++ b/website/docs/maintainer-info/_functional-tests.mdx @@ -0,0 +1,2 @@ + +{/* ------------------------------------------------------------------------ */} diff --git a/website/docs/maintainer-info/_more-repos.mdx b/website/docs/maintainer-info/_more-repos.mdx new file mode 100644 index 0000000..2a39939 --- /dev/null +++ b/website/docs/maintainer-info/_more-repos.mdx @@ -0,0 +1,2 @@ + +{/* ------------------------------------------------------------------------ */} diff --git a/website/docs/maintainer-info/_patches.mdx b/website/docs/maintainer-info/_patches.mdx new file mode 100644 index 0000000..f472c66 --- /dev/null +++ b/website/docs/maintainer-info/_patches.mdx @@ -0,0 +1,6 @@ + +{/* ------------------------------------------------------------------------ */} + +### Patches + +For macOS builds, this project uses the same patches as `gcc-xpack`. diff --git a/website/docs/maintainer-info/_release-schedule.mdx b/website/docs/maintainer-info/_release-schedule.mdx new file mode 100644 index 0000000..6446836 --- /dev/null +++ b/website/docs/maintainer-info/_release-schedule.mdx @@ -0,0 +1,6 @@ + +{/* ------------------------------------------------------------------------ */} + +import GccReleaseSchedule from '../getting-started/_common/_gcc-release-schedule.mdx' + + diff --git a/website/docs/maintainer-info/_share-custom.mdx b/website/docs/maintainer-info/_share-custom.mdx new file mode 100644 index 0000000..55153ab --- /dev/null +++ b/website/docs/maintainer-info/_share-custom.mdx @@ -0,0 +1,17 @@ + +{/* ------------------------------------------------------------------------ */} + +## Announce to RISC-V community + +Add a new topic in the **Announcements** category of the +[RISC-V forums](https://groups.google.com/a/groups.riscv.org/g/sw-dev). + +```console +Subject: xPack GNU RISC-V Embedded GCC v14.1.0-1 released + +Version 14.1.0-1 is a new release of the xPack GNU RISC-V Embedded GCC; it follows the GNU GCC release. + +https://xpack.github.io/blog/2022/05/14/riscv-none-elf-gcc-v11-3-0-1-released/ +``` + +Update the link to the actual blog post. diff --git a/website/docs/maintainer-info/_update-version-specific.mdx b/website/docs/maintainer-info/_update-version-specific.mdx new file mode 100644 index 0000000..d415871 --- /dev/null +++ b/website/docs/maintainer-info/_update-version-specific.mdx @@ -0,0 +1,8 @@ + +{/* ------------------------------------------------------------------------ */} + +### Update the version specific code + +- open the `build-assets/scripts/versioning.sh` file +- add a new `if` with the new version before the existing code +- update the versions, branch names and commit ids diff --git a/website/docs/maintainer-info/index.mdx b/website/docs/maintainer-info/index.mdx index 922bc08..5b39a32 100644 --- a/website/docs/maintainer-info/index.mdx +++ b/website/docs/maintainer-info/index.mdx @@ -1,4 +1,8 @@ --- + +# DO NOT EDIT! +# Automatically generated from xbb-helper/templates/docusaurus/common. + title: Information for xPack GNU RISC-V Embedded GCC maintainers date: 2024-07-12 20:11:00 +0300 @@ -9,6 +13,20 @@ import CodeBlock from '@theme/CodeBlock'; import customField from '@site/src/libs/customField'; +import MoreRepos from './_more-repos.mdx'; +import ReleaseSchedule from './_release-schedule.mdx'; +import CheckUpstreamRelease from './_check-upstream-release.mdx' +import UpdateVersionSpecific from './_update-version-specific.mdx' +import CiDurations from './_ci-durations.mdx' +import FunctionalTests from './_functional-tests.mdx' +import ShareCustom from './_share-custom.mdx' + +import { durations } from './_durations.mdx' +import Patches from './_patches.mdx' + +import PlatformNativeBuild from './_common/_platform-native-build.mdx' +import PlatformDockerBuild from './_common/_platform-docker-build.mdx' + {/* ------------------------------------------------------------------------ */} [![license](https://img.shields.io/github/license/xpack-dev-tools/riscv-none-elf-gcc-xpack)](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/blob/xpack/LICENSE) @@ -19,16 +37,10 @@ This page is intended for those who maintain **xPack GNU RISC-V Embedded GCC** and documents how to make new releases. -:::note - -The content of this page is still work in progress and will be updated shortly. - -::: - ## Prerequisites The build scripts run on GNU/Linux and macOS. The Windows binaries are -generated on x86_64 GNU/Linux, using [mingw-w64](https://mingw-w64.org). +compiled on x64 GNU/Linux, using [mingw-w64](https://mingw-w64.org). For details on installing the prerequisites, please read the [XBB prerequisites page](https://xpack.github.io/xbb/prerequisites/). @@ -39,7 +51,7 @@ The project is hosted on GitHub: - https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack.git -To clone the stable branch (`xpack`), run the following commands in a +To clone the **stable** branch (`xpack`), run the following commands in a terminal (on Windows use the _Git Bash_ console): ```sh @@ -48,13 +60,13 @@ git clone https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack.git \ ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git ``` -For development purposes, clone the `xpack-develop` branch: +For **development** purposes, clone the `xpack-development` branch: ```sh rm -rf ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ mkdir -p ~/Work/xpack-dev-tools && \ git clone \ - --branch xpack-develop \ + --branch xpack-development \ https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack.git \ ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git ``` @@ -65,18 +77,19 @@ Or, if the repo was already cloned: git -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git pull ``` -## Get helper sources +## Get the writable helper sources The project has a dependency to a common **helper**, that is -normally installed as a read-only dependency; for development -purposes, to be able to make changes to the helper, clone the -`xpack-develop` branch and link it to the central xPacks store: +normally installed as a read-only dependency; for **development +purposes**, to be able to make changes to the scripts located inside the helper, +clone the `xpack-development` branch and link it to +the central xPacks store: ```sh rm -rf ~/Work/xpack-dev-tools/xbb-helper-xpack.git && \ mkdir -p ~/Work/xpack-dev-tools && \ git clone \ - --branch xpack-develop \ + --branch xpack-development \ https://github.com/xpack-dev-tools/xbb-helper-xpack.git \ ~/Work/xpack-dev-tools/xbb-helper-xpack.git && \ xpm link -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git @@ -89,56 +102,37 @@ git -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git pull xpm link -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git ``` -Other repositories in use are: + -- TODO + -## Release schedule - -TODO - -## How to make new releases +## Prepare the new releases Before starting the build, perform some checks and tweaks. ### Download the build scripts -The build scripts are available in the `scripts` folder of the +The build scripts are available in the `build-assets/scripts` folder of the [`xpack-dev-tools/riscv-none-elf-gcc-xpack`](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack) Git repo. -To download them on a new machine, clone the `xpack-develop` branch, +To download them on a new machine, clone the `xpack-development` branch, as seen above. ### Check Git In the `xpack-dev-tools/riscv-none-elf-gcc-xpack` Git repo: -- switch to the `xpack-develop` branch +- switch to the `xpack-development` branch - pull new changes - if needed, merge the `xpack` branch -No need to add a tag here, it'll be added when the release is created. - ### Update helper & other dependencies Check the latest versions at https://github.com/xpack-dev-tools/ and -update the dependencies in `package.json`. +update the dependencies in `build-assets/package.json`. -### Check the latest upstream release - -The current release must be announced in TODO. -Compare the latest tag with the current xPack -[release](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases). -If necessary, update the triplet, otherwise increase the fourth number, -as below. - -### Increase the version - -Determine the version (like { customField('upstreamVersion') }) and update the `scripts/VERSION` -file; the format is { customField('upstreamVersion') }-{ customField('xpackSubversion') }. The fourth number is the xPack release number -of this version. A fifth number will be added to the version in `package.json` -when the package is published to the `npm` server. + ### Fix possible open issues @@ -148,82 +142,89 @@ Check GitHub issues and pull requests: and fix them; assign them to a milestone (like { customField('upstreamVersion') }-{ customField('xpackSubversion') }). -### Check `README.md` +### Increase the version and update VERSION -Normally `README.md` should not need changes, but better check. -Information related to the new version should not be included here, -but in the version specific release page. +Determine the version (like { customField('upstreamVersion') }) +and update the `build-assets/scripts/VERSION` file; the format +is { customField('upstreamVersion') }-{ customField('xpackSubversion') }. +The fourth number is the xPack release number +of this version. A fifth number will be added to the version in `package.json` +when the package is published to the `npm` server. + +### Update the version in top `package.json` to a pre-release + +Use the new version, suffixed by `.pre`, +like { customField('upstreamVersion') }-{ customField('xpackSubversion') }.{ customField('npmSubversion') }.pre. -### Update versions in `README` files +### Restart local web server -- update version in `README-MAINTAINER.md` -- update version in `README.md` +Execute the npm script `start` in the website sub-project, +or run the following in a terminal: + +```sh +(cd ~/Work/xpack-dev-tools/xbb-helper-xpack.git/website; npm run start) +``` -### Update version in `package.json` to a pre-release +Navigate to the **Maintainer Info** page. -Use the new version, suffixed by `.pre`, like { customField('upstreamVersion') }-{ customField('xpackSubversion') }.{ customField('npmSubversion') }.pre. + ### Update `CHANGELOG.md` - open the `CHANGELOG.md` file - check if all previous fixed issues are in -- add a new entry like _* v{ customField('upstreamVersion') }-{ customField('xpackSubversion') } prepared_ -- commit with a message like _prepare v{ customField('upstreamVersion') }-{ customField('xpackSubversion') }_ - -### Update the version specific code - -- open the `scripts/versioning.sh` file -- add a new `if` with the new version before the existing code -- TODO +- add a new entry like _**\* v{ customField('upstreamVersion') }-{ customField('xpackSubversion') } prepared**_ +- commit with a message like _**prepare v{ customField('upstreamVersion') }-{ customField('xpackSubversion') }**_ -## Build +## Run the development builds The builds currently run on 5 dedicated machines (x64 GNU/Linux, arm64 GNU/Linux, arm GNU/Linux, x64 macOS and arm64 macOS). -### Development run the build scripts - Before the real build, run test builds on all platforms. -#### Visual Studio Code +### Visual Studio Code All actions are defined as **xPack actions** and can be conveniently triggered via the VS Code graphical interface, using the [xPack extension](https://marketplace.visualstudio.com/items?itemName=ilg-vscode.xpack). -#### x86_64 macOS + + +### Build the x64 macOS binaries -For x86_64 macOS, first run the build on the development machine +For x64 macOS, first run the build on the development machine (`wksi`, a recent macOS): ```sh export XBB_ENVIRONMENT_SKIP_CHECKS="y" +``` -# Update the build scripts. +```sh rm -f ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/package-lock.json git -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git pull -xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git +xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets git -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git pull xpm link -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git -xpm run link-deps -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git +xpm run link-deps -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets -xpm run deep-clean --config darwin-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm install --config darwin-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm run build-development --config darwin-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git +xpm run deep-clean --config darwin-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \ +xpm install --config darwin-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets && \ +xpm run build-development --config darwin-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets ``` For a debug build: ```sh -xpm run build-development-debug --config darwin-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git +xpm run build-development-debug --config darwin-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets ``` -The build takes about 7 minutes. +The build takes { durations["work"] }. -When functional, push the `xpack-develop` branch to GitHub. +When functional, push the `xpack-development` branch to GitHub. Run the native build on the production machine (`xbbmi`, an older macOS); @@ -233,28 +234,9 @@ start a VS Code remote session, or connect with a terminal: caffeinate ssh xbbmi ``` -Repeat the same steps as before. - -```sh -rm -f ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/package-lock.json && \ -git -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git pull && \ -xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -git -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git pull && \ -xpm link -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git && \ -xpm run link-deps -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -\ -xpm run deep-clean --config darwin-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm install --config darwin-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm run build-development --config darwin-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git -``` - -Several minutes later, the output of the build script is a compressed -archive and its SHA signature, created in the `deploy` folder: - -* xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-darwin-x64.tar.gz -* xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-darwin-x64.tar.gz.sha + -#### arm64 macOS +### Build the arm64 macOS binaries Run the native build on the production machine (`xbbma`, an older macOS); @@ -264,28 +246,9 @@ start a VS Code remote session, or connect with a terminal: caffeinate ssh xbbma ``` -Update the build scripts (or clone them at the first use): + -```sh -rm -f ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/package-lock.json && \ -git -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git pull && \ -xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -git -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git pull && \ -xpm link -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git && \ -xpm run link-deps -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -\ -xpm run deep-clean --config darwin-arm64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm install --config darwin-arm64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm run build-development --config darwin-arm64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git -``` - -Several minutes later, the output of the build script is a compressed -archive and its SHA signature, created in the `deploy` folder: - -* xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-darwin-arm64.tar.gz -* xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-darwin-arm64.tar.gz.sha - -#### x86_64 GNU/Linux +### Build the x64 GNU/Linux binaries Run the docker build on the production machine (`xbbli`); start a VS Code remote session, or connect with a terminal: @@ -294,55 +257,20 @@ start a VS Code remote session, or connect with a terminal: caffeinate ssh xbbli ``` -##### Build the x86_64 GNU/Linux binaries - -Update the build scripts (or clone them at the first use): - -```sh -rm -f ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/package-lock.json && \ -git -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git pull && \ -xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -git -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git pull && \ -xpm link -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git && \ -xpm run link-deps -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -\ -xpm run deep-clean --config linux-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm run docker-prepare --config linux-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm run docker-link-deps --config linux-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm run docker-build-development --config linux-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git -``` - -Several minutes later, the output of the build script is a compressed -archive and its SHA signature, created in the `deploy` folder: - -* xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-linux-x64.tar.gz -* xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-linux-x64.tar.gz.sha + -##### Build the x86_64 Windows binaries +### Build the x64 Windows binaries -Clean the build folder and prepare the docker container: +Run the docker build on the production machine (`xbbli`); +start a VS Code remote session, or connect with a terminal: ```sh -rm -f ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/package-lock.json && \ -git -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git pull && \ -xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -git -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git pull && \ -xpm link -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git && \ -xpm run link-deps -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -\ -xpm run deep-clean --config win32-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm run docker-prepare --config win32-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm run docker-link-deps --config win32-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm run docker-build-development --config win32-x64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git +caffeinate ssh xbbli ``` -Several minutes later, the output of the build script is a compressed -archive and its SHA signature, created in the `deploy` folder: + -* xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-win32-x64.zip -* xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-win32-x64.zip.sha - -#### Arm GNU/Linux 64-bit +### Build the arm64 GNU/Linux binaries Run the docker build on the production machine (`xbbla`); start a VS Code remote session, or connect with a terminal: @@ -351,29 +279,9 @@ start a VS Code remote session, or connect with a terminal: caffeinate ssh xbbla ``` -Update the build scripts (or clone them at the first use): - -```sh -rm -f ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/package-lock.json && \ -git -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git pull && \ -xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -git -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git pull && \ -xpm link -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git && \ -xpm run link-deps -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -\ -xpm run deep-clean --config linux-arm64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm run docker-prepare --config linux-arm64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm run docker-link-deps --config linux-arm64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm run docker-build-development --config linux-arm64 -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git -``` - -About 10 minutes later (3 minutes on ampere), the output of the build script is a compressed -archive and its SHA signature, created in the `deploy` folder: - -* xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-linux-arm64.tar.gz -* xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-linux-arm64.tar.gz.sha + -#### Arm GNU/Linux 32-bit +### Build the arm GNU/Linux (32-bit) binaries Run the docker build on the production machine (`xbbla32`); start a VS Code remote session, or connect with a terminal: @@ -382,31 +290,24 @@ start a VS Code remote session, or connect with a terminal: caffeinate ssh xbbla32 ``` -Update the build scripts (or clone them at the first use): + -```sh -rm -f ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/package-lock.json && \ -git -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git pull && \ -xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -git -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git pull && \ -xpm link -C ~/Work/xpack-dev-tools/xbb-helper-xpack.git && \ -xpm run link-deps -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -\ -xpm run deep-clean --config linux-arm -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm run docker-prepare --config linux-arm -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm run docker-link-deps --config linux-arm -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git && \ -xpm run docker-build-development --config linux-arm -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git -``` +### Update the trees in the Install Guide page -About 10 minutes later, the output of the build script is a compressed -archive and its SHA signature, created in the `deploy` folder: +Copy the trees displayed at the end of the test builds and paste to +**Folder hierarchy** section in the web files: -* xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-linux-arm.tar.gz -* xpack-riscv-none-elf-gcc-{ customField('upstreamVersion') }-{ customField('xpackSubversion') }-linux-arm.tar.gz.sha +- `website/docs/install/_install-linux.mdx` +- `website/docs/install/_install-macos.mdx` +- `website/docs/install/_install-windows.mdx` -### Update README-MAINTAINER listing output +:::tip -- check and possibly update the `ls -l` output in README-MAINTAINER +macOS does not have a `tree` command; either compile it from +[sources](https://github.com/Old-Man-Programmer/tree), or install it +via HomeBrew, and make a link to `/usr/local/bin`. + +::: ### Update the list of links in package.json @@ -438,7 +339,7 @@ locations (like https://github.com/xpack-dev-tools/files-cache/tree/master/libs), place them in the XBB cache (`Work/cache`) and restart the build. -## Run the CI build +## Run the CI/CD builds The automation is provided by GitHub Actions and three self-hosted runners. @@ -483,24 +384,28 @@ screen -S ga ### Push the build scripts -- push the `xpack-develop` branch to GitHub +- push the `xpack-development` branch to GitHub - possibly push the helper project too From here it'll be cloned on the production machines. ### Publish helper -Publish a new release of the helper and update the reference in `package.json`. +Publish a new release of the helper and update the reference +in `build-assets/package.json`. ### Check for disk space Check if the build machines have enough free space and eventually -do some cleanups (`df -BG -H /` on Linux, `df -gH /` on macOS). +do some cleanups + +- GNU/Linux: `df -BG -H /` +- macOS: `df -gH /` To remove previous builds, use: ```sh -rm -rf ~/Work/xpack-dev-tools/*/build +rm -rf ~/Work/xpack-dev-tools/*/build-assets/build ~/Work/xpack-dev-tools/*/build ``` ### Manually trigger the build GitHub Actions @@ -517,12 +422,12 @@ To trigger the GitHub Actions builds, use the xPack actions: These are equivalent to: ```sh -bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-build.sh --workflow build-darwin-x64.yml -bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-build.sh --workflow build-darwin-arm64.yml -bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-build.sh --workflow build-linux-x64.yml -bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-build.sh --workflow build-win32-x64.yml -bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-build.sh --workflow build-linux-arm64.yml -bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-build.sh --workflow build-linux-arm.yml +bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-build.sh --workflow build-darwin-x64.yml +bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-build.sh --workflow build-darwin-arm64.yml +bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-build.sh --workflow build-linux-x64.yml +bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-build.sh --workflow build-win32-x64.yml +bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-build.sh --workflow build-linux-arm64.yml +bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-build.sh --workflow build-linux-arm.yml ``` These scripts require the `GITHUB_API_DISPATCH_TOKEN` variable to be present @@ -531,25 +436,19 @@ Settings → Action → [Secrets](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/settings/secrets/actions) page. -These commands use the `xpack-develop` branch of this repo. - -## Durations & results +These commands use the `xpack-development` branch of this repo. -The builds take about 10 minutes to complete: +### Durations & resulting binaries -- `xbbmi`: 5 min -- `xbbma`: 4 min -- `xbbli`: 5 min (4 min Linux, 5 min Windows) -- `xbbla`: 11 min -- `xbbla32`: 11 min + The workflow result and logs are available from the -[Actions](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/actions/) page. +[GitHub Actions](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/actions/) page. The resulting binaries are available for testing from [pre-releases/test](https://github.com/xpack-dev-tools/pre-releases/releases/tag/test/). -## Testing +## Run the tests ### CI tests @@ -564,22 +463,22 @@ To trigger the GitHub Actions tests, use the xPack actions: These are equivalent to: ```sh -bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-test-prime.sh -bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-test-docker-linux-intel.sh -bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-test-docker-linux-arm.sh +bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-test-prime.sh +bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-test-docker-linux-intel.sh +bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-workflow-test-docker-linux-arm.sh ``` These scripts require the `GITHUB_API_DISPATCH_TOKEN` variable to be present in the environment. -These actions use the `xpack-develop` branch of this repo and the +These actions use the `xpack-development` branch of this repo and the [pre-releases/test](https://github.com/xpack-dev-tools/pre-releases/releases/tag/test/) binaries. The tests results are available from the -[Actions](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/actions/) page. +[GitHub Actions](https://github.com/xpack-dev-tools/openocd-xpack/actions/) page. -Since GitHub Actions provides a single version of macOS, the +Since GitHub Actions provides a single version of a macOS runner, the multi-version macOS tests run on Travis. To trigger the Travis test, use the xPack action: @@ -589,7 +488,7 @@ To trigger the Travis test, use the xPack action: This is equivalent to: ```sh -bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-travis-macos.sh +bash ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets/xpacks/@xpack-dev-tools/xbb-helper/github-actions/trigger-travis-macos.sh ``` This script requires the `TRAVIS_COM_TOKEN` variable to be present @@ -605,8 +504,8 @@ and run the tests, use: ```sh git -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git pull -xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git -xpm run test-pre-release -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git +xpm run install -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets +xpm run test-pre-release -C ~/Work/xpack-dev-tools/riscv-none-elf-gcc-xpack.git/build-assets ``` For even more tests, on each platform (MacOS, GNU/Linux, Windows), @@ -620,68 +519,22 @@ On macOS, remove the `com.apple.quarantine` flag: xattr -cr ${HOME}/Downloads/xpack-* ``` -Functional tests cannot run on CI since they require physical hardware. - -For the simplest functional case, plug a common board like the -STM32F4DISCOVERY into an USB port, start the program and check -if the CPU is identified. - -Note: If this is the first time riscv-none-elf-gcc is executed, on GNU/Linux -it is necessary -to configure the rights, otherwise LIBUSB will issue the _libusb_open -failed: LIBUSB_ERROR_ACCESS_ error. - - { -`sudo cp ~/Downloads/xpack-riscv-none-elf-gcc-${ customField('upstreamVersion') }-${ customField('xpackSubversion') }/contrib/60-riscv-none-elf-gcc.rules /etc/udev/rules.d -sudo udevadm control --reload-rules` -} - -Then it is possible to start riscv-none-elf-gcc: - - { -`$ .../xpack-riscv-none-elf-gcc-${ customField('upstreamVersion') }-${ customField('xpackSubversion') }/bin/riscv-none-elf-gcc -f "board/stm32f4discovery.cfg" -xPack Open On-Chip Debugger ${ customField('upstreamVersion') }-01004-g9ea7f3d64-dirty -Licensed under GNU GPL v2 -For bug reports, read - https://riscv-none-elf-gcc.org/doc/doxygen/bugs.html -Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD -srst_only separate srst_nogate srst_open_drain connect_deassert_srst - -Info : Listening on port 6666 for tcl connections -Info : Listening on port 4444 for telnet connections -Info : clock speed 2000 kHz -Info : STLINK V2J39S0 (API v2) VID:PID 0483:3748 -Info : Target voltage: 2.901598 -Info : [stm32f4x.cpu] Cortex-M4 r0p1 processor detected -Info : [stm32f4x.cpu] target has 6 breakpoints, 4 watchpoints -Info : starting gdb server for stm32f4x.cpu on 3333 -Info : Listening on port 3333 for gdb connections -[stm32f4x.cpu] halted due to breakpoint, current mode: Handler HardFault -xPSR: 0x61000003 pc: 0x080002d6 msp: 0x2001ff78 -^C -shutdown command invoked` -} - -Note: on recent macOS systems it might be necessary to allow individual -programs to run. - -For a more thorough test, run a debug session with -the Eclipse STM32F4DISCOVERY blinky test -available in the xpack-arm-none-eabi-riscv-none-elf-gcc package, which uses -the `-f "board/stm32f4discovery.cfg"` configuration file -(import the `arm-f4b-fs` project and start the `arm-f4b-fs-debug-oocd` -launcher). - -## Create a new GitHub pre-release draft - -- in `CHANGELOG.md`, add the release date and a message like _* v{ customField('upstreamVersion') }-{ customField('xpackSubversion') } released_ -- commit with _CHANGELOG update_ -- check and possibly update the `templates/body-github-release-liquid.md` -- push the `xpack-develop` branch -- run the xPack action `trigger-workflow-publish-release` + + +## Publish the release + +### Create a new GitHub pre-release draft + +- in `CHANGELOG.md`, add the release date and a message + like _**\* v{ customField('upstreamVersion') }-{ customField('xpackSubversion') } released**_ +- commit with _**CHANGELOG update**_ +- check and possibly update the `build-assets/templates/body-github-release-liquid.mdx` +- push the `xpack-development` branch +- run the xPack action + - **`trigger-workflow-publish-release`** The workflow result and logs are available from the -[Actions](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/actions/) page. +[GitHub Actions](https://github.com/xpack-dev-tools/openocd-xpack/actions/) page. The result is a [draft pre-release](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/) @@ -689,37 +542,22 @@ tagged like **v{ customField('upstreamVersion') }-{ customField('xpackSubversion named like **xPack GNU RISC-V Embedded GCC v{ customField('upstreamVersion') }-{ customField('xpackSubversion') }** (mind the dash), with all binaries attached. -- edit the draft and attach it to the `xpack-develop` branch (important!) +- edit the draft and attach it to the `xpack-development` branch (important!) - save the draft (do **not** publish yet!) -## Prepare a new blog post +### Prepare a new blog post -- check and possibly update the `templates/body-jekyll-release-*-liquid.md` -- run the xPack action `generate-jekyll-post`; this will leave a file -on the Desktop. +- check and possibly update the `build-assets/templates/body-blog-release-*-liquid.md` +- run the xPack action + - **`generate-website-blog-post`**; this will add a file +in the `website/blog` folder. +- edit the front matter properties +- select the summary -In the `xpack/web-jekyll` GitHub repo: - -- select the `develop` branch -- copy the new file to `_posts/releases/riscv-none-elf-gcc` - -If any, refer to closed -[issues](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/issues/). - -## Update the preview Web - -- commit the `develop` branch of `xpack/web-jekyll` GitHub repo; - use a message like _xPack GNU RISC-V Embedded GCC v{ customField('upstreamVersion') }-{ customField('xpackSubversion') } released_ -- push to GitHub -- wait for the GitHub Pages build to complete -- the preview web is https://xpack.github.io/web-preview/news/ +### Create the GitHub pre-release -## Create the pre-release - -- go to the GitHub [Releases](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/) page +- go to the [GitHub Releases](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/) page - perform the final edits and check if everything is fine -- temporarily fill in the _Continue Reading »_ with the URL of the - web-preview release - **keep the pre-release button enabled** - do not enable Discussions yet - publish the release @@ -727,65 +565,63 @@ If any, refer to closed Note: at this moment the system should send a notification to all clients watching this project. -## Update the READMEs listings and examples +### Update the web install page -- check and possibly update the output of `tree -L 2` in README -- check and possibly update the output of the `--version` runs in README-MAINTAINER +- check and possibly update the output of the `--version` runs in `website/docs/install/_install-*.mdx` - commit changes -## Check the list of links in package.json +### Check the list of links in package.json - open the `package.json` file - check if the links in the `bin` property cover the actual binaries - if necessary, also check on Windows -## Update package.json binaries +### Update the package.json list of binaries -- select the `xpack-develop` branch -- run the xPack action `update-package-binaries` -- open the `package.json` file +- select the `xpack-development` branch +- run the xPack action + - **`update-package-binaries`** +- open the top `package.json` file - check the `baseUrl:` it should match the file URLs (including the tag/version); no terminating `/` is required - from the release, check the SHA & file names - compare the SHA sums with those shown by `cat *.sha` - check the executable names - commit all changes, use a message like - _package.json: update urls for { customField('upstreamVersion') }-{ customField('xpackSubversion') }.{ customField('npmSubversion') } release_ (without _v_) + _**package.json: update urls for { customField('upstreamVersion') }-{ customField('xpackSubversion') }.{ customField('npmSubversion') } release**_ (without _v_) -## Publish on the npmjs.com server +### Publish on the npmjs.com server -- select the `xpack-develop` branch +- select the `xpack-development` branch - check the latest commits `npm run git-log` -- update `CHANGELOG.md`, add a line like _* v{ customField('upstreamVersion') }-{ customField('xpackSubversion') } published on npmjs.com_ -- commit with a message like _CHANGELOG: publish npm v{ customField('upstreamVersion') }-{ customField('xpackSubversion') }.{ customField('npmSubversion') }_ +- update `CHANGELOG.md`, add a line like _**\* v{ customField('upstreamVersion') }-{ customField('xpackSubversion') } published on npmjs.com**_ +- commit with a message like _**CHANGELOG: publish npm v{ customField('upstreamVersion') }-{ customField('xpackSubversion') }.{ customField('npmSubversion') }**_ - `npm pack` and check the content of the archive, which should list only the `package.json`, the `README.md`, `LICENSE` and `CHANGELOG.md`; possibly adjust `.npmignore` -- npm version { customField('upstreamVersion') }-{ customField('xpackSubversion') }.{ customField('npmSubversion') }; the first 4 numbers are the same as the +- npm version { customField('upstreamVersion') }-{ customField('xpackSubversion') }.{ customField('npmSubversion') }; the first 4 numbers are the same as the GitHub release; the fifth number is the npm specific version - the commits and the tag should have been pushed by the `postversion` script; if not, push them with `git push origin --tags` -- `npm publish --tag next` (use `npm publish --access public` +- **`npm publish --tag next`** (use `npm publish --access public` when publishing for the first time; add the `next` tag) After a few moments the version will be visible at: - https://www.npmjs.com/package/@xpack-dev-tools/riscv-none-elf-gcc?activeTab=versions -## Test if the binaries can be installed with xpm +### Test if the binaries can be installed with xpm -Run the xPack action `trigger-workflow-test-xpm`, this -will install the package via `xpm install` on all supported platforms. +Run the xPack action -The tests results are available from the -[Actions](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/actions/) page. +- **`trigger-workflow-test-xpm`** -## Update the repo +This will install the package via `xpm install` on all supported platforms. -- merge `xpack-develop` into `xpack` -- push to GitHub +The tests results are available from the +[GitHub Actions](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/actions/) page. -## Tag the npm package as `latest` +### Tag the npm package as `latest` When the release is considered stable, promote it as `latest`: @@ -797,55 +633,64 @@ In case the previous version is not functional and needs to be unpublished: - npm unpublish @xpack-dev-tools/riscv-none-elf-gcc@{ customField('upstreamVersion') }-{ customField('xpackSubversion') }.{ customField('npmSubversion') } -## Update the Web +### Update the repo & publish the website -- in the `master` branch, merge the `develop` branch -- wait for the GitHub Pages build to complete -- the result is in https://xpack.github.io/news/ +- merge `xpack-development` into `xpack` +- push to GitHub + +At this moment the website is also generated. + +- the result is in https://xpack-dev-tools.github.io/riscv-none-elf-gcc-xpack/blog/ - remember the post URL, since it must be updated in the release page -## Create the final GitHub release +### Create the final GitHub release -- go to the GitHub [Releases](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/) page +- go to the [GitHub Releases](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/) page - check the download counter, it should match the number of tests -- add a link to the Web page `[Continue reading »]()`; use an same blog URL +- add a link to the Web blog `[Continue reading »]()`; use an same blog URL - remove the _tests only_ notice - **disable** the **pre-release** button - click the **Update Release** button -## Share on Twitter - -- in a separate browser windows, open [X/Twitter](https://twitter.com) -- using the `@xpack_project` account -- paste the release name like **xPack GNU RISC-V Embedded GCC v{ customField('upstreamVersion') }-{ customField('xpackSubversion') } released** -- paste the link to the Web page - [release](/blog/) -- click the **Tweet** button - -## Check SourceForge mirror +### Check SourceForge mirror - https://sourceforge.net/projects/riscv-none-elf-gcc-xpack/files/ -## Remove the pre-release binaries +## Cleanups + +### Remove the pre-release binaries - go to https://github.com/xpack-dev-tools/pre-releases/releases/tag/test/ - remove the test binaries -## Clean the work area +### Clean the work area -Run the xPack action `trigger-workflow-deep-clean`, this -will remove the build folders on all supported platforms. +Run the xPack action + + - **`trigger-workflow-deep-clean`** + +This will remove the build folders on all self-hosted runners. The results are available from the -[Actions](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/actions/) page. +[GitHub Actions](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/actions/) page. + +## Share on Twitter + +- in a separate browser windows, open [X/Twitter](https://twitter.com) +- using the **`@xpack_project`** account +- paste the release name like _**xPack GNU RISC-V Embedded GCC v{ customField('upstreamVersion') }-{ customField('xpackSubversion') } released**_ +- paste the link to the blog post + [release](https://xpack.github.io/riscv-none-elf-gcc/releases/) +- click the **Tweet** button + + -## Download analytics +## Analytics - GitHub [`xpack-dev-tools/riscv-none-elf-gcc-xpack`](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/) repo - latest xPack release [![Github All Releases](https://img.shields.io/github/downloads/xpack-dev-tools/riscv-none-elf-gcc-xpack/latest/total.svg)](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/) - all xPack releases [![Github All Releases](https://img.shields.io/github/downloads/xpack-dev-tools/riscv-none-elf-gcc-xpack/total.svg)](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/) - - previous GNU MCU Eclipse all releases [![Github All Releases](https://img.shields.io/github/downloads/gnu-mcu-eclipse/riscv-none-elf-gcc/total.svg)](https://github.com/gnu-mcu-eclipse/riscv-none-elf-gcc/releases/) - [individual file counters](https://somsubhra.github.io/github-release-stats/?username=xpack-dev-tools&repository=riscv-none-elf-gcc-xpack) (grouped per release) - npmjs.com [`@xpack-dev-tools/riscv-none-elf-gcc`](https://www.npmjs.com/package/@xpack-dev-tools/riscv-none-elf-gcc/) xPack - latest release, per month diff --git a/website/docs/user-info/_common/_libraries-and-rpath.mdx b/website/docs/user-info/_common/_libraries-and-rpath.mdx index 30bd966..36f65f2 100644 --- a/website/docs/user-info/_common/_libraries-and-rpath.mdx +++ b/website/docs/user-info/_common/_libraries-and-rpath.mdx @@ -5,9 +5,8 @@ ## Shared libraries -On all platforms the binary xPack packages are standalone, -and expect only the standard -runtime to be present on the host. +On all platforms the binary xPack packages are **standalone**, +and expect only the standard runtime to be present on the host. All dependencies that are built as shared libraries are copied locally in the `libexec` folder (or in the same folder as the executable for Windows). @@ -17,7 +16,7 @@ in the `libexec` folder (or in the same folder as the executable for Windows). On GNU/Linux the binaries are adjusted to use a relative path: ```console -$ readelf -d library.so | grep runpath +$ readelf -d library.so | grep rpath 0x000000000000001d (RPATH) Library rpath: [$ORIGIN] ``` diff --git a/website/docs/user-info/_common/_versioning.mdx b/website/docs/user-info/_common/_versioning.mdx index de59d6b..d226153 100644 --- a/website/docs/user-info/_common/_versioning.mdx +++ b/website/docs/user-info/_common/_versioning.mdx @@ -12,7 +12,8 @@ import LinksVsForwarders from '@site/src/components/LinksVsForwarders' ## Versioning -The version string used by the { props.upstreamName ? props.upstreamName : 'GNU RISC-V Embedded GCC' } project +The version string used by the +upstream { props.upstreamName ? props.upstreamName : 'GNU RISC-V Embedded GCC' } project is a three number string like { customField('upstreamVersion') }; to this string the xPack distribution adds a fourth number, diff --git a/website/docs/user-info/_more.mdx b/website/docs/user-info/_more.mdx new file mode 100644 index 0000000..ec0fd51 --- /dev/null +++ b/website/docs/user-info/_more.mdx @@ -0,0 +1,262 @@ + +{/* ------------------------------------------------------------------------ */} + +## riscv-none-elf-gcc + +After installing the toolchain, the result is a large set of programs +prefixed by `riscv-none-elf-`. For those used to other RISC-V +toolchains, there is no `riscv64-` or `riscv32-` prefix since +the word size is +actually not needed, the RISC-V toolchain produces both 32/64-bit binaries, +based on `-march` and `-mabi`. + +### `-march` and `-mabi` + +The RISC-V CPU is not defined as a single architecture, but as a family of +architectures, with optional extensions, identified by letters. + +RISC-V ISA strings begin with either RV32I, RV32E, RV64I, or RV128I, +the numerical value +indicating the register size in bits for the base integer ISA. + +- RV32I: A load-store ISA with 32 general-purpose integer registers of 32-bit +- RV32E: An embedded flavour of RV32I with only 16 integer registers of 32-bit +- RV64I: A 64-bit flavour of RV32I where the general-purpose integer registers + are 64-bit wide. + +In addition to these base ISAs, a large number of extensions have been +specified. The most used extensions that have both been specified +and are supported by the toolchain are: + +- M: Integer Multiplication and Division +- A: Atomics +- F: Single-Precision Floating-Point +- D: Double-Precision Floating-Point +- C: 16-bit Compressed Instructions +- Zicsr: Control and Status Register (CSR) +- Zifencei: Instruction-Fetch Fence +- G: General, a shortcut to IMAFD, Zicsr, Zifencei + +RISC-V ISA strings are defined by appending the supported extensions to the +base ISA in the order listed above. For example, the RISC-V ISA with +32-bit integer registers and the instructions to for multiplication would +be denoted as "RV32IM". Users can control the set of instructions that GCC +uses when generating assembly code by passing the lower-case ISA string to +the `-march` GCC option: for example `-march=rv32imac`. + +There are some other extensions. For more details, please see +[The RISC-V ISA Specification, Volume I: Unprivileged Spec](https://riscv.org/specifications/). + +In addition to controlling the instructions used by GCC during code +generation, users can select from various ABIs (which define +the calling convention and layout of objects in memory). +It is recommended for objects and +libraries to follow the same ABI, and not rely on the toolchain +logic for matching multilibs. + +RISC-V defines two integer ABIs and three floating-point ABIs, which +together are treated as a single ABI string. The integer ABIs follow the +standard ABI naming scheme: + +- `ilp32`: "int", "long", and pointers are all 32-bit long. "long long" is + a 64-bit type, "char" is 8-bit, and "short" is 16-bit. +- `lp64`: "long" and pointers are 64-bit long, while "int" is a 32-bit type. + The other types remain the same as ilp32. + +Compilers also implement a `ilp32e` ABI for small embedded devices, but its +standardisation status is not clear at this moment. + +while the floating-point ABIs are a RISC-V specific addition: + +- "" (the empty string): No floating-point arguments are passed in registers. +- `f`: 32-bit and smaller floating-point arguments are passed in registers. + This ABI requires the F extension, as without F there are no + floating-point registers. +- `d`: 64-bit and smaller floating-point arguments are passed in registers. + This ABI requires the D extension. + +ABI strings, possibly extended with `f` or `d`, are passed via +the `-mabi` argument to GCC. For example: + +- `-march=rv32imafdc -mabi=ilp32d`: Hardware floating-point instructions can + be generated and floating-point arguments are passed in registers. This + is like the `-mfloat-abi=hard` option to Arm's GCC. +- `-march=rv32imac -mabi=ilp32`: No floating-point instructions can be + generated and no floating-point arguments are passed in registers. This + is like the `-mfloat-abi=soft` argument to Arm's GCC. +- `-march=rv32imafdc -mabi=ilp32`: Hardware floating-point instructions can + be generated, but no floating-point arguments will be passed in + registers. This is like the `-mfloat-abi=softfp` argument to Arm's GCC, + and is usually used when interfacing with soft-float binaries on a + hard-float system. +- `-march=rv32imac -mabi=ilp32d`: Illegal, as the ABI requires floating-point + arguments are passed in registers but the ISA defines no floating-point + registers to pass them in. + +### `_zicsr` and `_zifencei` + +Starting with 12.x, the GCC compiler +implemented the new RISC-V ISA, which introduces an incompatibility with +early compilers, +therefore it is possible that builds will throw error messages +like _unrecognized opcode `csrr`_. + +The reason is that csr read/write (`csrr*`/`csrw*`) +instructions and `fence.i` instruction were separated from the `I` +extension, becoming two standalone extensions: `Zicsr` and `Zifencei`. + +The solution is to add `_zicsr` and/or `_zifencei` to the +`-march` option, e.g. `-march=rv32imac` becomes +`-march=rv32imac_zicsr_zifencei`. + +### newlib-nano + +Support for **newlib-nano** is available using the +`--specs=nano.specs` option. + +:::tip + +For better results, this option must be +added to both the compile and link steps. + +::: + +### nosys.specs + +If no syscalls are needed, `--specs=nosys.specs` can be used at link +time to provide empty implementations of the POSIX system calls. + +### `-mcmodel=medany` + +The libraries are compiled with `-O2 -mcmodel=medany`. The nano version is +compiled with `-Os -mcmodel=medany`. + +:::caution + +It is mandatory for the applications to +be compiled with +`-mcmodel=medany`, otherwise the link will fail. + +::: + +### Multiple libraries + +Due to the large number of architectures and ABIs defined for RISC-V, not all +possible combinations are actually available. + +Please check the release for the actual list. + +## Python + +Support for Python scripting was added to GDB. This distribution provides +a separate binary, `riscv-none-elf-gdb-py3` with +support for **Python**. + +The Python 3 run-time is included, so GDB does not need any version of +Python to be installed, and is insensitive to the presence of other +versions. + +## Integration with Eclipse + +**The GNU RISC-V Embedded GCC** is fully integrated into +[Eclipse Embedded CDT](https://eclipse-embed-cdt.github.io). + +Eclipse provides full support for configure the RISC-V projects, +both in the build and the debug phase. + +## Automated testing + +In addition to integrating into regular development environments, +like Eclipse, GNU RISC-V Embedded GCC can be used for building +unit tests, in CI/CD environments. + +### CMake example + +The easiest way to build automated tests is with CMake in xPack applications. + +For CMake cross-build projects, it is necessary to pass a +`-D CMAKE_TOOLCHAIN_FILE` +with the path to the toolchain definition. + +A possible such file is +[riscv-none-elf-gcc.cmake](https://github.com/micro-os-plus/build-helper-xpack/blob/xpack/cmake/toolchains/riscv-none-elf-gcc.cmake), part of the +[µOS++](https://micro-os-plus.github.io) +build [helper](https://github.com/micro-os-plus/build-helper-xpack/). + +:::tip Windows + +Since on Windows the xPack OpenOCD uses `.cmd` forwarders, it is necessary +to explicitly define the extension, later used when invoking `openocd`: + +```cmake +if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") + set(extension ".cmd") +endif() +``` + +::: + +To run the test, the semihosted application can be directly +executed by QEMU, which provides a good RISC-V emulation. + +An example of a unit test running on QEMU is: + +```cmake +if (ENABLE_UNIT_TEST) + + add_executable(unit-test) + set_target_properties(unit-test PROPERTIES OUTPUT_NAME "unit-test") + + // ... definitions to build the application with semihosting support ... + + add_test( + NAME "unit-test" + + COMMAND qemu-system-riscv32${extension} + --machine virt + --cpu rv32 + --kernel unit-test.elf + --nographic + -smp 1 + -bios none + -d unimp,guest_errors + --semihosting-config enable=on,target=native,arg=unit-test + ) + +endif () +``` + +In an xPack application, the tests can be invoked by running an xPack action, +like this: + +```sh +xpm run test +``` + +This asssumes that in `package.json` there is an action named `test` +and that all required tools were previously installed: + +```json +{ + "...": "...", + + "xpack": { + "actions": { + "...": "...", + "test": "ctest -V" + }, + "devDependencies": { + "@xpack-dev-tools/cmake": "3.26.5-1.1", + "@xpack-dev-tools/ninja-build": "1.11.1-3.1", + "@xpack-dev-tools/qemu-riscv": "8.2.2-1.1", + "@xpack-dev-tools/riscv-none-elf-gcc": "12.3.1-1.2.1" + } + } +} +``` + +The xPack action runs the defined command (`ctest -V` in this case) +in an environment where `xpacks/.bin` is prepended to the PATH, so +the tools installed locally by **xpm** are available and prefered to +possibly other similar tools installed in the system, thus +achieving a good reproducibility. diff --git a/website/docs/user-info/_versioning.mdx b/website/docs/user-info/_versioning.mdx new file mode 100644 index 0000000..d6c02f8 --- /dev/null +++ b/website/docs/user-info/_versioning.mdx @@ -0,0 +1,6 @@ + +import Versioning from './_common/_versioning.mdx'; + +{/* ------------------------------------------------------------------------ */} + + diff --git a/website/docs/user-info/index.mdx b/website/docs/user-info/index.mdx index 7408fb3..805d319 100644 --- a/website/docs/user-info/index.mdx +++ b/website/docs/user-info/index.mdx @@ -1,4 +1,8 @@ --- + +# DO NOT EDIT! +# Automatically generated from xbb-helper/templates/docusaurus/common. + title: Information for xPack GNU RISC-V Embedded GCC users date: 2024-07-11 18:56:00 +0300 @@ -7,274 +11,17 @@ date: 2024-07-11 18:56:00 +0300 import customField from '@site/src/libs/customField'; -import Versioning from './_common/_versioning.mdx'; +import Versioning from './_versioning.mdx'; import LibrariesAndRpath from './_common/_libraries-and-rpath.mdx'; +import More from './_more.mdx'; {/* ------------------------------------------------------------------------ */} This page is intended for those who plan -to use the **GNU RISC-V Embedded GCC** binaries in their workflows. +to use the **xPack GNU RISC-V Embedded GCC** binaries in their workflows. - + -## riscv-none-elf-gcc - -After installing the toolchain, the result is a large set of programs -prefixed by `riscv-none-elf-`. For those used to other RISC-V -toolchains, there is no `riscv64-` or `riscv32-` prefix since -the word size is -actually not needed, the RISC-V toolchain produces both 32/64-bit binaries, -based on `-march` and `-mabi`. - -### `-march` and `-mabi` - -The RISC-V CPU is not defined as a single architecture, but as a family of -architectures, with optional extensions, identified by letters. - -RISC-V ISA strings begin with either RV32I, RV32E, RV64I, or RV128I, -the numerical value -indicating the register size in bits for the base integer ISA. - -- RV32I: A load-store ISA with 32 general-purpose integer registers of 32-bit -- RV32E: An embedded flavour of RV32I with only 16 integer registers of 32-bit -- RV64I: A 64-bit flavour of RV32I where the general-purpose integer registers - are 64-bit wide. - -In addition to these base ISAs, a large number of extensions have been -specified. The most used extensions that have both been specified -and are supported by the toolchain are: - -- M: Integer Multiplication and Division -- A: Atomics -- F: Single-Precision Floating-Point -- D: Double-Precision Floating-Point -- C: 16-bit Compressed Instructions -- Zicsr: Control and Status Register (CSR) -- Zifencei: Instruction-Fetch Fence -- G: General, a shortcut to IMAFD, Zicsr, Zifencei - -RISC-V ISA strings are defined by appending the supported extensions to the -base ISA in the order listed above. For example, the RISC-V ISA with -32-bit integer registers and the instructions to for multiplication would -be denoted as "RV32IM". Users can control the set of instructions that GCC -uses when generating assembly code by passing the lower-case ISA string to -the `-march` GCC option: for example `-march=rv32imac`. - -There are some other extensions. For more details, please see -[The RISC-V ISA Specification, Volume I: Unprivileged Spec](https://riscv.org/specifications/). - -In addition to controlling the instructions used by GCC during code -generation, users can select from various ABIs (which define -the calling convention and layout of objects in memory). -It is recommended for objects and -libraries to follow the same ABI, and not rely on the toolchain -logic for matching multilibs. - -RISC-V defines two integer ABIs and three floating-point ABIs, which -together are treated as a single ABI string. The integer ABIs follow the -standard ABI naming scheme: - -- `ilp32`: "int", "long", and pointers are all 32-bit long. "long long" is - a 64-bit type, "char" is 8-bit, and "short" is 16-bit. -- `lp64`: "long" and pointers are 64-bit long, while "int" is a 32-bit type. - The other types remain the same as ilp32. - -Compilers also implement a `ilp32e` ABI for small embedded devices, but its -standardisation status is not clear at this moment. - -while the floating-point ABIs are a RISC-V specific addition: - -- "" (the empty string): No floating-point arguments are passed in registers. -- `f`: 32-bit and smaller floating-point arguments are passed in registers. - This ABI requires the F extension, as without F there are no - floating-point registers. -- `d`: 64-bit and smaller floating-point arguments are passed in registers. - This ABI requires the D extension. - -ABI strings, possibly extended with `f` or `d`, are passed via -the `-mabi` argument to GCC. For example: - -- `-march=rv32imafdc -mabi=ilp32d`: Hardware floating-point instructions can - be generated and floating-point arguments are passed in registers. This - is like the `-mfloat-abi=hard` option to Arm's GCC. -- `-march=rv32imac -mabi=ilp32`: No floating-point instructions can be - generated and no floating-point arguments are passed in registers. This - is like the `-mfloat-abi=soft` argument to Arm's GCC. -- `-march=rv32imafdc -mabi=ilp32`: Hardware floating-point instructions can - be generated, but no floating-point arguments will be passed in - registers. This is like the `-mfloat-abi=softfp` argument to Arm's GCC, - and is usually used when interfacing with soft-float binaries on a - hard-float system. -- `-march=rv32imac -mabi=ilp32d`: Illegal, as the ABI requires floating-point - arguments are passed in registers but the ISA defines no floating-point - registers to pass them in. - -### `_zicsr` and `_zifencei` - -Starting with 12.x, the GCC compiler -implemented the new RISC-V ISA, which introduces an incompatibility with -early compilers, -therefore it is possible that builds will throw error messages -like _unrecognized opcode `csrr`_. - -The reason is that csr read/write (`csrr*`/`csrw*`) -instructions and `fence.i` instruction were separated from the `I` -extension, becoming two standalone extensions: `Zicsr` and `Zifencei`. - -The solution is to add `_zicsr` and/or `_zifencei` to the -`-march` option, e.g. `-march=rv32imac` becomes -`-march=rv32imac_zicsr_zifencei`. - -### newlib-nano - -Support for **newlib-nano** is available using the -`--specs=nano.specs` option. - -:::tip - -For better results, this option must be -added to both the compile and link steps. - -::: - -### nosys.specs - -If no syscalls are needed, `--specs=nosys.specs` can be used at link -time to provide empty implementations of the POSIX system calls. - -### `-mcmodel=medany` - -The libraries are compiled with `-O2 -mcmodel=medany`. The nano version is -compiled with `-Os -mcmodel=medany`. - -:::caution - -It is mandatory for the applications to -be compiled with -`-mcmodel=medany`, otherwise the link will fail. - -::: - -### Multiple libraries - -Due to the large number of architectures and ABIs defined for RISC-V, not all -possible combinations are actually available. - -Please check the release for the actual list. - -## Python - -Support for Python scripting was added to GDB. This distribution provides -a separate binary, `riscv-none-elf-gdb-py3` with -support for **Python**. - -The Python 3 run-time is included, so GDB does not need any version of -Python to be installed, and is insensitive to the presence of other -versions. - -## Integration with Eclipse - -**The GNU RISC-V Embedded GCC** is fully integrated into -[Eclipse Embedded CDT](https://eclipse-embed-cdt.github.io). - -Eclipse provides full support for configure the RISC-V projects, -both in the build and the debug phase. - -## Automated testing - -In addition to integrating into regular development environments, -like Eclipse, GNU RISC-V Embedded GCC can be used for building -unit tests, in CI/CD environments. - -### CMake example - -The easiest way to build automated tests is with CMake in xPack applications. - -For CMake cross-build projects, it is necessary to pass a -`-D CMAKE_TOOLCHAIN_FILE` -with the path to the toolchain definition. - -A possible such file is -[riscv-none-elf-gcc.cmake](https://github.com/micro-os-plus/build-helper-xpack/blob/xpack/cmake/toolchains/riscv-none-elf-gcc.cmake), part of the -[µOS++](https://micro-os-plus.github.io) -build [helper](https://github.com/micro-os-plus/build-helper-xpack/). - -:::tip Windows - -Since on Windows the xPack OpenOCD uses `.cmd` forwarders, it is necessary -to explicitly define the extension, later used when invoking `openocd`: - -```cmake -if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") - set(extension ".cmd") -endif() -``` - -::: - -To run the test, the semihosted application can be directly -executed by QEMU, which provides a good RISC-V emulation. - -An example of a unit test running on QEMU is: - -```cmake -if (ENABLE_UNIT_TEST) - - add_executable(unit-test) - set_target_properties(unit-test PROPERTIES OUTPUT_NAME "unit-test") - - // ... definitions to build the application with semihosting support ... - - add_test( - NAME "unit-test" - - COMMAND qemu-system-riscv32${extension} - --machine virt - --cpu rv32 - --kernel unit-test.elf - --nographic - -smp 1 - -bios none - -d unimp,guest_errors - --semihosting-config enable=on,target=native,arg=unit-test - ) - -endif () -``` - -In an xPack application, the tests can be invoked by running an xPack action, -like this: - -```sh -xpm run test -``` - -This asssumes that in `package.json` there is an action named `test` -and that all required tools were previously installed: - -```json -{ - "...": "...", - - "xpack": { - "actions": { - "...": "...", - "test": "ctest -V" - }, - "devDependencies": { - "@xpack-dev-tools/cmake": "3.26.5-1.1", - "@xpack-dev-tools/ninja-build": "1.11.1-3.1", - "@xpack-dev-tools/qemu-riscv": "8.2.2-1.1", - "@xpack-dev-tools/riscv-none-elf-gcc": "12.3.1-1.2.1" - } - } -} -``` - -The xPack action runs the defined command (`ctest -V` in this case) -in an environment where `xpacks/.bin` is prepended to the PATH, so -the tools installed locally by **xpm** are available and prefered to -possibly other similar tools installed in the system, thus -achieving a good reproducibility. + diff --git a/website/docusaurus.config.ts b/website/docusaurus.config.ts index ff31c62..05cb2a9 100644 --- a/website/docusaurus.config.ts +++ b/website/docusaurus.config.ts @@ -1,8 +1,8 @@ // DO NOT EDIT! // Automatically generated from xbb-helper/templates/docusaurus/common. -import {themes as prismThemes} from 'prism-react-renderer'; -import type {Config} from '@docusaurus/types'; +import { themes as prismThemes } from 'prism-react-renderer'; +import type { Config } from '@docusaurus/types'; import type * as Preset from '@docusaurus/preset-classic'; import logger from '@docusaurus/logger'; @@ -19,21 +19,12 @@ function getCustomFields() { const pwd = fileURLToPath(import.meta.url); // logger.info(pwd); - let filePath - let fileContent + // First get the version from the top package.json. + const topFilePath = path.join(path.dirname(path.dirname(pwd)), 'package.json'); + // logger.info(filePath); + const topFileContent = fs.readFileSync(topFilePath); - try { - filePath = path.join(path.dirname(path.dirname(pwd)), 'build-assets', 'package.json'); - // logger.info(filePath); - fileContent = fs.readFileSync(filePath); - } catch (error) { - // Try again with the top file. - filePath = path.join(path.dirname(path.dirname(pwd)), 'package.json'); - // logger.info(filePath); - fileContent = fs.readFileSync(filePath); - } - - const topPackageJson = JSON.parse(fileContent.toString()); + const topPackageJson = JSON.parse(topFileContent.toString()); const jsonVersion = topPackageJson.version.replace(".pre", ""); logger.info(`package version: ${topPackageJson.version}`); @@ -43,9 +34,19 @@ function getCustomFields() { const xpackSubversion = rest1.replace(/^.*[-]/, ''); const upstreamVersion = rest1.replace(/[-][0-9]*$/, ''); + let rootPackageJson + try { + const rootFilePath = path.join(path.dirname(path.dirname(pwd)), 'build-assets', 'package.json'); + // logger.info(filePath); + const rootFileContent = fs.readFileSync(rootFilePath); + rootPackageJson = JSON.parse(rootFileContent.toString()); + } catch (error) { + rootPackageJson = topPackageJson; + } + return { - appName: topPackageJson.xpack.properties.appName, - appLcName: topPackageJson.xpack.properties.appLcName, + appName: rootPackageJson.xpack.properties.appName, + appLcName: rootPackageJson.xpack.properties.appLcName, upstreamVersion, xpackSubversion, npmSubversion, @@ -98,7 +99,7 @@ const config: Config = { 'https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/edit/xpack/website/', // showLastUpdateAuthor: true, showLastUpdateTime: true, - }, + }, blog: { showReadingTime: true, // Please change this to your repo. @@ -106,6 +107,7 @@ const config: Config = { editUrl: 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', showLastUpdateTime: true, + blogSidebarCount: 8, authorsMapPath: '../authors.yml', }, theme: {