- Shell 52.8%
- C 35%
- Makefile 12.2%
| helpers | remove alot of nix crud | |
| recipes | delete everything below 2b3-gnumake.sh | |
| .gitignore | helpers/maint/build-custom-stage5: add | |
| build.sh | build.sh: fixup all-at-once builds | |
| download.sh | download.sh: support parsing of #local/url/sha256 as well | |
| LICENSE | initial commit | |
| Makefile | remove even more nix crud | |
| README.md | Update README.md | |
| seed.sh | remove alot of nix crud | |
neostrap
bootstrap a full clang toolchain from a single 400KB tcc binary. no nix, no bullshit, no 300MB seed pile.
fork of bootstrap-from-tcc with the nix cancer surgically removed.
what it does
tcc seed (400KB)
→ protomusl + stable tcc
→ binutils + gcc4
→ gcc10
→ clang (intermediate)
→ musl + clang (self-hosted) + busybox + gnumake
you get a fully self-hosted clang toolchain linked against musl. the entire compiler ascension takes 4-8 hours depending on your hardware. touch grass.
requirements
- a statically linked
tccbinary at./tcc-seed - linux x86_64
- ~8GB free for the build tmpfs
- patience
usage
./build.sh
or if you want incremental builds for debugging:
make all-pkgs
make all-tests
why
because you don't know what's in your compiler. every toolchain you've ever used was built by a compiler that was built by a compiler that was built by a compiler. neostrap lets you verify the whole chain from a 400KB seed you can actually audit.
or you just want a musl-linked clang and don't trust prebuilts. both valid.
differences from upstream
- nix completely removed, pure sh
- stops at stage 2b (clang + musl + busybox + gnumake)
- no ISO generation, no rebootstrap, no stage 3/4/5 nix infra
- used by Static Linux as the reference bootstrap
getting tcc-seed
you need to supply it yourself. grab a statically linked tcc from your distro or build one. yes this is intentional. no we're not holding your hand.
license
MIT (upstream), modifications same.