{"id":17383858,"url":"https://github.com/mcandre/snek","last_synced_at":"2025-04-14T07:40:39.432Z","repository":{"id":37532500,"uuid":"403748358","full_name":"mcandre/snek","owner":"mcandre","description":"the toolchain armada","archived":false,"fork":false,"pushed_at":"2024-10-24T03:02:02.000Z","size":228,"stargazers_count":10,"open_issues_count":63,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-24T09:00:00.522Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"CMake","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mcandre.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2021-09-06T20:16:34.000Z","updated_at":"2024-10-22T06:34:09.000Z","dependencies_parsed_at":"2023-12-27T05:29:12.646Z","dependency_job_id":"cc4de9ef-c614-46f2-a9bd-52edb90f82c4","html_url":"https://github.com/mcandre/snek","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcandre%2Fsnek","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcandre%2Fsnek/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcandre%2Fsnek/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcandre%2Fsnek/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mcandre","download_url":"https://codeload.github.com/mcandre/snek/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248841569,"owners_count":21170210,"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","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-10-16T07:44:00.835Z","updated_at":"2025-04-14T07:40:39.250Z","avatar_url":"https://github.com/mcandre.png","language":"CMake","funding_links":[],"categories":[],"sub_categories":[],"readme":"# snek: the toolchain armada\n\n```text\n                ~.\n         Ya...___|__..ab.     .   .\n          Y88b  \\88b  \\88b   (     )\n           Y88b  :88b  :88b   `.xx'\n           :888  |888  |888  ( (`{#}\n  .---.    d88P  ;88P  ;88P   `.`.\n / .-._)  d8P-\"\"\"|\"\"\"'-Y8P      `.`.\n( (`._) .-.  .-. |.-.  .-.  .-.   ) )\n \\ `---( O )( O )( O )( O )( O )-' /\n  `.    `-'  `-'  `-'  `-'  `-'  .'\n    `---------------------------'\n```\n\n# SUMMARY\n\nsnek simplifies the process of porting software to multiple platforms.\n\n_VM's are slow. snek is fast._\n\n_Hardware is expensive. snek is free._\n\n# EXAMPLE\n\n```console\n$ cd example\n\n$ snek\n\n$ tree bin\nbin\n└── hello-0.0.1\n    ├── aarch64-linux-gnu\n    │   └── hello\n    ├── arm-linux-gnueabi\n    │   └── hello\n    ├── arm-linux-gnueabihf\n    │   └── hello\n    ├── arm64-apple-darwin\n    │   └── hello\n...\n```\n\n# LICENSE\n\nBSD-2-Clause\n\n# RUNTIME REQUIREMENTS\n\n* [Docker](https://www.docker.com/) 27.2.0+\n\n## Recommended\n\n* a host capable of running musl/Linux containers (e.g. a GNU/Linux, musl/Linux, macOS, or Windows host)\n* [Docker First Aid Kit](https://github.com/mcandre/docker-first-aid-kit)\n* Apply `DOCKER_DEFAULT_PLATFORM` = `linux/amd64` environment variable\n* [cmake](https://cmake.org/) 3.5+\n* [make](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html) or [ninja](https://ninja-build.org/)\n* [file](https://linux.die.net/man/1/file)\n* [tree](https://linux.die.net/man/1/tree)\n* [tug](https://github.com/mcandre/tug)\n* POSIX compatible [tar](https://pubs.opengroup.org/onlinepubs/7908799/xcu/tar.html)\n* a UNIX environment, such as macOS, Linux, BSD, [WSL](https://learn.microsoft.com/en-us/windows/wsl/), etc.\n\nNon-UNIX environments may produce subtle adverse effects when linting or generating application ports.\n\n# CONTRIBUTING\n\nFor more information on developing snek itself, see [DEVELOPMENT.md](DEVELOPMENT.md).\n\n# CONFIGURATION\n\nsnek offers several preconfigured toolchain Docker ships, or you can specify your own custom ships.\n\nsnek automatically mounts the host current working directory as a guest `/src` directory.\n\n## Standard Ships\n\nsnek curates a set of standard Docker image ships for easy porting of cmake/make projects to common POSIX-esque target environments. These are primarily [clang](https://clang.llvm.org/) / [gcc](https://gcc.gnu.org/) based, in order to support a wide variety of environments and C/C++ language features.\n\nThe standard images automatically set the guest working directory to `/src`.\n\nThe standard images aim to reduce their footprint, in order to keep the snek system fairly lean and fast on mediumish hardware. For example, snek may be run on a cheap laptop, or a beefy workstation, or an expensive CI/CD instance, or on a RAM-appropraite Raspberry Pi with sufficient patience.\n\nThe total size of the image collection is only bounded by your build host's disk space.\n\nThe Docker images for your ships are extensible and customizable. See [example/snek.yaml](example/snek.yaml) for more detail.\n\nNote that not all packages, such as certain Conan Central dependencies, will be available for all platforms.\n\n# CREDITS\n\n* [chroot](https://en.wikipedia.org/wiki/Chroot) can assist with isolating compiler toolchains on UNIX hosts\n* [crit](https://github.com/mcandre/crit) ports Rust applications\n* [distcc](https://distcc.github.io/) can distribute compilations to remote servers\n* [factorio](https://github.com/mcandre/factorio) ports Go applications\n* [LLVM](https://llvm.org/) bitcode offers an abstract assembler format for C/C++ code.\n* [osxcross](https://github.com/tpoechtrager/osxcross) provides patches to enable Darwin targets.\n* [tug](https://github.com/mcandre/tug) automates multi-platform Docker image builds.\n* [WASM](https://webassembly.org/) provides a portable interface for C/C++ code.\n* [xgo](https://github.com/techknowlogick/xgo) ports cgo applications\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcandre%2Fsnek","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmcandre%2Fsnek","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcandre%2Fsnek/lists"}