Awesome
ckormanyos/gcc-rx-elf
<p align="center"> <a href="https://github.com/ckormanyos/gcc-rx-elf/actions"> <img src="https://github.com/ckormanyos/gcc-rx-elf/actions/workflows/build-ubuntu.yml/badge.svg" alt="build-ubuntu"></a> <a href="https://github.com/ckormanyos/gcc-rx-elf/actions"> <img src="https://github.com/ckormanyos/gcc-rx-elf/actions/workflows/build-msys64.yml/badge.svg" alt="build-msys64"></a> <a href="https://github.com/ckormanyos/gcc-rx-elf/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc"> <img src="https://custom-icon-badges.herokuapp.com/github/issues-raw/ckormanyos/gcc-rx-elf?logo=github" alt="Issues" /></a> <a href="https://github.com/ckormanyos/gcc-rx-elf/blob/main/UNLICENSE"> <img src="https://img.shields.io/badge/license-The Unlicense-blue.svg" alt="The Unlicense"></a> </p>ckormanyos/gcc-rx-elf
provides shell and YAML scripts to build a modern gcc-rx-elf
.
Design goals:
- Use shell and YAML scripts to build modern
gcc-rx-elf
on-the-fly. - Build
gcc-rx-elf
from up-to-date gcc-releases. - Provide a non-trivial test of the newly-built toolchain(s) based on a real-world project.
- Publish the build artifacts directly from the GHA Workflow-Run(s).
- Occasionally create and publish versioned releases.
Releases and Build Artifacts
Using released or CI-built artifacts can be convenient when you
do not actually want to nor need to manually build
gcc-rx-elf
toolchain.
Releases and build artifacts consisting of the
fully-built gcc-rx-elf
toolchain are occasionally created
and published for x86_64-linux-gnu
(Linux) and
x86_64-w64-mingw32
(Windows). These can be readily found
on the repo front page and in CI workflow-run download-areas
for immediate client use. The releases are permanent, whereby
the built artifacts are limited to three days after the
Workflow-Run(s).
Workflow-Run
Workflow:
- Use the shell script gcc-rx-elf-100.sh consistently in each of the Workflow-Run(s).
- The Workflow-Run build-ubuntu.yml builds
avr-gcc
for the hostx86_64-linux-gnu
. The script is executed on a GHAubuntu-latest
runner. - The Workflow-Run build-msys64.yml builds
avr-gcc
for the hostx86_64-w64-mingw32
. The script is executed on a GHAwindows-latest
runner usingmsys64
. - When building for
x86_64-w64-mingw32
onmsys64
, use a pre-built, dependency-free, statically linkedmingw
and host-compiler (see notes below). This separatemingw
package is unpacked in a directory parallel to the runner workspace and itsbin
directory is added to thePATH
variable. - GCC prerequisites including GMP, MPFR, MPC, etc. are built on-the-fly in the Workflow-Run.
- Build
binutils
and partially verify the build artifacts. - Then build
gcc-rx-elf
and partially verify the build artifacts. Use newlib and the--with-newlib
configuration flag. - Test the complete, newly built
gcc-rx-elf
toolchain with a non-trivial compiler test. In the compiler test, we buildref_app
(the reference application) fromckormanyos/real-time-cpp
. Verify the creation of key build results fromref_app
including ELF-file, HEX-file, map files, etc.
Additional Notes
Notes:
- This project is distributed under The Unlicense.
- This work is similar to the related project
ckormanyos/avr-gcc-build
. - The pre-built, dependency-free, statically linked
mingw
and host-compiler system originate from Steven T. Lavavej'sMinGW Distro
.