Awesome
ckormanyos/avr-gcc-build
<p align="center"> <a href="https://github.com/ckormanyos/avr-gcc-build/actions"> <img src="https://github.com/ckormanyos/avr-gcc-build/actions/workflows/build-ubuntu.yml/badge.svg" alt="build-ubuntu"></a> <a href="https://github.com/ckormanyos/avr-gcc-build/actions"> <img src="https://github.com/ckormanyos/avr-gcc-build/actions/workflows/build-msys64.yml/badge.svg" alt="build-msys64"></a> <a href="https://github.com/ckormanyos/avr-gcc-build/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc"> <img src="https://custom-icon-badges.herokuapp.com/github/issues-raw/ckormanyos/avr-gcc-build?logo=github" alt="Issues" /></a> <a href="https://github.com/ckormanyos/avr-gcc-build/blob/main/UNLICENSE"> <img src="https://img.shields.io/badge/license-The Unlicense-blue.svg" alt="The Unlicense"></a> </p>ckormanyos/avr-gcc-build
provides shell and YAML scripts to build a modern avr-gcc
.
Design goals:
- Use shell and YAML scripts to build modern
avr-gcc
on-the-fly. - Build
avr-gcc
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 the
avr-gcc
toolchain.
Releases and build artifacts consisting of the
fully-built avr-gcc
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 avr-gcc-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
avr-gcc
and partially verify the build artifacts. - Get the main branch of
avr-libc
fromavrdudes/avr-libc
and build it with its--prefix
matching that of the above-mentionedavr-gcc
-build. - Test the complete, newly built
avr-gcc
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 has been inspired by (the similar) project
ZakKemble/avr-gcc-build
. - The pre-built, dependency-free, statically linked
mingw
and host-compiler system originate from Steven T. Lavavej'sMinGW Distro
.