{"id":19953659,"url":"https://github.com/mkende/cygwin-arm-toolchain","last_synced_at":"2026-07-27T06:31:29.285Z","repository":{"id":136704800,"uuid":"475191702","full_name":"mkende/cygwin-arm-toolchain","owner":"mkende","description":"Build a full embedded ARM toolchain on Windows using Cygwin","archived":false,"fork":false,"pushed_at":"2022-04-01T21:53:05.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-10T14:35:24.326Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mkende.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-03-28T21:57:07.000Z","updated_at":"2022-04-01T21:54:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"051c6578-8074-41b5-9dda-5cd0d185768f","html_url":"https://github.com/mkende/cygwin-arm-toolchain","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mkende/cygwin-arm-toolchain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkende%2Fcygwin-arm-toolchain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkende%2Fcygwin-arm-toolchain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkende%2Fcygwin-arm-toolchain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkende%2Fcygwin-arm-toolchain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mkende","download_url":"https://codeload.github.com/mkende/cygwin-arm-toolchain/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkende%2Fcygwin-arm-toolchain/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35941123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-27T02:00:06.776Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T01:17:11.570Z","updated_at":"2026-07-27T06:31:29.255Z","avatar_url":"https://github.com/mkende.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Building a full embedded ARM toolchain on Windows using Cygwin\n\n## Overview\n\nThis tool can be used to build a full ARM toolchain under Cygwin. The tool\ninitially had patch files specific to build on Cygwin, but these bugs were fixed\nin recent version of the GNU tools so this program is actually not specific to\nCygwin in its current state. So it can maybe be used on other platforms. But\nthese other platforms usually have pre-packaged version of the toolchain that\nwill be more conveniant to use (and this tool is tested only under Cygwin).\n\nThe toolchain built by this  tool have been used to build programs for the\nRaspberry Pi RP2040 using the Pico SDK and for various Atmel SAMD devices using\nthe Atmel Start framework.\n\n## Why Cygwin\n\nFor peoples that have or prefer to use Windows, there are these days many\noptions (full virtualization, Windows Subsystem for Linux, native toolchains,\netc.). However, I find that Cygwin has the best balance between a _Linux_\nlook-and-feel and a good  and fast integration with the standard Windows system.\n\nWithin Cygwin, it would be possible to use a Windows toolchain. However a Cygwin\nnative one is much simpler to use (no complex file path conversion) and usually\ncompatible with more open source projects and tools.\n\n## Installing\n\nTo build the toolchain, you will need the following package from the Cygwin\ninstaller:\n\n-   `gcc-core`\n-   `gcc-g++`\n-   `make`\n-   `bison`\n-   `flex`\n-   `perl`\n-   `patch`\n-   `git`\n-   `libgmp-devel`\n-   `libmpfr-devel`\n-   `zlib-devel`\n-   `libmpc-devel`\n-   `libisl-devel`\n-   `libexpat-devel`\n\nYou can then clone the repository as well as the submodules containing the\nrequired sources. This might take a couple of minutes as the dependencies are\nquite large:\n\n```shell\ngit clone https://github.com/mkende/cygwin-arm-toolchain.git\ncd cygwin-arm-toolchain\ngit submodule update --init\n```\n\n## Building the toolchain\n\nJust run the `./build-toolchain` command. This will build and install a complete\nARM toolchain in your Cygwin environment. By default the toolchain is installed\nunder `/usr/local/bin` which should already be in your `$PATH` variable.\n\nThe build operation is organized in _projects_ that you can individually\nactivate or deactivate, although you should generally just build everything with\nthe default options. The projects, all targetted to the ARM architecture, are\nthe following:\n\n-   `binutils`: a standard set of GNU tools (the most important ones are the \n    linker `ld` and the debugger `gdb`). These tools are running on your\n    computer so they are built with your default GCC.\n-   `gcc-bootstrap`: a bootstrap version of the GCC compiler with only the\n    support for C. This is skipped if there is already an ARM GCC available on\n    the system (typically from a previous run).\n-   `newlib`: a small standard library, meant for embedded systems.\n-   `gcc`: the full version, with support for C and C++. It requires `newlib` to\n    be built.\n-   `newlib-nano`: an even smaller version of `newlib`.\n-   `newlib-final`: just the same as `newlib` but built again with our full\n    `gcc`. This is skipped if `gcc-bootstrap` was built too (as `newlib` was\n    built with the same version of GCC in that case).\n\nYou can execute `./build-toolchain -h` to see a list of options affecting the\nprogram.\n\n## Cleanup\n\nJust delete the `build` directory within the project to remove all build\nartifacts. If you use the `--build-here` argument then, obviously, you should\nremove any directories you used to build.\n\n## Bugs\n\nThe various projects that are built are not always tested with Cygwin so they\nmay fail to build. By using the versions specified in this repository you should\nbe using known-good versions (you are getting them by default when this\nrepository is cloned). If needed patches will be provided with this tool to\nallow a successful compilation under Cygwin.\n\n## Updating\n\nTODO","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkende%2Fcygwin-arm-toolchain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmkende%2Fcygwin-arm-toolchain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkende%2Fcygwin-arm-toolchain/lists"}