├── .gitignore ├── README.md └── .github └── workflows └── build-gcc-arm.yml /.gitignore: -------------------------------------------------------------------------------- 1 | *.7z 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Automatic Windows build of [gcc][] compiler, [gdb][] debugger and [make][] for targeting 32-bit and 64-bit arm bare-metal targets. 2 | 3 | Download 64-bit Windows binary build as 7z archive from [latest release][] page. 4 | 5 | To build binaries locally run `build.sh`. Make sure you have installed all necessary dependencies. 6 | 7 | To build binaries using Docker, run: 8 | 9 | docker run -ti --rm -v `pwd`:/output -e OUTPUT=/output -w /mnt ubuntu:24.04 10 | apt update 11 | DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y \ 12 | ca-certificates libgmp-dev libmpc-dev libmpfr-dev libisl-dev xz-utils texinfo patch bzip2 p7zip cmake make curl m4 gcc g++ mingw-w64 13 | /output/build.sh 32 14 | /output/build.sh 64 15 | exit 16 | 17 | [gcc]: https://gcc.gnu.org/ 18 | [gdb]: https://www.gnu.org/software/gdb/ 19 | [make]: https://www.gnu.org/software/make/ 20 | [latest release]: https://github.com/mmozeiko/build-gcc-arm/releases/latest 21 | -------------------------------------------------------------------------------- /.github/workflows/build-gcc-arm.yml: -------------------------------------------------------------------------------- 1 | 2 | name: build-gcc-arm 3 | 4 | on: 5 | push: 6 | branches: 7 | - main 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-24.04 12 | strategy: 13 | matrix: 14 | arch: [32, 64] 15 | 16 | outputs: 17 | GCC_VERSION: ${{ steps.build.outputs.GCC_VERSION }} 18 | GDB_VERSION: ${{ steps.build.outputs.GDB_VERSION }} 19 | MAKE_VERSION: ${{ steps.build.outputs.MAKE_VERSION }} 20 | OUTPUT_BINARY: ${{ steps.build.outputs.OUTPUT_BINARY }} 21 | 22 | steps: 23 | 24 | - name: checkout 25 | uses: actions/checkout@v4 26 | 27 | - name: install dependencies 28 | run: | 29 | sudo apt install --no-install-recommends -y \ 30 | ca-certificates \ 31 | libgmp-dev \ 32 | libmpc-dev \ 33 | libmpfr-dev \ 34 | libisl-dev \ 35 | xz-utils \ 36 | texinfo \ 37 | patch \ 38 | p7zip \ 39 | cmake \ 40 | make \ 41 | curl \ 42 | m4 \ 43 | gcc \ 44 | g++ \ 45 | mingw-w64 46 | 47 | - name: build 48 | id: build 49 | run: ./build.sh ${{ matrix.arch }} 50 | 51 | - name: upload artifacts 52 | uses: actions/upload-artifact@v4 53 | with: 54 | name: ${{ steps.build.outputs.OUTPUT_BINARY }} 55 | path: ${{ steps.build.outputs.OUTPUT_BINARY }}.7z 56 | if-no-files-found: error 57 | compression-level: 0 58 | 59 | release: 60 | runs-on: ubuntu-24.04 61 | needs: build 62 | permissions: 63 | contents: write 64 | env: 65 | GH_TOKEN: ${{ github.token }} 66 | steps: 67 | 68 | - name: release 69 | run: | 70 | echo 'GCC v${{ needs.build.outputs.GCC_VERSION }}' >>notes.txt 71 | echo 'GDB v${{ needs.build.outputs.GDB_VERSION }}' >>notes.txt 72 | echo 'Make v${{ needs.build.outputs.MAKE_VERSION }}' >>notes.txt 73 | gh release create gcc-v${{ needs.build.outputs.GCC_VERSION }} -R "${GITHUB_REPOSITORY}" -t 'gcc-v${{ needs.build.outputs.GCC_VERSION }}' -F notes.txt 74 | 75 | - name: get artifacts 76 | uses: actions/download-artifact@v4 77 | with: 78 | pattern: gcc-v${{ needs.build.outputs.GCC_VERSION }}-* 79 | merge-multiple: true 80 | 81 | - name: upload artifacts 82 | run: gh release upload 'gcc-v${{ needs.build.outputs.GCC_VERSION }}' gcc-v${{ needs.build.outputs.GCC_VERSION }}-*.7z -R "${GITHUB_REPOSITORY}" 83 | --------------------------------------------------------------------------------