commit briefs
1dbb521
shrub
·
2026-05-30
32cdfd6
shrub
·
2026-05-25
a076350
shrub
·
2026-05-19
1c4d5c7
shrub
·
2026-05-19
c6bde0a
shrub
·
2026-05-18
d953691
shrub
·
2026-05-18
9d065ad
shrub
·
2026-05-18
ba30878
shrub
·
2026-05-18
23c6f88
shrub
·
2026-05-18
c74e668
shrub
·
2026-05-18
b508dcb
shrub
·
2026-05-18
branches
tree
readme
1shinobi
2-------
3
4shinobi is a compiler for makefiles. it parses using a line-oriented
5parser, expands and evaluates, and generates a static build graph of
6targets and dependencies. the graph can then be used to emit some
7backend. right now there is three backends, ninja for actually building
8stuff, graphviz dot for vizualisation, and compile_commands.json which
9is helpful for clang tooling.
10
11the end goal is to be 99% compatible with both posix and gnu style
12makefiles. right now this is mostly true; only a majority of make features
13and grammar is supported, enough to parse quite a lot of makefiles. complex
14make-based build systems like the linux kernel's Kbuild still have a way to go.
15
16if you want to help out, there's lots to do. feel free to make a
17contibution. some high-priority tasks are listed in the TODO file.
18
19it is implemented in C99. it is also extensively tested against an extremely
20large test suite, which includes tests from multiple projects, including the
21entire gnu make test suite, some from kati, and all of pdpmake's test. overall,
22this is 4200+ tests. you can read more about that in 'tests/readme'.
23
24you can build and install shinobi like so:
25
26```
27make
28make install
29```
30
31this is public domain software.
32the primary repository is located at https://codeberg.org/derivelinux/shinobi
33there is a mirror at https://git.sr.ht/~shrub900/shinobi , although it may sometimes be
34slightly behind.