Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ckormanyos/avr-gcc-build
avr-gcc built with shell and YAML
https://github.com/ckormanyos/avr-gcc-build
arduino avr avr-gcc avr-gcc-toolchain gcc
Last synced: 3 months ago
JSON representation
avr-gcc built with shell and YAML
- Host: GitHub
- URL: https://github.com/ckormanyos/avr-gcc-build
- Owner: ckormanyos
- License: unlicense
- Created: 2023-12-15T04:28:16.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-07-01T13:31:51.000Z (6 months ago)
- Last Synced: 2024-07-04T02:42:19.127Z (6 months ago)
- Topics: arduino, avr, avr-gcc, avr-gcc-toolchain, gcc
- Language: Shell
- Homepage:
- Size: 58.4 MB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
ckormanyos/avr-gcc-build
==================`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](https://ftp.gnu.org/gnu/gcc).
- 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](./avr-gcc-100.sh) consistently in each of the Workflow-Run(s).
- The Workflow-Run [build-ubuntu.yml](./.github/workflows/build-ubuntu.yml) builds `avr-gcc` for the _host_ `x86_64-linux-gnu`. The script is executed on a GHA `ubuntu-latest` runner.
- The Workflow-Run [build-msys64.yml](./.github/workflows/build-msys64.yml) builds `avr-gcc` for the _host_ `x86_64-w64-mingw32`. The script is executed on a GHA `windows-latest` runner using `msys64`.
- When building for `x86_64-w64-mingw32` on `msys64`, use a pre-built, dependency-free, statically linked `mingw` and host-compiler (see notes below). This separate `mingw` package is unpacked in a directory parallel to the runner workspace and its `bin` directory is added to the `PATH` variable.
- GCC prerequisites including [GMP](https://gmplib.org), [MPFR](https://www.mpfr.org), [MPC](https://www.multiprecision.org), etc. are built on-the-fly in the Workflow-Run.
- Build [`binutils`](https://www.gnu.org/software/binutils) and partially verify the build artifacts.
- Then build `avr-gcc` and partially verify the build artifacts.
- Get the main branch of [`avr-libc`](https://github.com/avrdudes/avr-libc/tags) from [`avrdudes/avr-libc`](https://github.com/avrdudes/avr-libc) and build it with its `--prefix` matching that of the above-mentioned `avr-gcc`-build.
- Test the complete, newly built `avr-gcc` toolchain with a non-trivial compiler test. In the compiler test, we build `ref_app` (the reference application) from [`ckormanyos/real-time-cpp`](https://github.com/ckormanyos). Verify the creation of key build results from `ref_app` including ELF-file, HEX-file, map files, etc.## Additional Notes
Notes:
- This project is distributed under [The Unlicense](./UNLICENSE).
- This work has been inspired by (the similar) project [`ZakKemble/avr-gcc-build`](https://github.com/ZakKemble/avr-gcc-build).
- The pre-built, dependency-free, statically linked `mingw` and host-compiler system originate from Steven T. Lavavej's [`MinGW Distro`](https://nuwen.net/mingw.html).