{"id":13753883,"url":"https://github.com/firasuke/mussel","last_synced_at":"2025-10-08T23:10:04.014Z","repository":{"id":40332721,"uuid":"272936968","full_name":"firasuke/mussel","owner":"firasuke","description":"The shortest and fastest script to build working cross compilers targeting musl libc","archived":false,"fork":false,"pushed_at":"2025-08-08T21:53:39.000Z","size":523,"stargazers_count":114,"open_issues_count":1,"forks_count":15,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-08-08T23:33:52.247Z","etag":null,"topics":["aarch64","armv6kz","armv7","cross-compiler","i586","i686","microblaze","mips","mips64","mips64r6","musl","or1k","powerpc","powerpc64","powerpc64le","riscv64","s390x","toolchain","x86-64"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/firasuke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2020-06-17T09:48:40.000Z","updated_at":"2025-08-08T21:53:43.000Z","dependencies_parsed_at":"2023-12-26T22:29:55.031Z","dependency_job_id":"b9ee711d-bbf7-468f-b0d5-1b8ec0b033ed","html_url":"https://github.com/firasuke/mussel","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/firasuke/mussel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firasuke%2Fmussel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firasuke%2Fmussel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firasuke%2Fmussel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firasuke%2Fmussel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/firasuke","download_url":"https://codeload.github.com/firasuke/mussel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firasuke%2Fmussel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000725,"owners_count":26082862,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"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":["aarch64","armv6kz","armv7","cross-compiler","i586","i686","microblaze","mips","mips64","mips64r6","musl","or1k","powerpc","powerpc64","powerpc64le","riscv64","s390x","toolchain","x86-64"],"created_at":"2024-08-03T09:01:32.643Z","updated_at":"2025-10-08T23:10:04.008Z","avatar_url":"https://github.com/firasuke.png","language":"Shell","funding_links":[],"categories":["Shell","Uncategorized","Active"],"sub_categories":["Uncategorized"],"readme":"# `mussel`\n`mussel` is the shortest and fastest script available today to build working cross\ncompilers that target `musl` libc\n\n## Features\n1. **Up-to-date**: uses latest available upstream sources for packages\n2. **Fast**: probably the fastest script around to build a cross compiler\n   targeting `musl` libc, and runs fully under `dash`\n3. **Short**: has the least amount of steps ([see\n   below](#how-is-mussel-doing-it)) required\n   to build a cross compiler targeting musl libc (even less than\n   [musl-cross-make](https://github.com/richfelker/musl-cross-make))\n4. **Small**: all installation steps use `install-strip` where applicable\n5. **Simple**: easy to read, modify and extend\n6. **POSIX Compliant**: the entire script is POSIX compliant\n7. **Well Documented**: the script comes with a\n   [`DOCUMENTATION.md`](DOCUMENTATION.md)\n   file that includes state of the art information explaining what is being done\n   and why\n\n## Requirements:\nTo confirm you have all required packages, please execute `./check`\n\n## Usage\n### Building a Cross Compiler\n```Shell\n./mussel (arch) (flags)\n```\n\n**(arch)**: See [**Supported\nArchitectures**](#supported-architectures)\nbelow\n\n**(flags)**:\n```Console\n  f | -f | --enable-fortran        Enable optional Fortran support\n  k | -k | --enable-pkg-config     Enable optional pkg-config support\n  l | -l | --enable-linux-headers  Enable optional Linux Headers support\n  o | -o | --enable-openmp         Enable optional OpenMP support\n  p | -p | --parallel              Use all available cores on the host system\n  q | -q | --enable-quadmath       Enable optional libquadmath support (default for Fortran)\n  s | -s | --min-size              Optimize for minimum size\n  x | -x | --disable-cxx           Disable optional C++ support\n  g | -g | --disable-isl           Disable isl Library support (Graphite loop optimisations)\n  T | -T | --custom-vendor         Sets a custom vendor for tuple, requires architecture to be set before\n```\n\n### Other Commands\n```Shell\n./mussel (command)\n```\n\n**(command)**:\n```Shell\n  c | -c | --clean                 Clean mussel's build environment\n  h | -h | --help                  Display this help message\n```\n\nSources will be preserved\n\n## Supported Architectures\n- aarch64\n- armv4t\n- armv5te\n- armv6\n- armv6kz (Raspberry Pi 1 Models A, B, B+, the Compute Module, and the Raspberry\nPi Zero)\n- armv7\n- i486\n- i586\n- i686\n- m68k\n- microblaze\n- microblazeel\n- mips\n- mipsel\n- mips64\n- mips64el\n- mipsisa64r6\n- mipsisa64r6el\n- or1k\n- powerpc\n- powerpcle\n- powerpc64\n- powerpc64le\n- riscv64\n- s390x\n- sh2\n- sh2be\n- sh2-fdpic\n- sh2be-fdpic\n- sh4\n- sh4be\n- x86-64\n\n## Packages\n1. `binutils`: 2.44\n2. `gcc`: 14.2.0\n3. `gmp`: 6.3.0\n4. `isl`: 0.27\n5. `linux`: 6.13.7 (**Optional** Linux Headers Support) (**Disabled** by default)\n6. `mpc`: 1.3.1\n7. `mpfr`: 4.2.2\n8. `musl`: 1.2.5\n9. `pkgconf`: 2.4.3 (**Optional** `pkg-config` Support) (**Disabled** by default)\n\n## How Is `mussel` Doing It?\n1. Install `musl` headers\n2. Configure, build and install cross `binutils`\n3. Configure, build and install cross `gcc` (with `libgcc-static`)\n4. Configure, build and install `musl`\n5. Build, and install `libgcc-shared`\n\n## **Optional** Steps\n- Build and install `libstdc++-v3` (**Optional** C++ Support) (**Enabled** by default)\n- Build and install `libgomp` (**Optional** OpenMP Support) (**Disabled** by default)\n- Build and install `libquadmath` (**Optional** Quadruple-precision Support)\n(**Disabled** by default, **Enabled** for Fortran)\n- Build and install `libgfortran` (**Optional** Fortran Support) (**Disabled** by default)\n- Install `linux-headers` (**Optional** Linux Headers Support) (**Disabled** by default)\n- Configure, build and install `pkgconf` (**Optional** `pkg-config` Support)\n(**Disabled** by default)\n\n### Using `mussel` With Host's `pkg-config` or `pkgconf`\nThe reason we included `pkgconf` with `mussel` as an **optional** step is\nbecause we can easily configure the host's `pkg-config` or `pkgconf` to work\nwith `mussel` without having to build our own version of `pkg-config` or\n`pkgconf`.\n\nHere are the five magical environment variables that we need to set to configure\nthe host's `pkg-config` or `pkgconf` to work with `mussel`:\n\n```Shell\nexport PKG_CONFIG_PATH=$MSYSROOT/usr/lib/pkgconfig:$MSYSROOT/usr/share/pkgconfig\nexport PKG_CONFIG_LIBDIR=$MSYSROOT/usr/lib/pkgconfig:$MSYSROOT/usr/share/pkgconfig\nexport PKG_CONFIG_SYSROOT_DIR=$MSYSROOT\n\nexport PKG_CONFIG_SYSTEM_INCLUDE_PATH=$MSYSROOT/usr/include\nexport PKG_CONFIG_SYSTEM_LIBRARY_PATH=$MSYSROOT/usr/lib\n```\n\nThe last two I believe are `pkgconf` specific but setting them won't do any harm.\n\n### Using `mussel` With Host's `meson`\n`mussel` now provides cross-compilation configuration files for `meson` that\nsupport all listed architectures, and a wrapper around host's `meson`\n(`mussel-meson`) in an effort to make dealing with `meson` a bit easier.\n\n## Projects Using `mussel`\n- [CMLFS](https://github.com/dslm4515/CMLFS)\n- [Copacabana Linux](http://copacabana.pindorama.net.br)\n- [glaucus](https://glaucuslinux.org/)\n- [Hanh Linux](https://hanh-linux.github.io/)\n- [qLinux](https://qlinux.qware.org/doku.php)\n- [Raptix](https://github.com/dslm4515/Raptix)\n- [Spider Linux](https://github.com/spider-linux/spiderlinux)\n- [Tin Can Linux](https://tincan-linux.github.io/)\n- [Yeti OS](https://github.com/avs-origami/yeti)\n\n## Credits and Inspiration\n`mussel` is possible thanks to the awesome work done by Aurelian, Rich\nFelker, [qword](https://github.com/qword-os), [The Managarm Project](\nhttps://github.com/managarm), [glaucus](https://glaucuslinux.org/) and\n[musl-cross-make]( https://github.com/richfelker/musl-cross-make)\n\n## Author\nFiras Khana (firasuke) \u003c[firasuke@glaucuslinux.org](\nmailto:firasuke@glaucuslinux.org)\u003e\n\n## Contributors\n- Alexander Barris (AwlsomeAlex) \u003c[alex@awlsome.com](mailto:alex@awlsome.com)\u003e\n- Andrew Blue \u003c[andy@antareslinux.org](mailto:andy@antareslinux.org)\u003e\n- ayb \u003c[ayb@3hg.fr](mailto:ayb@3hg.fr)\u003e\n- Luiz Antônio Rangel at Pindorama (takusuman) \u003c[luiz.antonio.rangel@outlook.com.br](luiz.antonio.rangel@outlook.com.br)\u003e\n- Rida Antoinette (vibrantrida) \u003c[vibrantsmug@gmail.com](vibrantsmug@gmail.com)\u003e\n\n## License\n`mussel` is licensed under the Internet Systems Consortium (ISC) license\n\n## Dedication\n`mussel` is dedicated to all those that believe setting up a cross compiler\ntargeting musl libc is a complicated process.\n\n## Community\n- [Reddit](https://reddit.com/r/distrodev)\n\n## Mirrors\n- [Codeberg](https://codeberg.org/firasuke/mussel)\n- [GitHub](https://github.com/firasuke/mussel)\n- [SourceHut](https://git.sr.ht/~firasuke/mussel)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirasuke%2Fmussel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffirasuke%2Fmussel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirasuke%2Fmussel/lists"}